Main Content

モデルの階層構造内のシミュレーション モードの選択

モデルの階層構造をシミュレーションする場合、最上位のモデルと参照モデルがどのように実行されるかを考慮しなければなりません。

  • 最上位モデル — すべての Simulink® シミュレーション モードをサポートします。最上位モデルの実行を高速化するために、Simulink アクセラレータ モードやラピッド アクセラレータ モードを使用できます。

  • 参照モデル — モデルに対してどのシミュレーション モードでも指定することができますが、そのモデルを参照する際、参照モデルの各インスタンスの Model ブロックが、そのインスタンスのシミュレーション モードを制御します。親モデルのシミュレーション モードが Model ブロックのシミュレーション モードをオーバーライドする場合があります。

シミュレーション モードの詳細についてはシミュレーション モードの選択およびアクセラレータ モードの動作を参照してください。

モデルの階層構造内のモデルに対するソルバーの選択の詳細については、モデル階層のコンフィギュレーション パラメーターの設定を参照してください。

モデル参照のシミュレーション モード

Model ブロックに対して、次のどのシミュレーション モードでも指定することができます。

  • ノーマル

  • アクセラレータ

  • ソフトウェアインザループ (SIL) — Embedded Coder® が必要

  • プロセッサインザループ (PIL) — Embedded Coder が必要

ノーマル モードかアクセラレータ モードかを選択する際には、柔軟性と速度のトレードオフが生じます。ノーマル モードは、参照モデルでより多くの Simulink および Stateflow® の機能 (スコープ、端子の値の表示、デバッグ ツールなど) をサポートします。アクセラレータ モードでは、参照モデルでサポートされる機能は少なくなりますが、モデルの階層構造をより速くシミュレーションします。

モデル化要件ノーマル モードアクセラレータ モード
シミュレーションの速度

モデルの実行は、ノーマル モードではアクセラレータ モードより低速になります。ただし、ノーマル モードで実行される参照モデルは、シミュレーション ターゲットのビルドおよびコンパイルのために、シミュレーションを遅延させません。これは、ノーマル モードでは、参照モデルがインタープリター形式で実行されるためです。

アクセラレータ モードではノーマル モードよりもモデルが高速で実行されます。モデルのシミュレーションを行う前に、Simulink はシミュレーション ターゲットをビルドしコンパイルしなければなりません。これはプロトタイピングには望ましくありません。詳細については、参照モデルに対するシミュレーション ターゲットの管理を参照してください。

デバッグ

Simulink デバッガーを使用すると、ノーマル モードで実行される参照モデル内にブレークポイントを設定できます。詳細については、プログラムによるシミュレーションのデバッグを参照してください。

Simulink プロファイラーを使用すると、ノーマル モードで実行される参照モデルに対してプロファイリングを有効にできます。親モデルでプロファイリングを有効にしても、参照モデルのプロファイリングは有効になりません。詳細は、プロファイラーによるパフォーマンス データの取得を参照してください。

アクセラレータ モードで実行される参照モデルでは、Simulink デバッガーおよび Simulink プロファイラーによって行われる指定やアクションは無視されます。

動作確認

Simulink Coverage™ のモデル カバレッジ解析は、ノーマル モードで実行される参照モデルをサポートしています。

Simulink Coverage のモデル カバレッジ解析は、アクセラレータ モードで実行される参照モデルを無視します。

調整可能性

ノーマル モードで実行される参照モデルについて、シミュレーション中にブロック パラメーターを調整できます。

アクセラレータ モードで実行される参照モデルについては、参照モデルがベース ワークスペースまたはデータ ディクショナリ内の変数を使用してパラメーター値を設定する場合、変数の値を調整できます。シミュレーション中に参照モデルのブロック パラメーターを調整することはできません。詳細については、その他のモデル化の目的に関する調整可能性の考慮事項と制限を参照してください。

データ ログ

データ ログはノーマル モードで実行される参照モデルに対して広範なサポートを提供します。

アクセラレータ モードで実行される参照モデルについては、保存に Timeseries 形式を使用する場合にのみ、To Workspace ブロックがデータをログ記録します。

データの可視化

シミュレーション データ インスペクターを使用して、参照モデルのすべてのインスタンスについてのシミュレーション結果を表示できます。

参照モデルの Display ブロックを使用して、各インスタンスのインスタンス固有のシミュレーション結果を表示できます。

スコープと端子の値ラベルのデータは、ノーマル モードの可視性が有効になっている参照モデルのインスタンスについてのみ表示されます。詳細については、ノーマル モードでの複数の参照モデル インスタンスのシミュレーションを参照してください。

シミュレーション データ インスペクターを使用して、参照モデルのすべてのインスタンスについてのシミュレーション結果を表示できます。

これらの可視化の方法によって、アクセラレータ モードで実行される参照モデルについてはデータは表示されません。

  • 参照モデルの Scope ブロック、Floating Scope ブロックおよび Scope Viewer ブロック

  • 端子の値ラベルなどの実行時表示

最上位モデルの Scope ブロックでは、ビューアーおよびジェネレーター マネージャーを使用して参照モデルにテスト ポイントを追加する場合、アクセラレータ モードで実行される参照モデルのデータを表示できます。テスト ポイントの追加や削除には、モデルのモデル参照シミュレーション ターゲットをリビルドする必要があります。

診断

コンフィギュレーション パラメーター設定は指定されたとおりに適用されます。

アクセラレータ モードで参照されるモデルについては、Simulink は一部のコンフィギュレーション パラメーター設定を無視する場合があります。詳細については、アクセラレータ モードで無視される診断を参照してください。

実行時のチェック

実行時のチェックは有効になります。

一部のブロックでは、そのブロックをアクセラレータ モードの参照モデルに含めたときに、ブロックに含まれている実行時チェックが無効になります。このようなブロックの例には、Assignment ブロック、Selector ブロック、MATLAB Function ブロック、MATLAB System ブロックがあります。

線形化解析と最適化

ノーマル モードでは、参照モデルのブロックごとの線形化が可能です。この方法により、正確な線形化が達成できます。

アクセラレータ モードでは、モデル参照の離散状態は線形化に提供されません。これらの離散状態は線形化中に摂動しないため、平衡化処理では完全に自由になりません。

ランダムなブロックの出力は、平衡化中に一定に保たれません。出力が一定に保たれないと、最適化プロセスに影響する可能性があります。

外部関数

ノーマル モードで実行される参照モデル内の MATLAB Function ブロックでは、コード生成用に外部関数として宣言された MATLAB® 関数を呼び出すことができます。

アクセラレータ モードで実行される参照モデル内の MATLAB Function ブロックでは、コード生成用に外部関数として宣言された MATLAB 関数を呼び出すことはできません。

S-Function

ノーマル モードで実行される参照モデルは、アクセラレータ モードで実行される参照モデルよりも多くの S-Function をサポートします。詳細については、参照モデルにおける S-Functionを参照してください。

アクセラレータ モードで実行される参照モデルでは、ノーマル モードで実行される参照モデルよりもサポートされる S-Function は少なくなります。詳細については、参照モデルにおける S-Functionを参照してください。

SIL シミュレーション モードおよび PIL シミュレーション モードでは、組み込みプロセッサ用の量産コードを生成することで、参照モデルを実行します。ターゲット ハードウェアが使用できないときにはホスト プラットフォームで実行できるため、SIL モードは PIL シミュレーションの便利な代替手段になります。詳細については、SIL シミュレーションおよび PIL シミュレーション (Embedded Coder)を参照してください。

オーバーライドされたシミュレーション モード

親モデルのシミュレーション モードが Model ブロックのシミュレーション モードをオーバーライドする場合があります。次の表に、親モデルおよび関連する Model ブロックのシミュレーション モードに基づいて、参照モデル インスタンスに対して使用されるシミュレーション モードを示します。

親モデルによって使用されるシミュレーション モードModel ブロックのシミュレーション モード
ノーマルアクセラレータ
ノーマル

共存 — 参照モデルはノーマル モードでシミュレーションを実行する。

共存 — 参照モデルはアクセラレータ モードでシミュレーションを実行する。

アクセラレータ

オーバーライド — 参照モデルはアクセラレータ モードでシミュレーションを実行する。

共存 — 参照モデルはアクセラレータ モードでシミュレーションを実行する。

ラピッド アクセラレータ (最上位モデルのみ)

SIL および PIL の詳細についてはSimulation Mode Override Behavior in Model Reference Hierarchy (Embedded Coder)を参照してください。

モデルの変更を未保存 (ダーティ) にすることなくモデル参照のシミュレーション モードを手動でオーバーライドするには、Override Model Reference Simulation Modesを参照してください。

関連するトピック