Main Content

関数呼び出しを生成するテスト ハーネスの作成

ブロックの状態を初期化、再初期化、リセット、終了するモデル コンポーネントを作成した後 (初期化関数、再初期化関数、リセット関数および終了関数の使用を参照)、モデルをシミュレーション テスト ハーネスに配置できます。テスト ハーネスは、モデル コンポーネントの開発、テスト、およびデバッグに使用する Simulink® モデルです。

テスト ハーネスを作成するには、新しいモデル内にモデル コンポーネントが含まれるエクスポート関数モデルを参照してから、Stateflow® チャートを追加して関数呼び出しイベント スケジューラをモデル化します。

エクスポート関数モデルの参照

エクスポート関数モデルにはテスト用のモデル コンポーネントが含まれます。エクスポート関数モデルを作成するには、エクスポート関数モデルの作成を参照してください。

  1. Simulink モデルを作成します。このモデルを Test_Model という名前で保存します。

  2. [ソルバー] のコンフィギュレーション パラメーター [タイプ][固定ステップ] に、ソルバーを [自動] に、[固定ステップ サイズ]1 に設定します。

  3. Model ブロックを追加します。Model をダブルクリックして [ブロック パラメーター] ダイアログ ボックスを開きます。[モデル名] テキスト ボックスで、エクスポート関数モデルの名前を入力します。この例では、「Model02」と入力します。

  4. Function-Call Generator ブロックを Run 端子に接続することで、参照されるモデル コンポーネントをテストします。Constant ブロックを Signal In 端子に、Scope ブロックを Signal Out 端子に接続します。

    Test for referenced model using function-call generator

  5. シミュレーションを実行し、モデルが親モデルから適切にシミュレートされることを確認します。関数呼び出しイベント端子を使用せずにモデルをシミュレートする場合、Initialize Function ブロックはシミュレーションの最初に実行され、Terminate Function ブロックはシミュレーションの最後に実行されます。

    Verification of the parent model simulation

  6. 関数呼び出し入力端子を Model ブロックに提示します。Model ブロックをダブルクリックして [ブロック パラメーター] ダイアログ ボックスを開きます。[ブロック パラメーター] ダイアログ ボックスで、[モデル初期化端子を表示][モデル リセット端子を表示]、および [モデル終了端子を表示] を選択します。

  7. Function-Call Generator ブロックを削除し、Ctrl+D を押してモデルを更新します。

    Add Model block and reference the export-function model

    初期化関数呼び出し入力端子を Model ブロックで有効にする場合、モデルを実行する前に、初期化関数呼び出しを initialize 端子で受信しなければなりません。関数呼び出しの受信によって、既定のモデル初期化ルーチンの実行に続いて Initialize Function ブロックの内容の実行がトリガーされます。

    Reset 端子での関数呼び出しの受信によって、Reset Function ブロックの内容の実行がトリガーされます。

    Terminate 端子での関数呼び出しの受信によって、Terminate Function ブロックの内容の実行に続いて、既定のモデル終了ルーチンの実行がトリガーされます。その後、モデルは実行を停止します。モデルを再度実行するには、関数呼び出しイベントを initialize 端子に送信することでモデルを再初期化しなければなりません。

イベント スケジューラのモデル化

Stateflow チャートを使用してイベント スケジュールをモデル化し、初期化関数呼び出し信号と終了関数呼び出し信号を生成します。

  1. Stateflow チャートを追加します。モデル ブロック線図をクリックし、Chart と入力します。検索リストで を選択します。

  2. チャートを開き、2 つの状態ブロックを上下に追加します。

  3. デフォルト遷移を追加し、最上部の状態ブロックに接続します。ラベルを編集します。

    {step = 0}
  4. 最上部のブロックから最下部のブロックへの遷移を追加します。ラベルを編集します。

    [step == 2]/{Initialize}

  5. 最下部のブロックから最下部のブロックへの遷移を追加します。ラベルを編集します。

    [step == 5]/{Reset}

  6. 最下部のブロックから最上部のブロックへの遷移を追加します。ラベルを編集します。

    [step == 9]/{Terminate}

  7. 最上部のブロックのコンテンツを編集します。

    Inactive
    entry: step = step + 1;
    during: step = step + 1;

  8. 最下部のブロックのコンテンツを編集します。

    Running
    entry: step = step + 1; Run;
    during: step = step + 1; Run;

    Event scheduler for the harness

テスト モデルへのチャートの接続

チャートで関数呼び出し出力端子を作成し、モデル コンポーネントを制御および実行します。

  1. モデル エクスプローラーを開きます。[モデル化] タブ、および [設計] セクションから [モデル ワークスペース] を選択します。

  2. インデックス変数を作成します。メニューから、[追加][データ] を選択します。[データ] ダイアログ ボックスで、[名前]Step を入力します。

  3. 関数呼び出し出力端子を作成します。作成する関数呼び出しイベントごとに [追加][イベント] を選択し、[イベント] ダイアログ ボックスで次の値を入力および選択します。

    [イベント] テキスト ボックスへの入力スコープの設定トリガーの設定
    InitializeSimulink に出力関数呼び出し
    ResetSimulink に出力関数呼び出し
    TerminateSimulink に出力関数呼び出し
    RunSimulink に出力関数呼び出し

  4. モデルの最上位レベルに移動します。チャート上の Initialize 端子、Reset 端子、Terminate 端子、Run 端子を Model ブロック上の initialize 入力端子、reset 入力端子、terminate 入力端子、Run 入力端子に接続します。

    Harness Model using Stateflow

  5. シミュレーションを実行します。

    ブロックの状態が 4 に初期化されている場合、モデルは 2 番目のタイム ステップまで実行できません。5 番目のタイム ステップで、リセット端子へのリセット関数呼び出しが Reset Function ブロックの実行をトリガーします。9 番目のタイム ステップで、サブシステムは実行を停止し、ブロックの状態は一定に維持されます。

    Scope Output from test harness using Stateflow

    関数呼び出しを初期化する前に、実行する関数呼び出しをモデルが受信すると、シミュレーション エラーが発生します。

メモ

Simulink Test™ を使用して同じテスト ハーネスを作成できます。この例では、Simulink Test は Stateflow チャートを使用してテスト ハーネスのスケジューラーおよびソースを作成します。詳細については、Stateflow Chart as Test Harness Scheduler and Source (Simulink Test)を参照してください。Simulink Test 用に Model02 を設定するには、Model02 のルート レベルに入力信号ソース (Signal In 端子に接続) を配置し、ソースを Function-Call Subsystem に接続します。出力を可視化するには、Scope ブロックを Model02 の出力信号に接続します。

参考

| | | | | | |

関連するトピック

外部の Web サイト