ファイルのモデル コンポーネントの再利用
大規模モデルで作業をしているときに、そのモデルを複数のファイルに分割して、チーム メンバーが異なるモデル コンポーネントを同時に開発できるようにすることができます。あるモデルやその他のモデルに含まれるこれらのコンポーネントを複数回再利用できます。
モデル ファイル、サブシステム ファイル、およびライブラリ ファイルは、同じモデル コンポーネントの複数のインスタンスに単一のソースを提供します。これらの各コンポーネント化方法を使用する状況については、コンポーネントベースのモデル化のガイドラインを参照してください。
この例では、モデルの階層構造にサブシステム、参照サブシステム、および参照モデルが含まれています。参照サブシステムと参照モデルは別々のファイルに格納されています。
BasicModelingComponents
という名前のモデルの最上位にサブシステムが含まれています。
topmdl = "BasicModelingComponents"; open_system(topmdl) set_param(topmdl,SimulationCommand="Update");
参照サブシステム
最上位モデルから Plant
という名前の Subsystem ブロックをダブルクリックします。このサブシステムには、MassSpringDamperLeft
および MassSpringDamperRight
という名前の Subsystem Reference ブロックが含まれています。
どちらの Subsystem Reference ブロックも BasicModelingPlant.slx
という名前のサブシステム ファイルを参照しています。
refss = "BasicModelingPlant";
open_system(refss)
PreloadFcn
コールバックは、BasicModelingDataPlant.m
という名前のスクリプトから関連する変数を読み込みます。
ライブラリ ファイルまたはサブシステム ファイルのいずれかでサブシステムを再利用できるよう定義できますが、サブシステム ファイルを使った方が編集が容易です。参照サブシステムを編集すると、サブシステム ファイルと参照サブシステムのすべてのインスタンスに変更が適用されます。
参照モデル
最上位モデルから Controller
という名前の Subsystem ブロックをダブルクリックします。このサブシステムには、Controller
という名前の Model ブロックが含まれています。
Model ブロックは BasicModelingController.slx
という名前のモデル ファイルを参照しています。
refmdl = "BasicModelingController";
open_system(refmdl)
PreloadFcn
コールバックは、BasicModelingDataController.m
という名前のスクリプトから関連する変数を読み込みます。
コントローラー コードは組み込みシステムに展開されることがよくあるため、スタンドアロン コントローラー モデルを使用すると便利です。
組み込みプロセッサではコントローラーの既定のプロパティがサポートされていない場合があります。コントローラー モデルは組み込みプロセッサのコード生成に使用される可能性があるため、次の制限が参照コントローラー モデルおよび親モデルとのインターフェイスに適用されます。
固定信号属性 — モデル インターフェイスのバスで同じ信号属性を共有するために、バス オブジェクトで 3 組の入力端子と出力端子の信号属性を指定します。
離散サンプル時間 — 離散サンプル時間を指定するために、
BasicModelingController.slx
という名前のモデル ファイルで離散実行領域を指定し、BasicModelingDataController.m
という名前のスクリプトで離散 PID コントローラーの値を指定します。固定データ型 — 組み込みプロセッサが必要とする単精度のデータ型を適用するために、バス要素のデータ型を要素がモデル インターフェイスに到達する前に Data Type Conversion ブロックで変換します。