Main Content

バスを使用したサブシステム インターフェイスとモデル インターフェイスの簡略化

バスを使用すると、複数の信号またはメッセージを 1 つの端子に関連付けることで、サブシステムおよびモデルのインターフェイスを簡略化できます。ブロック線図における線の複雑さと煩雑さが低減され、インターフェイスの段階的な変更が容易になり、使用ポイントに近い要素にアクセスできるようになります。

たとえば、次のモデルには、各サブシステム インターフェイスに複数の端子があるサブシステムが含まれています。

Each subsystem has multiple input and output ports.

これと等価な次のモデルでは、バスを使用して各サブシステム インターフェイスの端子を 1 つにしています。

Each subsystem has one input port and one output port.

インターフェイスのバスでは、入力用の Inport ブロックおよび Bus Selector ブロックと出力用の Outport ブロックおよび Bus Creator ブロックの代わりに、In Bus Element ブロックと Out Bus Element ブロックを使用します。In Bus Element ブロックと Out Bus Element ブロックはマルチレート バーチャル バスをサポートしますが、Inport ブロックと Outport ブロックとは異なり、モデル インターフェイスの Simulink.Bus オブジェクトは必要ありません。そのため、バスのインターフェイスが簡潔になる効果もあります。

たとえば、このモデルは、InportBus SelectorBus Creator および Outport ブロックを使用します。

Bus Selector and Bus Creator blocks modify the input bus.

この等価モデルは In Bus Element ブロックと Out Bus Element ブロックを使用します。

In Bus Element and Out Bus Element blocks make the block diagram easier to parse.

更新するインターフェイスでは、ラインおよびブロックを競合の原因になる可能性がある既定以外の仕様にすることはできません。たとえば、Bus Creator ブロックと Outport ブロックの間のラインに信号のログ用に名前やマークを付けてはなりません。同様に、出力端子には Simulink.Bus オブジェクト データ型を指定できますが、TopBus1.NestedBus1 などの出力端子の要素に既定以外のデータ型を指定してはなりません。

以下の例では、In Bus Element ブロックと Out Bus Element ブロックを使用するようにインターフェイスを更新する方法を示します。このモデル例はシンプルですが、バスは、多くの要素を結合する場合に最も役立ちます。

複数のサブシステム端子を 1 つの端子に結合

この例では、複数の端子とそれらの接続された信号を 1 つの端子とバスに変換することで、サブシステムのインターフェイスを簡略化する 3 つの方法について説明します。この自動変換はモデルのインターフェイスではサポートされません。

複数の入力端子と出力端子をもつ 2 つのサブシステムを含むモデル例を開きます。

2 つのサブシステム間の信号線を囲む選択ボックスをドラッグします。表示された操作バーから [バスの作成] をクリックします。

Simulink は、変換元のサブシステムと変換先のサブシステムの Inport ブロックと Outport ブロックを In Bus Element ブロックと Out Bus Element ブロックに置き換えます。

ソース ブロックと最初のサブシステム間の信号線を囲む選択ボックスをドラッグします。表示された操作バーから [バスの作成] をクリックします。

Simulink は、最初のサブシステムの前に Bus Creator ブロックを追加し、最初のサブシステム内の Inport ブロックを In Bus Element ブロックに置き換えます。

2 番目のサブシステムと Scope ブロック間の信号線を囲む選択ボックスをドラッグします。表示された操作バーから [バスの作成] をクリックします。

Simulink は、2 番目のサブシステム内の Outport ブロックを Out Bus Element ブロックに置き換え、Bus Selector ブロックを 2 番目のサブシステムの前に追加します。

結果のモデルは、サブシステム インターフェイスでバーチャル バスを使用します。

サブシステムおよびモデルのバス インターフェイスの簡略化

この例では、Inport ブロック、Bus Selector ブロック、Bus Creator ブロック、および Outport ブロックを使用するサブシステムとモデルのインターフェイスを In Bus Element ブロックと Out Bus Element ブロックを使用するように変換する方法を示します。

Bus Selector ブロックと Bus Creator ブロックを使用して入力バス階層を変更するサブシステムを含むモデル例を開きます。サブシステムは、入力と出力に Inport ブロックと Outport ブロックを使用します。

モデルをコンパイルしてライン スタイルを更新します。このライン スタイルは、バスを視覚的に識別するのに使用できます。Simulink ツールストリップの [モデル化] タブで、[モデルの更新] または [実行] をクリックします。

サブシステムを開きます。

Inport ブロックと Bus Selector ブロックを In Bus Element ブロックに変換するには、次の手順を実行します。

  1. Inport ブロックに直接接続する Bus Selector ブロックをクリックします。

  2. 省略記号の上で一時停止すると表示される操作バーで、[バス端子] をクリックします。

同様に In Bus Element ブロックと Bus Selector ブロックを変換できます。

Outport ブロックと Bus Creator ブロックを Out Bus Element ブロックに変換するには、次の手順を実行します。

  1. Outport ブロックに分岐せずに直接接続する Bus Creator ブロックをクリックします。

  2. 省略記号の上で一時停止すると表示される操作バーで、[バス端子] をクリックします。

同様に Out Bus Element ブロックと Bus Creator ブロックを変換できます。

結果のモデルによりライン ルーティングが簡略化され、インターフェイスの段階的な変更が容易になり、使用ポイントに近いバス要素へのアクセスが許可されます。

ブロック ラベルをダブルクリックしてそれらを編集して、バスとその要素の名前を変更できます。

同じ入れ子のバスまたはバス端子の要素を容易に特定するには、ブロックの色を指定します。

  1. In Bus Element ブロックまたは Out Bus Element ブロックをダブルクリックして、関連する端子のダイアログ ボックスを開きます。

  2. 要素または一番上のバスを選択します。

  3. [色の設定] ドロップダウン メニューを使用して背景色を指定します。

モデル インターフェイスでのバスの使用

Model ブロックのバス入力は、参照モデルで想定されるバスと一致しなければなりません。

参照モデルへの入力または参照モデルからの出力としてバスを使用する場合、以下の制限があります。

  • 可変サイズの信号要素を含めることができるのは、非バーチャル バスのみ。

  • コード生成では、非バーチャル バスを使用しているとき、または C++ クラス インターフェイスに [既定] スタイルを使用しているときにのみ、参照モデルの C++ クラス インターフェイスの [I/O 引数 step メソッド] スタイルを設定できる。

  • コード生成で、参照モデルに関数プロトタイプの制御を構成できるのは、非バーチャル バスを使用しているときのみ。

参考

|

関連するトピック