Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

非バーチャル バスの作成

Simulink® の非バーチャル バスは C コードの構造体に似ています。生成された C コードでバス データを構造体としてパッケージ化するには、非バーチャル バスを使用します。

また、以下を行う場合は非バーチャル バスを使用しなければなりません。

  • バス配列の構成。

  • S-Function を介した外部コードとのインターフェイス接続。

  • バス データが MATLAB Function ブロックまたは Stateflow® チャートの境界を越えるように設定。

  • Scope ブロックを含むバスを表示し、ログに記録。

非バーチャル バスを作成するには、次の処理を実行しなければなりません。

  • Simulink.Bus オブジェクトをこのバスのデータ型として指定する。[データ型][バス: <object name>] に設定します。ここで、<object name>Bus オブジェクトの名前です。

  • ブロックの出力が非バーチャル バスであることを指定します。[非バーチャル バスとして出力] を選択するか、Outport ブロックの場合は、[親モデル内の非バーチャル バスとして出力] を選択します。

非バーチャル バス入力のすべての信号で同じサンプル時間を使用しなければなりません。詳細については、非バーチャル バスのサンプル時間の変更を参照してください。

非バーチャル バスを含むモデルをシミュレーションするには、参照 Bus オブジェクトがベース ワークスペースまたはデータ ディクショナリになければなりません。Bus オブジェクトを定義するか、既に定義されている Bus オブジェクトを使用しなければなりません。モデルのコールバックは、必要な Bus オブジェクトを読み込むことができます。

非バーチャル バスを作成する方法は、バスの場所によって異なります。

基本ステップに集中するために、これらの例はシンプルです。ただし、バスは、多くの信号を結合する場合に最も役立ちます。

Bus Creator を使用した非バーチャル バスの作成

この例では、非バーチャル バスを出力するために Bus Creator ブロックを設定する方法を示します。

バーチャル バス階層を含むモデル例を開いてシミュレーションします。

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

このモデルのバーチャル バスが Bus オブジェクトで定義されていないため、バス階層に一致する Bus オブジェクトを作成しなければなりません。もしバーチャル バスが Bus オブジェクトで定義されていたら、Bus オブジェクトを作成する必要はありません。

モデルのバスの Bus オブジェクトを作成して保存するには、関数 Simulink.Bus.createObject を使用します。他のバスを含むバスを作成する Bus Creator ブロックを指定する場合、この関数は、ブロックによって作成されたバスとすべての入れ子のバスの Bus オブジェクトを作成します。ファイル名を指定すると、Bus オブジェクトをその名前の関数に保存します。

busInfo = Simulink.Bus.createObject...
  ('NonvirtualBusCreationModel',...
  'NonvirtualBusCreationModel/Bus Creator1',...
  'NonvirtualBusCreationFunction');

ベース ワークスペースでは、Simulink は対応するバス TopBusNestedBus の名前が付いた 2 つの Bus オブジェクトを作成します。現在のフォルダーで、Simulink は NonvirtualBusCreationFunction.m という名前の関数を作成します。

作成された Bus オブジェクトを確認するには、次を入力してバス エディターを開きます。

buseditor

非バーチャル バス出力の指定

モデルで、Bus Creator1 ブロックをダブルクリックします。ダイアログ ボックスで、[出力データ型]Bus: TopBus に設定し、[非バーチャル バスとして出力] チェック ボックスを選択します。

ライン スタイルで非バーチャル バスを特定するには、モデルをシミュレーションします。

Bus Creator1 ブロック出力は非バーチャル バスですが、Bus Creator ブロック出力はバーチャル バスのままです。

Bus Creator ブロックをダブルクリックします。ダイアログ ボックスで、[出力データ型]Bus: NestedBus に設定し、[非バーチャル バスとして出力] チェック ボックスを選択します。

ライン スタイルで新しい非バーチャル バスを特定するには、モデルをシミュレーションします。

参照モデルの非バーチャル バス出力の作成

この例では、参照モデルの出力端子でバーチャル バスを非バーチャル バスに変換する方法を示します。

バーチャル バス出力を使用してモデルを参照するモデル例を開いてシミュレーションします。

モデル インターフェイスを定義するために、参照モデルの出力端子には Simulink.Bus オブジェクトがそのデータ型として存在します。参照モデルが読み込まれるときにベース ワークスペースで Bus オブジェクトを作成するために、参照モデルはコールバックを使用します。

参照モデルで、Outport ブロックをダブルクリックします。ダイアログ ボックスの [信号属性] タブで [親モデル内の非バーチャル バスとして出力] を選択し、[OK] をクリックします。

ライン スタイルを更新するには、モデルを再度シミュレーションします。

Outport ブロックへの入力はバーチャル バスのままです。

Model ブロックの出力は非バーチャル バスになりました。

バーチャル バスの非バーチャル バスへの変換

この例では、モデル内でバーチャル バスを非バーチャル バスに変換する方法を示します。

バーチャル バス出力を使用してモデルを参照するモデル例を開いてシミュレーションします。

モデル インターフェイスを定義するために、参照モデルの出力端子には Simulink.Bus オブジェクトがそのデータ型として存在します。参照モデルが読み込まれるときにベース ワークスペースで Bus オブジェクトを作成するために、参照モデルはコールバックを使用します。

バーチャル バス出力を非バーチャル バスに変換するには、Model ブロックと Outport ブロックの間に To Nonvirtual Bus ブロックを追加します。このブロックは、[出力] パラメーターが Nonvirtual bus に設定されている Signal Conversion ブロックのあらかじめ構成されたバージョンです。

ライン スタイルで非バーチャル バスを特定するには、モデルをシミュレーションします。

参考

ブロック

オブジェクト

関連するトピック