Main Content

実行領域の指定

実行領域の仕様により、モデルとそのサブシステムおよび参照モデルを設定して離散時間システムまたはデータ駆動型システムとしてシミュレーションできます。この設定を使用して、たとえば、連続時間ダイナミクスでモデル化されたプラントの展開可能なコントローラーの設計で、そのダイナミクスの他の部分から離散ダイナミクスを分離します。

計算量の多い信号処理またはマルチレート信号処理システムをシミュレーションするために、データフロー領域を割り当てることもできます。データフロー領域は、計算同期データフローのモデルを使用してシミュレーションします。これはデータ駆動型であり、静的にスケジュールされます。詳細については、Dataflow Domain (DSP System Toolbox)を参照してください。

環境とは関係なく、離散実行領域を維持するサブシステムを作成できます。サブシステムを離散に制約することで、サブシステムのコンポーネントとしての再利用性を向上させることができます。コード生成を向上させるために、この仕様で不要な更新メソッドを削減し、主要なタイム ステップ チェックを削減して、生成コードの再利用性を向上させます。

領域の仕様バッジ

領域の仕様バッジは、モデル ブロック線図を更新するときにモデルまたはサブシステムに対して計算された実行領域を示します。[サンプル時間の表示] をオンにして、領域の仕様バッジの表示/非表示を切り替えることができます。サンプル時間の表示/非表示の詳細については、サンプル時間情報の表示を参照してください。バッジは、Simulink® エディターの左下隅に表示されます。

次のモデルは、Gain ブロックを駆動する前に、レートが Rate Transition ブロックによって削減される離散 Sine Wave ブロックを示します。

その内容がすべて離散であるため、モデルが "離散" 実行領域を受け取っていることが分かります。

[プロパティ インスペクター][実行] タブの [領域の仕様の設定] パラメーターを有効または無効にすることで、バッジの表示/非表示を切り替えることもできます。

実行領域のタイプ

Simulink では、[プロパティ インスペクター] を介して、許容されるサンプル時間と共に実行領域を割り当てるように指示できます。

指定離散その他データフロー
内容から推定XX-
離散X--
データフロー--X
エクスポート関数X--

  • [内容から推定] Simulink がサブシステムの内容に基づいて実行領域を割り当てるようにします。

  • [離散] サブシステム内のすべてのブロックが離散化するように制約します。

  • [データフロー] 計算量の多い信号処理またはマルチレート信号処理システムをシミュレーションします。この設定には DSP System Toolbox™ が必要です。

  • Export function model badge[エクスポート関数] モデルをエクスポート関数モデルとして扱うものと指定します。モデルをエクスポート関数モデルとして指定すると、モデル コンフィギュレーション パラメーターの [ソルバーの選択] が Simulink によって自動的に [固定ステップ] および [自動] に設定されます。詳細については、エクスポート関数モデルの概要を参照してください。

モデル ブロック線図を更新する、またはモデルのシミュレーションを実行すると、バッジはモデル コンポーネントの計算された実行領域を示します。Simulink には 3 つの実行領域があります。

サブシステムに、連続サンプル時間、可変サンプル時間、マイナー ステップに固定サンプル時間、定数サンプル時間、またはサンプル時間の混在が存在する場合、バッジを使用して領域の仕様を有効または無効にすることができます。それでも、サブシステムは [その他] 時間領域を受け取ります。

現在選択されているサブシステムまたはモデルが、リンク付きブロックであるか、ライブラリ内のブロックであるか、[その他] 領域を受け取る条件付き実行サブシステムである場合、領域の仕様バッジはアクション可能ではありません。リンク付きライブラリ ブロックの実行領域を変更するには、親ライブラリ ブロックへのリンクを解除します。ライブラリ ブロックへのリンクの無効化または解除を参照してください。

実行領域の設定

プロパティ インスペクターの [実行] タブを使用して、サブシステムごとにモデルのルート レベルで領域の仕様を設定できます。モデルに対してプロパティ インスペクターを有効にするには、[モデル化] タブの [設計] の下で [プロパティ インスペクター] をクリックするか、キーボードで Ctrl+Shift+I を押します。macOS では、代わりに command+option+O を押します。領域の仕様バッジが表示されたら、バッジをクリックして、プロパティ インスペクターの [実行] 設定を開くこともできます。領域の仕様バッジを参照してください。

[実行領域の設定] チェック ボックスをオンにします。これで、[領域] を指定できます。

メモ

モデルのルート レベルで領域の仕様を変更しても、その子サブシステムの設定は変更されません。

set_param を使用して SetExecutionDomain パラメーターを 'on' または 'off' に設定し、コマンド ラインからのこの設定を有効にすることもできます。

有効にすると、[領域] パラメーターの既定の設定は [内容から推定] です。ブロック線図を更新する場合、実行領域は、現在開いているサブシステム内のブロックの特性から推定されます。たとえば、離散ブロックのみをもつシステムは、[離散] 実行領域内にあります。実行領域のタイプを参照してください。

バッジには現在の仕様設定が表示されます。サブシステム領域を [内容から推定] に設定すると、ブロック線図を更新するまでバッジ テキストには [Deduce] と表示されます。一度モデル ブロック線図を更新すると、バッジには実行領域のタイプで説明されている計算された実行領域が表示されます。[領域の仕様の設定] を有効にし、[領域][内容から推定] に設定すると、Simulink は、サブシステム内のブロックとサンプル時間に基づいて現在フォーカスがあるサブシステムの実行領域を計算します。

コマンド ラインから [領域] パラメーターを設定するには、set_param を使用して ExecutionDomainType'Deduce' または 'Discrete' に変更します。サブシステムの CompiledExecutionDomain パラメーターを使用して、ブロック線図を更新した後に計算された実行領域も取得できます。

サブシステムに離散実行領域を適用

この例では、モデルの構成サブシステムの実行領域を指定する方法を説明します。

SubsystemExecution モデルには、Desired Speed という名前の Constant ブロックの基準速度のセットを追跡する Discrete Cruise Controller Subsystem があります。Car Dynamics サブシステムは、自動車の連続時間ダイナミクスをモデル化します。

サブシステムのサンプル時間および領域を可視化するには、サンプル時間の色と注釈をオンにします。

モデルの離散クルーズ コントローラーの入力端子に Car Dynamics サブシステムの出力からの連続時間信号が存在するため、このコントローラーにはハイブリッドのサンプル時間があります。

コントローラーの離散時間実行を適用するには、以下のようにします。

  1. discrete cruise controller という名前の Subsystem ブロックを選択します。

  2. プロパティ インスペクターを開いて [実行] タブに移動します。

  3. [実行領域の設定] を選択します。

  4. [領域]Discrete に設定します。

サンプル時間の色および注釈を更新するには、モデルを更新するかシミュレートします。

Discrete Cruise Controller Subsystem が離散になりました。

Car Dynamics サブシステムは、ハイブリッド サンプル時間および [その他] 実行領域を受け取ります。Car Dynamics サブシステムの実行領域を Deduce from Contents に設定するには、以下のようにします。

  1. car dynamics という名前の Subsystem ブロックを選択します。

  2. プロパティ インスペクターを開いて [実行] タブに移動します。

  3. [実行領域の設定] を選択します。

  4. [領域]Deduce from contents に設定します。

必要に応じて、このサブシステムの Inport ブロックの [サンプル時間] パラメーターを 0 に設定します。

サンプル時間の色および注釈を更新するには、モデルを更新するかシミュレートします。

参考

| | | (DSP System Toolbox)