Main Content

モデル参照のバリアント

この例では、モデル参照バリアントの使用方法を示します。Model ブロックは、ある Simulink® モデルを別の Simulink モデルから参照するために使用されます。Variant Subsystem ブロックにはバリアントとして Model ブロックを含めることができます。"バリアント" は、1 つの Variant Subsystem ブロックが動作できる N 個のモードのうちの 1 つを表します。各バリアントは、関連付けられているモデル固有の引数を使用して特定のモデルを参照します。シミュレーション中は、任意の Variant Subsystem ブロックについて 1 つのバリアントのみがアクティブになります。アクティブなバリアントは、ベース ワークスペース内の変数の値を変更するか、Variant Subsystem ブロックのダイアログ ボックスを使用してバリアントの選択を手動でオーバーライドして切り替えることができます。

アクティブなバリアントの切り替え

sldemo_mdlref_variants モデルには、Controller という名前の、2 つのモデルを参照する Variant Subsystem ブロックが含まれています。

open_system('sldemo_mdlref_variants')

バリアントの選択肢を確認するには、Controller という名前の Variant Subsystem ブロックを右クリックし、[ブロック パラメーター (Subsystem)] を選択します。アクティブなバリアントは MATLAB® ベース ワークスペース内の変数 CTRL によって決定されます。CTRL=1 を定義すると Linear という名前の Model ブロックがアクティブになり、CTRL=2 を定義すると Nonlinear という名前の Model ブロックがアクティブになります。

sldemo_mdlref_variants モデルを開くと PreLoadFcn モデルのコールバックが実行され、それにより CTRL2 に設定されます。

線形コントローラーを使用してシミュレートするには、ベース ワークスペースで CTRL=1 を定義してからモデルをシミュレートします。

CTRL=1;
sim('sldemo_mdlref_variants');

非線形コントローラーを使用してシミュレートするには、ベース ワークスペースで CTRL=2 を定義してからモデルをシミュレートします。

CTRL=2;
sim('sldemo_mdlref_variants');

列挙と再利用

sldemo_mdlref_variants_enum モデルは、Simulink.Variant オブジェクトの以下の機能を示します。

  • 列挙型: MATLAB 列挙型クラスを使用すると、Variant オブジェクトの条件を読みやすくすることができます。

  • 再利用: Variant オブジェクトは、別の Variant Subsystem ブロックで再利用できます。

このモデルの Variant Subsystem ブロックでは、MATLAB ベース ワークスペースで以下の変数を定義する必要があります。

  • VE_LINEAR_CONTROLLER = Simulink.Variant('E_CTRL==sldemo_mrv_CONTROLLER_TYPE.LINEAR')

  • VE_NONLINEAR_CONTROLLER = Simulink.Variant('E_CTRL==sldemo_mrv_CONTROLLER_TYPE.NONLINEAR')

  • E_CTRL = sldemo_mrv_CONTROLLER_TYPE.LINEAR

  • VE_PROTOTYPE = Simulink.Variant('E_CURRENT_BUILD==sldemo_mrv_BUILD_TYPE.PROTOTYPE')

  • VE_PRODUCTION = Simulink.Variant('E_CURRENT_BUILD==sldemo_mrv_BUILD_TYPE.PRODUCTION')

  • E_CURRENT_BUILD = sldemo_mrv_BUILD_TYPE.PRODUCTION

各バリアントは、sldemo_mrv_BUILD_TYPE.m または sldemo_mrv_CONTROLLER_TYPE.m のいずれかの列挙型クラスを使用する Simulink.Variant オブジェクトに関連付けられています。

Variant オブジェクトは、式である Condition プロパティをもちます。この式はブール値として評価され、アクティブなバリアントを決定します。この式はスカラー変数、列挙値、等式、不等式、&&、||、~ で構成できます。小かっこ () を使用すると、優先順位をグループ化できます。変数は標準の MATLAB 変数または Simulink.Parameter オブジェクトにすることができます。

モデル sldemo_mdlref_variants_enum を開くと、PreLoadFcn モデルのコールバックが実行されます。このコールバックは、Variant Subsystem ブロックによって要求される変数をベース ワークスペースに入力するよう設定されています。

open_system('sldemo_mdlref_variants_enum')

Variant オブジェクト VE_PROTOTYPE および VE_PRODUCTION は、Filter1、Filter2 および Filter3 という名前の Variant Subsystem ブロック間で再利用されます。

Variant Subsystem ブロックの [ブロック パラメーター] ダイアログ ボックスには、関連する Variant オブジェクトの Condition プロパティが表示されます。

参考

| |

関連するトピック