バス オブジェクトでのバス プロパティの指定
各バス オブジェクトは、バスおよびその要素のプロパティの検証に使用できる、バスの再利用可能な仕様を提供します。複数のブロック、オブジェクト、およびモデル コンポーネントで同じバス オブジェクトを指定できます。
Simulink.Bus オブジェクトでは、それが格納する信号の値とは異なり、バスのアーキテクチャ上のプロパティのみが指定されます。たとえば、バス オブジェクトではバス内の要素の数、それらの要素の順序、要素の入れ子構造の有無とその方法、および構成要素の信号のデータ型は指定できますが、信号値は指定できません。
バス オブジェクトは、C における構造定義に似ています。つまり、バス オブジェクトは、バスのメンバーを定義しますが、バスは作成しません。バス オブジェクトはケーブル コネクタにも似ています。コネクタはピンとそれらの構成を定義し、接続可能なワイヤのタイプを制御します。同様に、バス オブジェクトは関連付けられたバスに必要な信号の構成とプロパティを定義します。
バス オブジェクトは、バーチャル バスではオプションですが、非バーチャル バスでは必須です。バーチャル バスと非バーチャル バスの詳細については、合成インターフェイスのガイドラインを参照してください。
バス オブジェクトを使用するかどうかの判定
バス プロパティは、個別に指定するか、バス オブジェクトで指定できます。モデル化要件に応じて、バス プロパティを定義する方法は異なることがあります。
| モデル化要件 | 仕様のソース |
|---|---|
| サブシステムまたはモデル インターフェイスで入力バスの階層およびプロパティを割り当てる、あるいは検証する。 | In Bus Element ブロックまたは |
| サブシステムまたはモデル インターフェイスで出力バスの階層およびプロパティを割り当てる、あるいは検証する。 | Out Bus Element ブロックまたは |
| 複数のブロックまたはモデル コンポーネントにおけるバスの階層およびプロパティを割り当てる、あるいは検証する。 |
|
| モデルとバスの生成コード間の対応関係をトレースする。 |
非バーチャル バスに対して生成されたコードは、構造を生成します。非バーチャル バスにより、いくつかのバスの複数のコピーが生成される場合があります。 |
| Simscape™ の接続を保持する厳格なインターフェイス仕様を設計し、接続の名前およびタイプを制限する。 |
|
モデル コンポーネントの端子が相互に直接接続されている場合、それらの端子を表すブロックには同じまたは等価のバス オブジェクトを指定します。インターフェイスの両側で、同じ階層およびプロパティをもつバス オブジェクトを指定することで、2 つのコンポーネント間のインターフェイスで整合性が適用されます。インターフェイス設計の詳細については、モデル コンポーネントのインターフェイスの定義を参照してください。
以下のモデリング構成では Simulink.Bus オブジェクトを使用しなければなりません。
非バーチャル バス
バス入力または出力を含む Stateflow® チャート
外部コードとの S-Function またはレガシ コード ツール インターフェイス
バス入力または出力を定義するためにバス オブジェクトを必要とするブロック。詳細については、バス対応ブロックを参照してください。
Bus Creator ブロックでバスを作成する場合に厳密なデータ型指定を適用するには、以下のようにします。
[出力データ型] ブロック パラメーターを
Simulink.Busオブジェクトに設定します。[要素名] ブロック パラメーターを
[出力データ型から]に設定します。[要素名の不一致] コンフィギュレーション パラメーターを
[エラー]に設定します。このコンフィギュレーション パラメーターは、入力要素名がバス オブジェクト内の対応する名前に一致しているかをチェックします。
ブロックまたはオブジェクトのデータ型としてバス オブジェクトを指定すると、通常、バス オブジェクトで指定されたプロパティにより、ブロックまたはオブジェクトで指定されたプロパティがオーバーライドされます。
たとえば、Signal Specification ブロックで以下の設定が行われているとします。
[単位] が
ft/sに設定されている[データ型] が、単位として
m/sを指定する要素をもつSimulink.Busオブジェクトに設定されている
Signal Specification ブロックではバス要素の単位として m/s が使用されます。
バス オブジェクトは、非バーチャル バスを定義している場合にのみ生成コードに含まれます。バーチャル バスを定義しているバス オブジェクトの場合、バス オブジェクトではなく、バス オブジェクトが指定しているプロパティが生成コードに含まれます。
Simulink バス オブジェクトの作成
Simulink.Bus オブジェクトを対話的に作成または編集するには、型エディターまたはモデル エクスプローラーを使用します。型エディターでは、バス階層が表示され、インポートやエクスポートなどの機能が提供されるほか、Simulink.ValueType オブジェクトなどの他の型を更新できます。モデル エクスプローラーでは、Simulink.Parameter オブジェクトなどのデータ オブジェクトを更新できます。いずれかのツールで作成されたバス オブジェクトは、最初はベース ワークスペースまたはデータ ディクショナリに保存されます。
型エディターを使用してバス オブジェクトを作成する例については、Define Multilevel Bus Hierarchy Using Type Editorを参照してください。
バス オブジェクトをプログラムで作成または編集するには、プログラムによる Simulink バス オブジェクトの作成を参照してください。プログラムで作成されたバス オブジェクトは、最初はベース ワークスペース、データ ディクショナリ、または関数に保存されます。
Simulink バス オブジェクトの指定
Simulink.Bus オブジェクトを作成し、その属性を指定したら、バス定義が必要なブロックまたはオブジェクトにそれを関連付けることができます。
Simulink.Bus オブジェクトは、次のブロックとオブジェクトのバス プロパティの指定に使用します。
Bus Creator ブロック
Constant ブロック
Data Store Memory ブロック
In Bus Element ブロック
Inport ブロック
Out Bus Element ブロック
Outport ブロック
Signal Specification ブロック
Simulink.BusElementオブジェクトSimulink.ParameterオブジェクトSimulink.Signalオブジェクト
ブロックまたはオブジェクトをバス オブジェクトに関連付けるには、ブロックまたはオブジェクトのデータ型を [Bus: <object name>] に設定し、<object name> を Simulink.Bus オブジェクト名で置き換えます。Simulink.BusElement オブジェクトのデータ型を Simulink.Bus オブジェクトに設定する場合は、接頭辞 Bus: はオプションです。
バス オブジェクトの定義前または定義後のいずれかに、データ型としてバス オブジェクトを指定できます。ただし、モデルをシミュレートする前に、Simulink.Bus オブジェクトを定義して読み込む必要があります。
モデルの開発中に、バスを変更してバス オブジェクトと一致させるか、バス オブジェクトを変更してバスと一致させることができます。バス オブジェクトを変更しない場合は、次を実行できます。
バスの変更に一致するバス オブジェクトを作成し、変更されたバスが接続されるブロックに対して新しいバス オブジェクトを使用する。
バスの変更を元に戻して、バスが、関連付けられているバス オブジェクトと引き続き一致するようにする。
Simulink バス オブジェクトの保存
Simulink.Bus オブジェクトは次の場所に保存できます。
データ ディクショナリ
関数
MAT ファイル
データベース ファイルまたはその他の外部ファイル
バス オブジェクトを保存しない場合、そのバス オブジェクトを使用するモデルを再度開くときに、バス オブジェクトを再作成しなければなりません。
バス オブジェクトを保存する場所は、モデル化要件に基づいて選択します。
| モデル化要件 | 場所 |
|---|---|
| 大規模なモデルおよびモデルの階層構造用のデータを保存する。 | データ ディクショナリを使用します。 ベース ワークスペースからデータ ディクショナリに保存すると、 データ ディクショナリに変更を保存するには、型エディターまたはモデル エクスプローラーを使用します。 データ ディクショナリを使用するようにモデルを更新するには、Simulink データ ディクショナリを使用するモデルの移行を参照してください。 |
| トレーサビリティとモデルの差別化のために MATLAB® を使用する。 | スクリプトまたは関数を使用します。 1 つ以上の |
| バス オブジェクトの保存と読み込みを高速化する。 | MAT ファイルを使用します。 ベース ワークスペースからの |
| バス インターフェイス情報と外部データ ソースに保存された設計ドキュメントを比較する。 | データベースまたはその他の外部ファイルを使用します。 C コード構造体 ( |
ベース ワークスペースに保存されているバス オブジェクトを保存するには、ベース ワークスペースの内容を保存するどの MATLAB 方法でも使用できます。ただし、結果のファイルには、バス オブジェクトだけでなく、ベース ワークスペース内のすべての内容が含まれます。
バス オブジェクトを変更した場合は、変更を維持するにはバス オブジェクトを再度保存しなければなりません。
Simulink バス オブジェクトからモデルへのマッピング
モデルのシミュレーションを実行する前に、モデルが使用するすべての Simulink.Bus オブジェクトをモデルが使用するベース ワークスペースまたはデータ ディクショナリに読み込まなければなりません。モデルにおける自動化と整合性を確保するためには、バス オブジェクトからモデルへのマッピングが重要です。
モデルが必要とするすべてのバス オブジェクトを特定することで、モデルを実行する前にそれらのオブジェクトを確実に読み込むことができます。
バス オブジェクトを使用するすべてのモデルを特定することで、バス オブジェクトの変更がバス オブジェクトを使用するモデルにおける予期しない変化の原因にならないことを確認できます。
モデルの実行前に必要なバス オブジェクトの読み込みを確実に行うには、以下の方法を検討してください。
プロジェクト — プロジェクトを開くタイミングで実行されるファイルを設定すると、バス オブジェクトを定義するファイルが自動的に読み込みまたは実行されます。詳細については、プロジェクト管理を参照してください。
データ ディクショナリ — 1 つ以上のモデルの変数をもつバス オブジェクトおよびその他のオブジェクトを格納します。
モデル間でバス オブジェクトを共有するには、各モデルをディクショナリにリンクし、共通の参照ディクショナリを作成してオブジェクトを格納します。例については、参照ディクショナリを使用したディクショナリ データの分割を参照してください。
データベース — マッピング情報をデータベースなどの外部データ ソースで取得します。
モデル コールバック —
PreLoadFcnなどのモデル コールバックを使用して、バス オブジェクトを定義するファイルを読み込みまたは実行します。詳細については、モデル コールバックを参照してください。モデルで少数のバス オブジェクトしか使用しない場合は、ファイルを読み込むのではなく、バス オブジェクトのコードをコールバックに直接コピーすることを検討してください。
開いているモデルでバス オブジェクトが使用されている場所を確認するには、特定の変数を使用するブロックの検索を参照してください。
ヒント
厳密な標準の命名規則を使用すると、バス オブジェクトの使用をマッピングするのに役立ちます。たとえば、アクチュエータ制御関数に必要なモデルおよびデータについて考えます。モデルの名前を Actuator とし、入力端子に Actuator_bus_in、出力端子に Actuator_bus_out という名前をそれぞれ付けると、バス オブジェクトとモデル間のつながりが明確になります。
ただこの方法では、あるモデルからの出力が直接別のモデルに送られる場合、問題が発生することがあります。その場合、命名に不一致があるとエラーになります。