Main Content

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

真理値表を使用して組み合わせ論理をモデル化

真理値表は、簡潔な表形式で組み合わせ論理設計を実装します。一般的に真理値表は、次のような論理判定に使用されます。

  • 故障検出と管理

  • モードの切り替え

真理値表は、Simulink® でのみサポートされます。

Truth Table ブロックは、Simulink モデルに直接追加することも、Stateflow® チャート、ステート、またはサブチャートで定義することもできます。Simulink モデルの Truth Table ブロックは Simulink ブロックとして実行されますが、Stateflow チャートの真理値表関数は、その真理値表関数を呼び出した場合のみ実行されます。関数の場所により、その関数を呼び出すことのできるステートと遷移の集合が判定されます。

  • チャートの任意の部分から関数を呼び出す場合は、真理値表関数をチャート レベルに配置します。

  • ある特定のステートまたはサブチャートとそのサブステートの内部から関数を呼び出す場合は、真理値表関数を該当するステートまたはサブチャートに配置します。この関数は、そのステートまたはサブチャートの親や先祖に含まれる同じ名前の関数よりも優先されます。

  • 関数をモデル内の任意のチャートから呼び出す場合は、真理値表をチャート レベルに配置し、チャートレベルの関数のエクスポートを有効にします。詳細については、再利用のための Stateflow 関数のエクスポートを参照してください。

真理値表が Simulink モデル内のブロックとして存在する場合でも、Stateflow チャート内の関数として存在する場合でも、プログラムする方法は同じです。

真理値表のレイアウト

以下の真理値表関数の名前は ttable です。3 つの引数 (xy および z) を取り、1 つの出力値 (r) を返します。

関数は、以下の条件、判定、アクションを並べて構成されています。

条件

判定 1

判定 2

判定 3

判定 4

x == 1

T

F

F

-

y == 1

F

T

F

-

z == 1

F

F

T

-

アクション

r = 1r = 2r = 3r = 4

[条件] 列で入力された各条件は、必ず真 (非ゼロ値) または偽 (ゼロ値) として評価されます。各条件の結果は、T (真)、F (偽)、または - (真または偽) として指定されます。各判定列は、論理 AND によって各条件結果を複合条件に結合しています。この複合条件が判定と呼ばれます。

1 つの判定ごとに、[判定 1] から順番に真理値表を評価します。[判定 4] は、残りのすべての判定を対象とします。いずれかの判定が真である場合は、真理値表は関連付けられたアクションを実行します。これで真理値表の実行は完了します。

たとえば、条件 x == 1y == 1 が偽、条件 z == 1 が真である場合は、[判定 3] が真になり、変数 r は 3 に設定されます。残りの判定はテストされず、真理値表の評価は終了します。最初の 3 つの判定が偽である場合は、既定の判定が自動的に真になり、そのアクション (r=4) が実行されます。次の表は、この真理値表の例の評価に対応する疑似コードを示しています。

疑似コード

説明

if ((x == 1) & !(y == 1) & !(z == 1))
  r = 1;

[判定 1] が真の場合は r=1 を設定。

elseif (!(x == 1) & (y == 1) & !(z == 1))
  r = 2;

[判定 2] が真の場合は r=2 を設定。

elseif (!(x == 1) & !(y == 1) & (z == 1))
  r = 3;

[判定 3] が真の場合は r=3 を設定。

else
  r = 4;
endif

他のすべての判定が偽の場合は既定の判定が真。r=4 を設定。

真理値表関数の定義

真理値表関数を定義するには、次の手順に従います。

  1. 真理値表関数の引数と戻り値を宣言します。

  2. 真理値表関数をプログラムします。真理値表のプログラミングを参照してください。

  3. プロパティ インスペクターと [シンボル] ペインを使用して、それぞれの引数と戻り値についてデータのプロパティを指定します。

  4. [シンボル] ペインを使用して、関数に必要な追加のデータ項目を作成します。関数からは、専用のデータや、親ステートまたはチャートに属しているデータにアクセスできます。

関数の引数と戻り値の宣言

関数シグネチャ ラベルは、関数の名前と、その引数と戻り値の正式名称を指定します。シグネチャ ラベルの構文は以下のとおりです。

[return_val1,return_val2,...] = function_name(arg1,arg2,...)
複数の戻り値と複数の入力引数を指定できます。戻り値と入力引数として、値のスカラー、ベクトル、または行列を指定できます。戻り値が 1 つのみの関数では、シグネチャ ラベルの大かっこを省略します。

引数と戻り値の両方に同じ変数名を使用できます。たとえば、以下のシグネチャ ラベルをもつ関数では、変数 y1 および y2 を、入力と出力の両方として使用します。

[y1,y2,y3] = f(y1,u,y2)
この関数を C コードにエクスポートすると、y1 および y2 は参照によって (ポインターとして) 渡され、u は値によって渡されます。入力を参照によって渡すと、生成されたコードが中間データをコピーする回数が減少するため、コードがより最適化されます。

ステートおよび遷移での真理値表関数の呼び出し

真理値表関数は、任意のステートまたは遷移のアクションから呼び出すことが可能です。真理値表関数は、他の関数からも呼び出すことができます。真理値表関数をエクスポートする場合は、モデル内の任意のチャートから呼び出すことができます。関数のエクスポートの詳細については、再利用のための Stateflow 関数のエクスポートを参照してください。

真理値表関数の呼び出しの構文は関数シグネチャと同じで、シグネチャで指定されている仮引数を実際の引数に置き換えます。実際の引数と仮引数のデータ型が異なる場合、関数は実際の引数を仮引数のデータ型にキャスト (変換) します。

関数シグネチャの仮引数がスカラーの場合は、関数呼び出しの入力と出力がスカラー拡張のルールに従っていることを確認してください。詳細については、行列のすべての要素への値の代入を参照してください。

真理値表関数のプロパティの指定

プロパティのダイアログ ボックスから、真理値表関数の一般的なプロパティを設定できます。関数プロパティのダイアログ ボックスを開くには、真理値表関数のボックスを右クリックし、コンテキスト メニューから [プロパティ] を選択します。

名前

関数名。関数名のリンクをクリックすると、関数がネイティブ チャートの前面に表示されます。

関数インライン オプション

生成コード内の関数のインライン化を制御します。

  • 自動 — 内部計算に基づいて関数をインライン化するかどうかを判定します。

  • インライン化 — 他のチャートにエクスポートせず、反復処理の一部に含まれていない場合、関数はインライン化されます (反復処理が発生するのは、関数が自分自身を直接的に呼び出している場合や、他の関数呼び出しを介して間接的に呼び出している場合です)。

  • 関数 — 関数をインライン化しません。

ラベル

関数のシグネチャ ラベル。詳細については、関数の引数と戻り値の宣言を参照してください。

過少指定

真理値表関数における過少指定の診断のレベルを制御します。詳細については、真理値表の過剰指定と過少指定の修正を参照してください。

過剰指定

真理値表関数における過剰指定の診断のレベルを制御します。詳細については、真理値表の過剰指定と過少指定の修正を参照してください。

アクション言語

Stateflow 真理値表関数のアクション言語を制御します。MATLAB® または C を選択します。詳細については、アクション言語構文としての MATLAB と C の相違点を参照してください。

説明

関数の説明。階層内の関数について簡単な説明を入力できます。

ドキュメント リンク

関数のオンライン ドキュメンテーションへのリンク。適切なオンライン形式 (HTML ファイルや MATLAB コマンド ウィンドウのテキストなど) でドキュメンテーションを表示する、Web の URL アドレスまたは MATLAB コマンドを入力できます。[ドキュメント リンク] ハイパーリンクをクリックすると、Stateflow にドキュメンテーションが表示されます。

関連するトピック