Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

Variant Source ブロックと Variant Sink ブロック

ブロックの接続状態に基づき Variant Source ブロックと Variant Sink ブロックにバリアントの選択の領域を定義します。バリアントの選択の領域はブロック線図の更新時に ([シミュレーション][準備][モデルの更新]) Simulink によって計算されます。

バリアントの選択肢の領域を計算するプロセスは variant condition propagation と呼ばれます。Variant Source ブロックは信号のソースに変化を提供し、Variant Sink ブロックは信号の送信先 (シンク) に変化を提供します。

2 つの Variant Source ブロック (Variant Source1Variant Source2) および Variant Sink ブロック (Variant Sink) を含むモデルについて検討します。

Variant Source ブロックと Variant Sink ブロックの入力端子と出力端子におけるそれぞれのバリアント条件によって、それらに接続されたブロックのアクティベーションおよびアクティベーション停止が決定されます。注釈とバリアント条件を表示するには、ツールストリップの [デバッグ] タブで、[情報のオーバーレイ][バリアント条件] をクリックします。

バリアント条件とブロックのアクティベーション状態を解析してみましょう。

  • Variant Source1W==1 のとき Sine3 ブロックはアクティブであり、V==4 のとき Sine4 ブロックはアクティブです。

  • Variant Source2V==1 のとき Sine1 ブロックはアクティブであり、V==2 のとき Add1 ブロックはアクティブです。

  • Add1 ブロックでは、条件の伝播により継続して V==2 の場合にのみ Variant Source1 ブロックをアクティブにします。これにより Sine3 ブロックと Sine4 ブロックにさらに伝播され、Sine3 ブロックが V==2 && W==1Sine4 ブロックが V==2 && W==2 でそれぞれアクティブになります。

  • Gain3 ブロックは V==1 または V==2 のいずれかのときにアクティブになるため、条件は V==2 | | V==1 になります。バリアント条件はさらに Scope1Out1 に伝播されます。

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

  • Sum ブロックはバリアント条件の伝播における 2 つの重要な概念を説明します。信号は明示的にマークされた場合またはすべてのパスがバリアントであると証明された場合にのみバリアントです。Sine6SumOut2 バリアントを作成するには、Single-Input Single-Output Variant Source を Out2 の前 (または Sine6 の後ろ) に配置します。非アクティブな信号の読み取りはグラウンドの読み取りに相当します。W ~= 1 のとき、Sum ブロックへの最下部の入力は非アクティブであり、Out2 = Sine6 + ground になります。

Variant Source と Variant Sink ブロックに対して [バリアントのアクティベーションのタイミング] パラメーターを [code compile] に設定すると、生成されたコードにアクティブおよび非アクティブなコード (#if COND) が含まれます。このパラメーターが選択されない場合、アクティブな選択肢についてのみコードが生成されます。

Variant Source ブロックと Variant Sink ブロックに対して [ゼロ アクティブ バリアント制御を許可] パラメーターを選択すると、アクティブなバリアントがなくてもバリアント モデルのシミュレーションを行うことができます。そのような場合、Simulink は Variant Source と Variant Sink の入力および出力ストリームに接続されたブロックを無効にします。無効にされたブロックはブロック線図の更新やシミュレーションで無視されます。