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

仮想環境とは、仮想マシンが動作する実行環境を特徴づけるものです。仮想環境は、以下の3つの名称によって定義されます。
入力名は、状態遷移または入力アクションを実行するための仮想条件を構築します。仮想条件は正論理代数を用いて構築されます。出力名は、エントリアクション、エグジットアクション、入力アクション、または遷移アクションといったアクションをトリガーします。
仮想環境を構築するためのルールは以下のとおりです。
入力の状態は、入力名によって記述され、入力名によって以下のセットが作成されます。
Anames = {A1, A2, A3}Bnames = {B1, B2}Cnames = {C1, C2, C3, C4, C5}等
仮想入力は、入力名の相互排他的なVI要素の集合です。A は常に次の要素を含みます。VIalways
VI = {常に} VI = { always , A1 } VI = { always , 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 =>
論理式は、あらゆる論理関数を表現するために使用されます。
論理式の論理値(真、偽)は、OR テーブル内の AND セットのいずれかが の部分集合VIであるかどうかをテストすることによって計算されます。
出力の状態は、以下のセットを作成する出力名によって記述されます。
Xnames = {X1, X2}Ynames = {Y1, Y2, Y3}仮想出力VOとは、出力名を構成する要素のうち、互いに排他的な要素の集合である。
状態名によって補完される仮想名と仮想出力は、VE動作が指定される仮想環境を作成します。

定義された入力名のうち、特定の状況でのみ存在できるサブセットを仮想入力または と呼びますVI。たとえば、温度は「低すぎる」、「適切」、「高すぎる」のいずれかになります。3 つの入力名が定義されていますが、実際の状況で存在できるのはそのうちの 1 つだけです。これが を構築しますVI。
定義された出力名のうち、特定の状況でのみ存在できるサブセットを仮想出力または仮想出力と呼びますVO。これは、VFSM の現在の動作によって構築されます。
動作仕様は、VFSMのすべての状態の詳細を記述した状態テーブルによって構築されます。
VFSM実行エンジンは、VIVFSMの現在の状態によって起動されます。現在の状態の動作仕様を考慮して、がVO設定されます。
図2は、VFSM実行器の実装例の一つを示している。この実装に基づき、典型的な動作特性を考慮する必要がある。
状態テーブルは、VFSMの状態の動作に関するすべての詳細を定義します。状態テーブルは3つの列で構成されます。最初の列は状態名、2番目の列は正論理代数を使用して入力名から構築された仮想条件のリスト、3番目の列は出力名です。
表は次のように読み取ってください。最初の 2 行は、現在の状態への入力アクションと出力アクションを定義します。次の状態を示さない次の行は、入力アクションを表します。最後に、次の状態を示す行は、状態遷移条件と遷移アクションを表します。すべてのフィールドはオプションです。純粋な組み合わせ型VFSM は、入力アクションが使用され、状態遷移が定義されていない場合にのみ可能です。遷移アクションは、他のアクションを適切に使用することで置き換えることができます。