このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
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
からのもので、そこで信号 ele1
、ele2
および 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
オブジェクト、MainBus
と SubBus
を定義します。モデルを読み込むと、バスがベース ワークスペースに読み込まれます。バスの定義およびその要素を [型エディター] で表示できます。[モデル化] タブの [設計] セクションで、[型エディター] をクリックします。型エディターで、[ビュー] を Value
に設定します。
モデルは Bus Creator ブロックでこれらのバスを使用します。MainBusCreator
は MainBus
と同じ型のバスを出力し、SubBusCreator
は SubBus
と同じ型のバスを出力します。
MATLAB Function ブロックでの構造体の定義
MATLAB Function ブロックを開いて関数 fcn
を検証します。コードでは関数 struct
を使用してローカル変数 mystruct
を定義し、このローカル変数を使用して最初の出力 outbus
の値を初期化します。関数は 2 番目の出力 outbus1
を inbus
の ele3
フィールドの値に初期化します。
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;
データ ストア メモリ変数のプロパティは、[シンボル] ペイン、プロパティ インスペクター、またはモデル エクスプローラーで調整できます。