このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
Variant Source ブロックと Variant Sink ブロックを使用した、バリアント領域を定義するためのバリアント条件の伝播
Simulink® は、Variant Source ブロックおよび Variant Sink ブロックから接続されているブロックにバリアント条件を自動的に伝播します。バリアント条件の伝播により、Simulink でシミュレーション中にアクティブなままであるモデルのコンポーネントを決定できるようになります。その後、Simulink は非アクティブな選択肢に関連付けられているモデル コンポーネントを非アクティブにして、アクティブな接続を強調表示します。
ヒント
モデル コンポーネント上のバリアント条件の注釈を使用すると、伝播された条件を可視化できます。注釈を表示するには、[デバッグ] タブで、[情報のオーバーレイ] 、 [バリアント凡例] を選択します。[バリアント凡例] が使用できない場合、[デバッグ] タブで、[情報のオーバーレイ] 、 [バリアント条件]を選択します。詳細については、Visualize Propagated Variant Conditions in Variant Conditions Legendを参照してください。
Variant Source ブロックと Variant Sink ブロック
2 つの Variant Source ブロック Variant Source1
と Variant Source2
および 1 つの Variant Sink ブロックを含む slexVariantSourceAndSink
モデルについて検討します。Variant Source ブロックと Variant Sink ブロックの入力端子と出力端子のバリアント条件によって、それらに接続されているブロックのアクティベーションとアクティベーション停止が決定されます。V
と W
はバリアント制御変数で、モデルの "PostLoadFcn" コールバックで定義されています。
open_system("slexVariantSourceAndSink");
モデルをシミュレートすると、バリアント条件は次のように伝播されます。
Variant Source1
で、W == 1
がtrue
に評価されるとSine3
ブロックがアクティブになり、V == 4
がtrue
に評価されるとSine4
ブロックがアクティブになります。Variant Source2
で、V == 1
がtrue
に評価されるとSine1
ブロックがアクティブになり、V == 2
のときはAdd1
ブロックがアクティブになります。Variant Source1
ブロックがアクティブになるには、Add1
ブロックがアクティブでなければなりません。これはさらにSine3
ブロックとSine4
ブロックに伝播し、V == 2
とW == 1
がtrue
に評価されるとSine3
ブロックがアクティブになり、V == 2
とW == 2
がtrue
に評価されるとSine4
ブロックがアクティブになります。Gain3
ブロックは、V == 1
またはV == 2
がtrue
に評価されるとアクティブになります。バリアント条件はさらにScope1
とOut1
に伝播されます。Variant Sink
ブロックの出力端子に接続されたブロックはW == 1
(Gain5
) またはW == 2
(Sine
、Subtract
、Terminator
) のときにアクティブになります。Sum
ブロックはバリアント条件の伝播の 2 つの重要な概念を示しています。信号は、明示的にマークされた場合またはすべてのパスがバリアントであると証明できる場合にのみバリアントです。たとえば、Sine6
、Sum
、およびOut2
の各ブロックは無条件です。ブロックを条件付きとしてマークするには、単入力、単出力の Variant Source ブロックをOut2
の前またはSine6
の後に配置します。非アクティブな信号の読み取りはグラウンドの読み取りに相当します。たとえば、W == 1
がfalse
に評価されると、Sum
ブロックへの最下部の入力は非アクティブであり、Out2 = Sine6 + ground
になります。
Variant Sink ブロックの [ゼロ アクティブ バリアント制御を許可] を on
に設定すると、Simulink® はバリアント条件をバリアント領域の無条件ブロック Sine5
および Gain4
にも伝播します。Sine5
と Gain4
のバリアント条件は、Variant Sink ブロックのバリアント条件 W == 1
と W == 2
の論理 OR です。W == 1
と W == 2
が false
に評価されると、条件 W == 1 OR W == 2
は false
に評価されるため、Sine5
と Gain4
は非アクティブになります。これにより、Sine5
と Gain4
がシミュレーションから削除され、Variant Sink ブロックが非アクティブなときに未使用のままになることがなくなります。