Variant Subsystem
バリアント選択肢として Subsystem ブロックを含むテンプレート サブシステム
ライブラリ:
Simulink /
Ports & Subsystems
HDL Coder /
Ports & Subsystems
Variant Subsystem ブロックの代替構成:
バリアント モデル | Variant Assembly Subsystem
説明
Variant Subsystem ブロックでは、コンポーネントの複数の実装を別個の階層に含めることができます。
たとえば、次の 3 つのエンジンの構成を取りうる車両を表すモデルのシミュレーションを行うとします。2 気筒ガソリン、4 気筒ガソリン、8 気筒ガソリン。各エンジン モデルを Variant Subsystem ブロック内で別個のサブシステムとして実装し、選択したTypes of Variant Control Modes in Variant Blocksに基づいてそれらのサブシステムを切り替えることができます。詳細については、バリアント制御の紹介を参照してください。
メモ
シミュレーション中は、Variant Subsystem ブロックの実装が 1 つだけアクティブになります。

Variant Subsystem ブロックは、バリアント選択肢として使用する 2 つ以上のブロックを含むように事前構成されたテンプレートです。これらの選択肢は、システムの複数の実装を表します。モデル実行中は、1 つの子ブロックのみがアクティブになります。アクティブな子ブロックは "アクティブなバリアント" と呼ばれます。
Variant Subsystem ブロック内の各バリアント選択肢は、[バリアント制御モード] と [バリアントのアクティベーションのタイミング] に関連付けられています。バリアント制御モードにより、アクティブなバリアントを選択する方法が決定されます。バリアントのアクティベーションのタイミングによって、選択をアクティブにするタイミングが決まります。さらに、生成されたコードに、アクティブな選択のみを含めるか、またはアクティブな選択と非アクティブな選択の両方を含めるかを決定します。
Variant Subsystem ブロックには、バリアント選択肢として、Subsystem ブロック、Model ブロック、または Subsystem Reference ブロックの組み合わせを含めることができます。Model ブロックのみを選択肢として持つ Variant Subsystem ブロックは、Variant Model ブロックと呼ばれます。詳細については、Variant Subsystem を使用した個別の階層でのバリエーションの実装を参照してください。追加や削除ができるのは外部ファイルからのみで、ブロック内ではできない、Model または Subsystem Reference ブロックを選択肢として持つ Variant Subsystem ブロックは、Variant Assembly Subsystem ブロックと呼ばれます。
バリアント選択肢以外に、Inport、制御端子 (Enable、Trigger、Reset、および Function-Call Subsystem)、Outport、または Connection Port (Simscape) ブロックを Variant Subsystem ブロック内に含めることができます。Variant Subsystem ブロック内のブロック間の接続は描画されません。ソフトウェアは、モデルのコンパイル中に、アクティブなバリアントを Variant Subsystem の Inport ブロックと Outport ブロックに自動的に接続します。バリアント選択肢を表すブロックには、親の Variant Subsystem ブロックの入力端子および出力端子とは異なる数の入力端子および出力端子を含めることができます。詳細については、Variant Subsystem 内のバリアント選択肢の入力端子と出力端子のマッピングを参照してください。
サブシステム ファイルにバリアント選択肢が保存されている Variant Subsystem ブロックを含むモデルを読み込むと、既定では、モデルの読み込み時間を最適化するためにアクティブな選択肢のみが読み込まれます。ただし、find_system、get_param、または set_param 関数を使用してプログラムでモデルを初期化した場合、非アクティブな選択肢が読み込まれることがあります。
Variant Subsystem ブロックを使用すると、次のことが可能です。
バリアント選択肢として Subsystem、Model、および Subsystem Reference ブロックを混在させる。
類似したインターフェイスを持たないモデル コンポーネントを作成する。Variant Subsystem 内で、複数のバリアント選択肢に対して異なる数の入力端子と出力端子を含めることができます。ただし、Variant Subsystem 内のバリアント選択肢の入力端子と出力端子のマッピングに記載されている条件を満たさなければなりません。
Variant Subsystem ブロックが 1 つのレイヤーにあり、バリアント選択肢が別のレイヤーにある階層的なブロック線図を作成する。
機能的に関連したブロックを 1 つに集約する。
モデルの複雑度を軽減する。
モデルのコンパイル中に、選択したバリアントのアクティベーションのタイミングに応じて、モデル全体で非アクティブなブロックをソフトウェアで削除する。
ブロック アイコンのバリアント バッジの色とアイコンは、そのブロックに設定されている [バリアントのアクティベーションのタイミング] パラメーター、[バリアント制御モード] パラメーター、および [Variant Subsystem の外部に条件を伝播する] パラメーターの値に基づいて変化します。詳細については、バリアントのバッジを参照してください。
ブロックを開く
Variant Subsystem ブロックは Simulink® インターフェイスまたはプログラムから開くことができます。これらの方法では、要件に応じて、アクティブなバリアント選択肢または Variant Subsystem ブロックのバリアント レイヤー全体にアクセスできます。
Variant Subsystem ブロックを開くには、Simulink インターフェイスで次のいずれかの操作を使用します。
| キーボードとマウスの操作 | 結果 |
|---|---|
| ダブルクリック | ブロック内のアクティブなバリアント選択肢が新しいタブで開く メモ バリアント選択肢が Model ブロックであり、それが参照するモデルが読み込まれていない場合は、ブロックをダブルクリックすると、アクティブなバリアント選択肢の基盤となる層が開く代わりに、バリアント選択肢を含むバリアント レイヤーが開きます。
|
| Ctrl キーを押しながらダブルクリック | ブロックが新しいタブで開き、バリアント レイヤーが表示される |
| Shift キーを押しながらダブルクリック | ブロックが新しいウィンドウで開き、バリアント レイヤーが表示される |
| 右クリックして [開く]、[新しいタブで開く] を選択 | ブロックが現在のウィンドウで開き、バリアント レイヤーが表示される |
| 右クリックして [開く]、[新しいウィンドウで開く] を選択 | ブロックが新しいウィンドウで開き、バリアント レイヤーが表示される |
| バリアントのバッジを右クリックして [開く]、[(active variant)] を選択 | アクティブなバリアント選択肢が新しいタブで開く |
バリアントのバッジを右クリックして [開く]、[バリアント制御 (variant choice name)] を選択。variant control は "variant choice name" で指定されるバリアント選択肢に対するバリアント制御の [式]、[ラベル]、[(sim)]、または [(codegen)]。 | 選択したバリアント選択肢が新しいタブで開く |
Variant Subsystem ブロックを開くには、次のいずれかのコマンドを使用します。ここで、variantSubsystemBlockName はブロックの名前です。
open_system("コマンド — Variant Subsystem ブロックを開き、そのバリアント レイヤーを表示する。variantSubsystemBlockName")open_system("— Variant Subsystem ブロック内のアクティブなバリアント選択肢を開く。variantSubsystemBlockName","ActiveChoice")
新しいタブやウィンドウで開くなど、open_system コマンドを使用して Variant Subsystem ブロックを開くための追加オプションの詳細については、open_system を参照してください。
例
端子
シミュレーション中、ソフトウェアは Variant Subsystem ブロック内の非アクティブな端子を無効にします。
入力
出力
Variant Subsystem 内のバリアント選択肢の入力端子と出力端子のマッピング
Variant Subsystem ブロックでは、Subsystem、Model、または Subsystem Reference ブロックの組み合わせをバリアント選択肢として使用できます。Variant Subsystem ブロックが上流のモデル コンポーネントから受信する入力は、バリアント選択肢の入力端子と出力端子にマッピングされます。
バリアント選択肢を表すブロックには、親の Variant Subsystem ブロックの入力端子および出力端子とは異なる数の入力端子および出力端子を含めることができます。ただし、以下の条件を満たさなければなりません。
バリアント選択肢は、Variant Subsystem コンテナー ブロックと同じ入力端子のセットをもつか、コンテナー ブロックの端子のサブセットでなければなりません。
バリアント選択肢は、Variant Subsystem コンテナー ブロックと同じ出力端子のセットをもつか、コンテナー ブロックの端子のサブセットでなければなりません。
Variant Subsystem コンテナー ブロックに制御端子が含まれている場合:
すべてのバリアント選択肢における制御端子ブロックのタイプは、Variant Subsystem ブロックと同じでなければなりません。たとえば、Enabled Subsystem ブロックと Function-Call Subsystem ブロックを Variant Subsystem ブロック内の選択肢として使用することはできません。
Variant Subsystem ブロックの制御端子とそのバリアント選択肢の対応する制御端子は、同じ名前でなければなりません。たとえば、Variant Subsystem ブロックの制御端子の名前が
fcnである場合、そのバリアント選択肢すべての対応する制御端子の名前もfcnでなければなりません。







