Main Content

Bus Creator

入力信号またはメッセージをバスにグループ化する

  • Bus Creator block

ライブラリ:
Simulink / Commonly Used Blocks
Simulink / Signal Routing
HDL Coder / Signal Routing

説明

Bus Creator ブロックは入力信号またはメッセージをバスに結合します。バスには信号およびメッセージの個別の ID が保持されます。既定では、Bus Creator ブロックは、タイ ラップで結束されるワイヤーのバンドルのような "バーチャル バス" を作成します。あるいは、ブロックでは C コードの構造体のような "非バーチャル バス" を作成することもできます。

バスの要素は、一意の名前をもたなければなりません。既定では、バスの各要素は、Bus Creator ブロックに接続された要素の名前を継承します。重複する名前が存在する場合、Bus Creator ブロックによってすべての入力要素名に端子番号が追加されます。要素が名前をもたない場合、Bus Creator ブロックによって signaln の形式で名前が付けられます。ここで、n はその要素に接続された端子番号です。要素のソースを検索するときや、他のブロックに接続する要素を選択するとき、要素を名前で参照できます。要素の命名のガイドラインについては、信号名とラベルを参照してください。

名前で要素をバスから抽出するには、Bus Selector ブロックを使用します。

他のバスを含むバスを作成するには、他のバスを Bus Creator ブロックの入力端子に接続します。

ヒント

サブシステムおよびモデル インターフェイスのバスでは、Outport ブロックをもつ Bus Creator ブロックの代わりに Out Bus Element ブロックを使用します。Out Bus Element ブロックは次のことを行います。

  • ブロック線図における線の複雑さと煩雑さを低減する。

  • インターフェイスに対する段階的な変更を容易にする。

すべて展開する

Bus Creator ブロックを使用してコンポーネント内で信号をバーチャル バスにグループ化できます。

3 つのブロックを含む VirtualBusCreation という名前のモデルを開きます。

Model with three source blocks

複数のブロックの出力を含むバスを作成するには、ブロックをクリックおよびドラッグして選択します。この例では、Chirp Signal ブロックと Sine Wave ブロックを選択します。表示された操作バーで、[バスの作成] をクリックします。

Pointer paused on Create Bus button in action bar

Bus Creator ブロックが追加され、そのブロックに入力が接続されます。Bus Creator ブロックの出力は、バーチャル バスです。

First two source blocks connected to a Bus Creator block

バスの要素を特定しやすくするために、Bus Creator ブロックへの入力にラベルを付けます。Chirp Signal ブロックと Bus Creator ブロックの間のラインをダブルクリックします。次に、「Chirp」と入力します。Sine Wave ブロックと Bus Creator ブロックの間のラインをダブルクリックします。次に、「Sine」と入力します。

2 番目のバスを作成して、それに最初のバスと Step ブロックの出力を含めるには、Bus Creator ブロックと Step ブロックをクリックおよびドラッグして選択します。表示された操作バーで、[バスの作成] をクリックします。Sine 信号と Chirp 信号は入力バスの要素であるため、Sine Wave ブロックと Chirp Signal ブロックを選択したかどうかに関係なく、同じバスが作成されます。

別の Bus Creator ブロックが追加され、そのブロックに入力が接続されます。Bus Creator ブロックの出力は、入れ子にされたバスを含むバーチャル バスです。

First Bus Creator block and third source block connected to another Bus Creator block

バスは任意の深さの入れ子にできます。Bus Creator ブロックへの入力の 1 つがバスである場合、その出力は、少なくとも 1 つの入れ子のバスを含むバス階層です。

新しい Bus Creator ブロックへの入力にラベルを付けます。Step ブロックと Bus Creator ブロックの間のラインをダブルクリックします。次に、「Step」と入力します。Bus Creator ブロック間のラインをダブルクリックします。次に、「NestedBus」と入力します。オプションで、ブロックを配置してモデルの可読性を改善します。

2 番目の Bus Creator ブロックの出力を Scope ブロックに接続し、出力 TopBus にラベルを付けます。バスを視覚的に特定するには、Simulink ツールストリップの [モデル化] タブで、[モデルの更新] または [実行] をクリックしてモデルをコンパイルします。モデルをコンパイルするとライン スタイルが更新されます。

Compiled model with bus line style at output of Bus Creator blocks

Bus Creator ブロックを使用して、非バーチャル バスをコンポーネント内に作成できます。

BusHierarchy という名前のモデルを開いてコンパイルします。このモデルでは Bus Creator ブロックを使用してバーチャル バスの階層を作成します。モデルをコンパイルするには、Simulink ツールストリップの [モデル化] タブで、[モデルの更新] または [実行] をクリックします。モデルをコンパイルするとライン スタイルが更新されます。このライン スタイルは、バスを視覚的に識別するのに使用できます。

mdl = BusHierarchy;
open_system(mdl)
set_param(mdl,SimulationCommand="Update")

TopBus groups NestedBus and Step in a virtual bus. NestedBus groups Chirp and Sine in a virtual bus.

このモデルの作成については、コンポーネント内の信号線のグループ化を参照してください。

このモデルのバーチャル バスは Simulink.Bus オブジェクトで定義されていません。Bus Creator ブロックの出力を非バーチャル バスに変更するには、バスの階層と一致するバス オブジェクトがなければなりません。

TopBus および NestedBus に対応するバス オブジェクトを作成するには、関数Simulink.Bus.createObjectを使用します。MATLAB コマンド ウィンドウで次のコマンドを入力します。

Simulink.Bus.createObject("BusHierarchy","BusHierarchy/Bus Creator1");

この関数は、指定されたブロックの出力バスに対応するバス オブジェクトを作成します。入れ子にされたバスが出力バスに含まれている場合、関数は入れ子にされたバスに対応するバス オブジェクトも作成します。この例では、関数は対応するバス TopBusNestedBus の名前が付いた 2 つのバス オブジェクトを作成します。

バス オブジェクトを表示するには、[型エディター] を開きます。Simulink® ツールストリップの [モデル化] タブの [設計] ギャラリーで、[型エディター] をクリックします。外部データ ソースまたはバスを展開するには、その名前の横にある矢印をクリックします。

Type Editor with bus objects for NestedBus and TopBus

作成する非バーチャル バスに対応するバス オブジェクトができたので、非バーチャル バスを作成します。Simulink エディターで、Bus Creator1 という名前の Bus Creator ブロックをダブルクリックします。[ブロック パラメーター] ダイアログ ボックスで、[出力データ型]Bus: TopBus に設定し、[非バーチャル バスとして出力] チェック ボックスをオンにして [OK] をクリックします。TopBus は非バーチャル バスになりますが、NestedBus はバーチャル バスのままです。ライン スタイルで非バーチャル バスを特定するには、モデルをコンパイルします。

TopBus with the line style that indicates a nonvirtual bus

Bus Creator という名前のブロックをダブルクリックします。[ブロック パラメーター] ダイアログ ボックスで、[出力データ型]Bus: NestedBus に設定し、[非バーチャル バスとして出力] チェック ボックスをオンにして [OK] をクリックします。NestedBus は非バーチャル バスになりました。バスのライン スタイルを更新するには、モデルをコンパイルします。

NestedBus with the line style that indicates a nonvirtual bus

バス オブジェクトを保存しない場合、そのモデルを再度開くときに、バス オブジェクトを再作成しなければなりません。バス オブジェクトを保存する方法の詳細については、バス オブジェクトでのバス プロパティの指定を参照してください。

端子

入力

すべて展開する

入力端子はバスに含める要素を受け入れます。入力端子の数は [入力数] パラメーターによって駆動されます。

Bus Creator ブロックでは、入力要素の次の組み合わせがサポートされます。

  • 信号のみ

  • 信号と信号バス

  • メッセージのみ

  • メッセージとバス

  • バスのみ

対応する Bus Creator ブロックの入力端子で受け入れ可能な可変サイズの信号の上限よりも上限が小さい可変サイズの入力信号を指定できます。Bus Creator ブロックの入力端子で受け入れ可能な可変サイズの信号の上限を構成するには、Simulink.BusElement オブジェクトを使用します。詳細については、Simulink.BusElement を参照してください。可変サイズの入力信号は、対応する Bus Creator ブロックの入力端子で受け入れるように構成されている可変サイズの信号と同じ次元をもつ必要があります。

データ型: single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | string | Boolean | fixed point | enumerated | bus
複素数のサポート: あり

出力

すべて展開する

出力バスは入力要素で構成されています。[非バーチャル バスとして出力] パラメーターは、出力バスがバーチャル バスまたは非バーチャル バスのどちらであるかを指定します。バスの種類の詳細については、合成インターフェイスのガイドラインを参照してください。

データ型: single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | string | Boolean | fixed point | enumerated | bus
複素数のサポート: あり

パラメーター

すべて展開する

Bus Creator ブロック パラメーターを対話形式で編集するには、ブロックをダブルクリックします。

入力要素の数は 2 以上の整数でなければなりません。入力の数を増やすと、ブロックに空の入力端子が追加されます。モデルのシミュレーションを実行する前に、入力要素が各入力端子に接続されていることを確認します。

[入力数] パラメーターを修正した場合は、[更新] をクリックして要素のリストを更新します。

すべての入力端子が既に接続されている場合、Bus Creator ブロックに別の線を接続することで、入力端子を追加できます。

A line is dragged near a Bus Creator block with two connected ports and a third port appears.

端子を対話的に追加すると、[入力の数] パラメーターが更新され、バス内の要素のリストに新しい要素が追加されます。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

2 以上の整数、または要素名のコンマ区切りリストとして入力数を指定します。バス内の要素の名前を指定した場合、入力の数は、指定した要素名の数に一致します。

パラメーター: Inputs
値: '2' (既定値) | integer in quotes | comma-separated list of element names in quotes
データ型: char | string

例: set_param(gcb,'Inputs','3')

例: set_param(gcb,'Inputs','element1,element2,element3')

入力要素リストには、入れ子にされたバスの要素など、ブロックに入るすべての要素が含まれます。要素の横にある矢印は、入力要素がバスであることを示します。矢印をクリックすると、そのバスの内容を表示できます。

ブロックに入る要素のソースを強調表示するには、リスト内の要素を選択して [検索] をクリックします。

ダイアログ ボックスが開いている間に要素名を変更する場合は、[更新] をクリックしてリスト内の名前を更新します。

出力バス内の要素を並べ替えるには、[上] ボタンと [下] ボタンを使用します。[バス内の要素] リスト内の隣接する複数の最上位要素を選択して並べ替えまたは削除を行うことができます。

入力要素を追加または削除するには、それぞれ [追加] または [削除] をクリックします。次に、[適用] または [OK] をクリックして、ブロック アイコンを更新します。モデルのシミュレーションを実行する前に、入力要素が各入力端子に接続されていることを確認します。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

要素名のコンマ区切りリストとしてバス内の要素を指定します。バス内の要素の名前を指定した場合、入力の数は、指定した要素名の数に一致します。

パラメーター: Inputs
値: '2' (既定値) | integer in quotes | comma-separated list of element names in quotes
データ型: char | string

例: set_param(gcb,'Inputs','element1,element2,element3')

表示される入力要素をフィルター処理するには、検索用語を入力します。フィルターは部分的な文字列検索を行います。検索用語は引用符で囲まないでください。

フィルター処理オプションにアクセスするには、[名前でフィルター] ボックスの右にある [フィルター処理オプションを表示する] ボタンをクリックします。

表示される入力要素を正規表現または部分的な検索文字列のいずれかでフィルター処理するには、このパラメーターを選択します。既定では、表示される入力要素のフィルター処理に使用できるのは部分的な検索文字列だけです。

正規表現では、入力要素がパターンと一致するかどうかに基づいてフィルター処理されます。たとえば、[名前でフィルター] ボックスに「t$」と入力すると、要素名が小文字の t で終了するすべての要素 (およびその直接の親) が表示されます。詳細については、正規表現を参照してください。

依存関係

このパラメーターにアクセスするには、[名前でフィルター] ボックスの右にある [フィルター処理オプションを表示する] ボタンをクリックします。

フィルター処理された結果を、ドット表記を使用してバスの階層構造を反映するフラット リストとして表示するには、このパラメーターを選択します。既定では、フィルター処理された結果は階層ツリーで表示されます。

依存関係

このパラメーターにアクセスするには、[名前でフィルター] ボックスの右にある [フィルター処理オプションを表示する] ボタンをクリックします。

出力バスのデータ型を指定します。

[Bus: <object name>] を選択する場合は、<object name>Simulink.Bus オブジェクトの名前と置き換えます。モデルを編集するときは、バス オブジェクトにアクセスできなければなりません。

型エディターを使用して Simulink.Bus オブジェクトを定義するには、[データ型アシスタントを表示] ボタン をクリックし、[モード][バス オブジェクト] に設定してから、[編集] ボタンをクリックします。

[<データ型式>] を選択する場合は、Simulink.Bus オブジェクトに評価する式を指定します。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

パラメーター: OutDataTypeStr
値: 'Inherit: auto' (既定値) | 'Bus: <object name>'

例: set_param(gcb,'OutDataTypeStr','Bus: control')

このパラメーターは将来のリリースで削除されます。厳密なデータ型指定を適用するには、[バス オブジェクトからではなく入力からの名前を使用する] パラメーターを使用してください。

選択した場合、このパラメーターは、入力要素名が [ブロック パラメーター] ダイアログ ボックスにリストされている名前に一致しているかをチェックします。要素名が一致しない場合、エラーが返されます。

依存関係

  • [バス オブジェクトからではなく入力からの名前を使用する] を選択した場合、このパラメーターは無視されます。

  • プログラムによって [入力数] を変更した場合、このパラメーターは [オフ] に戻ります。

選択した入力要素の新しい名前を指定します。名前のガイドラインについては、信号名とラベルを参照してください。

依存関係

このパラメーターを有効にするには、[入力名を上記の名前と一致させる] を選択します。

既定では、Simulink.Bus オブジェクトをデータ型として指定しても、Bus Creator ブロックは入力要素名を出力バス要素名として使用します。

バス要素の名前をバス オブジェクトから継承するには、このパラメーターをクリアします。パラメーターをオフにすると、以下のようになります。

  • 厳密なデータ型指定が適用されます。

  • バス オブジェクトとモデルのそれぞれに、要素名を複数回入力する必要がなくなります。要素名を複数回入力すると、誤って一致しない要素名を入力してしまうことがあります。

  • バス配列においてすべての要素で一貫した要素名を使用するという要件に対応できます。

このパラメーターを選択したままにして厳密な型指定を適用するには、[要素名の不一致] コンフィギュレーション パラメーターを [エラー] に設定します。このコンフィギュレーション パラメーターは、入力要素名がバス オブジェクト内の対応する名前に一致しているかをチェックします。

依存関係

このパラメーターを有効にするには、[出力データ型]Simulink.Bus オブジェクトに設定します。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

パラメーター: InheritFromInputs
値: 'on' (既定値) | 'off'

例: set_param(gcb,'InheritFromInputs','off')

バーチャル バスではなく非バーチャル バスを出力するには、このパラメーターを選択します。

非バーチャル バスのすべての要素は、関連付けられた Simulink.Bus オブジェクトの要素が一部の要素について継承されたサンプル時間を指定する場合でも、同じサンプル時間をもつ必要があります。異なるサンプルレートの要素を含む非バーチャル バスが得られる場合、その演算はエラーになります。他の非バーチャル バス入力要素と異なるサンプル時間をもつ要素またはバスのサンプル時間を変更するには、Rate Transition ブロックを使用します。詳細については、非バーチャル バスのサンプル時間の変更を参照してください。

このブロックが作成するバスの構造体を C 構造体を使用して定義するコードを生成するには、このパラメーターを選択します。

依存関係

このパラメーターを有効にするには、[出力データ型]Simulink.Bus オブジェクトに設定します。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

パラメーター: NonVirtualBus
値: 'off' (既定値) | 'on'

例: set_param(gcb,'NonVirtualBus','on')

ブロックの特性

データ型

Boolean | bus | double | enumerated | fixed point | half | integer | single | string

直達

いいえ

多次元信号

はい

可変サイズの信号

はい

ゼロクロッシング検出

いいえ

拡張機能

PLC コード生成
Simulink® PLC Coder™ を使用して構造化テキスト コードを生成します。

バージョン履歴

R2006a より前に導入

すべて展開する