このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
Simulink® の非バーチャル バスは C コードの構造体に似ています。生成された C コードでバス データを構造体としてパッケージ化するには、非バーチャル バスを使用します。
また、以下を行う場合は非バーチャル バスを使用しなければなりません。
バス配列の構成。
S-Function を介した外部コードとのインターフェイス接続。
バス データが MATLAB Function ブロックまたは Stateflow® チャートの境界を越えるように設定。
Scope ブロックを含むバスを表示し、ログに記録。
非バーチャル バスを作成するには、次の処理を実行しなければなりません。
Simulink.Bus
オブジェクトをこのバスのデータ型として指定する。[データ型] を [バス: <object name>]
に設定します。ここで、<object name>
は Bus
オブジェクトの名前です。
ブロックの出力が非バーチャル バスであることを指定します。[非バーチャル バスとして出力] を選択するか、Outport ブロックの場合は、[親モデル内の非バーチャル バスとして出力] を選択します。
非バーチャル バス入力のすべての信号で同じサンプル時間を使用しなければなりません。詳細については、非バーチャル バスのサンプル時間の変更を参照してください。
非バーチャル バスを含むモデルをシミュレーションするには、参照 Bus
オブジェクトがベース ワークスペースまたはデータ ディクショナリになければなりません。Bus
オブジェクトを定義するか、既に定義されている Bus
オブジェクトを使用しなければなりません。モデルのコールバックは、必要な Bus
オブジェクトを読み込むことができます。
非バーチャル バスを作成する方法は、バスの場所によって異なります。
基本ステップに集中するために、これらの例はシンプルです。ただし、バスは、多くの信号を結合する場合に最も役立ちます。
この例では、非バーチャル バスを出力するために 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 は対応するバス TopBus
と NestedBus
の名前が付いた 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 ブロックのあらかじめ構成されたバージョンです。
ライン スタイルで非バーチャル バスを特定するには、モデルをシミュレーションします。