テスト ハーネスの入力とスケジューリングにおける Stateflow チャートの使用
テスト ハーネスのスケジューリングにおける Stateflow チャートの使用
テストハーネスのスケジューリングは、Test Sequence ブロック、MATLAB® Function ブロック、または Stateflow® チャートを使用して定義できます。Stateflow チャートをスケジューラとして使用すると、Test Sequence ブロックや MATLAB Function ブロックでは利用できない Stateflow 機能を使用できます。Stateflow バリアント、グラフィカル関数、上位遷移、スーパー ステップを使用すると、より複雑なスケジューリングを定義できます。たとえば、Stateflow バリアントを使用することで、1 つのテスト ハーネスで複数のテスト シナリオを指定できます。複数のテスト シナリオをテストする必要がない場合や、複雑なシーケンス ロジックを使用しない場合は、シンプルな構文をもつ Test Sequence ブロックを使用してテストをスケジューリングします。
メモ
テスト ハーネスの入力やスケジューリングにチャートを使用するには、 Stateflow ライセンスが必要です。
Stateflow チャートをテスト ハーネスのテスト スケジューラとして使用するには、テスト対象モデルまたはサブシステムに、少なくとも 1 つの関数呼び出し信号が必要です。
モデルからテスト ハーネスを設定する際に、チャートをスケジューラとして使用する手順は次のとおりです。
モデルまたはサブシステムで右クリックし、それぞれ [テスト ハーネス] 、 [モデル用に作成] または [<サブシステム> 用に作成] を選択します。
モデルの場合は、[テスト ハーネスの作成] ダイアログ ボックスの [関数呼び出しとレートのスケジューラを追加] を
[チャート]に設定します。サブシステムの場合は、[テスト ハーネスの作成] ダイアログ ボックスの [次を使用して関数呼び出し信号を生成] を
[チャート]に設定します。
Simulink Function スケジューラという名前のチャートがテスト ハーネスに追加されます。

Stateflow チャートを開き、Stateflow ステート、遷移、その他のオブジェクトを使用してテスト シーケンスを定義します。Stateflow ステートは、Test Sequence ブロックのシーケンス ステップと同様の役割を果たします。遷移は、あるステートから別のステートへの移行条件を定義します。
Stateflow チャートをスケジューラとしてプログラムで指定するには、sltest.harness.create の SchedulerBlock プロパティを Chart に設定します。
テスト ハーネス ソースとしての Stateflow チャートの使用
モデルからテスト ハーネスを作成する際に、チャートをテスト ハーネス ソースとして使用する手順は次のとおりです。
モデルまたはサブシステムで右クリックし、それぞれ [テスト ハーネス] 、 [モデル用に作成] または [<サブシステム> 用に作成] を選択します。
[テスト ハーネスの作成] ダイアログ ボックスの [Sources および Sinks] セクションで、
[インポート]ではなく[チャート]を選択します。チャートがテスト ハーネスに追加されます。以下に例を示します。

Stateflow チャートを開き、Stateflow ロジックを使用してテスト ハーネス ソースを定義します。
Stateflow チャートをソースとしてプログラムで指定するには、sltest.harness.create の Source プロパティを Chart に設定します。
テスト ハーネスのスケジューラおよびソースとしての Stateflow チャート
この例では、テスト ハーネス内で 1 つの Stateflow チャートをテスト スケジューラおよびソースとして使用する方法を示します。この例で使用する sltest_autosar_chart.slx モデルのテスト ハーネスは、既に作成済みです。
sltest_autosar_chart は、自動車用スロットル位置コントローラーの AUTOSAR コンポジション モデルです。AUTOSAR コンポジション モデルは、相互接続された Model ブロックのネットワークで構成され、各ブロックはアトミック AUTOSAR ソフトウェア コンポーネント (ASWC) を表します。Simulink の入力端子と出力端子は AUTOSAR ポートを表します。信号線は AUTOSAR コンポーネント コネクタを表します。
プライマリおよびセカンダリ スロットル位置を取得する入力は、外部時系列入力を使用してモデル化されており、変更を加えることなく Chart に直接入力されます。一部のスティミュラスの入力をモデル化でき、その他は外部で取得されたデータとしてのみ利用可能な場合に、このモデリング スタイルは適しています。
この例を実行する前に、書き込み権限があるディレクトリに移動します。
モデルを開く

テスト ハーネスを開く
この例では、テスト ハーネスは既に作成されています。
このイメージは、[テスト ハーネスの作成] ダイアログにおいて、ソースとスケジューラの両方に Chart が選択されている部分を示しています。テスト ハーネスを再作成する必要はありません。

ハーネスを開くには、エディター キャンバスの右下隅にあるパースペクティブ コントロールを使用して、[内部テスト ハーネス] をクリックします。

テスト ハーネスが開きます。
Stateflow チャートを開く
テスト ハーネス内のチャートをダブルクリックして、スケジューリング ロジックを表示します。

テスト対象コンポーネント (AUTOSAR モデル) には、アクセル ペダル位置センサーの入力 APP_HwIO_Value が必要です。これは、チャート内で 3 つのステートによりモデル化されています。
Initialize ステートは入力をノミナル値 (170) に設定し、Run ステートは 950 ms の定常加速コマンドをモデル化します。加速コマンドは、Terminate ステートでノミナル値にリセットされます。
テスト対象コンポーネントは、エクスポート関数モデリング スタイルを使用します。(エクスポート関数モデルの概要を参照してください。)テスト ハーネスの作成時、Stateflow チャートは、各ルート レベルの Simulink Function ブロックを呼び出し、モデル内の各 Function-Call Subsystem にトリガー イベントを送信するように構成されました。この例では、トリガー イベントを送信するコードは、スティミュラス波形が生成された後に、各ステート内に配置されています。
モデルの実行
テスト ハーネスからモデルを実行します。スロットル コマンドの出力を確認するには、テスト ハーネスの Scope を開きます。

参考
sltest.harness.create | Test Sequence | Function Caller