Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

バス オブジェクトでのバス プロパティの指定

バス オブジェクトは、バスおよびその要素のプロパティの検証に使用できる、バスの再利用可能な仕様を提供します。複数のブロックおよびモデル コンポーネントで同じバス オブジェクトを指定できます。バス オブジェクトは、バーチャル バスではオプションですが、非バーチャル バスでは必須です。

Simulink.Bus オブジェクトでは、それが格納する信号の値とは異なり、バスのアーキテクチャ上のプロパティのみが指定されます。たとえば、バス オブジェクトではバス内の要素の数、それらの要素の順序、要素の入れ子構造の有無とその方法、および構成要素の信号のデータ型は指定できますが、信号値は指定できません。

バス オブジェクトは、C における構造定義に似ています。つまり、バス オブジェクトは、バスのメンバーを定義しますが、バスは作成しません。バス オブジェクトはケーブル コネクタにも似ています。コネクタはピンとそれらの構成を定義し、接続可能なワイヤのタイプを制御します。同様に、バス オブジェクトは関連付けられたバスに必要な信号の構成とプロパティを定義します。

バス オブジェクトを使用するかどうかの判定

バス プロパティは、個別に指定するか、バス オブジェクトで指定できます。モデル化要件に応じて、バス プロパティを定義する方法は異なることがあります。

モデル化要件仕様のソース
サブシステムまたはモデル インターフェイスで入力バスの階層およびプロパティを割り当てる、あるいは検証する。

In Bus Element ブロックまたは Simulink.Bus オブジェクトを使用します。

サブシステムまたはモデル インターフェイスで出力バスの階層およびプロパティを割り当てる、あるいは検証する。

Out Bus Element ブロックまたは Simulink.Bus オブジェクトを使用します。

複数のブロックまたはモデル コンポーネントにおけるバスの階層およびプロパティを割り当てる、あるいは検証する。

Simulink.Bus オブジェクトを使用します。

モデルとバスの生成コード間の対応関係をトレースする。

Simulink.Bus オブジェクトで定義された非バーチャル バスを使用します。

非バーチャル バスに対して生成されたコードは、構造を生成します。非バーチャル バスにより、いくつかのバスの複数のコピーが生成される場合があります。

Simscape™ の接続を保持する厳格なインターフェイス仕様を設計し、接続の名前およびタイプを制限する。

Simulink.ConnectionBus オブジェクトを使用します。

Simulink.ConnectionBus オブジェクトの詳細については、接続を保持する厳格なインターフェイス仕様の設計 (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 オブジェクトを作成し、その属性を指定したら、オブジェクトが提供するバス定義を使用する必要のあるブロックにそれを関連付けることができます。

ブロックをバスに関連付けるには、[出力データ型] または [データ型] ブロック パラメーターを [Bus: <object name>] に設定し、<object name>Simulink.Bus オブジェクト名で置き換えます。

バス オブジェクトの定義前または定義後のいずれかに、ブロックのデータ型としてバス オブジェクトを指定できます。ただし、モデルをシミュレートする前に、Simulink.Bus オブジェクトを定義して読み込む必要があります。

モデルの開発中に、バスを変更してバス オブジェクトと一致させるか、バス オブジェクトを変更してバスと一致させることができます。バス オブジェクトを変更しない場合は、次を実行できます。

  • バスの変更に一致するバス オブジェクトを作成し、変更されたバスが接続されるブロックに対して新しいバス オブジェクトを使用する。

  • バスの変更を元に戻して、バスが、関連付けられているバス オブジェクトと引き続き一致するようにする。

Simulink バス オブジェクトの保存

Simulink.Bus オブジェクトは次の場所に保存できます。

  • データ ディクショナリ

  • 関数

  • MAT ファイル

  • データベース ファイルまたはその他の外部ファイル

バス オブジェクトを保存しない場合、そのバス オブジェクトを使用するモデルを再度開くときに、バス オブジェクトを再作成しなければなりません。

バス オブジェクトを保存する場所は、モデル化要件に基づいて選択します。

モデル化要件場所
大規模なモデルおよびモデルの階層構造用のデータを保存する。

データ ディクショナリを使用します。

ベース ワークスペースからデータ ディクショナリに保存すると、Simulink.Bus オブジェクトだけでなく、モデルで使用されているすべての変数が得られます。

データ ディクショナリに変更を保存するには、型エディターまたはモデル エクスプローラーを使用します。

データ ディクショナリを使用するようにモデルを更新するには、Simulink データ ディクショナリを使用するモデルの移行を参照してください。

トレーサビリティとモデルの差別化のために MATLAB® を使用する。

スクリプトまたは関数を使用します。

1 つ以上の Simulink.Bus オブジェクトを定義するスクリプトまたは関数を作成するには、型エディターモデル エクスプローラー、または関数 Simulink.Bus.save を使用します。

バス オブジェクトの保存と読み込みを高速化する。

MAT ファイルを使用します。

ベース ワークスペースからの Simulink.Bus オブジェクトを含む MAT ファイルを作成するには、型エディターモデル エクスプローラー、または関数 save を使用します。

バス インターフェイス情報と外部データ ソースに保存された設計ドキュメントを比較する。

データベースまたはその他の外部ファイルを使用します。

C コード構造体 (struct) 定義で、関数 Simulink.importExternalCTypes、スクリプトまたは Database Toolbox™ 機能を使用します。シミュレーション用に既存のアルゴリズム C コードを統合する準備 (レガシ コード ツールを使用するなど) のため、構造型に従って定義内に信号またはパラメーター データをパッケージ化できます。

ベース ワークスペースに保存されているバス オブジェクトを保存するには、ベース ワークスペースの内容を保存するどの MATLAB 方法でも使用できます。ただし、結果のファイルには、バス オブジェクトだけでなく、ベース ワークスペース内のすべての内容が含まれます。

バス オブジェクトを変更した場合は、変更を維持するにはバス オブジェクトを再度保存しなければなりません。

Simulink バス オブジェクトからモデルへのマッピング

モデルのシミュレーションを実行する前に、モデルが使用するすべての Simulink.Bus オブジェクトをモデルが使用するベース ワークスペースまたはデータ ディクショナリに読み込まなければなりません。モデルにおける自動化と整合性を確保するためには、バス オブジェクトからモデルへのマッピングが重要です。

  • モデルが必要とするすべてのバス オブジェクトを特定することで、モデルを実行する前にそれらのオブジェクトを確実に読み込むことができます。

  • バス オブジェクトを使用するすべてのモデルを特定することで、バス オブジェクトの変更がバス オブジェクトを使用するモデルにおける予期しない変化の原因にならないことを確認できます。

モデルの実行前に必要なバス オブジェクトの読み込みを確実に行うには、以下の方法を検討してください。

  • プロジェクト — プロジェクトを開くタイミングで実行されるファイルを設定すると、バス オブジェクトを定義するファイルが自動的に読み込みまたは実行されます。詳細については、プロジェクト管理を参照してください。

  • データ ディクショナリ — 1 つ以上のモデルの変数をもつバス オブジェクトおよびその他のオブジェクトを格納します。

    モデル間でバス オブジェクトを共有するには、各モデルをディクショナリにリンクし、共通の参照ディクショナリを作成してオブジェクトを格納します。例については、参照ディクショナリを使用したディクショナリ データの分割を参照してください。

  • データベース — マッピング情報をデータベースなどの外部データ ソースで取得します。

  • モデル コールバック — PreLoadFcn などのモデル コールバックを使用して、バス オブジェクトを定義するファイルを読み込みまたは実行します。詳細については、モデル コールバックを参照してください。

    モデルで少数のバス オブジェクトしか使用しない場合は、ファイルを読み込むのではなく、バス オブジェクトのコードをコールバックに直接コピーすることを検討してください。

開いているモデルでバス オブジェクトが使用されている場所を確認するには、特定の変数を使用するブロックの検索を参照してください。

ヒント

厳密な標準の命名規則を使用すると、バス オブジェクトの使用をマッピングするのに役立ちます。たとえば、アクチュエータ制御関数に必要なモデルおよびデータについて考えます。モデルの名前を Actuator とし、入力端子に Actuator_bus_in、出力端子に Actuator_bus_out という名前をそれぞれ付けると、バス オブジェクトとモデル間のつながりが明確になります。

ただこの方法では、あるモデルからの出力が直接別のモデルに送られる場合、問題が発生することがあります。その場合、命名に不一致があるとエラーになります。

参考

ツール

オブジェクト

関連するトピック