バーチャル サブシステムおよび非バーチャル サブシステムのバリアント領域を定義するためのバリアント条件の伝播
Subsystem ブロックは、[ブロック パラメーター] ダイアログ ボックスで行った選択に応じて、バーチャル (グループまたは非グループ) または非バーチャル (Atomic) サブシステムのいずれかになります。非バーチャル サブシステムではなく、バーチャル サブシステムを使用すると、モデルにグラフィカルな階層が得られます。これは、モデルの実行に影響しません。非バーチャル サブシステムはモデル内の単一ユニットとして実行されます。詳細については、Subsystemを参照してください。
この例では、Variant Source ブロックから Subsystem ブロックへのバリアント条件の伝播について説明します。Simulink® は、これらのタイプのサブシステムに対して異なる方法でバリアント条件を伝播します。
モデルの確認
モデル slexVariantCondPropToSubsystems
を開きます。
モデルには、Subsystem1
、Subsystem2
、Atomic 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 == 1
が Out1
端子のみに設定されます。
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 Source
と Variant Source1
は、バリアント条件 V == 1
と W == 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