関数呼び出しジェネレーターを使用したエクスポート関数モデルのシミュレーションのテスト
離散サンプル時間をもつ複数の Function-Call Generator ブロックを使用して、Simulink® でシミュレーションの関数呼び出しコンポーネントをスケジュールします。この手法は、Simulink のレート モノトニック スケジューリングの動作がターゲット OS の動作と類似している場合に便利です。
新しい Simulink モデルを作成します。
エクスポート関数モデルを参照する Model ブロックを追加します。
Function-Call Generator ブロックを使用して関数呼び出しイベントを指定します。
データ入力を指定します。
シミュレーションを実行します。
この例のモデルの作成については、エクスポート関数モデルの作成を参照してください。
完成したテスト モデルを開くには、ex_export_function_test_model_with_function_call_generators
を参照してください。
参照されたエクスポート関数モデルの作成
Model ブロックからエクスポート関数モデルを参照すると、モデルそのものを変更しなくても、関数呼び出しイベントを追加したり、テスト用のデータ信号のログ記録が可能になります。
Model ブロックを新しい Simulink モデルに追加します。[モデル名] ボックスに、
export_function_model
と入力します。Outport ブロックを、Model ブロックの [output_100ms] 端子と [output_10ms] 端子に追加します。
Sine Wave ブロックを追加してデータ入力を設定します。[振幅] を
2
、[サンプル時間] を0.01
に設定します。ブロックを Model ブロックの [input_10ms] 入力端子に接続します。
シミュレーション用のテスト モデル (ハーネス) の作成
シミュレーション専用の Simulink テスト モデルを使用します。シミュレーション テストの後に、エクスポート関数モデルからコードを生成し、エクスポートした関数コードを外部でコード化されたスケジューラと統合します。
Function-Call Generator ブロックを追加します。[サンプル時間] を
0.1
に設定します。ブロックを [function_call_100ms] 入力端子に接続します。2 番目の Function-Call Generator ブロックを追加します。[サンプル時間] を
0.01
に設定します。ブロックを [function_call_10ms] 入力端子に接続します。
参照エクスポート関数モデルのスケジューリングの制限
テスト モデルがエクスポート関数モデルを参照する場合、シミュレーション結果との整合性を確保するためにいくつかの制限があります。
テスト モデルの場合は、次の制限があります。
同じサンプル時間で 2 つの Function-Call Generator ブロックを使用することはできません。
Model ブロックの入力端子の関数呼び出しは、参照されたエクスポート関数モデル内のルートレベルの関数呼び出し Inport ブロックの実行順序に従わなければなりません。サンプル時間が短い方の Function-Call Generator ブロックが最初に実行されます。
テスト モデルが参照モデル関数をいずれかのタイム ステップにおいて不適切な順序で呼び出す場合、Simulink にエラーが表示されます。並べ替えられた実行順序についての詳細は、実行順序の制御と表示を参照してください。この制限を無効にするには、[コンフィギュレーション パラメーター] の [参照モデルの厳密なスケジューリング チェックを有効にする] のチェック ボックスをオフにします。
Mux ブロックを使用して異なるサンプル時間の Function-Call Generator ブロックからの信号を接続してから、参照されたエクスポート関数モデルにそれらの信号を接続できます。[コンフィギュレーション パラメーター] ダイアログ ボックスで、パラメーター [各離散レートを個別のタスクとして扱う] のチェック ボックスをオフにします。
エクスポート関数モデルの場合は、次の制限があります。
ルートレベルの関数呼び出し Inport ブロックのサンプル時間は [継承] (
-1
) に設定するか、それらを駆動する Function-Call Generator ブロックのサンプル時間と一致しなければなりません。
エクスポート関数モデルのシミュレーション
エクスポート関数モデルをシミュレートして、コードを生成する前にその動作をテストおよび確認します。
メモ
Simulink はプリエンプトする関数呼び出しのシミュレーションは行いません。
テスト モデルのコンフィギュレーション パラメーターを設定します。[モデル化] タブおよび [設定] セクションで、[モデル設定]
を選択します。[モデル参照] ペインを選択します。コンフィギュレーション パラメーター [参照モデルの厳密なスケジューリング チェックを有効にする] のチェック ボックスをオフにします。
コンフィギュレーション パラメーター [ソルバー タイプ] が
[固定ステップ]
、[ソルバー設定] が[離散 (連続状態なし)]
、および [固定ステップ サイズ (基本サンプル時間)] が[auto]
に設定されていることを確認します。信号のログ記録をセットアップします。出力端子信号を右クリックし、[選択した信号のログ] を選択します。
シミュレーションを実行します。
ツールストリップ アイコン
をクリックして、シミュレーション データ インスペクターを開きます。
モデルをテストした後に、関数のコードを生成できます。エクスポート関数モデルのコードの生成を参照してください。