Main Content

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 Source1Variant Source2 および 1 つの Variant Sink ブロックを含む slexVariantSourceAndSink モデルについて検討します。Variant Source ブロックと Variant Sink ブロックの入力端子と出力端子のバリアント条件によって、それらに接続されているブロックのアクティベーションとアクティベーション停止が決定されます。VW はバリアント制御変数で、モデルの "PostLoadFcn" コールバックで定義されています。

open_system("slexVariantSourceAndSink");

モデルをシミュレートすると、バリアント条件は次のように伝播されます。

  • Variant Source1 で、W == 1true に評価されると Sine3 ブロックがアクティブになり、V == 4true に評価されると Sine4 ブロックがアクティブになります。

  • Variant Source2 で、V == 1true に評価されると Sine1 ブロックがアクティブになり、V == 2 のときは Add1 ブロックがアクティブになります。

  • Variant Source1 ブロックがアクティブになるには、Add1 ブロックがアクティブでなければなりません。これはさらに Sine3 ブロックと Sine4 ブロックに伝播し、V == 2W == 1true に評価されると Sine3 ブロックがアクティブになり、V == 2W == 2true に評価されると Sine4 ブロックがアクティブになります。

  • Gain3 ブロックは、V == 1 または V == 2true に評価されるとアクティブになります。バリアント条件はさらに Scope1Out1 に伝播されます。

  • Variant Sink ブロックの出力端子に接続されたブロックは W == 1 (Gain5) または W == 2 (SineSubtractTerminator) のときにアクティブになります。

  • Sum ブロックはバリアント条件の伝播の 2 つの重要な概念を示しています。信号は、明示的にマークされた場合またはすべてのパスがバリアントであると証明できる場合にのみバリアントです。たとえば、Sine6Sum、および Out2 の各ブロックは無条件です。ブロックを条件付きとしてマークするには、単入力、単出力の Variant Source ブロックを Out2 の前または Sine6 の後に配置します。非アクティブな信号の読み取りはグラウンドの読み取りに相当します。たとえば、W == 1false に評価されると、Sum ブロックへの最下部の入力は非アクティブであり、Out2 = Sine6 + ground になります。

Variant Sink ブロックの [ゼロ アクティブ バリアント制御を許可]on に設定すると、Simulink® はバリアント条件をバリアント領域の無条件ブロック Sine5 および Gain4 にも伝播します。Sine5Gain4 のバリアント条件は、Variant Sink ブロックのバリアント条件 W == 1W == 2 の論理 OR です。W == 1W == 2false に評価されると、条件 W == 1 OR W == 2false に評価されるため、Sine5Gain4 は非アクティブになります。これにより、Sine5Gain4 がシミュレーションから削除され、Variant Sink ブロックが非アクティブなときに未使用のままになることがなくなります。

関連するトピック