Main Content

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

MATLAB Function ブロック内での構造体

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

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

MATLAB 関数 fcn を確認するには、MATLAB Function ブロックをダブルクリックします。コードは、関数 struct を使ってローカル構造体変数 mystruct を暗黙的に定義し、このローカル構造体変数を使って最初の出力 outbus の値を初期化することに注意してください。2 番目の出力 outbus1 はそれによって構造体 inbusele3 フィールドの値に初期化されます。

例の中の構造体の定義

[シンボル] ペインとプロパティ インスペクターに表示されるように、例の中の MATLAB Function ブロックには次のような構造体の定義があります。

This image shows the definitions of the structures in the MATLAB Function block in the example, as they appear in the Symbols pane and the Property Inspector.

バス オブジェクトが定義する構造体の入力と出力

構造体の各入力と出力は、ベース ワークスペース内の Simulink.Bus オブジェクトによって定義されている必要があります。MATLAB Function ブロック内での構造体の作成を参照してください。これは、構造体がバス オブジェクトと同じプロパティ (フィールドの数、名前、データ型、シーケンスなど) を共有することを意味します。この例では、次のバス オブジェクトが構造体の入力と出力を定義します。

This image shows the display of the bus object properties.

Simulink.Bus オブジェクト MainBus が構造体の入力 inbus と構造体の出力 outbus を定義します。Simulink.Bus オブジェクト SubBus が構造体の出力 outbus1 を定義します。これらの定義に基づいて、inbusoutbusMainBus と同じプロパティをもち、ドット表記を使って MainBus 内のフィールドと同じ名前でフィールドを参照します (サブ構造体とフィールドのインデックス付けを参照)。同様に、outbus1 はそのフィールドを SubBus のフィールドと同じ名前で参照します。この例の各構造体のフィールド参照を下に示します。

構造体最初のフィールド2 番目のフィールド3 番目のフィールド
inbusinbus.ele1inbus.ele2inbus.ele3
outbusoutbus.ele1outbus.ele2outbus.ele3
outbus1outbus1.a1outbus1.a2

データ ストア メモリから 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;

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

関連するトピック