ドキュメンテーション

このページは前リリースの情報です。該当の英語のページはこのリリースで削除されています。

モデル コンポーネント実行の明示的なスケジュール指定

エクスポート関数モデルまたはレートベース モデルを使用してモデル コンポーネント (Subsystem ブロックと Model ブロック) の実行を制御できます。コンポーネントのスケジューリングには次のような利点があります。

  • Simulink® の暗黙的なスケジュールに依存せずに、モデル コンポーネントのスケジュールを完全に制御できます。

  • コンポーネント間のデータ依存性の問題に対処する必要がありません。つまり、データ転送だけで済みます。

このトピックでは、サブシステムを明示的にスケジュールしたレートベース モデルを作成し、そのモデルをテスト モデルで参照して、シミュレーション用にテスト モデルに周期的イベント端子を追加する方法について説明します。エクスポート関数モデルの使用の詳細については、エクスポート関数モデルを参照してください。

レートベース モデルの作成

2 つのサブシステムを含むモデルについて考えます。Subsystem1 はその入力を 2 で乗算しますが、Subsystem2 はその入力を 4 で乗算します。

メモ

Integrator ブロックのような連続時間ブロックは使用できません。代わりに同等の離散時間ブロックを使用します。

  1. Inport 1 のダイアログ ボックスを開きます。[信号属性] タブで、[サンプル時間]0.2 に設定します。

  2. Inport 2 のダイアログ ボックスを開きます。[信号属性] タブで、[サンプル時間]0.4 に設定します。

  3. レートベース モデルに複数のレートがある場合、シングル タスクは許可されません。コンフィギュレーション パラメーターの [各離散レートを個別のタスクとして扱う] チェック ボックスをオンにします。

レートベース モデルを参照するテスト モデルの作成

レートベース モデルのテストでは、モデルをテスト モデルの Model ブロックから参照し、Model ブロックに周期的イベント端子を追加して、端子に関数呼び出しを接続します。

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

  2. Model ブロックを追加し、[ブロック パラメーター] ダイアログ ボックスを開きます。

  3. [モデル名] ボックスにレートベース モデルのファイル名を入力します。

  4. [モデルの周期的イベント端子を表示] チェック ボックスをオンにします。

    Model ブロックに周期的イベント端子が追加されます。[サンプル時間] は、Subsystem ブロックに接続された Inport ブロックに対して指定した値になります。

  5. 関数呼び出しイニシエーター (Function-Call Generator ブロックまたは Stateflow® チャート) を使用して実行レートを指定します。関数呼び出しイベントとそれらのイベントのスケジュールは、レートベース モデルを参照する Model ブロックの外部に配置されます。

    この例では、Function-Call Generator ブロックを追加します。ブロックのダイアログ ボックスを開き、[サンプル時間] を指定します。

    レートベース モデルに含まれる同じサンプル時間のサブシステムや参照モデルでは、イニシエーターのレートが同じでなければなりません。この要件の対象には、同じレートの周期的にスケジュールされたサブシステムやイベント ドリブン Function-Call Subsystem ブロックが含まれます。

  6. シミュレーションには固定ステップ ソルバーを使用します。コンフィギュレーション パラメーターで、[タイプ][固定ステップ]、[ソルバー] を [自動][固定ステップ サイズ][auto] に設定します。

レートベース モデルのシミュレーション

レートベース モデルの動作をテスト モデルからシミュレートします。

  1. シミュレーションを実行します。一般的なコンパイル エラーや実行時エラーの原因は次のとおりです。

    • 周期的イベント端子が同じサンプル時間が指定された関数呼び出しイニシエーターに接続されていない。

    • 参照コンポーネント モデルのスケジュールされた Inport ブロック ([サンプル時間] パラメーターを値に設定) でいずれかの周期的イベント端子のレート ([Port discrete rates] テーブルで指定されたサンプル時間) が指定されていない。

  2. コンポーネント モデルの動作を確認します。Scope ブロックを開きます。

レートベース モデルからのコードの生成

モデルのテスト ハーネスではなく、レートベース モデルからコードを生成します。スケジュールされたサブシステムの離散レートが異なる場合は、マルチタスクが必要であり、結果のコードには個別のエントリ ポイントが含まれます。

  1. コンポーネント モデルのコードを生成します。メニューから、[コード][C/C++ コード][モデルのビルド] を選択します。

  2. コード生成レポートを開きます。メニューから、[コード]、[C/C++ コード][コード生成レポート][モデル レポートを開く] を選択します。

関連するトピック