主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

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

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

  • 故障検出と管理

  • モードの切り替え

真理値表は,金宝app仿真软件®でのみサポートされます。

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

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

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

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

メモ

真理値表関数は,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 = 1 r = 2 r = 3 r = 4

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

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

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

疑似コード

説明

If (x == 1) and (y == 1) and (z == 1)) r = 1;

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

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

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

elseif (!(y == 1)和(z == 1)) r = 3;

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

Else r = 4;endif

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

真理値表関数の定義

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

  1. オブジェクトパレットで,真理値表関数のアイコンをクリックします。チャート内で新しい真理値表関数の場所までポインターを移動します。

  2. 関数のシグネチャラベルを入力します。

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

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

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

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

    メモ

    チャートシンボルの名前を関数の引数や戻り値として使用しないでください。たとえば,xまたはyがチャートデータの場合,シグネチャy = f (x)を使用して関数を定義するとランタイムエラーが発生します。

  3. 関数をプログラミングするには,関数ボックスをダブルクリックして真理値表エディターを開きます。

  4. 真理値表エディターで,条件,判定,アクションを追加します。詳細については,真理値表のプログラミングを参照してください。

  5. モデルエクスプローラーで,チャートオブジェクトを展開して真理値表関数を選択します。関数に属するデータ項目として,関数シグネチャの引数と戻り値が表示されます。引数のスコープは输入です。戻り値のスコープは输出です。

  6. データプロパティの設定の説明に従って,各引数および戻り値の[データ]プロパティダイアログボックスで,データプロパティを指定します。

  7. 関数に必要な追加のデータ項目を作成します。詳細については,モデルエクスプローラーによるデータの追加を参照してください。

    関数からは,専用のデータや,親ステートまたはチャートに属しているデータにアクセスできます。関数内のデータ項目には,以下のいずれかのスコープを設定できます。

    • 常数——すべての関数呼び出しで,その初期値を保持する定数データ。

    • 参数——すべての関数呼び出しで,その初期値を保持するパラメーターデータ。

    • 当地的——関数呼び出し後,次回の関数呼び出しまで保持されるローカルデータ。アクション言語としてCを使用する真理値表でのみ有効です。

    • 临时——関数呼び出しが開始されるたびに初期化される一時データ。アクション言語として C を使用する真理値表でのみ有効です。

    Cをアクション言語として使用する真理値表関数では,シミュレーション全体で関数呼び出しの間でデータ値を維持する場合,ローカルデータを定義します。関数呼び出しが開始されるたびにデータ値を初期化する場合は,一時データを定義します。たとえば,関数の呼び出し回数を追跡する場合は,[ローカル]スコープを使用してカウンターを定義できます。一方,関数の完了後にカウンター値を維持する必要がない場合は,ループカウンターが[一時的]スコープをもつよう指定できます。

    MATLAB®をアクション言語として使用する真理値表関数では,ローカルデータまたは一時的な関数データを定義する必要はありません。未定義の変数を使用すると,Stateflowは関数の残りの部分で使用可能な一時変数を作成します。関数の呼び出しの間で維持される値を格納するため、関数はチャート レベルでローカル データにアクセスできます。

    ヒント

    関数のローカルデータと一時データはMATLABワークスペースから初期化できます。詳細については,MATLABベースワークスペースからのデータの初期化を参照してください。

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

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

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

真理値表関数を呼び出すには,関数シグネチャを使用し,関数シグネチャの各仮引数に実際の引数の値を設定します。実際の引数と仮引数のデータ型が異なる場合,関数は実際の引数を仮引数のデータ型にキャスト(変換)します。

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

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

名前

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

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

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

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

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

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

ラベル

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

過少指定

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

過剰指定

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

アクション言語

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

説明

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

ドキュメントリンク

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

関連するトピック