関数呼び出しを生成するテスト ハーネスの作成
ブロックの状態を初期化、再初期化、リセット、終了するモデル コンポーネントを作成した後 (初期化関数、再初期化関数、リセット関数および終了関数の使用を参照)、モデルをシミュレーション テスト ハーネスに配置できます。テスト ハーネスは、モデル コンポーネントの開発、テスト、およびデバッグに使用する Simulink® モデルです。
テスト ハーネスを作成するには、新しいモデル内にモデル コンポーネントが含まれるエクスポート関数モデルを参照してから、Stateflow® チャートを追加して関数呼び出しイベント スケジューラをモデル化します。
エクスポート関数モデルの参照
エクスポート関数モデルにはテスト用のモデル コンポーネントが含まれます。エクスポート関数モデルを作成するには、エクスポート関数モデルの作成を参照してください。
Simulink モデルを作成します。このモデルを
Test_Modelという名前で保存します。[ソルバー] のコンフィギュレーション パラメーター [タイプ] を
[固定ステップ]に、ソルバーを[自動]に、[固定ステップ サイズ] を1に設定します。Model ブロックを追加します。Model をダブルクリックして [ブロック パラメーター] ダイアログ ボックスを開きます。[モデル名] テキスト ボックスで、エクスポート関数モデルの名前を入力します。この例では、「
Model02」と入力します。Function-Call Generator ブロックを
Run端子に接続することで、参照されるモデル コンポーネントをテストします。Constant ブロックをSignal In端子に、Scope ブロックをSignal Out端子に接続します。
シミュレーションを実行し、モデルが親モデルから適切にシミュレートされることを確認します。関数呼び出しイベント端子を使用せずにモデルをシミュレートする場合、Initialize Function ブロックはシミュレーションの最初に実行され、Terminate Function ブロックはシミュレーションの最後に実行されます。

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

初期化関数呼び出し入力端子を Model ブロックで有効にする場合、モデルを実行する前に、初期化関数呼び出しを
initialize端子で受信しなければなりません。関数呼び出しの受信によって、既定のモデル初期化ルーチンの実行に続いて Initialize Function ブロックの内容の実行がトリガーされます。Reset端子での関数呼び出しの受信によって、Reset Function ブロックの内容の実行がトリガーされます。Terminate端子での関数呼び出しの受信によって、Terminate Function ブロックの内容の実行に続いて、既定のモデル終了ルーチンの実行がトリガーされます。その後、モデルは実行を停止します。モデルを再度実行するには、関数呼び出しイベントをinitialize端子に送信することでモデルを再初期化しなければなりません。
イベント スケジューラのモデル化
Stateflow チャートを使用してイベント スケジュールをモデル化し、初期化関数呼び出し信号と終了関数呼び出し信号を生成します。
Stateflow チャートを追加します。モデル ブロック線図をクリックし、
Chartと入力します。検索リストで
を選択します。チャートを開き、2 つの状態ブロックを上下に追加します。
デフォルト遷移を追加し、最上部の状態ブロックに接続します。ラベルを編集します。
{step = 0}最上部のブロックから最下部のブロックへの遷移を追加します。ラベルを編集します。
[step == 2]/{Initialize}最下部のブロックから最下部のブロックへの遷移を追加します。ラベルを編集します。
[step == 5]/{Reset}最下部のブロックから最上部のブロックへの遷移を追加します。ラベルを編集します。
[step == 9]/{Terminate}最上部のブロックのコンテンツを編集します。
Inactive entry: step = step + 1; during: step = step + 1;
最下部のブロックのコンテンツを編集します。
Running entry: step = step + 1; Run; during: step = step + 1; Run;

テスト モデルへのチャートの接続
チャートで関数呼び出し出力端子を作成し、モデル コンポーネントを制御および実行します。
モデル エクスプローラーを開きます。[モデル化] タブ、および [設計] セクションから [モデル ワークスペース]
を選択します。インデックス変数を作成します。メニューから、[追加] 、 [データ] を選択します。[データ] ダイアログ ボックスで、[名前] に
Stepを入力します。関数呼び出し出力端子を作成します。作成する関数呼び出しイベントごとに [追加] 、 [イベント] を選択し、[イベント] ダイアログ ボックスで次の値を入力および選択します。
[イベント] テキスト ボックスへの入力 スコープの設定 トリガーの設定 InitializeSimulink に出力関数呼び出しResetSimulink に出力関数呼び出しTerminateSimulink に出力関数呼び出しRunSimulink に出力関数呼び出しモデルの最上位レベルに移動します。チャート上の
Initialize端子、Reset端子、Terminate端子、Run端子を Model ブロック上のinitialize入力端子、reset入力端子、terminate入力端子、Run入力端子に接続します。
シミュレーションを実行します。
ブロックの状態が 4 に初期化されている場合、モデルは 2 番目のタイム ステップまで実行できません。5 番目のタイム ステップで、リセット端子へのリセット関数呼び出しが Reset Function ブロックの実行をトリガーします。9 番目のタイム ステップで、サブシステムは実行を停止し、ブロックの状態は一定に維持されます。

関数呼び出しを初期化する前に、実行する関数呼び出しをモデルが受信すると、シミュレーション エラーが発生します。
メモ
Simulink Test™ を使用して同じテスト ハーネスを作成できます。この例では、Simulink Test は Stateflow チャートを使用してテスト ハーネスのスケジューラーおよびソースを作成します。詳細については、テスト ハーネスのスケジューラおよびソースとしての Stateflow チャート (Simulink Test)を参照してください。Simulink Test 用に Model02 を設定するには、Model02 のルート レベルに入力信号ソース (Signal In 端子に接続) を配置し、ソースを Function-Call Subsystem に接続します。出力を可視化するには、Scope ブロックを Model02 の出力信号に接続します。
参考
Initialize Function | Reinitialize Function | Reset Function | Terminate Function | Event Listener | State Reader | State Writer | Parameter Writer
トピック
- 初期化関数、再初期化関数、リセット関数および終了関数の使用
- パラメーター値の初期化とリセット
- テスト ハーネスの入力とスケジューリングにおける Stateflow チャートの使用 (Simulink Test)