メインコンテンツ

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 つ追加します。たとえば、Chirp Signal ブロック、Sine Wave ブロック、Step ブロックを追加します。

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 Wave ブロックと Chirp Signal ブロックは入力バスの要素を提供するものであるため、これらのブロックを選択に含めても結果には影響しません。

Pointer paused on Create Bus button in action bar

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

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

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

新しい Bus Creator ブロックへの入力にラベルを付けます。

  • Bus Creator ブロック間のラインをダブルクリックします。次に、「Sinusoidal」と入力します。

  • Step ブロックと Bus Creator ブロックの間のラインをダブルクリックします。次に、「Step」と入力します。

オプションで、ブロックを配置してモデルの可読性を改善します。

2 番目の Bus Creator ブロックの出力を Scope ブロックに接続し、出力に Sources というラベルを付けます。

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

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

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

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

あるいは、MATLAB® コマンド ウィンドウで次のコマンドを入力します。

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

A Bus Creator block groups signals named Chirp and Sine into a virtual bus named NestedBus. Another Bus Creator block groups NestedBus and a signal named Step into a virtual bus named TopBus.

このモデルのバーチャル バスは Simulink.Bus オブジェクトで定義されていません。非バーチャル バスを作成するには、バス階層と一致するバス オブジェクトを指定する必要があります。

対話形式でバス オブジェクトを作成するには、次を行います。

  1. 型エディターを開きます。Bus Creator ブロックをダブルクリックします。その後、[出力データ型] ボックスの横にある Open Type Editor をクリックします。

  2. 型エディターで、Create types をクリックしてバス オブジェクトを 2 つ作成します。

  3. それぞれのバス オブジェクトで、Create elements をクリックして要素を 2 つ作成します。

  4. 必要に応じて、オブジェクトをダブルクリックして名前を変更します。この例では、信号とバスの名前を使用します。

  5. NestedBus 要素のデータ型を NestedBus に設定します。

Bus objects in the base workspace in the Type Editor

または、Simulink.Bus.createObject関数を使用します。

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

関数は対応するバス TopBusNestedBus の名前が付いた 2 つのバス オブジェクトを作成します。

作成する非バーチャル バスに対応するバス オブジェクトができたので、対応する Bus Creator ブロックのパラメーターを更新して一番上のバスを非バーチャル バスに変換します。

  1. プロパティ インスペクターを開きます。Simulink ツールストリップの [シミュレーション] タブにある [準備] ギャラリーで [プロパティ インスペクター] を選択します。

  2. Bus Creator1 という名前の Bus Creator ブロックを選択します。

  3. プロパティ インスペクターで、[出力データ型]Bus: TopBus に設定します。

  4. プロパティ インスペクターで、[非バーチャル バスとして出力] を選択します。

  5. ライン スタイルで非バーチャル バスを特定するには、モデルを再コンパイルします。

あるいは、次のコマンドを入力します。

set_param(bctop, OutDataTypeStr="Bus: TopBus")
set_param(bctop, NonVirtualBus="on")
set_param(mdl, SimulationCommand="Update")

The line style of TopBus indicates a nonvirtual bus.

TopBus は非バーチャル バスになりますが、NestedBus はバーチャル バスのままです。

入れ子のバスを非バーチャル バスに変換するには、対応する Bus Creator ブロックのパラメーターを更新します。

  1. Bus Creator という名前の Bus Creator ブロックを選択します。

  2. プロパティ インスペクターで、[出力データ型]Bus: NestedBus に設定します。

  3. プロパティ インスペクターで、[非バーチャル バスとして出力] を選択します。

  4. ライン スタイルで非バーチャル バスを特定するには、モデルを再コンパイルします。

あるいは、次のコマンドを入力します。

bcnested = "BusHierarchy/Bus Creator";
set_param(bcnested, OutDataTypeStr="Bus: NestedBus")
set_param(bcnested, NonVirtualBus="on")
set_param(mdl, SimulationCommand="Update")

The line style of NestedBus indicates a nonvirtual bus.

NestedBus が非バーチャル バスになります。

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

拡張例

端子

入力

すべて展開する

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

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
複素数のサポート: あり

パラメーター

すべて展開する

ブロック パラメーターを対話形式で編集するには、プロパティ インスペクターを使用します。Simulink ツールストリップから、[シミュレーション] タブの [準備] ギャラリーで [プロパティ インスペクター] を選択します。

バスを作成するには、ブロック入力の数が 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
データ型: char | string

例: set_param(gcb, Inputs="3")

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

入力要素を並べ替えるには、[入力] リストから 1 つ以上の最上位要素を選択します。その後、要素を新しい位置にドラッグします。

入力要素を追加または削除するには、それぞれ Add または Remove をクリックします。モデルのシミュレーションを実行する前に、各入力端子が接続されていることを確認します。

入力要素のリストを更新するには、Refresh をクリックします。たとえば、次の場合に入力要素のリストを更新します。

  • ダイアログ ボックスが開いている間に入力要素の名前を変更する。

  • 名前が付いていない入力要素の追加、削除、並べ替えを行う。Bus Creator ブロックは、それらの要素に signalN という名前を付けます。ここで、N は対応するブロック端子の番号です。対応するブロック端子が変更されると、自動生成された名前が変わります。

正規表現を使用して、または使用せずに、名前で入力要素をフィルター処理するには、[フィルター] ボックスに検索用語を入力します。検索用語は引用符で囲まないでください。オプションとして、Show filtered results as a flat list をクリックして、フィルター処理された結果をフラット リストとして表示します。フラット リストでは、ドット表記を使用してバス階層が反映されます。既定では、フィルター処理された結果は階層ツリーで表示されます。

R2025a より前: 正規表現を使用してフィルター処理するには、Show filtering options をクリックします。その後、[正規表現を有効にする] を選択します。

ブロックに入る要素のソースを選択するには、リスト内の要素を選択します。次に、Select source blocks をクリックします。選択されたソース ブロックのパラメーターがプロパティ インスペクターに表示されます。複数の要素のソース ブロックが選択されている場合は、フォーカスがあるソース ブロックのパラメーターがプロパティ インスペクターに表示されます。

[入力] リストに対する変更は、元に戻したりやり直したりすることはできません。

ヒント

  • [出力データ型]Simulink.Bus オブジェクトに設定されている場合に、最上位の入力がどの Simulink.BusElement オブジェクトにマッピングされているかを表示するには、最上位の入力をポイントします。たとえば Input1 → BusElementObject1 のように、入力から Simulink.BusElement オブジェクトへのマッピングが小かっこ内に表示されます。

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

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

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

ヒント

  • 型エディターを使用して Simulink.Bus オブジェクトを作成するには、Open Type Editor をクリックします。

  • 出力バスから Simulink.Bus オブジェクトを作成するには、Simulink.Bus.createObject 関数を使用します。

プログラムでの使用

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

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

例: set_param(gcb, OutDataTypeStr="Bus: control")

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

  • 入力から — 出力バス要素の名前をブロック入力から継承します。

    R2025a より前: [バス オブジェクトからではなく入力からの名前を使用する] を選択します。

  • 出力データ型から — 出力バス要素の名前を指定のバス オブジェクトから継承します。

    R2025a より前: [バス オブジェクトからではなく入力からの名前を使用する] をクリアします。

[要素名][出力データ型から] に設定すると次のようになります。

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

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

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

[要素名][入力から] に設定するときは、[要素名の不一致] コンフィギュレーション パラメーターを [エラー] に設定することを検討してください。このコンフィギュレーション パラメーターは、入力要素名がバス オブジェクト内の対応する名前に一致していることをチェックします。

依存関係

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

プログラムでの使用

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

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

例: set_param(gcb, InheritFromInputs="off")

次の表は、このパラメーターの対話形式での値とプログラムでの同等の値の対応を示したものです。

[要素名] の値

InheritFromInputs の値
入力から (既定)"on" (既定)
出力データ型から"off"

このパラメーターを選択すると、非バーチャル バスが出力されます。

非バーチャル バスは C コードの構造体に似ています。以下を行う場合は、このパラメーターを選択します。

  • バス配列の構成。

  • バス データが MATLAB Function ブロックまたは Stateflow® チャートの境界を越えるように設定。

  • バス データを生成された C コードの構造体としてパッケージ化。

  • S-Function を介した外部コードとのインターフェイス接続。

  • 生成コードのサブコンポーネントに渡される関数の引数の数を削減。

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

依存関係

このパラメーターを有効にするには、[出力データ型]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 より前に導入

すべて展開する