このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
Model
モデル階層の作成のための別のモデルの参照
ライブラリ:
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
upper
、input
、およびlower
という名前の入力端子output
という名前の出力端子
固定ステップの離散シミュレーション用に最上位モデルを構成します。
[モデル化] タブで、[モデル設定] をクリックします。
[コンフィギュレーション パラメーター] ダイアログ ボックスの [ソルバー] ペインで [タイプ] を
[Fixed-step]
、[ソルバー] を[discrete (no continuous states)]
に設定します。[OK] をクリックします。
参照モデルの予期される入出力に対応する入出力を Model ブロックに接続します。
カウンターの上限を表すために、Constant ブロックを追加して [定数値] を
100
に設定します。次に、それを [upper] 端子に接続します。カウンターのインクリメントを表すために、Constant ブロックを追加して [定数値] を
1
に設定します。次に、それを [input] 端子に接続します。カウンターの下限を表すために、Constant ブロックを追加して [定数値] を
0
に設定します。次に、それを [lower] 端子に接続します。プロットでカウンター出力を表示するために、Scope ブロックを追加します。次に、それを [output] 端子に接続します。
ツールストリップで [実行] をクリックします。
最上位モデルでシミュレートされ、参照モデルが実行されます。スコープ ウィンドウでシミュレーションの出力カウントが表示されます。
高速なダイナミクスをもつコンポーネントに対するローカル ソルバーの構成
モデル SecondOrderSystemTop
を開きます。このモデルには、2 次システムのモデルを参照する Model ブロックに入力信号を提供する Ramp ブロックが含まれています。Model ブロックの出力信号は Outport ブロックに接続されます。
topmdl = "SecondOrderSystemTop";
open_system(topmdl)
参照モデル内を移動するには、Model ブロックをダブルクリックします。あるいは、Model ブロックの Simulink.BlockPath
オブジェクトを作成し、関数 open
を使用してモデルの階層構造のコンテキストで参照モデルを開きます。
mdlblkpath = Simulink.BlockPath(topmdl + "/Model");
open(mdlblkpath)
参照モデルは、Transfer Fcn ブロックを使用して 2 次システムを実装し、システムへの変更または外乱をモデル化する Step ブロックを含みます。
システム伝達関数は、2 つのモデル ワークスペース変数 wn
と z
を使用して Transfer Fcn ブロックで指定します。これらの変数はシステムの固有振動数 (ラジアン/秒) とシステムの減衰係数を表します。
モデル ワークスペースで変数 wn
の値を 100
として指定して、固有振動数 100 ラジアン/秒でシステムを構成します。
refmdl = "SecondOrderSystem"; mdlwksp = get_param(refmdl,"ModelWorkspace"); assignin(mdlwksp,"wn",100)
ステップ サイズ 0.01 秒でローカル ソルバーを使用するように参照モデルを構成します。プロパティ インスペクターまたは [ブロック パラメーター] ダイアログ ボックスを使用して、最上位モデルから参照モデルの設定を構成できます。
プロパティ インスペクターを開きます。[モデル化] タブで [設計] セクションを展開し、[プロパティ インスペクター] を選択するか、Ctrl+Shift+I を押します。
参照モデルの [コンフィギュレーション パラメーター] ダイアログ ボックスを開くには、Model ブロックを選択します。次に、プロパティ インスペクターで [ソルバー] セクションを展開し、[ローカル ソルバーを使用] パラメーターの横にあるハイパーリンクをクリックします。
モデルの階層構造内で参照されている場合にローカル ソルバーを使用するようにモデルを構成します。[コンフィギュレーション パラメーター] ダイアログ ボックスの [モデル参照] ペインで、[モデルの参照時にローカル ソルバーを使用] を選択します。
ローカル ソルバーとして固定ステップ
ode3
を選択します。[ソルバー] ペインの [タイプ] リストから[Fixed-step]
を選択します。次に、[ソルバー] リストから[ode3 (Bogacki-Shampine)]
を選択します。ローカル ソルバーのステップ サイズを 0.01 秒に設定します。[ソルバー] ペインで、[ソルバーの詳細] を展開します。次に、[固定ステップ サイズ (基本サンプル時間)] ボックスに「
0.01
」と入力します。[OK] をクリックします。
あるいは、関数 set_param
を使用してパラメーターを構成します。
set_param(refmdl,UseModelRefSolver="on",... SolverType="Fixed-Step",Solver="ode3",FixedStep="0.01")
最上位モデルの Model ブロックに、指定したローカル ソルバーが示されます。
モデル参照の "通信ステップ サイズ" を指定します。通信ステップ サイズは、親ソルバーとローカル ソルバーがデータを交換するタイミングを指定し、最上位モデルの離散サンプル時間として登録されます。
最上位モデルの 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");
System Response
信号と System Response - Top
信号は同じ信号ですが、異なる場所にログが記録されます。System Response
信号は、ローカル ソルバーのステップ サイズによって決定されるレートで参照モデル内にログが記録されます。System Response - Top
信号は、最上位ソルバーのステップ サイズによって決定されるレートで、最上位モデルの Outport ブロックによってログが記録されます。ローカル ソルバーのステップ サイズは最上位ソルバーのステップ サイズよりもはるかに小さいため、System Response
信号は、Step ブロックの出力値が変化したときの入力信号の変化に対するシステム応答をより高い忠実度で取得します。
System Response
信号では、ローカル ソルバーが各通信ステップ間にゼロ次ホールドを使用して入力信号を内挿する効果がわかります。時間軸の 5 秒付近を拡大すると、ステップに対するシステム応答の振動がわかります。
低速なダイナミクスをもつコンポーネントに対するローカル ソルバーの構成
モデル SecondOrderSystemTop
を開きます。このモデルには、2 次システムのモデルを参照する Model ブロックに入力信号を提供する Ramp ブロックが含まれています。Model ブロックの出力信号は Outport ブロックに接続されます。
topmdl = "SecondOrderSystemTop";
open_system(topmdl)
参照モデル内を移動するには、Model ブロックをダブルクリックします。あるいは、Model ブロックの Simulink.BlockPath
オブジェクトを作成し、関数 open
を使用してモデルの階層構造のコンテキストで参照モデルを開きます。
mdlblkpath = Simulink.BlockPath(topmdl + "/Model");
open(mdlblkpath)
参照モデルは、Transfer Fcn ブロックを使用して 2 次システムを実装し、システムへの変更または外乱をモデル化する Step ブロックを含みます。
システム伝達関数は、2 つのモデル ワークスペース変数 wn
と z
を使用して Transfer Fcn ブロックで指定します。これらの変数はシステムの固有振動数 (ラジアン/秒) とシステムの減衰係数を表します。
モデル ワークスペースで変数 wn
の値を 1
として指定して、固有振動数 1 ラジアン/秒でシステムを構成します。
refmdl = "SecondOrderSystem"; mdlwksp = get_param(refmdl,"ModelWorkspace"); assignin(mdlwksp,"wn",1)
ステップ サイズ 0.4 秒でローカル ソルバーを使用するように参照モデルを構成します。プロパティ インスペクターまたは [ブロック パラメーター] ダイアログ ボックスを使用して、最上位モデルから参照モデルの設定を構成できます。
プロパティ インスペクターを開きます。[モデル化] タブで [設計] セクションを展開し、[プロパティ インスペクター] を選択するか、Ctrl+Shift+I を押します。
参照モデルの [コンフィギュレーション パラメーター] ダイアログ ボックスを開くには、Model ブロックを選択します。次に、プロパティ インスペクターで [ソルバー] セクションを展開し、[ローカル ソルバーを使用] パラメーターの横にあるハイパーリンクをクリックします。
モデルの階層構造内で参照されている場合にローカル ソルバーを使用するようにモデルを構成します。[コンフィギュレーション パラメーター] ダイアログ ボックスの [モデル参照] ペインで、[モデルの参照時にローカル ソルバーを使用] を選択します。
ローカル ソルバーとして固定ステップ
ode3
を選択します。[ソルバー] ペインの [タイプ] リストから[Fixed-step]
を選択します。次に、[ソルバー] リストから[ode3 (Bogacki-Shampine)]
を選択します。ローカル ソルバーのステップ サイズを 0.4 秒に設定します。[ソルバー] ペインで、[ソルバーの詳細] を展開します。次に、[固定ステップ サイズ (基本サンプル時間)] ボックスに「
0.4
」と入力します。[OK] をクリックします。
あるいは、関数 set_param
を使用してパラメーターを構成します。
set_param(refmdl,UseModelRefSolver="on",... SolverType="Fixed-Step",Solver="ode3",FixedStep="0.4")
最上位モデルの Model ブロックに、指定したローカル ソルバーが示されます。
ローカル ソルバーのステップ サイズが親ソルバーのステップ サイズより大きい場合、[通信ステップ サイズ] パラメーターを -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");
System Response
信号と System Response - Top
信号は同じ信号ですが、異なる場所にログが記録されます。System Response
信号は、ローカル ソルバーのステップ サイズによって決定されるレートで参照モデル内にログが記録されます。System Response - Top
信号は、最上位ソルバーのステップ サイズによって決定されるレートで、最上位モデルの Outport ブロックによってログが記録されます。ローカル ソルバーのステップ サイズが親ソルバーのステップ サイズよりも大きいため、System Response
信号についてログに記録されるデータ点の数が少なくなります。
拡張例
サブシステムから参照モデルへの変換
この例では、モデル参照変換アドバイザーツールまたは関数
を使用して、サブシステムを参照モデルに変換する方法を説明します。Simulink.SubSystem.convertToModelReference
モデル参照のバリアント
この例では、モデル参照バリアントの使用方法を示します。Model ブロックは、ある Simulink® モデルを別の Simulink モデルから参照するために使用されます。Variant Subsystem ブロックにはバリアントとして Model ブロックを含めることができます。"バリアント" は、1 つの Variant Subsystem ブロックが動作できる N 個のモードのうちの 1 つを表します。各バリアントは、関連付けられているモデル固有の引数を使用して特定のモデルを参照します。シミュレーション中は、任意の Variant Subsystem ブロックについて 1 つのバリアントのみがアクティブになります。アクティブなバリアントは、ベース ワークスペース内の変数の値を変更するか、Variant Subsystem ブロックのダイアログ ボックスを使用してバリアントの選択を手動でオーバーライドして切り替えることができます。
Improve Simulation Performance by Using Local Solvers
Improve simulation performance by using a local solver for a component with much faster dynamics compared to the rest of the system.
端子
入力
Port_1 — 参照モデルのルートレベルのブロックに対応する入力
スカラー | ベクトル | 行列 | 配列 | バス
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
複素数のサポート: あり
出力
Port_1 — 参照モデルのルートレベルのブロックに対応する出力
スカラー | ベクトル | 行列 | 配列 | バス
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
複素数のサポート: あり
コントロール
Enable — 参照モデルを有効にする制御信号
スカラー | ベクトル | 行列
イネーブル端子は、Model ブロックの上部に表示されます。端子ラベルは、イネーブル信号を表すアイコンです。
端子に接続している制御信号によって、参照モデルを実行するタイミングが決定します。詳細については、参照モデルの条件付き実行を参照してください。
依存関係
この端子を有効にするには Enable ブロックを参照モデルの最上位に追加します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| Boolean
| fixed point
Trigger — 参照モデルをトリガーする制御信号
スカラー | ベクトル | 行列
トリガー端子は Model ブロックの上部に表示されます。端子ラベルは、トリガー信号を表すアイコンです。
端子に接続している制御信号によって、参照モデルを実行するタイミングが決定します。詳細については、参照モデルの条件付き実行を参照してください。
依存関係
この端子を有効にするには Trigger ブロックを参照モデルの最上位に追加し、その [トリガー タイプ] を [立ち上がり]
、[立ち下がり]
、または [両方]
に設定します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| Boolean
| fixed point
Function Call — 関数呼び出しイベントの制御信号
スカラー
関数呼び出し端子は、Model ブロックの上部に表示されます。端子ラベルには、参照モデルの名前が関数として表示されます。
端子に接続している関数呼び出し制御信号によって、参照モデルを実行するタイミングが決定します。詳細については、参照モデルの条件付き実行を参照してください。
依存関係
この端子を有効にするには Trigger ブロックを参照モデルの最上位に追加し、その [トリガー タイプ] を [関数呼び出し]
に設定します。
initialize — モデルの初期化イベントの制御信号
スカラー
初期化イベント端子は、モデルの初期化イベントをトリガーする関数呼び出し制御信号を提供します。これにより、参照モデルの状態が初期化されます。
参照モデルには、モデルの初期化イベントに対応する Initialize Function ブロックを含めることができます。詳細については、初期化関数、再初期化関数、リセット関数および終了関数の使用を参照してください。
依存関係
この端子を有効にするには、[モデル初期化端子を表示] を選択します。
reset — モデル リセット イベントの制御信号
スカラー
リセット イベント端子は、モデル リセット イベントをトリガーする関数呼び出し制御信号を提供します。これにより、参照モデルの状態がリセットされます。
参照モデルには、各モデル リセット イベントに対応する Reset Function ブロックが含まれていなければなりません。詳細については、初期化関数、再初期化関数、リセット関数および終了関数の使用を参照してください。
端子名を指定するには、Reset Function ブロック内の Event Listener ブロックの [イベント名] パラメーターを使用します。
依存関係
このタイプの端子を有効にするには、[モデル リセット端子を表示] を選択します。
reinit — モデルの再初期化イベントの制御信号
スカラー
再初期化イベント端子は、モデルの再初期化イベントをトリガーする関数呼び出し制御信号を提供します。これにより、参照モデルの状態が再初期化されます。
参照モデルには、各モデル再初期化イベントに対応する Reinitialize Function ブロックが含まれていなければなりません。詳細については、初期化関数、再初期化関数、リセット関数および終了関数の使用を参照してください。
端子名を指定するには、Reinitialize Function ブロック内の Event Listener ブロックの [イベント名] パラメーターを使用します。
依存関係
このタイプの端子を有効にするには、"モデル再初期化端子を表示" を選択します。
terminate — モデル終了イベントの制御信号
スカラー
終了イベント端子は、モデル終了イベントをトリガーする関数呼び出し制御信号を提供します。これにより、参照モデルの状態が読み取られ、保存されます。
参照モデルには、モデル終了イベントに対応する Terminate Function ブロックを含めることができます。詳細については、初期化関数、再初期化関数、リセット関数および終了関数の使用を参照してください。
依存関係
この端子を有効にするには、[モデル終了端子を表示] を選択します。
D — 周期的イベントをスケジュールする制御信号
スカラー
周期的イベント端子は、モデルを実行するタイミングを指定する関数呼び出し制御信号を提供します。例については、Function-Call Generator を使用したレートベース モデルのシミュレーションのテストを参照してください。
各端子ラベルは、対応する Inport ブロックのサンプル時間など、周期的イベントに関する情報を表示します。たとえば、次の図の Model ブロックは、周期的イベント端子を表示し、次の 2 つの離散レートをもつモデルを参照します。0.01 と 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
でファイル拡張子を含むモデル名を指定すると、ModelNameDialog
とModelFile
が設定されてファイル拡張子が維持されます。
シミュレーション モード — モデル参照用のシミュレーション モード
ノーマル
(既定値) | アクセラレータ
| ソフトウェアインザループ (SIL)
| プロセッサインザループ (PIL)
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")
モデル イベントのシミュレーション
参照モデルを実行し、状態を変更するタイミングを制御します。
モデル初期化端子を表示 — 初期化イベント端子を表示するオプション
off
(既定値) | on
初期化イベント端子を表示するには、このパラメーターを選択します。端子を削除するには、このパラメーターの選択を解除します。
依存関係
このパラメーターを有効にするには、条件付き実行用に設定されていないモデルを参照します。
プログラムでの使用
ブロック パラメーターの値をプログラムで設定するには、関数 set_param
を使用します。
パラメーター: | ShowModelInitializePort |
値: | "off" (既定値) | "on" |
例: set_param(gcb,ShowModelInitializePort="on")
モデル再初期化端子を表示 — 再初期化イベント端子を表示するオプション
off
(既定値) | on
再初期化イベント端子を表示するには、このパラメーターを選択します。端子を削除するには、このパラメーターの選択を解除します。
依存関係
このパラメーターを有効にするには、条件付き実行用に設定されていない、Reinitialize Function ブロックが含まれるモデルを参照します。
プログラムでの使用
ブロック パラメーターの値をプログラムで設定するには、関数 set_param
を使用します。
パラメーター: | ShowModelReinitializePorts |
値: | "off" (既定値) | "on" |
例: set_param(gcb,ShowModelReinitializePorts="on")
モデル リセット端子を表示 — リセット イベント端子を表示するオプション
off
(既定値) | on
リセット イベント端子を表示するには、このパラメーターを選択します。端子を削除するには、このパラメーターの選択を解除します。
依存関係
このパラメーターを有効にするには、条件付き実行用に設定されていない、Reset Function ブロックが含まれるモデルを参照します。
プログラムでの使用
ブロック パラメーターの値をプログラムで設定するには、関数 set_param
を使用します。
パラメーター: | ShowModelResetPorts |
値: | "off" (既定値) | "on" |
例: set_param(gcb,ShowModelResetPorts="on")
モデル終了端子を表示 — 終了イベント端子を表示するオプション
off
(既定値) | on
終了イベント端子を表示するには、このパラメーターを選択します。端子を削除するには、このパラメーターの選択を解除します。
依存関係
このパラメーターを有効にするには、条件付き実行用に設定されていないモデルを参照します。次に、[モデル初期化端子を表示] を選択します。
プログラムでの使用
ブロック パラメーターの値をプログラムで設定するには、関数 set_param
を使用します。
パラメーター: | ShowModelTerminatePort |
値: | "off" (既定値) | "on" |
例: set_param(gcb,ShowModelTerminatePort="on")
レートのスケジュール — 周期的イベントをスケジュールするオプション
off
(既定値) | 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を参照してください。
依存関係
このパラメーターを有効にするには、このブロックで参照されるモデルのコンフィギュレーション パラメーターで [モデルの参照時にローカル ソルバーを使用] を選択します。
通信ステップ サイズ — ローカル ソルバーと親ソルバー間の通信の離散間隔
正のスカラーの double
"通信ステップ サイズ" は、ローカル ソルバーと親ソルバーがデータを交換するレートを指定します。通信ステップ サイズは親モデルの Model ブロックの離散サンプル時間として登録されます。既定では、通信ステップ サイズは継承され (-1
)、ソフトウェアによって決定されます。
通信ステップ サイズを明示的に指定する場合、指定する値は次の制約をすべて満たす必要があります。
通信ステップ サイズは以下でなければなりません。
ローカル ステップ サイズと親ステップ サイズの両方以上
ローカル ステップ サイズと親ステップ サイズの両方の整数倍
参照モデル内の最速の離散レート以上
参照モデル内のすべての離散レートは、通信ステップ サイズで割り切れる必要があります。
ローカル ステップ サイズが親ステップ サイズより大きい場合、通信ステップ サイズを継承するように指定するか (-1
)、ローカル ステップ サイズと同じ値に指定します。たとえば、親ステップ サイズが 1 秒、ローカル ステップ サイズが 2 秒の場合、通信ステップ サイズを -1
(継承) または 2
に指定します。通信ステップ サイズを 4
などのより大きい値に指定すると、パフォーマンスが向上せずに精度が低下する可能性があります。
プログラムでの使用
ブロック パラメーターの値をプログラムで設定するには、関数 set_param
を使用します。
パラメーター: | CommunicationStepSize |
値: | -1 (既定値) | positive scalar double |
データ型: | double |
例: set_param(gcb,CommunicationStepSize="0.5")
入力信号の処理 — ローカル ソルバーの入力の外挿法
自動
(既定値) | ゼロ次ホールド
ローカル ソルバーは、親ソルバーからの連続状態変数の微分係数または入力信号値を外挿することによって、連続状態値とブロック出力値を計算します。このパラメーターは、ローカル ソルバーが連続状態変数の微分係数または入力信号値をローカル シミュレーション時間に外挿するために使用する手法を指定します。
自動
— 選択したソルバー、モデル構造、およびローカル ステップ サイズと親ソルバー ステップ サイズの比較に基づいて外挿法が決定されます。ローカル ソルバーは、次の場合にゼロ次ホールドを使用して入力信号値をローカル シミュレーション時間に外挿します。
ode1be
やode14x
などの陰的ソルバーを選択した。参照モデルに入力端子が含まれていない。
ローカル ステップ サイズが親ステップ サイズより小さい。
それ以外の場合、ローカル ソルバーは、選択したソルバーに適切な外挿アルゴリズムを使用して、連続状態変数の微分係数をローカル シミュレーション時間に外挿します。外挿アルゴリズムは一般にシミュレーション結果の精度を向上させますが、ゼロ次ホールドの外挿よりも計算量が多くなります。
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")
ブロックの特性
ヒント
Model ブロックが保護モデルを参照するかどうかをプログラムにより判別するには、関数 get_param
を使用して、Model ブロックの読み取り専用 ProtectedModel
パラメーターをクエリします。参照モデルが保護されている場合、関数は "on"
を返します。参照モデルが保護されていない場合、関数は "off"
を返します。
拡張機能
C/C++ コード生成
Simulink® Coder™ を使用して C および C++ コードを生成します。
実際のコード生成のサポートは、ブロックの実装に依存します。
HDL コード生成
HDL Coder™ を使用して FPGA 設計および ASIC 設計のための VHDL、Verilog および SystemVerilog のコードを生成します。
HDL Coder™ には、HDL の実装および合成されたロジックに影響する追加のコンフィギュレーション オプションがあります。HDL コード生成への Model ブロックの使用について、およびベスト プラクティスと制限事項の詳細については、HDL コード生成でのモデル参照 (HDL Coder)を参照してください。
参照モデル用のブラック ボックス インターフェイスの生成 (HDL Coder)および参照モデルのパラメーター付きのコードの生成 (HDL Coder)も参照してください。
アーキテクチャ | 説明 |
---|---|
ModelReference (既定) | 参照モデルおよび任意の入れ子にされたモデルからコードを生成する場合、[ModelReference] 実装を使用します。詳細については、参照モデルのコードの生成方法 (HDL Coder)を参照してください。 |
BlackBox | レガシまたは外部の HDL コードについては、 詳細については、参照モデル用のブラック ボックス インターフェイスの生成 (HDL Coder)を参照してください。 |
[BlackBox]
アーキテクチャについて、端子名をカスタマイズして、外部コンポーネントのインターフェイスの属性を設定できます。ブラック ボックスまたは HDL コシミュレーション インターフェイスのカスタマイズ (HDL Coder)を参照してください。
BalanceDelays | あるパスに新しい遅延が導入されたことを検出し、それに一致する遅延を他のパスに挿入します。既定の設定は |
ConstrainedOutputPipeline | 既存の遅延を設計内で移動することによって出力に配置するレジスタの数。分散型パイプラインではこれらのレジスタは再分散されません。既定の設定は |
DistributedPipelining | パイプライン レジスタの分散、またはレジスタのリタイミング。既定の設定は |
DSPStyle | 乗算器のマッピングの合成属性。既定の設定は |
InputPipeline | 生成されたコードに挿入する入力パイプライン ステージ数。分散型パイプラインと制約付き出力パイプラインでは、これらのレジスタを移動できます。既定の設定は |
OutputPipeline | 生成されたコードに挿入する出力パイプライン ステージ数。分散型パイプラインと制約付き出力パイプラインでは、これらのレジスタを移動できます。既定の設定は |
ReferenceModelPrefix | 生成されたコードに挿入する参照モデルの接頭辞。コード ジェネレーターはこの接頭辞をサブモデル ファイル名および HDL 識別子に適用します。既定の接頭辞は メモ
|
SharingFactor | 単一の共有リソースにマッピングされる、機能的に等価なリソースの数。既定の設定は 0 です。リソース共有 (HDL Coder)も参照してください。 |
StreamingFactor | 時間多重化されてシリアルのスカラー データ パスに変換される、パラレル データ パスの数、またはベクトルの数。既定値は 0 であり、パラレル データ パスがそのまま実装されます。ストリーミング (HDL Coder)も参照してください。 |
固定小数点の変換
Fixed-Point Designer™ を使用して固定小数点システムの設計とシミュレーションを行います。
実際のデータ型のサポートは、ブロックの実装に依存します。
バージョン履歴
R2006a より前に導入R2024a: より高速なダイナミクスをもつコンポーネントに対するローカル ソルバーの使用
親ソルバーのステップ サイズより小さいローカル ステップ サイズを指定することで、より高速なダイナミクスをもつシステム コンポーネントに対してローカル ソルバーを使用できます。新しい [通信ステップ サイズ] パラメーターは、親ソルバーとローカル ソルバー間の通信の離散レートを指定します。通信ステップ サイズは、ローカル ソルバーのステップ サイズではなく、親モデルの離散レートとして登録されます。
R2024a: [出力信号の処理] パラメーターの新しい既定値と、[入力信号の処理] パラメーター値が [自動]
の場合の動作の改善
[出力信号の処理] パラメーターの既定値は、新しい値 [自動]
になっています。[出力信号の処理] パラメーター値が [自動]
の場合、ローカル ステップ サイズと通信ステップ サイズの比較に基づいて、連続状態または入力信号値を親ソルバーのシミュレーション時間に内挿するために使用する手法が決定されます。以前のリリースでは、ローカル ステップ サイズは親ソルバーのステップ サイズ以上である必要があり、[自動]
オプションは存在しませんでした。
[入力信号の処理] パラメーター値が [自動]
の場合、モデル構造およびローカル ステップ サイズと通信ステップ サイズの比較に基づいて、連続状態変数の微分係数または入力信号値をローカル シミュレーション時間に外挿する手法が決定されます。以前のリリースでは、内挿法を選択するときにモデル構造が考慮されていませんでした。[通信ステップ サイズ] パラメーターが存在しなかったため、ローカル ステップ サイズと通信ステップ サイズの比較を考慮することも意味がありませんでした。
R2024a: ラップされた状態のブロックを含むモデルに対するローカル ソルバーの使用
モデルの階層構造で参照されるときにローカル ソルバーを使用するように、ラップされた状態をもつ 1 つ以上のブロックを含むモデルを構成できます。状態をラップすると、周期的な状態値をもつシステムの数値安定性が向上し、シミュレーションのパフォーマンスが低下する可能性があるソルバーのリセットを行うことなく、状態値を周期の開始にラップできます。
たとえば、車輪の角度位置を常に 0 ~ 2π の値をもつようにモデル化できます。車輪が角度位置 2π を超えて回転すると、角度位置は増加し続けるのではなく、0 に戻ります。
R2023b: 参照モデルを入力せずに Model ブロックの端子を作成
R2023b 以降では、Subsystem ブロックの場合と同様に、参照モデルを入力することなく Model ブロックで端子を作成できます。
端子を作成するには、Model ブロックの 4 つのエッジのいずれかの上にマウスをポイントします。ポインターが十字形になったらクリックします。クリックしたエッジに新しい端子が表示され、青で強調表示されます。新しい端子の上にマウスをポイントします。展開されたアクション メニューで、作成する端子のタイプを選択します。
既存の端子を削除するには、端子を選択して Delete キーを押します。複数の端子を削除するには、Shift キーを押したまま端子を選択します。次に、Delete キーを押します。
Model ブロックの端子の作成の詳細については、モデル参照インターフェイスへの端子の追加を参照してください。
R2023a: モデルの階層構造内の任意の位置におけるモデル参照に対するローカル ソルバーの使用
ローカル ソルバーを使用する参照モデル内の Model ブロックを含め、モデルの階層構造内の任意の位置にある Model ブロックでローカル ソルバーを使用できます。
R2022b: アクセラレータおよびラピッド アクセラレータのシミュレーションに対するローカル ソルバーのサポート
アクセラレータ モードとラピッド アクセラレータ モードで、ローカル ソルバーを使用するモデル参照階層のシミュレーションがサポートされます。
R2022a: 参照モデルでのローカル ソルバーの使用
別のモデルから参照されるときにローカル ソルバーを使用するように参照モデルを構成できます。ローカル ソルバーにより、別個の微分方程式系として参照モデルが解かれます。
ローカル ソルバーを使用することで、システムの構成と統合を促進できます。ローカル ソルバーを使用すると、各モデルを別個に設計およびテストするのに使用したのと同じソルバーとステップ サイズを使用して、システムレベルのシミュレーションで参照モデルを解くことができます。また、ローカル ソルバーを使用すれば、モデルをより大規模なシステムに統合しながら、参照モデルのコンフィギュレーション パラメーターに必要なコンフィギュレーションの調整量を減らすこともできます。
一部のシステムでは、ローカル ソルバーを使用すると、参照モデル内のシステムを解くのにより適切なソルバーを選択できるようになったり、複数のコンポーネントに幅広いダイナミクスがあるシステムでの冗長な計算の数を減らしたりできるため、シミュレーションのパフォーマンスを向上させることができます。
ローカル ソルバーを使用するように構成された 1 つ以上のモデルを参照するモデルの階層構造には、以下の制限が適用されます。
最上位モデルから参照されるモデルのみがローカル ソルバーを使用できます。
ローカル ソルバーは、ノーマル モード シミュレーションでのみサポートされます。
親ソルバーは可変ステップまたは固定ステップのソルバーにすることができます。ローカル ソルバーは固定ステップ ソルバーでなければなりません。
親ソルバーが固定ステップ ソルバーの場合、ローカル ソルバーのステップ サイズは最上位ソルバーのステップ サイズより大きくなければなりません。
詳細については、Use Local Solvers in Referenced Modelsを参照してください。
R2019a: Model ブロックでのバリアント モデルの指定はサポートされなくなりました
R2019a 以降、Model ブロックでのバリアント モデルの指定はサポートされなくなりました。バリアント モデルを指定するために事前に設定された Model である Model Variants ブロックもサポートされなくなりました。これらのブロックを含むモデルを読み込むと、これらはバリアントの選択を表す Model ブロックを含む Variant Subsystem ブロックに変換されます。
Variant Subsystem ブロックには、以下の利点があります。
Model ブロックと Subsystem ブロックをバリアントの選択肢として混在させることができます。
入力端子と出力端子の数が異なるバリアントを指定できます。
Variant Subsystem ブロック パラメーター [ブロック線図の更新中にすべての選択肢を解析し、プリプロセッサの条件を生成する] は、Model ブロック パラメーター [プリプロセッサの条件を生成] と異なる動作をします。Variant Subsystem ブロック パラメーターは、シミュレーションを実行させてブロック線図を更新することでアクティブなバリアントのみをコンパイルするのではなく、すべてのバリアントをコンパイルします。
バリアントの Model ブロック パラメーターを使用するスクリプトがある場合、Variant Subsystem ブロック パラメーターを使用するようにそれらを更新しなければなりません。
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)