Main Content

真理値表の過剰指定と過少指定の修正

真理値表をプログラミングする場合、過剰指定または過少指定の真理値表をプログラミングする可能性があります。真理値表が過剰指定の場合、別の判定列で指定された真偽の組み合わせが少なくとも 1 つ含まれています。このような状況が発生すると、その判定列に関連付けられたアクションは実行されません。真理値表の過少指定が発生するのは、考えられるすべての真偽の組み合わせに対応できるだけの十分な判定列が真理値表にない場合です。

既定では、Stateflow® は真理値表の過剰指定と過少指定のエラーを報告します。真理値表のエラー設定を調整するには、真理値表を開きます。真理値表を開いた後、[モデル化] タブで [テーブル プロパティ] をクリックし、[過少指定] または [過剰指定] の設定を変更します。

真理値表は、MATLAB® 内のスタンドアロンの Stateflow チャートではサポートされません。詳細については、真理値表を使用して組み合わせ論理をモデル化を参照してください。

真理値表の過剰指定の例

真理値表の過剰指定に該当する場合は、少なくとも 1 つの判定がまったく実行されません。これは、その判定が [条件テーブル] の前の判定で既に指定されているからです。以下の例は、真理値表の過剰指定に該当する [条件テーブル] を示しています。

Overspecified truth table.

D3 の判定 (-TT) は、判定 FTTTTT を指定しています。これらの判定は、判定 D1 (FTT) と D2 (TTTTFT) で既に指定されています。このため、列 D3 が過剰指定です。

以下の例は、過剰指定であるように見えますが、実際には過剰指定ではない真理値表の [条件テーブル] を示しています。

Truth table that appears to be overspecified, but is not.

この場合、判定 D4 は、2 つの判定 (TTTFTT) を指定しています。 FTT も判定 D1 に現れますが、TTT は重複ではありません。したがって、この [条件テーブル] は過剰指定ではありません。

真理値表の過少指定の例

真理値表の過少指定では、指定された条件のすべての組み合わせをカバーする判定がないため、未定義の動作が含まれます。以下の例は、真理値表の過少指定に該当する [条件テーブル] を示しています。

Underspecified truth table.

前述の真理値表の条件を完全にカバーするには、以下の例のように、[条件テーブル] に有効なあらゆる判定を設定する必要があります。

Condition table that specifies every possible decision.

過少指定を回避するには、DA という名前の既定の判定を使用して、他のすべての有効な判定に対応するアクションを指定します。

Condition table with a default decision.

最後の判定列 [D4] は、真理値表の既定の判定です。既定の判定は、前述の判定列でテスト対象にならない残りの判定をすべてカバーします。[条件テーブル] の既定の判定列の例と詳細については、既定の判定列を参照してください。

関連するトピック