Main Content

バス内のバリアント要素

この例では、異なるバリアント条件をもつ要素のあるバスの作成方法を示します。

モデルの確認

slexVariantBus モデルを開きます。

open_system("slexVariantBus")

このモデルは 2 つの信号 ab から成り、これらがマージされてバスが形成されます。これらの信号には、それぞれ V == 1W == 1 というバリアント条件があります。シミュレーション中、Bus Selector は、異なるバリアント条件 V == 1 および W == 1 をもつ 2 つの信号を受け取ります。

sim("slexVariantBus")
ans = 

  Simulink.SimulationOutput:

     SimulationMetadata: [1x1 Simulink.SimulationMetadata] 
           ErrorMessage: [0x0 char] 

Bus Selector を使用してバスから個々の信号を選択すると、対応するバリアント条件も選択されます。バーチャル バスまたは非バーチャル バスを通過する際には、バリアント条件の伝播の動作に差異はありません。バスの詳細については、Simulink バス機能の確認を参照してください。

バリアント バスのコード生成

バーチャル バスは生成されたコードで構造体またはその他のまとまった単位としては示されません。バスを操作するアルゴリズムのコピーがバス要素ごとに別々に存在します。一方、生成されたコードでは非バーチャル バスは構造体で表され、バスを使用するアルゴリズムのコピーが 1 つのみ存在します。モデルとコード間の対応を追跡する際に、生成されたコードの構造体を使用すると便利です。詳細については、Generate Code for Variant Elements Within Buses (Simulink Coder)を参照してください。

Model ブロックを含むバリアント バス

Model ブロックを含むこのモデルについて検討します。

このモデルには異なるバリアント条件 V == 1 および V == 2 をもつ 2 つの信号 ab があります。Model ブロックは、2 つの異なるバリアント条件 (V == 1V == 2) をもつ 2 つの信号を Bus Selector に送ります。シミュレーション中、Model ブロックは参照モデル mVarBus_bot から受け取ったバリアント条件を出力端子から伝播します。各出力端子のバリアント条件は、mVarBus_bot モデルのバリアント選択肢からのバリアント条件 V == 1V == 2 の論理 OR です。Model ブロックを使用したバリアント条件の伝播の詳細については、Propagate Variant Conditions to Enable or Disable Model or Subsystem References in Hierarchyを参照してください。

既知の制限事項

非アクティブな要素を含むバスを受け入れるブロック (Unit Delay など) の状態ログはサポートされていません。

参考

Propagate Variant Conditions to Define Variant Regions with Variant Blocks