仮想有限状態マシン( VFSM ) は、仮想環境で定義された有限状態マシン(FSM) です。VFSM の概念は、入力制御プロパティと出力アクションに割り当てられた名前を使用して、制御システムの動作を記述するソフトウェア仕様方法を提供します。
VFSM メソッドは実行モデルを導入し、実行可能な仕様のアイデアを促進します。このテクノロジは主に、複雑な機械制御、計測、および通信アプリケーションで使用されます。
なぜ
ステート マシンを実装するには、論理条件 (状態遷移条件とアクション条件) を生成する必要があります。ステート マシンが本来使用されていたハードウェア環境では、これは簡単です。すべての信号はブール値です。対照的に、ソフトウェアで指定および実装されたステート マシンでは、それ自体が多値である論理条件が必要です。
- 気温は低い、普通、高い
- コマンドには、Init、Start、Stop、Break、Continue などの複数の値があります。
- 階層制御システムでは、下位の状態マシンは上位の状態マシンの条件として使用される多くの状態を持つことができる。
さらに、入力信号はエラーや故障により不明になる可能性があり、デジタル入力信号 (従来のブール値と見なされる) であっても、実際には低、高、不明の 3 つの値になります。
正論理代数は、多値変数を使用するソフトウェアの状態マシンの指定を可能にする仮想環境を作成することにより、仮想化を介してこの問題を解決します。
コントロールプロパティ
VFSM 環境の状態変数は、制御に関連する 1 つ以上の値を持つことができます。このような場合、それは入力変数です。これらの値は、この変数の制御プロパティです。制御プロパティは必ずしも特定のデータ値ではなく、変数の特定の状態です。たとえば、デジタル変数は、可能なブール値に応じて、TRUE、FALSE、および UNKNOWN の 3 つの制御プロパティを提供できます。数値 (アナログ) 入力変数は、必要な値の範囲に応じて、LOW、HIGH、OK、BAD、UNKNOWN などの制御プロパティを持ちます。タイマーは、OVER 状態 (タイムアウト発生) を最も重要な制御値として持つことができます。他の値は、STOPPED または RUNNING です。
アクション
VFSM 環境内の他の状態変数は、アクションによってアクティブ化されることがあります。このような場合、それは出力変数です。たとえば、デジタル出力には、True と False の 2 つのアクションがあります。数値 (アナログ) 出力変数には、Set というアクションがあります。入力変数と出力変数の両方であるタイマーは、Start、Stop、Reset などのアクションによってトリガーできます。
仮想環境

仮想環境は、仮想マシンが動作するランタイム環境を特徴づけます。これは、次の 3 つの名前セットによって定義されます。
- 入力名は利用可能なすべての変数の制御プロパティを表します
- 出力名は変数に対して実行可能なアクションを表す
- FSM の各状態に対して定義されている状態名。
入力名は、状態遷移または入力アクションを実行するための仮想条件を構築します。仮想条件は、正論理代数を使用して構築されます。出力名は、エントリ アクション、終了アクション、入力アクション、または遷移アクションなどのアクションをトリガーします。
正論理代数
仮想条件を構築するためのルールは次のとおりです。
入力名と仮想入力
入力の状態は、セットを作成する入力名によって記述されます。
- 入力A:
Anames = {A1, A2, A3} - 入力B:
Bnames = {B1, B2} - 入力C:
Cnames = {C1, C2, C3, C4, C5}
等
仮想入力は、入力名の相互に排他的なVI要素のセットです。 Aには常に次の要素が含まれます。
VIalways
VI = {常に}
VI = {常に、A1 }
VI = {常に、A1、B2、C4 }
入力名に対する論理演算
&(AND) 演算は入力名のセットです:
A1 & B3 & C2 =>{A1, B3, C2}
|(OR) 演算は、入力名のセットのテーブルです。
A1 | B3 | C2 =>
~(補数) は入力名のセットの
補数です。
~ A2 ={A1, A3}
論理式
論理式は AND セットの OR テーブルです (選言正規形)。
A1とB3 | A1とB2とC4 | C2 =>
論理式は、あらゆる論理関数を表現するために使用されます。
論理式の評価
論理式の論理値 (true、false) は、OR テーブル内の AND セットのいずれかがのサブセットVIであるかどうかをテストすることによって計算されます。
出力名と仮想出力
出力の状態は、セットを作成する出力名によって記述されます。
- 出力X:
Xnames = {X1, X2} - 出力Y:
Ynames = {Y1, Y2, Y3}
仮想出力は、VO出力名の相互に排他的な要素のセットです。
仮想環境
状態名によって完了した仮想名と仮想出力により、VE動作が指定される仮想環境が作成されます。
VFSM実行モデル

定義済みのすべての入力名のサブセットは、特定の状況でのみ存在でき、仮想入力または と呼ばれますVI。たとえば、温度は「低すぎる」、「良好」、「高すぎる」のいずれかになります。 3 つの入力名が定義されていますが、実際の状況で存在できるのはそのうちの 1 つだけです。これは を構築しますVI。
特定の状況でのみ存在できる、定義済みのすべての出力名のサブセットは、仮想出力またはと呼ばれますVO。これは、VFSM の現在のアクションによって構築されます。
動作仕様は、VFSM のすべての状態の詳細をすべて記述する状態テーブルによって構築されます。
VFSM エグゼキュータはVI、VFSM の現在の状態によってトリガーされます。現在の状態の動作仕様を考慮して、がVO設定されます。
図 2 は、VFSM エグゼキュータの 1 つの実装例を示しています。この実装に基づいて、一般的な動作特性を考慮する必要があります。
状態表
状態テーブルは、 VFSMの状態の動作の詳細をすべて定義します。これは 3 つの列で構成されます。最初の列には状態の名前が、2 番目の列には正論理代数を使用して入力名から構築された仮想条件がリストされ、3 番目の列には出力名が含まれます。
表を次のように読みます。最初の 2 行は、現在の状態の開始アクションと終了アクションを定義します。次の状態を提供しない次の行は、入力アクションを表します。最後に、次の状態を提供する行は、状態遷移条件と遷移アクションを表します。すべてのフィールドはオプションです。純粋な組み合わせVFSM は、入力アクションが使用され、状態遷移が定義されていない場合にのみ可能です。遷移アクションは、他のアクションを適切に使用することで置き換えることができます。
ツール
- StateWORKS: VFSMコンセプトの実装
- PlayMaker: Unity ゲームエンジンの「ビジュアル スクリプティング」の方法として VFSM コンセプトを実装します。
参考文献
- Wagner, F.、「仮想有限状態マシン: 実行可能な制御フロー仕様」、Rosa Fischer-Löw Verlag、1994 年、ISBN 3-929465-04-3
- Wagner, F.、「有限状態マシンによるソフトウェアのモデリング: 実践的アプローチ」、Auerbach Publications、2006 年、ISBN 0-8493-8086-3
- VFSM 実行可能仕様、CompEuro 1992 議事録
- ステートマシンの誤解、IEE ジャーナル「コンピューティングと制御エンジニアリング」、1997 年
- 仮想有限状態マシンの設計と実装パラダイム、ベル研究所技術ジャーナル、1997 年
- 最新のリアルタイム ソフトウェア設計ツール: Leo からの教訓の応用、IEE ジャーナル「コンピューティングと制御エンジニアリング」、2003 年
- 信頼性が高く再利用可能なソフトウェアのモデリングと構築。コンピュータベースソフトウェアのエンジニアリング 2003 (ECBS'03) プロシーディング
- ソフトウェア モデリングとコード間のギャップを埋める、コンピュータ ベース ソフトウェアのエンジニアリング 2004 (ECBS'04) 議事録
- [1] ワグナー、T.、「VFSMML - VFSMのXML標準」、2004年
