最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

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

バスにはバス オブジェクトが関連付けられています。このオブジェクトは、Simulink® がバス信号の検証に使用するプロパティを提供します。バス オブジェクトは、バーチャル バスではオプションですが、非バーチャル バスでは必須です。

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

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

バス オブジェクトは、ベース ワークスペースなどの場所に格納できるクラス Simulink.Bus のインスタンスです。このオブジェクトは、バスの構造、および入れ子、データ型、サイズなどその要素のプロパティを定義します。

バス オブジェクトは、バス要素の順序付けられた階層のルートの役割を果たします。バス要素は、Simulink.BusElement クラスのインスタンスです。各要素は、名前、データ型、次元など、バス内の 1 つの信号のプロパティを完全に指定します。バス オブジェクトに格納された要素の順序により、バス内の信号の順序が決まります。バス オブジェクトは、構成要素の信号によって定義されずに、継承に依存するプロパティも指定できます。

バス オブジェクトのワークフロー

モデルでバス オブジェクトを使用するには、次のタスクを実行します。多くの場合は対話形式で行います。

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

バス オブジェクトの使用が必要な場合

以下のモデリング構成ではバス オブジェクトを使用しなければなりません。

  • モデル参照の境界を越える非バーチャル バス

  • バス入力または出力を含む Stateflow® チャート

  • 外部コードとの S-Function またはレガシ コード ツール インターフェイス

バス オブジェクトは、複数のブロックと関連付けることができます。一部のブロックでは、ブロックにバス入力またはバス出力がある場合、バス オブジェクトの指定が必要です。バス オブジェクトがブロックに対する信号の入力または出力を管理する場合、信号は、オブジェクトによって指定されたとおりのプロパティをもつバスでなければなりません。誤差があるとエラーが発生します。

これらのブロックには、バス入力とバス出力のバス オブジェクトが必要です。

バス オブジェクトをオプションで使用する場合

Bus Creator ブロック パラメーターを使用してバス信号のプロパティを指定した場合、そのバスからの下流のすべてのブロックが同じプロパティを継承します。

Bus Creator ブロック パラメーターを使用してバーチャル バスを定義し、制限されたエラー チェックを実行できます。バスでエラー チェックを実行するには、バス オブジェクトをそのバスに関連付けます。バス オブジェクトを使用してバス信号のエラーをチェックすることは、再利用可能で共有可能なモデル コンポーネントを作成する際に重要です。

モデルとバスの生成コード間の対応関係のトレースを容易にするには、非バーチャル バスを使用します。非バーチャル バスに対して生成されたコードは、構造を生成します。非バーチャル バスによって、いくつかのバス信号の複数のコピーが生成される場合があります。

これらのブロックでは、バス入力とバス出力のバス オブジェクトを指定できます。

バス オブジェクトの管理方法の決定

バス オブジェクトは次の場所に保存できます。

  • データ ディクショナリ

  • MATLAB® ファイル

  • MAT ファイル

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

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

バス オブジェクトの保存場所によって、メリットも異なります。

場所使用法に関する注意事項

データ ディクショナリ

大きなモデルのコンポーネント化に使用します。

ベース ワークスペースからデータ ディクショナリに保存する場合は、バス オブジェクトだけでなく、モデルで使用するすべての変数を取得します。

データ ディクショナリに保存する前に、データ ディクショナリに移行する前の考慮事項を参照してください。

MATLAB ファイル

トレーサビリティとモデルの差別化に MATLAB を使用する場合に使用します。

MAT ファイル

より高速なバス オブジェクトの保存と読み込みのために使用します。

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

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

バス オブジェクトの作成と指定

バス オブジェクトを対話形式で作成および編集するには、バス エディターを使用します。このツールで作成されたバス オブジェクトは最初にベース ワークスペースに保存されます。

バス オブジェクトをプログラムにより作成および編集するには、プログラムによるバス オブジェクトの作成を参照してください。クラスと関数から作成されたバス オブジェクトは最初にベース ワークスペースまたは MATLAB ファイルに保存されます。

バス オブジェクトを作成し、その属性を指定したら、オブジェクトが提供するバス定義を使用する必要のあるブロックにそれを関連付けることができます。ブロックをバスに関連付けるには、[ブロック パラメーター] ダイアログ ボックスで、[データ型][Bus: <object name>] に設定し、<object name> をバス オブジェクト名で置き換えます。

バス オブジェクトの定義前または定義後のいずれかに、ブロックのデータ型にするバス オブジェクトを指定できます。ただし、モデルをシミュレートする前に、バス オブジェクトと対応するバス信号に、同じ数のバス要素が同じ順序で含まれていなければなりません。また、モデル内のバス オブジェクトと対応する信号の各バス要素は同じ属性をもたなければなりません。

モデルの開発中に、バス信号を変更してバス オブジェクトと一致させるか、バス オブジェクトを変更してバスと一致させることができます。

バス オブジェクトを変更しない場合は、次を実行できます。

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

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

バス オブジェクトの保存

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

場所ファイルの作成方法ファイルの内容

データ ディクショナリ

Simulink データ ディクショナリを使用するモデルの移行を参照してください。モデルで使用されるバス オブジェクトとその他のベース ワークスペース変数

MATLAB ファイル

関数バス エディターまたは Simulink.Bus.save を使用します。バス オブジェクト

MAT ファイル

バス エディターを使用します。バス オブジェクト

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

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

バス オブジェクト

MATLAB 外の場所に対して書き込みを行うカスタム関数を指定することで、バス オブジェクトのエクスポートカスタマイズできます。たとえば、エクスポートされたバス オブジェクトをデータベースのレコードとして保存できます。詳細については、バス オブジェクトのインポートとエクスポートのカスタマイズを参照してください。

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

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

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

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

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

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

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

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

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

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

    MATLAB 外の場所から読み込みを行うカスタム関数を指定することで、バス オブジェクトのインポートをカスタマイズできます。詳細については、バス オブジェクトのインポートとエクスポートのカスタマイズを参照してください。

  • モデル コールバック — モデル コールバックで関数 load を使用して、バス オブジェクトを定義するファイルを自動的に読み込むまたは実行します。

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

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

ヒント

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

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

参考

クラス

関連するトピック