このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
Variant Source ブロックと Variant Sink ブロック
ブロックの接続状態に基づき Variant Source ブロックと Variant Sink ブロックにバリアントの選択の領域を定義します。バリアントの選択の領域はブロック線図の更新時に ([シミュレーション]、[準備]、[モデルの更新]) Simulink によって計算されます。
バリアントの選択肢の領域を計算するプロセスは variant condition propagation
と呼ばれます。Variant Source ブロックは信号のソースに変化を提供し、Variant Sink ブロックは信号の送信先 (シンク) に変化を提供します。
2 つの Variant Source ブロック (Variant Source1
、Variant Source2
) および Variant Sink ブロック (Variant Sink
) を含むモデルについて検討します。
Variant Source ブロックと Variant Sink ブロックの入力端子と出力端子におけるそれぞれのバリアント条件によって、それらに接続されたブロックのアクティベーションおよびアクティベーション停止が決定されます。注釈とバリアント条件を表示するには、ツールストリップの [デバッグ] タブで、[情報のオーバーレイ]、[バリアント条件] をクリックします。
バリアント条件とブロックのアクティベーション状態を解析してみましょう。
Variant Source1
でW==1
のときSine3
ブロックはアクティブであり、V==4
のときSine4
ブロックはアクティブです。Variant Source2
でV==1
のとき Sine1 ブロックはアクティブであり、V==2
のときAdd1
ブロックはアクティブです。Add1
ブロックでは、条件の伝播により継続してV==2
の場合にのみVariant Source1
ブロックをアクティブにします。これによりSine3
ブロックとSine4
ブロックにさらに伝播され、Sine3
ブロックがV==2 && W==1
、Sine4
ブロックがV==2 && W==2
でそれぞれアクティブになります。Gain3
ブロックはV==1
またはV==2
のいずれかのときにアクティブになるため、条件はV==2
| |V==1
になります。バリアント条件はさらにScope1
とOut1
に伝播されます。Variant Sink
の出力端子に接続されたブロックはW==1
(Gain5
) またはW==2
(Sine
、Subtract
、Terminator
) のときにアクティブです。Sum
ブロックはバリアント条件の伝播における 2 つの重要な概念を説明します。信号は明示的にマークされた場合またはすべてのパスがバリアントであると証明された場合にのみバリアントです。Sine6
、Sum
、Out2
バリアントを作成するには、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 の入力および出力ストリームに接続されたブロックを無効にします。無効にされたブロックはブロック線図の更新やシミュレーションで無視されます。