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

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

バスは Simulink.Bus オブジェクトと関連付けることができます。このオブジェクトは、バスを検証するために Simulink® が使用するプロパティを指定します。Bus オブジェクトは、バーチャル バスではオプションですが、非バーチャル バスでは必須です。

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

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

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

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

Simulink.Bus オブジェクトを使用するかどうかの判定

Simulink.Bus オブジェクトの使用が必要な場合

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

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

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

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

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

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

Simulink.Bus オブジェクトをオプションで使用する場合

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

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

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

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

Simulink.Bus オブジェクトの管理方法の決定

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

  • データ ディクショナリ

  • 関数

  • MAT ファイル

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

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

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

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

データ ディクショナリ

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

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

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

関数

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

MAT ファイル

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

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

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

Simulink.Bus オブジェクトの作成と指定

Bus オブジェクトを対話的に作成または編集するために、バス エディターまたはモデル エクスプローラーを使用します。これらのツールで作成された Bus オブジェクトは最初にベース ワークスペースまたはデータ ディクショナリに保存されます。バス階層を可視化してインポートやエクスポートなどの機能にアクセスするには、バス エディターを使用します。多くの Bus オブジェクトがある場合または Bus オブジェクトが複数の場所に格納されている場合は、モデル エクスプローラーを使用します。モデル エクスプローラーは、Bus オブジェクトの数に関係なく起動が迅速であり、ベース ワークスペースとデータ ディクショナリでの Bus オブジェクトの編集を容易に切り替えることができます。

Bus オブジェクトをプログラムで作成および編集するには、プログラムによるバス オブジェクトの作成を参照します。Bus オブジェクトは最初にベース ワークスペースまたは関数のいずれかに保存されます。

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

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

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

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

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

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

Simulink.Bus オブジェクトの保存

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

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

データ ディクショナリ

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

関数

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

MAT ファイル

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

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

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

Bus オブジェクト

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ヒント

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

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

参考

クラス

関連するトピック