メインコンテンツ

ファイルのモデル コンポーネントの再利用

大規模モデルで作業をしているときに、そのモデルを複数のファイルに分割して、チーム メンバーが異なるモデル コンポーネントを同時に開発できるようにすることができます。あるモデルやその他のモデルに含まれるこれらのコンポーネントを複数回再利用できます。

モデル ファイル、サブシステム ファイル、およびライブラリ ファイルは、同じモデル コンポーネントの複数のインスタンスに単一のソースを提供します。これらの各コンポーネント化方法を使用する状況については、コンポーネントベースのモデル化のガイドラインを参照してください。

この例では、モデルの階層構造にサブシステム、参照サブシステム、および参照モデルが含まれています。参照サブシステムと参照モデルは別々のファイルに格納されています。

BasicModelingComponents という名前のモデルの最上位にサブシステムが含まれています。

topmdl = "BasicModelingComponents";
open_system(topmdl)
set_param(topmdl,SimulationCommand="Update");

Top level of model with Subsystem blocks

参照サブシステム

最上位モデルから Plant という名前の Subsystem ブロックをダブルクリックします。このサブシステムには、MassSpringDamperLeft および MassSpringDamperRight という名前の Subsystem Reference ブロックが含まれています。

Plant subsystem with two Subsystem Reference blocks

どちらの Subsystem Reference ブロックも BasicModelingPlant.slx という名前のサブシステム ファイルを参照しています。

refss = "BasicModelingPlant";
open_system(refss)

Referenced subsystem opened separately

PreloadFcn コールバックは、BasicModelingDataPlant.m という名前のスクリプトから関連する変数を読み込みます。

ライブラリ ファイルまたはサブシステム ファイルのいずれかでサブシステムを再利用できるよう定義できますが、サブシステム ファイルを使った方が編集が容易です。参照サブシステムを編集すると、サブシステム ファイルと参照サブシステムのすべてのインスタンスに変更が適用されます。

参照モデル

最上位モデルから Controller という名前の Subsystem ブロックをダブルクリックします。このサブシステムには、Controller という名前の Model ブロックが含まれています。

Controller subsystem with a Model block

Model ブロックは BasicModelingController.slx という名前のモデル ファイルを参照しています。

refmdl = "BasicModelingController";
open_system(refmdl)

Referenced model opened separately

PreloadFcn コールバックは、BasicModelingDataController.m という名前のスクリプトから関連する変数を読み込みます。

コントローラー コードは組み込みシステムに展開されることがよくあるため、スタンドアロン コントローラー モデルを使用すると便利です。

組み込みプロセッサではコントローラーの既定のプロパティがサポートされていない場合があります。コントローラー モデルは組み込みプロセッサのコード生成に使用される可能性があるため、次の制限が参照コントローラー モデルおよび親モデルとのインターフェイスに適用されます。

  • 固定信号属性 — モデル インターフェイスのバスで同じ信号属性を共有するために、バス オブジェクトで 3 組の入力端子と出力端子の信号属性を指定します。

  • 離散サンプル時間 — 離散サンプル時間を指定するために、BasicModelingController.slx という名前のモデル ファイルで離散実行領域を指定し、BasicModelingDataController.m という名前のスクリプトで離散 PID コントローラーの値を指定します。

  • 固定データ型 — 組み込みプロセッサが必要とする単精度のデータ型を適用するために、バス要素のデータ型を要素がモデル インターフェイスに到達する前に Data Type Conversion ブロックで変換します。

参考

トピック