Bus Creator
入力信号、バス、またはメッセージをバスにグループ化
ライブラリ:
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 ブロックを追加します。

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

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

バスの要素を特定しやすくするために、Bus Creator ブロックへの入力にラベルを付けます。
Chirp Signal ブロックと Bus Creator ブロックの間のラインをダブルクリックします。次に、「
Chirp」と入力します。Sine Wave ブロックと Bus Creator ブロックの間のラインをダブルクリックします。次に、「
Sine」と入力します。
2 番目のバスを作成して、それに最初のバスと Step ブロックの出力を含めるには、Bus Creator ブロックと Step ブロックをクリックおよびドラッグして選択します。表示された操作バーで、[バスの作成] をクリックします。Sine Wave ブロックと Chirp Signal ブロックは入力バスの要素を提供するものであるため、これらのブロックを選択に含めても結果には影響しません。

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

バスは任意の深さの入れ子にできます。Bus Creator ブロックへの入力の 1 つがバスである場合、その出力は、少なくとも 1 つの入れ子のバスを含むバス階層です。
新しい Bus Creator ブロックへの入力にラベルを付けます。
Bus Creator ブロック間のラインをダブルクリックします。次に、「
Sinusoidal」と入力します。Step ブロックと Bus Creator ブロックの間のラインをダブルクリックします。次に、「
Step」と入力します。
オプションで、ブロックを配置してモデルの可読性を改善します。
2 番目の Bus Creator ブロックの出力を Scope ブロックに接続し、出力に Sources というラベルを付けます。
バスをライン スタイルで視覚的に識別するには、Simulink® ツールストリップの [モデル化] タブで [モデルの更新] または [実行] をクリックします。

Bus Creator ブロックを使用して、非バーチャル バスをコンポーネント内に作成できます。
BusHierarchy という名前のモデルを開いてコンパイルします。このモデルでは Bus Creator ブロックを使用してバーチャル バスの階層を作成します。モデルをコンパイルするには、Simulink® ツールストリップの [モデル化] タブで、[モデルの更新] または [実行] をクリックします。モデルをコンパイルするとライン スタイルが更新されます。このライン スタイルは、バスを視覚的に識別するのに使用できます。
あるいは、MATLAB® コマンド ウィンドウで次のコマンドを入力します。
mdl = "BusHierarchy"; open_system(mdl) set_param(mdl, SimulationCommand="Update")

このモデルのバーチャル バスは Simulink.Bus オブジェクトで定義されていません。非バーチャル バスを作成するには、バス階層と一致するバス オブジェクトを指定する必要があります。
対話形式でバス オブジェクトを作成するには、次を行います。
型エディターを開きます。Bus Creator ブロックをダブルクリックします。その後、[出力データ型] ボックスの横にある
をクリックします。型エディターで、
をクリックしてバス オブジェクトを 2 つ作成します。それぞれのバス オブジェクトで、
をクリックして要素を 2 つ作成します。必要に応じて、オブジェクトをダブルクリックして名前を変更します。この例では、信号とバスの名前を使用します。
NestedBus要素のデータ型をNestedBusに設定します。

または、Simulink.Bus.createObject関数を使用します。
bctop = "BusHierarchy/Bus Creator1";
Simulink.Bus.createObject(mdl,bctop);関数は対応するバス TopBus と NestedBus の名前が付いた 2 つのバス オブジェクトを作成します。
作成する非バーチャル バスに対応するバス オブジェクトができたので、対応する Bus Creator ブロックのパラメーターを更新して一番上のバスを非バーチャル バスに変換します。
プロパティ インスペクターを開きます。Simulink ツールストリップの [シミュレーション] タブにある [準備] ギャラリーで [プロパティ インスペクター] を選択します。
Bus Creator1という名前の Bus Creator ブロックを選択します。プロパティ インスペクターで、[出力データ型] を
Bus: TopBusに設定します。プロパティ インスペクターで、[非バーチャル バスとして出力] を選択します。
ライン スタイルで非バーチャル バスを特定するには、モデルを再コンパイルします。
あるいは、次のコマンドを入力します。
set_param(bctop, OutDataTypeStr="Bus: TopBus") set_param(bctop, NonVirtualBus="on") set_param(mdl, SimulationCommand="Update")

TopBus は非バーチャル バスになりますが、NestedBus はバーチャル バスのままです。
入れ子のバスを非バーチャル バスに変換するには、対応する Bus Creator ブロックのパラメーターを更新します。
Bus Creatorという名前の Bus Creator ブロックを選択します。プロパティ インスペクターで、[出力データ型] を
Bus: NestedBusに設定します。プロパティ インスペクターで、[非バーチャル バスとして出力] を選択します。
ライン スタイルで非バーチャル バスを特定するには、モデルを再コンパイルします。
あるいは、次のコマンドを入力します。
bcnested = "BusHierarchy/Bus Creator"; set_param(bcnested, OutDataTypeStr="Bus: NestedBus") set_param(bcnested, NonVirtualBus="on") set_param(mdl, SimulationCommand="Update")

NestedBus が非バーチャル バスになります。
バス オブジェクトを保存しない場合、そのモデルを再度開くときに、バス オブジェクトを再作成しなければなりません。バス オブジェクトを保存する方法の詳細については、バス オブジェクトでのバス プロパティの指定を参照してください。
拡張例
Simulink Bus Capabilities
Work with buses in components, simplify component interfaces, and streamline common bus workflows.
端子
入力
入力端子はバスに含める要素を受け入れます。入力端子の数は [入力数] パラメーターによって駆動されます。
各 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 ブロックに別の線を接続することで入力端子を追加できます。

端子を対話的に追加すると、[入力数] パラメーターの値が更新され、[入力] リストに新しい入力が追加されます。
プログラムでの使用
ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。
入力の数を 2 以上の整数として指定します。
| パラメーター: | Inputs |
| 値: | '2' (既定値) | integer in quotes |
| データ型: | char | string |
例: set_param(gcb, Inputs="3")
[入力] リストには、入れ子にされたバスの要素など、ブロックに入る要素が示されます。要素の横にある矢印は、入力がバスであることを示します。矢印をクリックすると、そのバスの内容を表示できます。
入力要素を並べ替えるには、[入力] リストから 1 つ以上の最上位要素を選択します。その後、要素を新しい位置にドラッグします。
入力要素を追加または削除するには、それぞれ
または
をクリックします。モデルのシミュレーションを実行する前に、各入力端子が接続されていることを確認します。
入力要素のリストを更新するには、
をクリックします。たとえば、次の場合に入力要素のリストを更新します。
ダイアログ ボックスが開いている間に入力要素の名前を変更する。
名前が付いていない入力要素の追加、削除、並べ替えを行う。Bus Creator ブロックは、それらの要素に
signalNという名前を付けます。ここで、N は対応するブロック端子の番号です。対応するブロック端子が変更されると、自動生成された名前が変わります。
正規表現を使用して、または使用せずに、名前で入力要素をフィルター処理するには、[フィルター] ボックスに検索用語を入力します。検索用語は引用符で囲まないでください。オプションとして、
をクリックして、フィルター処理された結果をフラット リストとして表示します。フラット リストでは、ドット表記を使用してバス階層が反映されます。既定では、フィルター処理された結果は階層ツリーで表示されます。
R2025a より前: 正規表現を使用してフィルター処理するには、
をクリックします。その後、[正規表現を有効にする] を選択します。
ブロックに入る要素のソースを選択するには、リスト内の要素を選択します。次に、
をクリックします。選択されたソース ブロックのパラメーターがプロパティ インスペクターに表示されます。複数の要素のソース ブロックが選択されている場合は、フォーカスがあるソース ブロックのパラメーターがプロパティ インスペクターに表示されます。
[入力] リストに対する変更は、元に戻したりやり直したりすることはできません。
ヒント
[出力データ型] が
Simulink.Busオブジェクトに設定されている場合に、最上位の入力がどのSimulink.BusElementオブジェクトにマッピングされているかを表示するには、最上位の入力をポイントします。たとえばInput1 → BusElementObject1のように、入力からSimulink.BusElementオブジェクトへのマッピングが小かっこ内に表示されます。正規表現では、入力要素がパターンと一致するかどうかに基づいてフィルターが適用されます。たとえば、名前が小文字の
tで終わるすべての要素を表示するには、[フィルター] ボックスに「t$」と入力します。詳細については、正規表現を参照してください。
出力バスのデータ型を指定します。
[Bus: <object name>] を選択する場合は、<object name> を Simulink.Bus オブジェクトの名前と置き換えます。モデルを編集するときは、バス オブジェクトにアクセスできなければなりません。
ヒント
型エディターを使用して
Simulink.Busオブジェクトを作成するには、
をクリックします。出力バスから
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")
ブロックの特性
データ型 |
|
直達 |
|
多次元信号 |
|
可変サイズの信号 |
|
ゼロクロッシング検出 |
|
拡張機能
実際のデータ型、または機能のサポートは、ブロックの実装に依存します。
HDL Coder™ には、HDL の実装および合成されたロジックに影響する追加のコンフィギュレーション オプションがあります。
このブロックには 1 つの既定の HDL アーキテクチャがあります。
| ConstrainedOutputPipeline | 既存の遅延を設計内で移動することによって出力に配置するレジスタの数。分散型パイプラインではこれらのレジスタは再分散されません。既定の設定は |
| InputPipeline | 生成されたコードに挿入する入力パイプライン ステージ数。分散型パイプラインと制約付き出力パイプラインでは、これらのレジスタを移動できます。既定の設定は |
| OutputPipeline | 生成されたコードに挿入する出力パイプライン ステージ数。分散型パイプラインと制約付き出力パイプラインでは、これらのレジスタを移動できます。既定の設定は |
このブロックは、HDL コード生成で次のデータ型をサポートします。
| 入力端子 | 次元 | 固定小数点 | 浮動小数点 | 組み込み整数 | バス | boolean | 複素信号 |
|---|---|---|---|---|---|---|---|
| Port_1 | スカラー ベクトル 行列 (2 次元まで) | あり | half single double | あり | あり | あり | あり |
以下の HDL Coder の最適化を使用して、速度、面積、I/O を最適化できます。
面積の最適化
速度の最適化
| 最適化 | 説明 |
|---|---|
| 分散型パイプライン方式 (HDL Coder) | "分散型パイプライン方式"、つまりレジスタのリタイミングとは、設計の既存の遅延を移動して、機能的動作を維持しながらクリティカル パスを低減する速度の最適化です。 Sqrt ブロックの場合、HDL Coder はブロックの内部ではなく周囲にパイプライン レジスタを分散します。 |
| クロックレート パイプライン (HDL Coder) | "クロックレート パイプライン" は、他の速度と面積の最適化でクロック レートでのレイテンシを導入できるようにする HDL Coder の最適化フレームワークです。 |
| 適応パイプライン (HDL Coder) | "適応パイプライン" 最適化では、設計内のブロックにパイプライン レジスタを挿入して、ブロックとレジスタのパターンまたは組み合わせを作成することにより、達成可能なクロック周波数を高め、FPGA ボード上の使用面積を削減できます。 |
| クリティカル パスの推定 (HDL Coder) | クリティカル パスの可能性が最も高いパスを設計内で簡単に特定するには、"クリティカル パスの推定" を使用します。クリティカル パスの推定は、クリティカル パスを検出する反復的プロセスを高速化します。クリティカル パスの推定で特徴付けられるブロックについては、特徴付けられるブロック (HDL Coder)を参照してください。 |
HDL コード生成でのバスの使用の詳細については、バス (HDL Coder)を参照してください。
PLC コード生成
Simulink® PLC Coder™ を使用して構造化テキスト コードを生成します。
実際のデータ型、または機能のサポートは、ブロックの実装に依存します。
バージョン履歴
R2006a より前に導入Bus Creator ブロックでのブロック パラメーター値の編集が、より直感的で合理化されたものになりました。
Bus Creator ブロックのパラメーター値をプロパティ インスペクターで指定できるようになっています。[ブロック パラメーター] ダイアログ ボックスは引き続き使用できます。
次の表は、パラメーターと操作の変更点を説明したものです。
| 目的 | R2025a より前の操作 | R2025a 以降の操作 |
|---|---|---|
| 変更を適用する。 | 変更を加えます。次に、[適用] または [OK] をクリックします。 | 変更を加えます。 プロパティ インスペクターまたは [ブロック パラメーター] ダイアログ ボックスでブロック パラメーター値を指定すると、変更が直ちに適用されます。 |
| 正規表現を使用してフィルター処理する。 | をクリックし、[正規表現を有効にする] を選択します。次に、[名前でフィルター] ボックスに検索用語を入力します。 | [フィルター] ボックスに検索用語を入力します。 |
| フィルター処理された結果をフラット リストとして表示する。 | [フィルター処理された結果をフラット リストとして表示する] をクリックします。 | をクリックします。 |
| ソース ブロックを検索する。 | 1 つ以上の入力を選択します。その後、[検索] をクリックします。 ソース ブロックが強調表示されます。 | 1 つ以上の入力を選択します。次に、 ソース ブロックが選択され、フォーカスがあるブロックのパラメーターがプロパティ インスペクターに表示されます。 |
| ブロック入力を追加する。 | [追加] をクリックします。 | をクリックします。 |
| 入力のリストを更新する。 | [リフレッシュ] をクリックします。 | をクリックします。 |
| ブロック入力を削除する。 | [削除] をクリックします。 | をクリックします。 |
| 入力を並べ替える。 | 1 つ以上の隣接する入力を選択します。次に、入力が目的の位置になるまで [上] または [下] をクリックします。 | 1 つ以上の入力を選択します。次に、入力を目的の位置にドラッグします。 |
型エディターを開いて Simulink.Bus オブジェクトを定義する。 | をクリックし、[モード] を [バス オブジェクト] に設定します。その後、[編集] ボタンをクリックします。 | をクリックします。 |
| 出力バス要素名のソースを指定する。 | [バス オブジェクトからではなく入力からの名前を使用する] チェック ボックスをオンまたはオフにします。 | [要素名] を [入力から] または [出力データ型から] に設定します。 |
| 入力の名前を変更する。 | 入力要素の信号ラベルを編集します。 あるいは、[入力名を上記の名前と一致させる] を選択し、要素を選択して、[選択した信号の名前変更] ボックスで新しい名前を指定します。 | 入力要素の信号ラベルを編集します。 |
[入力名を上記の名前と一致させる] パラメーターと [選択した信号の名前変更] パラメーターは削除されました。必須の名前を指定するには、代わりに Simulink.Bus オブジェクトを使用します。
[出力データ型] を
Simulink.Busオブジェクトに設定します。以下のオプションのいずれかを選択します。
出力バス要素名を指定の
Simulink.Busオブジェクトから継承するには、[要素名] を[出力データ型から]に設定します。入力名を指定の
Simulink.Busオブジェクトからの名前と一致させるには、[要素名] を[入力から]に設定し、[要素名の不一致] コンフィギュレーション パラメーターを[エラー]に設定します。このコンフィギュレーション パラメーターは、入力名がSimulink.Busオブジェクト内の対応する名前に一致していることをチェックします。
Inputs を要素名のコンマ区切りリストに設定することは推奨されません。
R2023a 以降では、Bus Creator ブロックにおいて、対応する Bus Creator ブロックの入力端子で受け入れ可能な可変サイズの信号の上限よりも上限が小さい可変サイズの入力信号がサポートされます。
この強化により、入力信号の上限が対応する Bus Creator ブロックの入力端子で受け入れ可能な可変サイズの信号の上限と等しくない場合に可変サイズの入力信号を使用できるようになります。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)

