Main Content

関数呼び出しジェネレーターを使用したエクスポート関数モデルのシミュレーションのテスト

離散サンプル時間をもつ複数の Function-Call Generator ブロックを使用して、ソフトウェアでシミュレーションの関数呼び出しコンポーネントをスケジュールします。この手法は、Simulink® ソフトウェアのレート モノトニック スケジューリングの動作がターゲット OS の動作と類似している場合に便利です。

  1. Simulink モデルを作成します。

  2. エクスポート関数モデルを参照する Model ブロックを追加します。

  3. Function-Call Generator ブロックを使用して関数呼び出しイベントを指定します。

  4. データ入力を指定します。

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

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

Model ブロックからエクスポート関数モデルを参照すると、モデルそのものを変更しなくても、テスト用に関数呼び出しイベントや信号ログを追加できます。

  1. Model ブロックを新しい Simulink モデルに追加します。[モデル名] ボックスで、エクスポート関数モデルの名前を入力します。たとえば、エクスポート関数モデルの作成で作成したエクスポート関数モデルを使用します。

  2. Outport ブロックを追加し、Model ブロックの output_100ms 端子と output_10ms 端子に接続します。

  3. Sine Wave ブロックを追加してデータ入力を設定します。[振幅]2[サンプル時間]0.01 に設定します。ブロックを Model ブロックの [input_10ms] 入力端子に接続します。

    Model block that references export-function model and has input and output ports connected

シミュレーション用のテスト モデル (ハーネス) の作成

シミュレーション専用の Simulink テスト モデルを使用します。シミュレーション テストの後に、エクスポート関数モデルからコードを生成します。その後、エクスポートした関数コードを外部でコード化されたスケジューラと統合します。

  1. Function-Call Generator ブロックを追加します。[サンプル時間]0.1 に設定します。ブロックを [function_call_100ms] 入力端子に接続します。

  2. 2 番目の Function-Call Generator ブロックを追加します。[サンプル時間]0.01 に設定します。ブロックを [function_call_10ms] 入力端子に接続します。

    Model block that references export-function model and has function-call ports connected

参照エクスポート関数モデルのスケジューリングの制限

テスト モデルがエクスポート関数モデルを参照する場合、シミュレーション結果との整合性を確保するためにいくつかの制限があります。

テスト モデルの場合は、次の制限があります。

  • 同じサンプル時間で 2 つの Function-Call Generator ブロックを使用することはできません。

  • Model ブロックの入力端子の関数呼び出しは、参照されたエクスポート関数モデル内のルートレベルの関数呼び出し Inport ブロックの実行順序に従わなければなりません。サンプル時間が短い方の Function-Call Generator ブロックが最初に実行されます。

    テスト モデルが参照モデル関数をいずれかのタイム ステップにおいて不適切な順序で呼び出す場合、エラーが表示されます。並べ替えられた実行順序についての詳細は、実行順序の制御と表示を参照してください。この制限を無効にするには、[参照モデルの厳密なスケジューリング チェックを有効にする] コンフィギュレーション パラメーターをオフにします。

  • Mux ブロックを使用して異なるサンプル時間の Function-Call Generator ブロックからの信号を接続してから、参照されたエクスポート関数モデルにそれらの信号を接続できます。[コンフィギュレーション パラメーター] ダイアログ ボックスで、[各離散レートを個別のタスクとして扱う] パラメーターをオフにします。

エクスポート関数モデルの場合は、次の制限があります。

  • ルートレベルの関数呼び出し Inport ブロックのサンプル時間は [継承] (-1) に設定するか、それらを駆動する Function-Call Generator ブロックのサンプル時間と一致しなければなりません。

シミュレーションのためのエクスポート関数モデルの準備

エクスポート関数モデルをテストする前に、モデルの設定を構成し、ログを記録する信号を指定します。

  1. [モデル化] タブで、[モデル設定] をクリックします。

  2. [モデル参照] ペインで、コンフィギュレーション パラメーター [参照モデルの厳密なスケジューリング チェックを有効にする] をオフにします。

  3. [ソルバー] ペインで、次のコンフィギュレーション パラメーターの設定を確認します。

    • [タイプ][固定ステップ] に設定されている。

    • [ソルバー][離散 (連続状態なし)] に設定されている。

    • [固定ステップ サイズ (基本サンプル時間)][自動] に設定されている。

  4. 信号のログ記録をセットアップします。ログを記録する信号を右クリックします。その後、[選択した信号のログ] を選択します。この例では、エクスポート関数モデルの出力信号が Outport ブロックに接続されているため、それらのログが記録されます。

メモ

プリエンプトする関数呼び出しはシミュレートされません。

Function-Call Generator ブロックを使用したエクスポート関数モデルのテスト

コードを生成する前にエクスポート関数モデルの動作をテストおよび確認するには、完成したテスト モデルをシミュレートします。

必要に応じて、完成した ex_export_function_test_model_with_function_call_generators という名前のテスト モデルを開いてシミュレートします。

シミュレーション結果を表示するには、シミュレーション データ インスペクターを開きます。[シミュレーション] タブで、[データ インスペクター] をクリックします。

モデルをテストした後に、関数のコードを生成できます。エクスポート関数モデルのコードの生成を参照してください。

参考

関連するトピック