Main Content

MATLAB Function ブロックへのバスの付加

MATLAB Function は Simulink® バスを取得および出力できます。バスを MATLAB Function ブロックに接続すると、ブロックはその信号を構造体に関連付けます。MATLAB Function ブロックでの構造体の作成の詳細については、MATLAB Function ブロック内での構造体の作成を参照してください。バス データを Data Store Memory ブロックから取得することもできます。バスおよび Data Store Memory ブロックの使用の詳細については、バスおよびバス配列によるデータ ストアを参照してください。

メモ

MATLAB Function ブロックは入力バーチャル バスを非バーチャル バスに変換し、非バーチャル バスのみを出力します。

MATLAB Function ブロックを使用したバスの読み書き

この例では、MATLAB Function ブロックで構造体を使用して、Simulink バスを読み書きします。

emldemo_bus_struct モデルを開きます。MATLAB Function ブロックの "inbus" 端子がバスに接続され、"outbus" 端子および "outbus1" 端子がバスを出力します。入力信号は、Bus Creator ブロック MainBusCreator からのもので、そこで信号 ele1ele2 および ele3 が 1 つにまとめられています。信号 ele3 は別の Bus Creator ブロック SubBusCreator の出力で、信号 a1 および a2 が 1 つにまとめられています。"outbus" 端子および "outbus1" 端子は、Bus Selector ブロックに接続し、その後 Display ブロックに接続します。

Simulink で定義された Simulink.Bus オブジェクト

この例では、MATLAB Function ブロックの各構造体は Simulink.Bus オブジェクトに対応している必要があります。したがって、ブロックの構造体は、割り当て先の Simulink.Bus オブジェクトと同じプロパティ (フィールドの数、名前、データ型、シーケンスなど) を共有します。このモデルは 2 つの Simulink.Bus オブジェクト、MainBusSubBus を定義します。モデルを読み込むと、バスがベース ワークスペースに読み込まれます。バスの定義およびその要素を [型エディター] で表示できます。[モデル化] タブの [設計] セクションで、[型エディター] をクリックします。型エディターで、[ビュー]Value に設定します。

モデルは Bus Creator ブロックでこれらのバスを使用します。MainBusCreatorMainBus と同じ型のバスを出力し、SubBusCreatorSubBus と同じ型のバスを出力します。

MATLAB Function ブロックでの構造体の定義

MATLAB Function ブロックを開いて関数 fcn を検証します。コードでは関数 struct を使用してローカル変数 mystruct を定義し、このローカル変数を使用して最初の出力 outbus の値を初期化します。関数は 2 番目の出力 outbus1inbusele3 フィールドの値に初期化します。

function [outbus, outbus1] = fcn(inbus)
substruct.a1 = inbus.ele3.a1;
substruct.a2 = int8([1 2;3 4]);
mystruct = struct('ele1',20.5, 'ele2', single(100), 'ele3', substruct);
outbus = mystruct;
outbus.ele3.a2 = 2*(substruct.a2);
outbus1 = inbus.ele3;

MATLAB Function ブロック内の構造体の定義を表示します。[関数] タブで、[データの編集] をクリックします。変数をクリックすると、プロパティ インスペクターにそのプロパティが表示されます。この例では、inbus はその型を継承するため、[シンボル] ペインには inbus の構造体要素は表示されません。対照的に、出力変数の [型] プロパティがバスに設定されており、[シンボル] ペインに、各変数に関連付けられているバス要素が表示されています。[シンボル] ペインで出力構造体のリストを展開すると、フィールドが表示されます。

データ ストア メモリから MATLAB Function ブロックへのバスの書き込み

この例では、データ ストアに格納されているバス データを MATLAB Function ブロックへの入力として使用する方法を示します。

Data Store Memory ブロックのバス データの取得

この例では、Bus Creator ブロック MainBusCreator[出力データ型] パラメーターが Bus: MainBus であるため、MainBus という名前のバスが作成されます。その後、Data Store Write ブロックで [データ ストア名] パラメーターを使用して、inbus という名前のデータ ストアにバス データを書き込みます。

モデルには、Data Store Write ブロックからのバス データの格納用に Data Store Memory ブロックが含まれています。Data Store Memory ブロックの [データ ストア名] パラメーターは inbus で、これは Data Store Write ブロックで定義されているデータ ストアの名前です。[データ型] パラメーターは Bus: MainBus で、MainBusCreator ブロックで指定されているデータ型です。

データ ストア メモリ変数の定義

変数内のデータ ストアを取得するために、MATLAB Function ブロックでは、[スコープ] プロパティが Data Store Memory に設定された変数を使用します。その後、関数はデータ ストアの名前 inbus を使用してグローバル変数として変数を定義します。MATLAB Function ブロックをダブルクリックしてコードを確認します。

function [outbus, outbus1] = fcn
global inbus;
substruct.a1 = inbus.ele3.a1;
substruct.a2 = int8([1 2;3 4]);
mystruct = struct('ele1',20.5, 'ele2', single(100), 'ele3', substruct);
outbus = mystruct;
outbus.ele3.a2 = 2*(substruct.a2);
outbus1 = inbus.ele3;

データ ストア メモリ変数のプロパティは、[シンボル] ペイン、プロパティ インスペクター、またはモデル エクスプローラーで調整できます。

関連するトピック