MATLAB Function ブロックへのバス信号の付加
MATLAB Function ブロック内での構造体
この例では、MATLAB Function ブロックで構造体を使用して、Simulink® バス信号を読み書きする方法を示します。
このモデルでは、MATLAB Function ブロックがバス信号を構造体 inbus
を使って入力端子 1 で受け取ります。ブロックは、出力端子 1 の構造体 outbus
と、出力端子 2 の構造体 outbus1
の 2 つのバス信号を出力します。入力信号は、Bus Creator ブロック MainBusCreator
からのもので、そこで信号 ele1
、ele2
および ele3
が 1 つにまとめられています。信号 ele3
は別の Bus Creator ブロック SubBusCreator
の出力で、信号 a1
および a2
が 1 つにまとめられています。構造体 outbus
および outbus1
は、Bus Selector ブロックに接続し、その後 Display ブロックに接続します。
MATLAB 関数 fcn
を確認するには、MATLAB Function ブロックをダブルクリックします。コードは、関数 struct
を使ってローカル構造体変数 mystruct
を暗黙的に定義し、このローカル構造体変数を使って最初の出力 outbus
の値を初期化することに注意してください。2 番目の出力 outbus1
はそれによって構造体 inbus
の ele3
フィールドの値に初期化されます。
例の中の構造体の定義
[シンボル] ペインとプロパティ インスペクターに表示されるように、例の中の MATLAB Function ブロックには次のような構造体の定義があります。
バス オブジェクトが定義する構造体の入力と出力
構造体の各入力と出力は、ベース ワークスペース内の Simulink.Bus
オブジェクトによって定義されている必要があります。MATLAB Function ブロック内での構造体の作成を参照してください。これは、構造体がバス オブジェクトと同じプロパティ (フィールドの数、名前、データ型、シーケンスなど) を共有することを意味します。この例では、次のバス オブジェクトが構造体の入力と出力を定義します。
Simulink.Bus
オブジェクト MainBus
が構造体の入力 inbus
と構造体の出力 outbus
を定義します。Simulink.Bus
オブジェクト SubBus
が構造体の出力 outbus1
を定義します。これらの定義に基づいて、inbus
と outbus
は MainBus
と同じプロパティをもち、ドット表記を使って MainBus
内のフィールドと同じ名前でフィールドを参照します (サブ構造体とフィールドのインデックス付けを参照)。同様に、outbus1
はそのフィールドを SubBus
のフィールドと同じ名前で参照します。この例の各構造体のフィールド参照を下に示します。
構造体 | 最初のフィールド | 2 番目のフィールド | 3 番目のフィールド |
---|---|---|---|
inbus | inbus.ele1 | inbus.ele2 | inbus.ele3 |
outbus | outbus.ele1 | outbus.ele2 | outbus.ele3 |
outbus1 | outbus1.a1 | outbus1.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;
データ ストア メモリ変数のプロパティは、[シンボル] ペイン、プロパティ インスペクター、またはモデル エクスプローラーで調整できます。