Main Content

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

サブシステムへのバリアント条件の伝播

Subsystem はバーチャルまたは Atomic のどちらでも構いません。Simulink はこうした Subsystem に対して、異なる方法でバリアント条件を伝播します。この例では、インライン バリアントから Subsystem ブロックへのバリアント条件の伝播について説明します。次に示したモデルについて考えます。

[シミュレーション][実行] をクリックしてこのモデルをシミュレートし、Variant Source ブロックからそのブロックに接続されたブロックに伝播されるバリアント条件を確認します。

バリアント条件の注釈を使用すると、伝播された条件を可視化できます。バリアント条件の注釈を表示できるようにするには、[情報表示][ブロック][バリアント条件の凡例] をクリックします。

モデルには 3 つの Variant Source ブロック (それぞれ Variant Source1Variant Source2Variant Source3) が含まれています。

Variant Source1 には入力端子の条件 V = 1V = 2 が含まれています。バリアント条件 V = 1GainA1 に伝播しますが、V = 2Sine2 に伝播します。Sine1 ブロックはブロックに接続されているため、伝播されたバリアント条件を取得せず、バリアント条件に関係なく常に消費されます。To Workspace block1 が存在しないか、モデルのシミュレーション前にコメント アウトされた場合、バリアント条件 V = 1Sine1 に伝播します。

Variant Source2 は、同じコンテンツ (To Workspace ブロックと Output ブロックに接続された Sine Wave ブロック) をもつバーチャル サブシステム Subsystem1Subsystem2 に接続されています。Subsystem1 はグループ化されたバーチャル サブシステムですが ([バリアント条件の伝播時にはグループとして処理] がオン)、Subsystem2 はグループ化されていないバーチャル サブシステムです ([バリアント条件の伝播時にはグループとして処理] がオフ)。

ブロック パラメーター ダイアログ ボックスの [バリアント条件の伝播時にはグループとして処理] チェック ボックスをオンにすると、サブシステム ブロックはグループ化されたバーチャル サブシステムになります。[バリアント条件の伝播時にはグループとして処理] チェック ボックスがオフの場合は、サブシステムはグループ化されていないバーチャル サブシステムになります。

グループ化されたサブシステムは方程式系を表しているため、伝播された条件はこのシステム内のブロックにも適用されます。グループ化されたサブシステムには連続した境界ラインがあります。グループ化されていないサブシステムは方程式系を表しておらず、そのサブシステム内のブロックにはグループ化されていないセマンティクスがあります。グループ化されていないサブシステムの境界ラインは点線で、条件はサブシステムに伝播されます。

バリアント条件 V = 1Subsystem1 に伝播します。また、Subsystem1 がグループ化されたバーチャル サブシステムであるため (方程式系を表す)、さらにそのサブシステム内のブロックにも伝播します。Subsystem1 はシステムであるため、条件はシステム内のブロックにも適用されます。

グループ化されていないバーチャル サブシステムである (方程式系を表さない) Subsystem2 も、伝播された条件として V = 1 を受け取ります。また、伝播されたバリアント条件 V = 1 は、サブシステムが拡張されたように Subsystem 2 に伝播します。Subsystem 2 のアイコン上の点線は、Simulink のコンパイル中はフラットになっていて、したがってこの内部にあるブロックのバリアント条件を確認できることを示します。

Variant Source3 は、伝播されたバリアント条件として V = 1 をもつ非バーチャル (Atomic) サブシステムに接続されています。非バーチャル (Atomic) サブシステムは常に方程式系を表します。Atomic サブシステムには連続する実線の境界ラインがあります。バリアント条件は非バーチャル サブシステム内では伝播しません。代わりに、境界から出ることはありません。ただし、そのサブシステム内のすべてのブロックはサブシステムと同じバリアント条件を取得します。非バーチャル サブシステムはエンティティとして動作します。

既定では、バーチャル サブシステムは、サブシステム内に含まれるすべてのブロックが同じバリアント条件をもつ、ブロックのグループ化されたコレクションのように動作します。これは、[バリアント条件の伝播時にはグループとして処理] パラメーターが選択されている場合に当てはまります。[バリアント条件の伝播時にはグループとして処理] パラメーターがオフの場合、バーチャル サブシステムは、ブロックのグループ化されていないコレクションのように動作します。この例では、ブロックが条件付きになることは決してないため、Subsystem2 (グループ化されていない) の動作が予想外であることがあります。サブシステムに割り当てられている条件が満たされると、非バーチャル サブシステムは、エンティティおよびコンテンツのみが実行されるように常に動作します。非バーチャル サブシステム、Model ブロックおよびグループ化されたバーチャル サブシステムは同様に動作します。

[バリアント条件の伝播時にはグループとして処理] を使用するバーチャル サブシステム

[バリアント条件の伝播時にはグループとして処理] オプションがオンになっている場合、Variant Source ブロック Variant Source5 およびバーチャル サブシステム Subsystem4 を使用する例について考えます。Variant Source5 には条件 V = 1 が設定されています。Subsystem4 には To Workspace1 ブロックと Outport ブロックに接続されている Sine Wave があります。

V = 1Variant Source5 から伝播されているため、Subsystem4 は条件 V = 1 を取得します。Subsystem4 内部のブロックは、間接的に Subsystem4 から条件を継承します。入力端子/出力端子が条件付きであるため、Subsystem4 は条件付きです。Subsystem4 を無条件にするには、新しい出力端子を追加するか [バリアント条件の伝播時にはグループとして処理] オプションをオフにします。

[バリアント条件の伝播時にはグループとして処理] オプションがオフになっている場合、Variant Source ブロック Variant Source4 およびバーチャル サブシステム Subsystem3 を使用する例について考えます。Variant Source4 には条件 V = 1 が設定されています。Subsystem3 には To Workspace ブロックと Outport ブロックに接続されている Sine Wave があります。

V = 1Variant Source4 から伝播されているため、Subsystem3 は条件 V = 1 を取得します。ただし、無条件ブロック To Workspace1 に起因して、伝播は停止し、条件 V = 1Out1 端子のみに設定されます。これで、無条件ブロックが内部に存在するため、Subsystem3 も無条件です。

詳細