Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

Model

モデル階層の作成のための別のモデルの参照

  • Model block

ライブラリ:
Simulink / Ports & Subsystems
HDL Coder / Ports & Subsystems

説明

Model ブロックは指定されたモデルを参照します。参照モデルの最上位の入力端子と出力端子に対応する入力端子と出力端子を表示します。これらの端子を使用すると、参照モデルを親モデル内の他のブロックに接続できます。

Model ブロックが同様の機能をもつ別のブロックよりも目的に適しているかどうか確認するには、モデル コンポーネントのタイプの検討およびモデル コンポーネントの機能の比較を参照してください。

Model ブロックを含むモデルを参照する方法については、既存のモデルの参照を参照してください。

既定では、Model ブロックは参照モデルのコンテンツ表現を表示します。詳細については、モデル コンポーネントの内容のプレビューを参照してください。参照モデルの内容を表示するには、Model ブロックをダブルクリックします。

Simulink® Coder™ のライセンスがある場合は、モデルを保護することで、参照モデルの実装の詳細を隠すことができます。モデルを保護するには、コンテンツを隠すためのモデルの保護 (Simulink Coder)を参照してください。保護モデルを参照するには、サードパーティからの保護モデルの参照を参照してください。

すべて展開する

Model ブロックを使用してモデルを別のモデルに含めることができます。各 Model ブロックは "モデル参照"、つまり別のモデルへの参照です。モデルは何度でも参照できるので、同じものを繰り返しコピーする必要がなく、同じモデルを複数の異なるモデルから参照できます。

例を開きます。この例には sldemo_mdlref_counter という名前のモデルが含まれています。

sldemo_mdlref_counter などのモデルを参照する前に、その構成、インターフェイス、および内容を検討します。

sldemo_mdlref_counter は固定ステップ離散ソルバーを使用しており、3 つの Inport ブロックと 1 つの Outport ブロックを含んでいます。

  • upper という名前の Inport ブロックはカウンターの上限を提供します。

  • input という名前の Inport ブロックはタイム ステップごとにカウンターをインクリメントする値を提供します。

  • lower という名前の Inport ブロックはカウンターの下限 (開始値) を提供します。

  • output という名前の Outport ブロックは現在のカウントを提供します。

各 Inport ブロックはモデル入力を表し、各 Outport ブロックはモデル出力を表します。

新しいモデルで、Model ブロックを追加します。

プロパティ インスペクターで [モデル名]sldemo_mdlref_counter に設定します。

ブロック アイコンの情報を見やすくするために、重なっている情報がなくなるまで Model ブロックの隅をドラッグします。

Model ブロック アイコンでは以下が表示されます。

  • 参照モデルの名前: sldemo_mdlref_counter

  • upperinput、および lower という名前の入力端子

  • output という名前の出力端子

固定ステップの離散シミュレーション用に最上位モデルを構成します。

  1. [モデル化] タブで、[モデル設定] をクリックします。

  2. [コンフィギュレーション パラメーター] ダイアログ ボックスの [ソルバー] ペインで [タイプ][Fixed-step][ソルバー][discrete (no continuous states)] に設定します。

  3. [OK] をクリックします。

参照モデルの予期される入出力に対応する入出力を Model ブロックに接続します。

  • カウンターの上限を表すために、Constant ブロックを追加して [定数値]100 に設定します。次に、それを [upper] 端子に接続します。

  • カウンターのインクリメントを表すために、Constant ブロックを追加して [定数値]1 に設定します。次に、それを [input] 端子に接続します。

  • カウンターの下限を表すために、Constant ブロックを追加して [定数値]0 に設定します。次に、それを [lower] 端子に接続します。

  • プロットでカウンター出力を表示するために、Scope ブロックを追加します。次に、それを [output] 端子に接続します。

ツールストリップで [実行] をクリックします。

最上位モデルでシミュレートされ、参照モデルが実行されます。スコープ ウィンドウでシミュレーションの出力カウントが表示されます。

モデル SecondOrderSystemTop を開きます。このモデルには、2 次システムのモデルを参照する Model ブロックに入力信号を提供する Ramp ブロックが含まれています。Model ブロックの出力信号は Outport ブロックに接続されます。

topmdl = "SecondOrderSystemTop";
open_system(topmdl)

The model SecondOrderSystemTop.

参照モデル内を移動するには、Model ブロックをダブルクリックします。あるいは、Model ブロックの Simulink.BlockPath オブジェクトを作成し、関数 open を使用してモデルの階層構造のコンテキストで参照モデルを開きます。

mdlblkpath = Simulink.BlockPath(topmdl + "/Model");
open(mdlblkpath)

The contents of the model reference.

参照モデルは、Transfer Fcn ブロックを使用して 2 次システムを実装し、システムへの変更または外乱をモデル化する Step ブロックを含みます。

システム伝達関数は、2 つのモデル ワークスペース変数 wnz を使用して Transfer Fcn ブロックで指定します。これらの変数はシステムの固有振動数 (ラジアン/秒) とシステムの減衰係数を表します。

モデル ワークスペースで変数 wn の値を 100 として指定して、固有振動数 100 ラジアン/秒でシステムを構成します。

refmdl = "SecondOrderSystem";
mdlwksp = get_param(refmdl,"ModelWorkspace");
assignin(mdlwksp,"wn",100)

ステップ サイズ 0.01 秒でローカル ソルバーを使用するように参照モデルを構成します。プロパティ インスペクターまたは [ブロック パラメーター] ダイアログ ボックスを使用して、最上位モデルから参照モデルの設定を構成できます。

  1. プロパティ インスペクターを開きます。[モデル化] タブで [設計] セクションを展開し、[プロパティ インスペクター] を選択するか、Ctrl+Shift+I を押します。

  2. 参照モデルの [コンフィギュレーション パラメーター] ダイアログ ボックスを開くには、Model ブロックを選択します。次に、プロパティ インスペクターで [ソルバー] セクションを展開し、[ローカル ソルバーを使用] パラメーターの横にあるハイパーリンクをクリックします。

  3. モデルの階層構造内で参照されている場合にローカル ソルバーを使用するようにモデルを構成します。[コンフィギュレーション パラメーター] ダイアログ ボックスの [モデル参照] ペインで、[モデルの参照時にローカル ソルバーを使用] を選択します。

  4. ローカル ソルバーとして固定ステップ ode3 を選択します。[ソルバー] ペインの [タイプ] リストから [Fixed-step] を選択します。次に、[ソルバー] リストから [ode3 (Bogacki-Shampine)] を選択します。

  5. ローカル ソルバーのステップ サイズを 0.01 秒に設定します。[ソルバー] ペインで、[ソルバーの詳細] を展開します。次に、[固定ステップ サイズ (基本サンプル時間)] ボックスに「0.01」と入力します。

  6. [OK] をクリックします。

あるいは、関数 set_param を使用してパラメーターを構成します。

set_param(refmdl,UseModelRefSolver="on",...
    SolverType="Fixed-Step",Solver="ode3",FixedStep="0.01")

最上位モデルの Model ブロックに、指定したローカル ソルバーが示されます。

The solver name ode3 is on the bottom of the Model block icon.

モデル参照の "通信ステップ サイズ" を指定します。通信ステップ サイズは、親ソルバーとローカル ソルバーがデータを交換するタイミングを指定し、最上位モデルの離散サンプル時間として登録されます。

最上位モデルの Ramp ブロックの傾きは 0.2 で、最上位ソルバーはステップ サイズ 0.2 秒を使用します。最上位モデルからの入力信号は 2 次システムのダイナミクスに比べてゆっくりと変化するため、シミュレーション結果の精度に大きな影響を与えることなく、通信ステップ サイズをローカル ソルバーのステップ サイズよりも大幅に大きくすることができます。

通信ステップ サイズを 0.4 秒に指定します。Model ブロックを選択します。次に、プロパティ インスペクターの [ソルバー] の下の [通信ステップ サイズ] ボックスに「0.4」と入力します。

あるいは、関数 set_param を使用して CommunicationStepSize パラメーターを設定します。

set_param(topmdl + "/Model",CommunicationStepSize="0.4")

ローカル ソルバーを使用してモデルをシミュレーションし、2 次システムの応答を計算します。

out = sim(topmdl);

シミュレーション結果を表示するには、シミュレーション データ インスペクターを開きます。[シミュレーション] タブの [結果の確認] で、[データ インスペクター] をクリックします。あるいは、関数 Simulink.sdi.view を呼び出します。

Simulink.sdi.view

別個のサブプロットに System Response および System Response - Top という名前の信号をプロットします。あるいは、関数 Simulink.sdi.loadView を使用して、この例で作成された FastSecondOrderSystem という名前のビューを読み込みます。

Simulink.sdi.loadView("FastSecondOrderSystem.mldatx");

Two subplots in the Simulation Data Inspector display the system response. The top plot shows the system response logged inside the referenced model, and the bottom plot shows the system response logged from the top model.

System Response 信号と System Response - Top 信号は同じ信号ですが、異なる場所にログが記録されます。System Response 信号は、ローカル ソルバーのステップ サイズによって決定されるレートで参照モデル内にログが記録されます。System Response - Top 信号は、最上位ソルバーのステップ サイズによって決定されるレートで、最上位モデルの Outport ブロックによってログが記録されます。ローカル ソルバーのステップ サイズは最上位ソルバーのステップ サイズよりもはるかに小さいため、System Response 信号は、Step ブロックの出力値が変化したときの入力信号の変化に対するシステム応答をより高い忠実度で取得します。

System Response 信号では、ローカル ソルバーが各通信ステップ間にゼロ次ホールドを使用して入力信号を内挿する効果がわかります。時間軸の 5 秒付近を拡大すると、ステップに対するシステム応答の振動がわかります。

A subplot in the Simulation Data Inspector shows the signal named System Response between simulation times of approximately 3 seconds and 7 seconds.

モデル SecondOrderSystemTop を開きます。このモデルには、2 次システムのモデルを参照する Model ブロックに入力信号を提供する Ramp ブロックが含まれています。Model ブロックの出力信号は Outport ブロックに接続されます。

topmdl = "SecondOrderSystemTop";
open_system(topmdl)

The model SecondOrderSystemTop.

参照モデル内を移動するには、Model ブロックをダブルクリックします。あるいは、Model ブロックの Simulink.BlockPath オブジェクトを作成し、関数 open を使用してモデルの階層構造のコンテキストで参照モデルを開きます。

mdlblkpath = Simulink.BlockPath(topmdl + "/Model");
open(mdlblkpath)

The contents of the model reference.

参照モデルは、Transfer Fcn ブロックを使用して 2 次システムを実装し、システムへの変更または外乱をモデル化する Step ブロックを含みます。

システム伝達関数は、2 つのモデル ワークスペース変数 wnz を使用して Transfer Fcn ブロックで指定します。これらの変数はシステムの固有振動数 (ラジアン/秒) とシステムの減衰係数を表します。

モデル ワークスペースで変数 wn の値を 1 として指定して、固有振動数 1 ラジアン/秒でシステムを構成します。

refmdl = "SecondOrderSystem";
mdlwksp = get_param(refmdl,"ModelWorkspace");
assignin(mdlwksp,"wn",1)

ステップ サイズ 0.4 秒でローカル ソルバーを使用するように参照モデルを構成します。プロパティ インスペクターまたは [ブロック パラメーター] ダイアログ ボックスを使用して、最上位モデルから参照モデルの設定を構成できます。

  1. プロパティ インスペクターを開きます。[モデル化] タブで [設計] セクションを展開し、[プロパティ インスペクター] を選択するか、Ctrl+Shift+I を押します。

  2. 参照モデルの [コンフィギュレーション パラメーター] ダイアログ ボックスを開くには、Model ブロックを選択します。次に、プロパティ インスペクターで [ソルバー] セクションを展開し、[ローカル ソルバーを使用] パラメーターの横にあるハイパーリンクをクリックします。

  3. モデルの階層構造内で参照されている場合にローカル ソルバーを使用するようにモデルを構成します。[コンフィギュレーション パラメーター] ダイアログ ボックスの [モデル参照] ペインで、[モデルの参照時にローカル ソルバーを使用] を選択します。

  4. ローカル ソルバーとして固定ステップ ode3 を選択します。[ソルバー] ペインの [タイプ] リストから [Fixed-step] を選択します。次に、[ソルバー] リストから [ode3 (Bogacki-Shampine)] を選択します。

  5. ローカル ソルバーのステップ サイズを 0.4 秒に設定します。[ソルバー] ペインで、[ソルバーの詳細] を展開します。次に、[固定ステップ サイズ (基本サンプル時間)] ボックスに「0.4」と入力します。

  6. [OK] をクリックします。

あるいは、関数 set_param を使用してパラメーターを構成します。

set_param(refmdl,UseModelRefSolver="on",...
    SolverType="Fixed-Step",Solver="ode3",FixedStep="0.4")

最上位モデルの Model ブロックに、指定したローカル ソルバーが示されます。

The solver name ode3 is on the bottom of the Model block icon.

ローカル ソルバーのステップ サイズが親ソルバーのステップ サイズより大きい場合、[通信ステップ サイズ] パラメーターを -1 に指定することで、"通信ステップ サイズ" を継承します。通信ステップ サイズは、親ソルバーとローカル ソルバーがデータを交換するタイミングを指定し、親モデルの離散サンプル時間として登録されます。

set_param(topmdl + "/Model",CommunicationStepSize="-1")

ローカル ソルバーを使用してモデルをシミュレーションし、2 次システムの応答を計算します。

out = sim(topmdl,StopTime="20");

シミュレーション結果を表示するには、シミュレーション データ インスペクターを開きます。[シミュレーション] タブの [結果の確認] で、[データ インスペクター] をクリックします。あるいは、関数 Simulink.sdi.view を呼び出します。

Simulink.sdi.view

別個のサブプロットに System Response および System Response - Top という名前の信号をプロットします。あるいは、関数 Simulink.sdi.loadView を使用して、この例で作成された SlowSecondOrderSystem という名前のビューを読み込みます。

Simulink.sdi.loadView("SlowSecondOrderSystem.mldatx");

Two subplots in the Simulation Data Inspector display the system response. The top plot shows the system response logged inside the referenced model, and the bottom plot shows the system response logged from the top model.

System Response 信号と System Response - Top 信号は同じ信号ですが、異なる場所にログが記録されます。System Response 信号は、ローカル ソルバーのステップ サイズによって決定されるレートで参照モデル内にログが記録されます。System Response - Top 信号は、最上位ソルバーのステップ サイズによって決定されるレートで、最上位モデルの Outport ブロックによってログが記録されます。ローカル ソルバーのステップ サイズが親ソルバーのステップ サイズよりも大きいため、System Response 信号についてログに記録されるデータ点の数が少なくなります。

拡張例

端子

入力

すべて展開する

Model ブロックには、参照するモデルの各入力端子に対して 1 つの入力端子があります。参照モデルの入力端子は Inport ブロックと In Bus Element ブロックによって定義されます。Model ブロックの端子の名前は、参照モデルの対応する端子の名前と一致します。各 Model ブロック端子への入力信号、メッセージ、または関数呼び出しは、参照モデルの対応する端子に対して有効でなければなりません。詳細については、モデル参照インターフェイスの定義を参照してください。

ヒント

  • 参照モデルの信号属性は、Model ブロックのコンテキストから独立しています。たとえば、信号次元とデータ型は Model ブロック境界で伝播されません。参照モデルの信号属性を定義するには、ルートレベルの Inport ブロックと In Bus Element ブロックのブロック パラメーターを定義します。

  • 入力端子に接続されている関数呼び出しは参照モデルに渡されます。関数呼び出しに基づいて参照モデルを条件付きで実行するには、関数呼び出しを参照してください。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus | image
複素数のサポート: あり

出力

すべて展開する

Model ブロックには、参照するモデルの各出力端子に対して出力端子があります。参照モデルの出力端子は Outport ブロックおよび Out Bus Element ブロックによって定義されます。Model ブロックの端子の名前は、参照モデルの対応する端子の名前と一致します。Model ブロックの出力信号とメッセージは、参照モデルの Outport ブロックおよび Out Bus Element ブロックに接続されている信号とメッセージです。モデル参照インターフェイスの定義を参照してください。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus | image
複素数のサポート: あり

コントロール

すべて展開する

条件付き実行

イネーブル端子は、Model ブロックの上部に表示されます。端子ラベルは、イネーブル信号を表すアイコンです。

Enable port on Model block

端子に接続している制御信号によって、参照モデルを実行するタイミングが決定します。詳細については、参照モデルの条件付き実行を参照してください。

依存関係

この端子を有効にするには Enable ブロックを参照モデルの最上位に追加します。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point

トリガー端子は Model ブロックの上部に表示されます。端子ラベルは、トリガー信号を表すアイコンです。

Trigger port on Model block

端子に接続している制御信号によって、参照モデルを実行するタイミングが決定します。詳細については、参照モデルの条件付き実行を参照してください。

依存関係

この端子を有効にするには Trigger ブロックを参照モデルの最上位に追加し、その [トリガー タイプ][立ち上がり][立ち下がり]、または [両方] に設定します。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point

関数呼び出し端子は、Model ブロックの上部に表示されます。端子ラベルには、参照モデルの名前が関数として表示されます。

Function-call port on Model block

端子に接続している関数呼び出し制御信号によって、参照モデルを実行するタイミングが決定します。詳細については、参照モデルの条件付き実行を参照してください。

依存関係

この端子を有効にするには Trigger ブロックを参照モデルの最上位に追加し、その [トリガー タイプ][関数呼び出し] に設定します。

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

初期化イベント端子は、モデルの初期化イベントをトリガーする関数呼び出し制御信号を提供します。これにより、参照モデルの状態が初期化されます。

参照モデルには、モデルの初期化イベントに対応する Initialize Function ブロックを含めることができます。詳細については、初期化関数、再初期化関数、リセット関数および終了関数の使用を参照してください。

依存関係

この端子を有効にするには、[モデル初期化端子を表示] を選択します。

リセット イベント端子は、モデル リセット イベントをトリガーする関数呼び出し制御信号を提供します。これにより、参照モデルの状態がリセットされます。

参照モデルには、各モデル リセット イベントに対応する Reset Function ブロックが含まれていなければなりません。詳細については、初期化関数、再初期化関数、リセット関数および終了関数の使用を参照してください。

端子名を指定するには、Reset Function ブロック内の Event Listener ブロックの [イベント名] パラメーターを使用します。

依存関係

このタイプの端子を有効にするには、[モデル リセット端子を表示] を選択します。

再初期化イベント端子は、モデルの再初期化イベントをトリガーする関数呼び出し制御信号を提供します。これにより、参照モデルの状態が再初期化されます。

参照モデルには、各モデル再初期化イベントに対応する Reinitialize Function ブロックが含まれていなければなりません。詳細については、初期化関数、再初期化関数、リセット関数および終了関数の使用を参照してください。

端子名を指定するには、Reinitialize Function ブロック内の Event Listener ブロックの [イベント名] パラメーターを使用します。

依存関係

このタイプの端子を有効にするには、"モデル再初期化端子を表示" を選択します。

終了イベント端子は、モデル終了イベントをトリガーする関数呼び出し制御信号を提供します。これにより、参照モデルの状態が読み取られ、保存されます。

参照モデルには、モデル終了イベントに対応する Terminate Function ブロックを含めることができます。詳細については、初期化関数、再初期化関数、リセット関数および終了関数の使用を参照してください。

依存関係

この端子を有効にするには、[モデル終了端子を表示] を選択します。

周期的イベント端子は、モデルを実行するタイミングを指定する関数呼び出し制御信号を提供します。例については、Function-Call Generator を使用したレートベース モデルのシミュレーションのテストを参照してください。

各端子ラベルは、対応する Inport ブロックのサンプル時間など、周期的イベントに関する情報を表示します。たとえば、次の図の Model ブロックは、周期的イベント端子を表示し、次の 2 つの離散レートをもつモデルを参照します。0.01 と 0.1。

A Model block has ports labeled D1[0.01] and D2[0.1].

依存関係

このタイプの端子を有効にするには、[次を使用してレートをスケジュール][端子] に設定します。

パラメーター

すべて展開する

Model ブロック パラメーターを対話的に変更するには、Model ブロックを選択します。次に、Simulink ツールストリップの [Model ブロック] タブで [ブロック パラメーター] をクリックします。

メイン

Model ブロックの基本情報を指定します。

参照モデルのファイル名を指定します。このファイル名は、Choose Valid Model File Namesで定義されているような、モデルに対する有効な MATLAB® 識別子をもたなければなりません。ファイルの拡張子はオプションです。

参照するモデルを選択するには、[参照] をクリックします。指定したモデルを表示するには、[モデルを開く] をクリックします。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

パラメーター: ModelNameDialog
値: '' (既定値) | filename in quotes
データ型: char | string

例: set_param(gcb,ModelNameDialog="mymodel.slx")

ブロック パラメーターの値をプログラムで取得するには、関数 get_param を使用します。

次の異なる形式で参照モデルの名前をクエリできます。

  • ModelFile — ファイル拡張子を含むモデル名。ファイル拡張子を指定しない場合、MATLAB パスで検出された最初の一致によって、ファイル拡張子が決定します。

  • ModelNameDialog — ファイル拡張子を指定するかどうかに応じて、ファイル拡張子を含むまたは含まないモデル名。

  • ModelName — ファイル拡張子を含まないモデル名。ModelName でファイル拡張子を含むモデル名を指定すると、ModelNameDialogModelFile が設定されてファイル拡張子が維持されます。

Model ブロックのシミュレーション モードを指定します。Model ブロックのシミュレーション モードは、その参照モデルおよびモデル階層構造内のその他のモデルのシミュレーション モードと異なる可能性があります。

  • ノーマル — 参照モデルをインタープリターで実行します。参照モデルは、親モデル内に直接実装された Atomic Subsystem であるかのように扱われます。

  • アクセラレータ — 参照モデルの MEX ファイルを作成します。その後、S-Function を実行して参照モデルを実行します。

  • ソフトウェアインザループ (SIL) — このオプションには Embedded Coder® のライセンスが必要です。[コード インターフェイス] のパラメーター設定に基づき、量産コードを生成します。そのコードは、ホスト プラットフォーム用にコンパイルされてホスト プラットフォーム上で実行されます。

  • プロセッサインザループ (PIL) — このオプションには Embedded Coder のライセンスが必要です。[コード インターフェイス] のパラメーター設定に基づき、量産コードを生成します。このコードは、ターゲット プラットフォーム用にコンパイルされてターゲット プラットフォーム上で実行されます。ターゲットのコネクティビティ API 実装は、PIL シミュレーション中に各タイム ステップでホストとターゲットの間のデータ交換をサポートします。

Model ブロックの角は、Model ブロックのシミュレーション モードを示しています。ノーマル モードでは、角に塗りつぶしなしの三角形が表示されます。アクセラレータ モードでは、角の三角形は塗りつぶされます。SIL モードと PIL モードでは、角は塗りつぶされ、ブロック アイコンに (SIL) または (PIL) という語が表示されます。

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

詳細については、モデルの階層構造内のシミュレーション モードの選択を参照してください。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

パラメーター: SimulationMode
値: "Normal" (既定値) | "Accelerator" | "Software-in-the-loop" | "Processor-in-the-loop"

例: set_param(gcb,SimulationMode="Accelerator")

SIL シミュレーション モードと PIL シミュレーション モードにおいて、最上位モデルからコードを生成するか、参照モデルからコードを生成するかを指定します。生成したコードを、その参照モデルを使用する大規模なアプリケーションの一部として展開する場合、[モデル参照] を指定します。生成したコードをスタンドアロン アプリケーションとして展開する場合、[最上位モデル] を指定します。

  • モデル参照 — コードはモデルの階層構造の一部として参照モデルから生成されます。コード生成では、このコマンドと同様のコマンドを使用して、ModelName という名前のモデルのコードを生成します。

    slbuild("ModelName","ModelReferenceCoderTarget")

  • 最上位モデル — コードは最上位モデルからスタンドアロン コード インターフェイスで生成されます。コード生成では、このコマンドと同様のコマンドを使用して、ModelName という名前のモデルのコードを生成します。

    slbuild("ModelName")

依存関係

このパラメーターを有効にするには、[シミュレーション モード][ソフトウェアインザループ (SIL)] または [プロセッサインザループ (PIL)] のいずれかに設定します。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

パラメーター: CodeInterface
値: "Model reference" (既定値) | "Top model"

例: set_param(gcb,CodeInterface="Top model")

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

参照モデルを実行し、状態を変更するタイミングを制御します。

初期化イベント端子を表示するには、このパラメーターを選択します。端子を削除するには、このパラメーターの選択を解除します。

依存関係

このパラメーターを有効にするには、条件付き実行用に設定されていないモデルを参照します。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

パラメーター: ShowModelInitializePort
値: "off" (既定値) | "on"

例: set_param(gcb,ShowModelInitializePort="on")

再初期化イベント端子を表示するには、このパラメーターを選択します。端子を削除するには、このパラメーターの選択を解除します。

依存関係

このパラメーターを有効にするには、条件付き実行用に設定されていない、Reinitialize Function ブロックが含まれるモデルを参照します。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

パラメーター: ShowModelReinitializePorts
値: "off" (既定値) | "on"

例: set_param(gcb,ShowModelReinitializePorts="on")

リセット イベント端子を表示するには、このパラメーターを選択します。端子を削除するには、このパラメーターの選択を解除します。

依存関係

このパラメーターを有効にするには、条件付き実行用に設定されていない、Reset Function ブロックが含まれるモデルを参照します。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

パラメーター: ShowModelResetPorts
値: "off" (既定値) | "on"

例: set_param(gcb,ShowModelResetPorts="on")

終了イベント端子を表示するには、このパラメーターを選択します。端子を削除するには、このパラメーターの選択を解除します。

依存関係

このパラメーターを有効にするには、条件付き実行用に設定されていないモデルを参照します。次に、[モデル初期化端子を表示] を選択します。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

パラメーター: ShowModelTerminatePort
値: "off" (既定値) | "on"

例: set_param(gcb,ShowModelTerminatePort="on")

周期的イベントで参照モデルの実行を制御します。

[次を使用してレートをスケジュール] パラメーターの値に応じて、このパラメーターを選択すると、Model ブロックに周期的イベント端子が表示されるか、スケジュール エディターで使用する分割が作成されます。[次を使用してレートをスケジュール] パラメーターが表示されない場合、既定値 ([端子]) が適用されます。

このパラメーターをオフにすると、周期的イベント端子が非表示になり、分割は作成されません。

依存関係

このパラメーターを有効にするには、条件付き実行用に設定されていない、およびエクスポート関数モデルではない、離散サンプル時間を含むモデルを参照します。親モデルがレート ベースで、参照モデルがエクスポート関数モデルである場合、[レートのスケジュール] が自動的に選択されます。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

パラメーター: ScheduleRates
値: "off" (既定値) | "on"

例: set_param(gcb,ScheduleRates="on")

端子または分割を作成します。

  • 端子 — 参照モデルの離散レートに対する周期的イベント端子を表示します。

    端子レートを手動で指定するには、関数 set_param を使用して Model ブロックの AutoFillPortDiscreteRates パラメーターを "off" に設定します。次に、PortDiscreteRates パラメーターを使用して端子レートを指定します。

  • スケジュール エディタースケジュール エディターで使用する参照モデル用の分割を作成します。

依存関係

このパラメーターは次の場合に有効になります。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

パラメーター: ScheduleRatesWith
値: "Ports" (既定値) | "Schedule Editor"

例: set_param(gcb,ScheduleRatesWith="Schedule Editor")

インスタンス パラメーター

モデル引数のインスタンス固有の値を指定します。

インスタンス パラメーターを表示し、インスタンス固有の値を指定します。"インスタンス パラメーター" は、モデルの各インスタンスに異なる値を使用するために、参照モデルで設定されているブロック パラメーターです。

インスタンス固有の値を指定するには、テーブルの [値] 列を使用します。パラメーター値が親モデルによってオーバーライドされるように指定するには、[引数] チェック ボックスをオンにします。インスタンス パラメーターの参照モデルでの設定およびインスタンス固有の値の Model ブロックでの指定の詳細については、再利用可能な参照モデルのインスタンスのパラメーター化を参照してください。

インスタンス固有の値を変更する際に、値を変更する必要があるインスタンス パラメーターのみに対応するフィールドが含まれる部分構造体を使用できます。部分構造体に含まれていないインスタンス パラメーターは値が維持されます。この構造体には、インスタンス パラメーター名と値が含まれ、文字ベクトルとして指定されます。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

パラメーター: ParameterArgumentValues
値: structure with no fields (既定値) | structure
データ型: struct
パラメーター: InstanceParameters
値: structure with fields Name, Value, Path, and Argument
データ型: struct

ソルバー

参照モデルのコンフィギュレーション パラメーターとモデルを参照する各 Model ブロックのブロック パラメーターを組み合わせて使用して、ローカル ソルバーを使用するように参照モデルを構成します。

参照モデルのコンフィギュレーション パラメーター

このパラメーターは、ブロックで参照されるモデルの [コンフィギュレーション パラメーター] ダイアログ ボックスを開くハイパーリンクを提供します。[コンフィギュレーション パラメーター] ダイアログ ボックスで、参照モデルの [モデルの参照時にローカル ソルバーを使用] パラメーターを選択または選択解除します。

[モデルの参照時にローカル ソルバーを使用] を選択すると、ローカル ソルバーが使用され、参照モデルに実装されたシステムが別の微分方程式系として解かれます。シミュレーション中に、ローカル ソルバーは参照モデルの連続状態の値と参照モデル内のブロックの出力値を計算します。

ローカル ソルバーを使用することで、システムの構成と統合を促進できます。ローカル ソルバーを使用すると、各モデルを別個に設計およびテストするのに使用したのと同じソルバーとステップ サイズを使用して、システムレベルのシミュレーションで参照モデルを解くことができます。また、ローカル ソルバーを使用すれば、モデルをより大規模なシステムに統合しながら、参照モデルのコンフィギュレーション パラメーターに必要なコンフィギュレーションの調整回数を減らすこともできます。

一部のシステムでは、ローカル ソルバーを使用すると次のことが可能になり、シミュレーションのパフォーマンスを改善できます。

  • 参照モデルでシステムを解くためにより適切なソルバーを選択する。

  • コンポーネントごとに異なるステップ サイズを使用して、複数のコンポーネントに幅広いダイナミクスがあるシステムでの冗長な計算の数を減らす。

詳細については、Use Local Solvers in Referenced Modelsを参照してください。

このパラメーターは、ブロックで参照されるモデルの [コンフィギュレーション パラメーター] ダイアログ ボックスを開くハイパーリンクを提供します。[コンフィギュレーション パラメーター] ダイアログ ボックスで、参照モデルの [ソルバー] パラメーターの値を選択します。ローカル ソルバーを使用する場合、参照モデルの [ソルバー] パラメーターで、ローカル ソルバーとして使用するソルバーを指定します。

一部のシステムでは、異なるローカル ソルバーを使用すると、シミュレーションのパフォーマンスを改善できます。たとえば、システムがスティッフではないが、参照モデルによって実装されているコンポーネントがスティッフである場合、スティッフなローカル ソルバーを使用すると、システムのシミュレーション時のパフォーマンスを改善できます。

最上位ソルバーは可変ステップまたは固定ステップのソルバーにすることができます。ローカル ソルバーは固定ステップ ソルバーでなければなりません。

詳細については、Use Local Solvers in Referenced Modelsを参照してください。

依存関係

このパラメーターを有効にするには、このブロックで参照されるモデルのコンフィギュレーション パラメーターで [モデルの参照時にローカル ソルバーを使用] を選択します。

このパラメーターは、ブロックで参照されるモデルの [コンフィギュレーション パラメーター] ダイアログ ボックスを開くハイパーリンクを提供します。[コンフィギュレーション パラメーター] ダイアログ ボックスで、参照モデルの [固定ステップ サイズ (基本サンプル時間)] パラメーターの値を指定して、ローカル ソルバーのステップ サイズを指定します。ローカル ソルバーに指定したステップ サイズは、参照モデルまたは親モデルのいずれにも離散レートとして登録されません。

ローカル ステップ サイズは、親ソルバーのステップ サイズより大きくても小さくても、また同じでもかまいません。ただし、ローカル ソルバーと親ソルバーがデータを交換するタイミングを決定する "通信ステップ サイズ" により、ローカル ステップ サイズに指定できる値が制限されます。

  • ローカル ステップ サイズは、通信ステップ サイズ以下でなければなりません。

  • ローカル ステップ サイズが通信ステップ サイズより小さい場合、ローカル ステップ サイズは通信ステップ サイズを整数の約数にしなければなりません。

    たとえば、通信ステップ サイズが 0.1 秒の場合、ローカル ソルバーは 0.1 秒、0.05 秒、0.025 秒などの整数の約数にすることができます。

R2024a より前: 親ソルバーが固定ステップ ソルバーの場合、ローカル ソルバーのステップ サイズは親ソルバーのステップ サイズの整数倍でなければなりません。

詳細については、Use Local Solvers in Referenced Modelsを参照してください。

依存関係

このパラメーターを有効にするには、このブロックで参照されるモデルのコンフィギュレーション パラメーターで [モデルの参照時にローカル ソルバーを使用] を選択します。

モデルのブロック パラメーター

"通信ステップ サイズ" は、ローカル ソルバーと親ソルバーがデータを交換するレートを指定します。通信ステップ サイズは親モデルの Model ブロックの離散サンプル時間として登録されます。既定では、通信ステップ サイズは継承され (-1)、ソフトウェアによって決定されます。

通信ステップ サイズを明示的に指定する場合、指定する値は次の制約をすべて満たす必要があります。

  • 通信ステップ サイズは以下でなければなりません。

    • ローカル ステップ サイズと親ステップ サイズの両方以上

    • ローカル ステップ サイズと親ステップ サイズの両方の整数倍

    • 参照モデル内の最速の離散レート以上

  • 参照モデル内のすべての離散レートは、通信ステップ サイズで割り切れる必要があります。

ローカル ステップ サイズが親ステップ サイズより大きい場合、通信ステップ サイズを継承するように指定するか (-1)、ローカル ステップ サイズと同じ値に指定します。たとえば、親ステップ サイズが 1 秒、ローカル ステップ サイズが 2 秒の場合、通信ステップ サイズを -1 (継承) または 2 に指定します。通信ステップ サイズを 4 などのより大きい値に指定すると、パフォーマンスが向上せずに精度が低下する可能性があります。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

パラメーター: CommunicationStepSize
値: -1 (既定値) | positive scalar double
データ型: double

例: set_param(gcb,CommunicationStepSize="0.5")

ローカル ソルバーは、親ソルバーからの連続状態変数の微分係数または入力信号値を外挿することによって、連続状態値とブロック出力値を計算します。このパラメーターは、ローカル ソルバーが連続状態変数の微分係数または入力信号値をローカル シミュレーション時間に外挿するために使用する手法を指定します。

  • 自動 — 選択したソルバー、モデル構造、およびローカル ステップ サイズと親ソルバー ステップ サイズの比較に基づいて外挿法が決定されます。

    ローカル ソルバーは、次の場合にゼロ次ホールドを使用して入力信号値をローカル シミュレーション時間に外挿します。

    • ode1beode14x などの陰的ソルバーを選択した。

    • 参照モデルに入力端子が含まれていない。

    • ローカル ステップ サイズが親ステップ サイズより小さい。

    それ以外の場合、ローカル ソルバーは、選択したソルバーに適切な外挿アルゴリズムを使用して、連続状態変数の微分係数をローカル シミュレーション時間に外挿します。外挿アルゴリズムは一般にシミュレーション結果の精度を向上させますが、ゼロ次ホールドの外挿よりも計算量が多くなります。

    R2024a より前: 選択したソルバーのみに基づいて連続状態変数の微分係数または入力信号値を外挿する方法が決定されます。ローカル ステップ サイズは常に親ソルバーのステップ サイズ以上になります。

  • ゼロ次ホールド — ローカル ソルバーは、ゼロ次ホールドを使用して入力信号値をローカル シミュレーション時間に外挿します。ローカル シミュレーション時間における各入力信号値は、親ソルバーが最新の通信ステップで信号に対して計算した値と等しくなります。

    次の状況のいずれかに該当する場合は、[ゼロ次ホールド] 入力処理の使用を検討してください。

    • 許容できるシミュレーション結果が [ゼロ次ホールド] 入力処理で得られ、パフォーマンスを重視する場合

    • 入力端子の値が連続状態の計算に影響しない場合

    • 導関数の大部分が状態自体に基づく場合 (モデル内のフィードバック ループなど)

    • 特定のステップ サイズでのローカル ソルバーの安定性を向上させる場合

ローカル ソルバーは、親ソルバーが Model ブロックの更新メソッドを実行するときに発生するローカル ソルバー進行フェーズ中に、独立して時間を伝播します。更新メソッドは親ソルバーのシミュレーション ループの進行メソッドより前に実行されるため、次のようになります。

  • ローカル ソルバーの進行は、親ソルバーの進行より前に発生します。

  • ローカル ソルバーは、シミュレーション時間において親ソルバーよりも先に進みます。

参照モデル内の連続状態値とブロック出力値を計算するために、ローカル ソルバーは連続状態変数の微分係数または入力信号の値をローカル シミュレーション時間に外挿します。詳細については、Use Local Solvers in Referenced Modelsを参照してください。

依存関係

このパラメーターを有効にするには、このブロックで参照されるモデルのモデル コンフィギュレーション パラメーターで [モデルの参照時にローカル ソルバーを使用] を選択します。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

パラメーター: InputSignalHandling
値: "Auto" (既定値) | "Zero-order hold"

例: set_param(gcb,InputSignalHandling="Zero-order hold")

ローカル ソルバーは、親ソルバーのシミュレーション時間にモデル参照インターフェイスで出力信号の値を提供しなければならない場合があります。出力信号値を提供するために、ローカル ソルバーは出力信号値に影響を与える連続状態値を内挿するか、出力信号値自体を内挿します。このパラメーターは、ローカル ソルバーが連続状態または出力信号値を内挿する手法を指定します。

  • 自動 — ローカル ステップ サイズと通信ステップ サイズの比較に基づいて内挿法が決定されます。 (R2024a 以降)

    • ローカル ステップ サイズが通信ステップ サイズより小さい場合、ローカル ソルバーは、ゼロ次ホールドを使用して出力信号値を親ソルバーのシミュレーション時間に内挿します。

    • ローカル ステップ サイズが通信ステップ サイズ以上の場合、ローカル ソルバーはローカル ソルバー内挿を使用して連続状態値を親ソルバーのシミュレーション時間に内挿します。次に、ローカル ソルバーは、内挿された連続状態値を使用して、親ソルバーのシミュレーション時間の出力信号値を計算します。

  • ソルバー内挿を使用 — ローカル ソルバーは、ローカル ソルバー内挿を使用して、連続状態値を親ソルバーのシミュレーション時間に内挿します。このオプションは、ローカル ステップ サイズが親ソルバーのステップ サイズ以上の場合にのみサポートされます。

  • ゼロ次ホールド — ローカル ソルバーは、ゼロ次ホールドを使用して出力信号値を親ソルバーのシミュレーション時間に内挿します。

一般に、内挿にソルバー内挿を使用すると、精度が向上しますが、計算量も増します。ゼロ次ホールド出力処理は、計算量は少なくなりますが、精度も低くなります。

ローカル ソルバーは、親ソルバーが Model ブロックの更新メソッドを実行するときに発生するローカル ソルバー進行フェーズ中に、独立して時間を伝播します。更新メソッドは親ソルバーのシミュレーション ループの進行メソッドより前に実行されるため、次のようになります。

  • ローカル ソルバーの進行は、親ソルバーの進行より前に発生します。

  • ローカル ソルバーは、シミュレーション時間において親ソルバーよりも先に進みます。

親ソルバーに提供する出力信号値を計算するために、ローカル ソルバーは、Model ブロック出力メソッドで使用される連続状態の値、または出力信号値を親ソルバーのシミュレーション時間に内挿します。詳細については、Use Local Solvers in Referenced Modelsを参照してください。

依存関係

このパラメーターを有効にするには、このブロックで参照されるモデルのモデル コンフィギュレーション パラメーターで [モデルの参照時にローカル ソルバーを使用] を選択します。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

パラメーター: OutputSignalHandling
値: "Auto" (既定値) | "Use solver interpolant" | "Zero-order Hold"

例: set_param(gcb,OutputSignalHandling="Zero-order Hold")

ブロックの特性

データ型

Booleana | busa | doublea | enumerateda | fixed pointa | halfa | integera | singlea | stringa

直達

いいえ

多次元信号

はいa

可変サイズの信号

はいa

ゼロクロッシング検出

いいえ

a 実際のデータ型または機能のサポートは、ブロックの実装に依存します。

ヒント

Model ブロックが保護モデルを参照するかどうかをプログラムにより判別するには、関数 get_param を使用して、Model ブロックの読み取り専用 ProtectedModel パラメーターをクエリします。参照モデルが保護されている場合、関数は "on" を返します。参照モデルが保護されていない場合、関数は "off" を返します。

拡張機能

バージョン履歴

R2006a より前に導入

すべて展開する