バリアント条件の伝播の制御
バリアント条件の伝播中、Simulink® は条件をブロックに自動的に割り当てます。ブロックの条件性は、バリアント条件の有無および入力の動作に依存します。ブロックは、1 つ以上の無条件の入力に接続されている場合、無条件とみなされます。ただし、Scope ブロックや Terminator ブロックなどの特定のブロックが存在すると、バリアント条件の伝播および接続されているブロックの条件性に影響することがあります。
slexVariantStopCondProp
モデルについて考えます。
Simulink で [シミュレーション]、[実行] をクリックしてバリアント条件の伝播を表示し、伝播されたバリアント条件を確認します。
Variant Source1
ブロックにはバリアント条件A == 1
があります。この条件は、接続されているブロックに対して前後に伝播します。バリアント条件は、接続されているブロックの動作に影響します。
Sine Wave1
ブロックは、バリアント条件の影響を受けない Scope ブロックに接続されています。Scope ブロックは、アクティブなバリアント選択肢に関係なく、Sine Wave1
から受け取った信号を常に表示します。このため、Sine Wave1
ブロックは無条件になります。Scope ブロックを削除した場合にのみ、バリアント条件はSine Wave1
ブロックに伝播し、ブロックは条件付きになります。
Scope ブロックを Terminator ブロックに置き換えた場合、
Sine Wave1
ブロックは無条件のままです。Terminator ブロックは条件付きロジックなしで信号フローを終了するため、Sine Wave1
ブロックの条件性に影響しません。
Sum ブロックの入力は、
Gain5
(条件付き) ブロックとSine Wave2
(無条件) ブロックに接続されています。Sine Wave2
ブロックは無条件であるため、その出力は常に Sum ブロックで利用可能です。したがって、Sum ブロックは、Sine Wave2
ブロックからの無条件の入力を使用して総和を求めることができるため、無条件とみなされます。
上流および下流へのバリアント条件の伝播の停止
Variant Source2
ブロックと Variant Source3
ブロックに接続されたモデルのセクションについて考えます。モデルをシミュレートするとき、Variant Source2
ブロックおよび Variant Source3
ブロックのバリアント条件は上流および下流に伝播します。
Gain6
ブロックと Gain7
ブロックの間の Stop on both sides
ブロックは、バリアント条件が上流または下流に伝播することを防ぎます。Stop on both sides
ブロックをダブルクリックして、そのコンポーネントを表示します。
Stop on both sides
ブロックは、Terminator ブロックを使用して Subsystem ブロックの上流にバリアント条件が伝播しないようにします。Subsystem ブロックの下流にバリアント条件が伝播しないようにするために、入力端子のうちの 1 つが、無条件である Ground ブロックに接続されています。したがって、この配置によって上流および下流にバリアント条件が伝播しなくなります。同様に、モデルの上流または下流へのバリアント条件の伝播を選択的に停止することもできます。たとえば、Terminator ブロックを削除すると、バリアント条件は上流に伝播しますが、下流への伝播は停止します。
下流へのバリアント条件の伝播を停止する
ここでは、Subsystem ブロックの 1 つの入力端子が無条件です。これは、無条件の Ground ブロックから入力を受け取っているからです。そのため、Subsystem ブロックは無条件になり、バリアント条件は下流に伝播されなくなります。
詳細
Propagate Variant Conditions to Define Variant Regions with Variant Blocks