このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
Variant Subsystem ブロックでのバリアントの選択の定義、設定、有効化
Variant Subsystem でのバリアントの選択の表現
バリアントの選択には、モデルの 2 つ以上のコンポーネントのコンフィギュレーションがあります。次の例は、Variant Subsystem ブロック内のバリアント選択を表現する方法を示しています。Variant Subsystem ブロックでは、Subsystem、Model、または Subsystem Reference ブロックの組み合わせをバリアントの選択として使用できます。設計バリアントを表現する他の方法については、Simulink のバリアントのタイプを参照してください。
Variant Subsystem ブロックをモデルに追加し、名前を付けます。
このブロックはバリアントの選択のコンテナーとして使用します。
Variant Subsystem ブロックをダブルクリックします。このブロックの入力および出力が一致するように、Inport ブロックと Outport ブロックを追加します。
メモ
Variant Subsystem ブロックには、Inport、Outport、Subsystem および Model ブロックのみを追加できます。データ端子を通して制御信号を渡すことができます。
Variant Subsystem ブロック上のバッジを右クリックし、[ブロック パラメーター (Subsystem)] を選択します。
[ブロック パラメーター] ダイアログ ボックスで、追加するバリアント サブシステムの選択ごとに
ボタンをクリックします。
Simulink® により空の Subsystem ブロックが Variant Subsystem ブロック内に作成されます。新しいブロックには、含んでいる Variant Subsystem ブロックと同じ数の入力端子および出力端子があります
ヒント
バリアントの選択で入力端子と出力端子の数が異なる場合は、Variant Subsystem でのバリアントの選択の入力端子と出力端子のマッピングを参照してください。
各 Subsystem ブロックを開き、バリアントの選択を表すモデルを作成します。
バリアントのプロトタイプを作成しているときに、Variant Subsystem ブロック内の入力または出力がない、空の Subsystem ブロックを作成できます。空のサブシステムによって、バリアントの完全なモデル化の必要がない、サブシステムが非アクティブな状況が再現されます。空のバリアントの選択では、バリアントのアクティブ化条件を指定するか、条件の前に
%
記号を付けてバリアント条件をコメント アウトします。空のバリアントの選択がコンパイル中にアクティブである場合、Simulink はそれを無視します。
バリアントの選択として Simulink モデルを含める
Simulink モデルをバリアントの選択として Variant Subsystem ブロック内に含めることができます。
バリアントの選択として含めるモデルを作成します。含んでいる Variant Subsystem ブロックと同じ数の入力端子と出力端子がモデルにあることを確認します。
メモ
モデルに含まれる入力端子と出力端子の数が異なる場合は、Variant Subsystem でのバリアントの選択の入力端子と出力端子のマッピングを参照してください。
モデルで、バリアントの選択を含む Variant Subsystem ブロックを右クリックし、[ブロック パラメーター (Subsystem)] を選択します。
[ブロック パラメーター] ダイアログ ボックスで
ボタンをクリックし、Model ブロックをバリアントの選択として追加します。
Simulink により関連付けられていない Model ブロックが Variant Subsystem ブロックに作成されます。
関連付けられていない Model ブロックをダブルクリックします。[モデル名] ボックスにモデル バリアントの選択として使用するモデル名を入力し、[OK] をクリックします。
バリアント制御の設定
バリアント制御を使用して、バリアントの選択をアクティブ化する条件を指定できます。また、最大で 1 つのバリアントの選択を既定として指定できます。
MATLAB® コマンド プロンプトで、組み合わせたときにアクティブ化する条件を作成する制御変数を指定します。
mode = 3; version = 2;
モデルのバリアントの選択のコンテナーである Variant Subsystem ブロックを右クリックし、[ブロック パラメーター (Subsystem)] を選択します。
[ブロック パラメーター] ダイアログ ボックスの [バリアント制御] 列で、いずれかの選択肢の横にある
[(既定の設定)]
を選択します。Simulink は、シミュレーションで 1 つのバリアントの選択のみがアクティブになることを検証します。[ゼロ アクティブ バリアント制御を許可] が選択されている場合、ゼロ バリアントの選択ができます。制御条件でバリアントがアクティブにならない場合、Simulink はシミュレーションに既定のバリアントとコード生成を使用します。
他の各選択に対してバリアント条件を指定します。空のバリアントの選択を使用している場合、その選択に対するバリアント条件を指定します。既存のアクティブ化条件の先頭に
%
記号を付けてコメント アウトすることもできます。[適用] をクリックします。そうしない場合は変更内容は保存されません。
Variant Subsystem でのバリアントの選択の入力端子と出力端子のマッピング
Variant Subsystem ブロックでは、Subsystem、Model、または Subsystem Reference ブロックの組み合わせをバリアントの選択として使用できます。Variant Subsystem ブロックが上流のモデル コンポーネントから受信する入力は、バリアントの選択の入力端子と出力端子にマッピングされます。
バリアントの選択を表すブロックは、親の Variant Subsystem ブロックの入力端子と出力端子とは数が異なる入力端子および出力端子をもつことができます。ただし、次の条件を満たさなければなりません。
バリアントの選択は、Variant Subsystem コンテナー ブロックと同じ入力端子のセットをもつか、コンテナー ブロックの端子のサブセットでなければなりません。
バリアントの選択は、Variant Subsystem コンテナー ブロックと同じ出力端子のセットをもつか、コンテナー ブロックの端子のサブセットでなければなりません。
バリアントの選択は、Variant Subsystem コンテナー ブロックと同じ制御端子のセットをもたなければなりません。
Simulink のシミュレーションの実行中は、Variant Subsystem ブロックの非アクティブな端子は無効になります。
Variant Subsystem ブロックへの変換
Simulink エディターでは、次のブロックを Variant Subsystem ブロックに変換できます。
Subsystem ブロック
Model ブロック
Variant Model ブロック (R2017b より前のバージョンで作成されたモデル)
条件付き実行サブシステム
これを行うには、ブロックを右クリックし、コンテキスト メニューで [サブシステムとモデル参照] 、 [変換] 、 [Variant Subsystem] をクリックします。
これらのブロックはプログラムで Variant Subsystem ブロックに変換することもできます。これを行うには、次のいずれかの構文を使用します。
以下に例を示します。
open_system('sldemo_variant_subsystems'); Simulink.VariantManager.convertToVariant('sldemo_variant_subsystems/Controller');
バリアント モデルをバリアント サブシステムに変換する場合、Model ブロックのパラメーター [プリプロセッサの条件を生成] の動作が Variant Subsystem ブロックのパラメーター [バリアントのアクティベーションのタイミング] と異なることに注意してください。バリアント モデルの場合、このパラメーターを有効にすると、シミュレーションとブロック線図の更新でコンパイルされるのはアクティブなバリアントのみになります。バリアント サブシステムの場合、このパラメーターを有効にするとすべてのバリアントがコンパイルされるため、シミュレーションと更新が低速になる可能性があります。
バリアント モデルのバリアント サブシステムへの変換では Variants
コマンド ライン パラメーターを使用するスクリプトの更新が必要になる可能性があります。