ドキュメンテーション

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

バス エディターによるバス オブジェクトの作成

バス オブジェクトとその要素を対話形式で作成するには、Simulink® バス エディターを使用します。バス エディターを使用して作成したバス オブジェクトは MATLAB® ベース ワークスペースに格納されます。バス オブジェクトを使用するブロックをシミュレートするには、バス オブジェクトがベース ワークスペースまたはデータ ディクショナリ内になければなりません。モデルに関連付けるバス オブジェクト定義を保存するには、バス オブジェクトをベース ワークスペースから MATLAB コード ファイルまたは MAT ファイルにエクスポートします (バス オブジェクトの保存とインポートを参照)。

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

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

ヒント

この例は、バス オブジェクトの定義と使用の基本を示すシンプルなモデルです。バス オブジェクトを必要とするモデルのバス オブジェクト定義を示す例については、MATLAB Function ブロックによる非バーチャル バスの使用および sldemo_mdlref_bus を参照してください。

バス エディターを開く

モデリング タスクに応じて、次のいずれかの方法でバス エディターを開きます。

モデリング タスク方法

モデルの作成

Simulink エディターで、[編集][バス エディター] を選択します。

モデルのコンテキスト外でバス オブジェクトを作成

MATLAB コマンド ラインで「buseditor」と入力します。

モデルの調査と更新

モデル エクスプローラーのバス オブジェクトのダイアログ ボックスで [バス エディターを起動] ボタンをクリック。

バス オブジェクトの作成

モデルに 2 つのバスがあり、1 つのバスがもう 1 つのバスに入れ子にされています。

この例では、control バス信号と main バス信号に対応するバス オブジェクトを作成する方法を示します。バス オブジェクトの定義を完了してそれらのオブジェクトを使用するには、次の例の手順も実行します。

  1. ex_bus_object_tutorial.slx モデルを開きます。

  2. Simulink エディターで、[編集][バス エディター] を選択します。

  3. バス エディターで、[ファイル][Bus を追加] を選択します。

    この操作によって、既定の名前とプロパティをもつバス オブジェクトが作成されます。このオブジェクトは [階層] ペインに表示され、そのプロパティは [ダイアログ] ペインに表示されます。

  4. [名前] プロパティを使用して、バス オブジェクトの名前を指定します。モデルでのバス オブジェクトの使用方法を簡単に確認できるように、バス オブジェクトに関連付けられたバス信号を反映する名前を使用します。バルブ入力を結合するバス信号に control という名前が付けられているため、バス オブジェクトに CONTROL という名前を付けます。

  5. [説明] プロパティを使用してバス オブジェクトに関するドキュメンテーションを提供できます。「Combines two valve signals」と入力します。

  6. [適用] をクリックします。

  7. 2 つ目のバス オブジェクトを作成します。[階層] ペインで、CONTROL バス オブジェクトを選択し、ツール バーで [Bus を追加] ボタン () を選択します。

  8. [ダイアログ] ペインで、[名前]MAIN に、および [説明]Defines a bus object for a bus that contains three signals, including the control bus signal に設定します。

  9. [適用] をクリックします。

    [階層] ペインにバス オブジェクトがアルファベット順に表示されます。

バス オブジェクトを MATLAB コード ファイルまたは MAT ファイルにエクスポートせずに MATLAB を閉じないでください。そうしない場合、バス オブジェクト定義を失います。

バス オブジェクトのバス要素オブジェクトを定義するには、バス オブジェクトのバス要素の作成で説明する手順を実行します。

バス オブジェクトのバス要素の作成

この例は、バス オブジェクトの作成で作成したバス オブジェクトに基づいています。この例では、ex_bus_object_tutorial.slx モデルに対して CONTROL バス オブジェクトと MAIN バス オブジェクトのバス要素オブジェクトを定義する方法を説明します。

メモ

この例では、バス要素と対応する信号の名前が異なっており、それらが異なるエンティティであることを強調表示しています。[要素名の不一致] 診断の既定の値を [エラー] に変更する場合、すべてのプラットフォームで実行されるためには、信号名と対応するバス要素名が正確に一致しなければなりません。

また、このモデルの Bus Creator ブロックでは、[入力のバス信号名をオーバーライド] ブロック パラメーターに既定の設定を使用します。[オン] の既定設定では、バス オブジェクトのバス要素の名前ではなく、モデルの信号の信号名が伝播されます。

バス オブジェクトの定義を完了してそれらのオブジェクトを使用するには、次の例の手順も実行します。

  1. バス エディターの [階層] ペインで、CONTROL バス オブジェクトを選択します。

  2. [ファイル][BusElement を追加/挿入] を選択します。

    既定の名前とプロパティをもつ新しいバス要素が、CONTROL バス オブジェクト内に作成されます。バス要素が [階層] ペインの CONTROL バス オブジェクトの下に表示されます。

  3. [ダイアログ] ペインで、[名前]VALVE1 に設定します。この名前はバス内の一番上の信号の名前を表します。

  4. Constant ブロックに対して、[ブロック パラメーター] ダイアログ ボックスを開き、[信号属性] タブを選択します。

  5. バス エディターの [ダイアログ] ペインで、[データ型] プロパティを [double] に設定して、Constant ブロックの [出力データ型] ブロック パラメーター設定と一致させます。他のバス要素オブジェクトのプロパティには既定の設定を使用します。

  6. [適用] をクリックします。

  7. valve2 バス要素信号に対応する 2 番目のバス要素オブジェクトを作成します。[階層] ペインで、VALVE1 バス要素オブジェクトを選択し、[BusElement を追加/挿入] ボタン () をクリックします。

    バス オブジェクト名を VALVE2 に設定します。

  8. Constant1 ブロックに対して、[ブロック パラメーター] ダイアログ ボックスを開き、[信号属性] タブを選択します。

    [出力データ型][int8] です。

  9. バス エディターの [ダイアログ] ペインで、VALVE2 バス要素オブジェクトの [データ型] プロパティを [int8] に設定します。他のバス要素オブジェクトのプロパティには既定の設定を使用します。

  10. [適用] をクリックします。

  11. main バスの secondary バス要素信号に対してバス要素オブジェクトを作成します。[階層] ペインで、MAIN バス オブジェクトを選択し、[BusElement を追加/挿入] ボタンをクリックします。

  12. [名前] プロパティを SECONDARY に設定し、[データ型] プロパティを [int32] に設定して、In1 ブロック出力信号のデータ型と一致させます。[適用] をクリックします。

  13. main バスの primary バス要素信号に対してバス要素オブジェクトを作成します。[階層] ペインで、SECONDARY バス要素オブジェクトを選択し、[BusElement を追加/挿入] ボタンをクリックします。

  14. [名前] プロパティを PRIMARY に設定し、[データ型] プロパティを [boolean] に設定して、In2 ブロック出力信号のデータ型と一致させます。[適用] をクリックします。

メインのバスの 3 番目のバス要素である制御バスのバス要素オブジェクトを定義するには、バス オブジェクト定義の入れ子の手順を実行します。

バス オブジェクト定義の入れ子

バス内の信号はどれも、下位のバスを格納する別のバスとなることができます。その下位のバスもさらに下位のバスを格納することができ、深さに制限はありません。バス オブジェクトで入れ子型バスを記述するには、そのオブジェクトが提供するバス定義を入れ子にする必要があります。

どのバス オブジェクトもそのオブジェクトによって指定されたプロパティをもつデータ型を定義します。1 つのバス オブジェクト定義を別のバス オブジェクト定義の入れ子にするには、1 つのバス オブジェクトの 1 つのバス要素に、別のバス オブジェクトで定義されたデータ型を割り当てます。バス要素オブジェクトは入れ子にされたバスを表します。バス要素オブジェクトのデータ型を指定するバス オブジェクトは、入れ子にされたバス要素を定義します。

バス オブジェクトによって定義されたデータ型は、"バス型" と呼ばれます。.要素にバス型を割り当てることによってバスを入れ子にすると、不要な相互作用もなく、複数のコンテキストで同じバス定義を簡単に使用できます。

この例は、バス オブジェクトの作成およびバス オブジェクトのバス要素の作成ex_bus_object_tutorial.slx モデルに対して作成したバス オブジェクトとバス要素に基づいています。

  1. バス エディターの [階層] ペインで、PRIMARY バス要素オブジェクトを選択し、[BusElement を追加/挿入] ボタンをクリックします。

  2. [ダイアログ] ペインで、[名前] プロパティを VALVES_BUS に設定します。

  3. [データ型] プロパティに対して、[Bus: <object name>] テンプレートを使用して <object name> を、control バスに対するバス オブジェクトの名前を示す CONTROL に置き換えます。

  4. [適用] をクリックします。

    VALVES_BUS バス要素オブジェクトを展開すると、CONTROL バス オブジェクトの 2 つのバス要素オブジェクトである VALVE1VALVE2 が表示されます。

  5. この例のバス オブジェクトの定義が完了しました。バス オブジェクトを MATLAB コード ファイルにエクスポートすることを検討してください。バス エディターで、[ファイル][ファイルにエクスポート] を選択します。[エクスポート] ダイアログ ボックスで、バス オブジェクトの MAT ファイルのファイル名を指定します。

バス オブジェクトを使用して非バーチャル バスを作成するには、バス オブジェクトを使用した非バーチャル バスの作成の手順を実行します。

循環する入れ子にされたバス オブジェクト定義の回避

バス オブジェクトは必要なだけの数の異なるバス オブジェクトの入れ子にすることができるだけではなく、同じオブジェクトで必要な回数だけ何回でも入れ子にすることができます。バス オブジェクトは任意の深さの入れ子にすることができますが、バス オブジェクトを直接的または間接的にそれ自体の入れ子にすることによる循環構造を定義することはできません。

循環構造を定義すると、バス エディターでは警告が表示され、循環構造を完結する要素のデータ型が double に設定されます。[OK] をクリックして警告を閉じ、エディターの使用を続行します。

バス オブジェクトを使用した非バーチャル バスの作成

バス オブジェクトの作成の例およびそれに関連する例で定義した ex_bus_object_tutorial モデル内のバスはバーチャル バスです。これらの例で定義したバス オブジェクトを使用してバーチャル バスを非バーチャル バスに変更するには、次のようにします。

  1. Bus Creator ブロック パラメーター ダイアログ ボックスを開きます。[出力データ型]Bus: CONTROL に設定し、[非バーチャル バスとして出力] を選択します。

    メモ

    バス オブジェクトを使用すると、バスが非バーチャル バスであることを指定せずにブロックのデータ型を指定できます。非バーチャル バスではバス オブジェクトを指定しなければなりませんが、バーチャル バスの場合はオプションです。

  2. Bus Creator1 の [ブロック パラメーター] ダイアログ ボックスを開きます。[出力データ型]Bus: MAIN に設定し、[非バーチャル バスとして出力] を選択します。

  3. Bus Creator1 の後に別の Outport ブロックを追加して、それを main 信号に接続します。

  4. Out3 の [ブロック パラメーター] ダイアログ ボックスを開きます。[信号属性] タブで、[データ型]Bus: MAIN に設定し、[親モデル内の非バーチャル バスとして出力] を選択します。

ex_bus_object_tutorial_using_objects.slx モデルでは、定義したバス オブジェクトが使用されます。モデルのシミュレーションを実行すると、バスは非バーチャルになっていることが示されます。

モデルでのバス オブジェクトの定義と非バーチャル バスの使用の他の例については、MATLAB Function ブロックによる非バーチャル バスの使用を参照してください。

MATLAB Function ブロックによる非バーチャル バスの使用

MATLAB Function ブロックで構造体を出力する場合は、バス オブジェクトを使用してバス出力を定義する必要があります。ex_bus_object_matlab_func モデルでは、構造体を作成する MATLAB コードが MATLAB Function ブロックに含まれます。以下は、シミュレーション後のモデルです。

構造体の定義を参照するには、MATLAB Function ブロックをダブルクリックします。

バス エディターを開き、構造体を表すバス オブジェクト定義を展開します。

MATLAB Function のバス出力を定義するために、バス オブジェクトをどのように使用するかを確認するには、MATLAB エディターで、[データの編集] をクリックし、[y] をクリックします。出力の [タイプ]function_bus オブジェクトとして定義されています。

参考

ブロック

クラス

関連するトピック