Main Content

バーチャル サブシステムおよび非バーチャル サブシステムのバリアント領域を定義するためのバリアント条件の伝播

Subsystem ブロックは、[ブロック パラメーター] ダイアログ ボックスで行った選択に応じて、バーチャル (グループまたは非グループ) または非バーチャル (Atomic) サブシステムのいずれかになります。非バーチャル サブシステムではなく、バーチャル サブシステムを使用すると、モデルにグラフィカルな階層が得られます。これは、モデルの実行に影響しません。非バーチャル サブシステムはモデル内の単一ユニットとして実行されます。詳細については、Subsystemを参照してください。

この例では、Variant Source ブロックから Subsystem ブロックへのバリアント条件の伝播について説明します。Simulink® は、これらのタイプのサブシステムに対して異なる方法でバリアント条件を伝播します。

モデルの確認

モデル slexVariantCondPropToSubsystems を開きます。

モデルには、Subsystem1Subsystem2Atomic Subsystem の 3 つのサブシステムが含まれています。Subsystem1 はグループ化されたバーチャル サブシステム、Subsystem2 はグループ化されていないバーチャル サブシステム、Atomic Subsystem は非バーチャル サブシステムです。

このモデルをシミュレートし、Variant Source ブロックから接続先ブロックに伝播されるバリアント条件を確認します。

グループ化されたサブシステム ブロックを条件付きで実行するためのバリアント条件の伝播

グループ化されたサブシステムは方程式系を表しています。グループ化されたサブシステムには連続した境界ラインがあります。バリアント条件は、グループ化されたサブシステム内では伝播しません。代わりに、境界から出ることはありません。ただし、そのサブシステム内のすべてのブロックは、グループ化されたサブシステムからバリアント条件を継承します。[ブロック パラメーター] ダイアログ ボックスの [バリアント条件の伝播時にはグループとして処理] チェック ボックスをオンにすると、Subsystem ブロックはグループ化されたサブシステムになります。

この例では、Variant Source2 ブロックには、Subsystem1 に伝播するバリアント条件 V == 1 があります。Subsystem1 はグループ化されたバーチャル サブシステムであるため、バリアント条件は境界から出ず、サブシステム内のブロックに適用されます。Subsystem1 がアクティブな場合、Subsystem1 内のブロックもアクティブになります。Subsystem1 が非アクティブな場合、Subsystem1 内のブロックも非アクティブになるため、Subsystem1 は条件付きになります。

グループ化されていないサブシステム ブロック内のブロックを条件付きで実行するためのバリアント条件の伝播

グループ化されていないサブシステムは方程式系を表しません。その中のブロックにはグループ化されていないセマンティクスがあります。グループ化されていないサブシステムの境界ラインは点線で、バリアント条件はサブシステムに伝播されます。[ブロック パラメーター] ダイアログ ボックスの [バリアント条件の伝播時にはグループとして処理] チェック ボックスをオフにすると、Subsystem ブロックはグループ化されていないサブシステムになります。

この例では、Variant Source2 ブロックには、Subsystem2 に伝播するバリアント条件 V == 1 があります。Subsystem2 はグループ化されていないサブシステムであるため、バリアント条件はサブシステム内のブロックに伝播します。

Subsystem2 アイコン上の点線は、Simulink のコンパイル中はサブシステムがフラットになっていて、したがってこの内部にあるブロックのバリアント条件を確認できることを示します。無条件ブロック To Workspace1 に起因して、伝播は停止し、条件 V == 1Out1 端子のみに設定されます。

To Workspace1 ブロックは、バリアント条件の伝播の重要な概念を示しています。すなわち、信号は、明示的に設定されている場合、またはすべてのパスがバリアントであることが証明できる場合にのみバリアントになります。ここでは、To Workspace1 ブロックの存在が原因で、Subsystem2 内のすべてのパスがバリアントであることが証明できないため、Subsystem2 は無条件です。

Atomic Subsystem ブロックを条件付きで実行するためのバリアント条件の伝播

非バーチャル (Atomic) サブシステムは常に方程式系を表します。非バーチャル サブシステムは常に単一のエンティティのように動作し、その内容はサブシステムに割り当てられているバリアント条件が満たされた場合にのみ実行されます。非バーチャル サブシステムには連続する実線の境界ラインがあります。バリアント条件は、グループ化されたサブシステム ブロックと同様に、グループ化されたサブシステム ブロックとして伝播します。[ブロック パラメーター] ダイアログ ボックスで [Atomic サブシステムとして扱う] チェック ボックスをオンにすると、Subsystem ブロックは非バーチャル サブシステムになります。

この例では、Variant Source3 ブロックには、Atomic Subsystem に伝播するバリアント条件 V == 1 があります。Atomic Subsystem は非バーチャル サブシステムであるため、バリアント条件は Atomic Subsystem と、サブシステム内のすべてのブロックに適用されます。グループ化されたバーチャル サブシステム Subsystem1 と同様に、Atomic Subsystem は条件付きです。

メモ

条件付きサブシステムは非バーチャル サブシステムであるため、条件付きサブシステムのバリアント条件は Atomic サブシステムと同様に伝播します。詳細については、Propagate Variant Conditions to Control Execution of Conditional Subsystemsを参照してください。

サブシステムの正味のバリアント条件

バリアント条件がサブシステム内の端子で発生する場合、Subsystem ブロックは出力端子からバリアント条件を伝播できます。"正味のバリアント条件" は、ローカル バリアント条件とその先行バリアント条件の組み合わせです。slex_netvariant モデルでは、Variant SourceVariant Source1 は、バリアント条件 V == 1W == 1 をそれぞれもつ 2 つの単入力、単出力の Variant Source ブロックです。このモデルをシミュレートすると、Variant Source1 ブロックおよび Subsystem ブロック内の他のブロックは、Variant Source1 ブロックから伝播されたローカル バリアント条件 W == 1 を受信します。先行条件 V == 1 は、Variant Source ブロックから Subsystem ブロックに伝播されます。そのため、Variant Source1 ブロックおよび Subsystem ブロック内の他のブロックの正味バリアント条件は V == 1 && W == 1 となります。

参考

Propagate Variant Conditions to Define Variant Regions with Variant Blocks