Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

Stateflow チャートを使用したエクスポート関数モデルのシミュレーションのテスト

Stateflow® チャートを使用して、周期的 (同期) または非周期的 (非同期) 呼び出しシーケンスのスケジューリング プロセスを完全に制御できる関数呼び出しスケジューラを設定します。

  • 新しい Simulink® モデルを作成します。

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

  • Stateflow チャートを使用して関数呼び出し入力を指定します。

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

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

この例のモデルの作成については、エクスポート関数モデルの作成を参照してください。

完成したテスト モデルを開くには、ex_export_function_test_model_with_stateflow_chart を参照してください。

参照されたエクスポート関数モデルの作成

Model ブロックからエクスポート関数モデルを参照すると、モデルそのものを変更することなく、Stateflow チャートから関数呼び出しイベントを追加したり、テスト用のデータ信号のログ記録を実行したりできます。

  1. Model ブロックを新しい Simulink モデルに追加します。[モデル名] ボックスに、export_function_model と入力します。

  2. Outport ブロックを [output_100ms] 端子と [output_10ms] 端子に追加して、シミュレーション データを MATLAB に保存します。

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

Stateflow チャートを使用した周期的スケジューラの作成

  1. 新しい Stateflow チャートを作成します。この手順には、Stateflow ライセンスが必要です。

  2. [モデル化] タブの [設計] セクションで、[モデル エクスプローラー] を選択します。[モデルの階層構造] ペインで、Chart を選択します。

  3. 出力端子をもつ関数呼び出しイベントをチャートに追加します。メニューから、[追加][イベント] を選択します。[名前] ボックスに、out_100ms と入力します。[スコープ] リストから、[Simulink に出力] を選択します。手順を繰り返して、out_10ms の関数呼び出しイベントと出力端子を作成します。

  4. ブロックをダブルクリックしてチャートを開きます。State ブロックとデフォルト遷移矢印を追加します。

  5. ステートの名前を function_call_scheduler に変更します。

  6. 周期関数呼び出しを 10 ミリ秒および 100 ミリ秒ごとに追加します。State ブロックで、次のコマンドを入力します。

    on every(10, tick):send(out_10ms);
    on every(100, tick):send(out_100ms);

    キーワード tick は、シミュレーション ステップの数をカウントする暗黙的なイベントで、send は関数呼び出しイベントを出力端子に出力する明示的なイベントです。

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

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

  1. Stateflow チャートをテスト モデルに追加します。

  2. Stateflow チャート出力を Model ブロック入力に接続します。

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

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

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

  • Model ブロック上の入力端子の関数呼び出しは、参照されるエクスポート関数モデルのルートレベルの関数呼び出し Inport ブロックの実行順序に従わなければなりません。

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

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

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

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

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

メモ

最上位モデルのシミュレーションでエクスポート関数モデルを使用する場合、シミュレーション中にモデルの有効/無効ステータスを変更しないでください。これは、シミュレーション開始時に有効にし、関数呼び出しを使用して呼び出します。

  1. テスト モデルのコンフィギュレーション パラメーターを設定します。[モデル化] タブおよび [設定] セクションで、[モデル設定] を選択します。[モデル参照] ペインを選択します。コンフィギュレーション パラメーター [参照モデルの厳密なスケジューリング チェックを有効にする] のチェック ボックスをオフにします。

  2. コンフィギュレーション パラメーター [ソルバー タイプ][固定ステップ][ソルバー][離散 (連続状態なし)]、および [固定ステップ サイズ (基本サンプル時間)] が [auto] に設定されていることを確認します。

  3. Model ブロックの出力端子信号を右クリックし、[選択した信号のログ] を選択します。

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

  5. アイコン をクリックしてシミュレーション データ インスペクターを開きます。

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

参考

関連するトピック