最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

モデル参照のインターフェイスと境界

Model ブロックには、その参照先モデルのルートレベルの入力端子、出力端子、および制御端子に対応する入力端子、出力端子、および制御端子があります。参照モデルには InportOutportIn Bus ElementOut Bus ElementTriggerEnable ブロックが含まれ、親モデルから入力を取得し、親モデルに出力を提供できます。Model ブロックの入力信号は、参照モデルの対応する入力ブロックに対して有効でなければなりません。Model ブロックの出力信号は、参照モデルのルートレベルの出力ブロック信号です。

sldemo_mdlref_basic では、各 Model ブロックに 3 つの入力 (2 つの Constant ブロックと 1 つの Pulse Generator ブロック) があります。各 Model ブロックには、スコープに記録された 1 つの出力信号があります。各 Pulse Generator ブロックからの入力信号は異なるサンプル時間を使用するため、各 Model ブロックからの出力信号はモデル インスタンスごとに異なります。

親モデルに接続するために、参照モデル sldemo_mdlref_counter に 3 つの Inport ブロック (upperlower、および input) と 1 つの Outport ブロック (output) があります。参照モデル内の端子を変更する場合は、Model ブロックを更新してこれらの変更を反映します。

Model ブロックの出力信号を比較するには、シミュレーション データ インスペクターを使用できます。

Model ブロックの更新

Model ブロックを更新すると、参照モデルのインターフェイスの変更を反映して、その内部表現が更新されます。たとえば、参照モデルが端子を得たとき、または失ったときに、Model ブロックを更新してその端子を更新します。

特定の Model ブロックを更新するには、次のようにします。

  • Model ブロックを選択してから、[Model ブロック] タブで [更新] をクリックします。

  • 関数 Simulink.ModelReference.refresh を使用します。

モデルの階層構造ですべての Model ブロックを更新するには、Model ブロックを選択してから、[Model ブロック] タブで [更新] の横にあるドロップダウン矢印をクリックして、[ブロックの更新] をクリックします。

Simulink® がモデルの読み込みまたは更新時に参照モデルと一致しない可能性がある Model ブロックを検出したときに通知を受け取るには、これらの診断のコンフィギュレーション パラメーターの既定の設定を変更します。

これらのコンフィギュレーション パラメーターが既定の設定 ([なし]) を使用するか [警告] に設定される場合に、Model ブロックのクリック、モデルの階層構造のシミュレーション、モデルの階層構造のコード生成などの操作を実行すると、Simulink は Model ブロックを更新します。

これらのコンフィギュレーション パラメーターが [エラー] に設定されている場合、Simulink は Model ブロックを自動的に更新しません。

信号の伝播

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

Outport ブロックに接続されている信号を参照モデルから親モデルに伝播するには、信号名が信号線に明示的に表示されていなければなりません。

モデル参照の境界を越えるバーチャル バスの場合、In Bus Element ブロックと Out Bus Element ブロックを使用します。

モデル参照の境界を越える非バーチャル バスの場合、親モデルの関連するバスと同じバス オブジェクトを指定する Inport ブロックと Outport ブロックを使用します。モデル インターフェイスの非バーチャルバスを参照してください。

バスを使用するモデルの階層構造の例については、sldemo_mdlref_bus を参照してください。

参照モデルは、ユーザー定義のデータ型を使用する場合、入力の提供にも出力の取得にも、固定小数点数、Simulink.DataType オブジェクトまたは Simulink.Bus オブジェクトが定義したデータ型しか使用できません。

参照モデルでの信号のログ

参照モデルでは、信号ログ用に設定されたすべての信号を記録することができます。モデルの階層構造の信号ログ用に設定された信号のサブセットまたはすべてを選択するには、信号ログ セレクターを使用します。詳細については、信号ログ設定のオーバーライドを参照してください。

シミュレーション データ インスペクターを使用して、参照モデルで記録された信号を表示して解析することができます。複数のプロット上で信号を表示し、ズームし、データ カーソルを使用してデータを理解および評価できます。また、複数のシミュレーションの信号データを比較することもできます。参照モデルで信号を表示する例については、モデル参照インスタンスの信号の表示を参照してください。

サンプル時間の要件

参照モデルのルート レベルの入力ブロックや出力ブロックに接続されている最初の非バーチャル ブロックは、関連する端子と同じサンプル時間をもたなければなりません。サンプル時間が異なる場合、次のブロック線図に示すように、Rate Transition ブロックを使用して入力と出力のサンプル時間と一致させます。

参照モデル インスタンス間でのデータの共有

既定では、各 Model ブロック インスタンスによる読み書きの処理は、モデル内の独立した信号およびブロック状態のコピーに対して行われます。したがって、信号や状態の共有データを通じてインスタンス間で相互にやり取りすることはありません。

すべてのインスタンス (アキュムレータや故障表示器など) でデータを共有するには、データをデータ ストアとしてモデル化します。

  • 参照モデル内のブロックのみが読み書きを行えるようにデータへのアクセスを制限するには、モデルで Data Store Memory ブロックを使用して、[モデル インスタンス間で共有する] パラメーターを選択します。例については、再利用可能なアルゴリズムのインスタンス間でのデータ ストアの共有を参照してください。

  • 参照モデルの外部からのデータへのアクセスを許可するには、グローバル データ ストアをベース ワークスペースまたはデータ ディクショナリで Simulink.Signal オブジェクトとして使用します。参照モデルの外部からのデータは、親モデルまたは他の参照モデル内にある可能性があります。

データ ストアの詳細については、データ ストアの作成によるグローバル データのモデル化を参照してください。

参考

ブロック

関連するトピック