Main Content

Simulink.Bus.createObject

ブロックまたは MATLAB 構造体からの Simulink.Bus オブジェクトの作成

説明

busInfo = Simulink.Bus.createObject(model,blocks) は、指定されたブロックの Simulink.Bus オブジェクトを作成し、作成された Bus オブジェクトについての情報を返します。

バス階層に対応するブロックを指定すると、この関数によって、階層内の各バスについて Bus オブジェクトが作成されます。

モデルでデータ ディクショナリが使用される場合、Bus オブジェクトはデータ ディクショナリに作成されます。それ以外の場合は、ベース ワークスペースに作成されます。

busInfo = Simulink.Bus.createObject(struct) は、MATLAB® timeseries、MATLAB timetable、および matlab.io.datastore.SimulationDatastore オブジェクトを含むことができる構造体または数値構造体から Bus オブジェクトを作成します。

階層をもつ構造体を指定すると、この関数によって、階層内の各構造体について Bus オブジェクトが作成されます。

Bus オブジェクトはベース ワークスペースに作成されます。

busInfo = Simulink.Bus.createObject(___,file) は、オブジェクトのプロパティを定義する関数内の Bus オブジェクトを cell 配列の cell 配列に保存し、その後 Simulink.Bus.cellToObject を呼び出して Bus オブジェクトを作成します。

前述の構文における任意の入力引数の組み合わせに続けて file 引数を指定します。

busInfo = Simulink.Bus.createObject(___,file,format) は、Bus オブジェクトを指定された形式で関数内に保存します。関数では、cell 配列または配列を使用してオブジェクトのプロパティを定義できます。

busInfo = Simulink.Bus.createObject(struct,file,format,scope) は、scope で指定されるデータ ディクショナリ内で Bus オブジェクトを作成します。

すべて折りたたむ

モデル例を開きます。

open_system('BusObjectCreationModel')

Bus Creator ブロックによって作成されたバスに対応する Bus オブジェクトを作成します。

busInfo = Simulink.Bus.createObject('BusObjectCreationModel',...
    'BusObjectCreationModel/Bus Creator');

2 つの Bus Creator ブロックから Bus オブジェクトを作成し、その Bus オブジェクト定義を関数内に保存します。

モデル例を開きます。

open_system('BusObjectCreationModel');

Bus Creator ブロックのブロック ハンドルを、関数 getSimulinkBlockHandle を使用して変数に代入します。

bc = getSimulinkBlockHandle('BusObjectCreationModel/Bus Creator');

あるいは、モデルで Bus Creator ブロックを選択し、関数gcbhを使用してそのブロック ハンドルを取得できます。

Bus Creator1 ブロックのブロック ハンドルを変数に代入します。

bc1 = getSimulinkBlockHandle('BusObjectCreationModel/Bus Creator1');

Bus オブジェクトを作成するには、ベクトル内でブロック ハンドル変数を指定します。Bus オブジェクト定義を保存するには、ファイル名も指定します。

busInfo = Simulink.Bus.createObject('BusObjectCreationModel',...
    [bc bc1], 'BusObjectFunction');

これらの Bus Creator ブロックはバス階層を作成するため、Bus Creator1 のみを指定すると、Bus オブジェクトがワークスペース内と関数内の両方に作成されます。

BusObjectFunction を、このコマンドにより作成された関数と比較します。

topBusInfo = Simulink.Bus.createObject('BusObjectCreationModel',...
    bc1, 'BusObjectFunctionFromHierarchy');

読みやすさを考慮して書式設定された関数では、関数の形式を object として指定します。

topBusInfo1 = Simulink.Bus.createObject('BusObjectCreationModel',...
    bc1, 'BusObjectFunctionFormatted','object');

Constant ブロックで非バーチャル バスを作成する場合は、[定数値] に MATLAB 構造体を指定し、[出力データ型] として Simulink.Bus オブジェクトを指定する必要があります。

この例では、他の構造体を含む構造体を作成します。

bus_struct.A.A1 = 0;
bus_struct.A.A2 = [0 + 0i;0 + 0i;0 + 0i;0 + 0i;0 + 0i];
bus_struct.B = 5;
bus_struct.C.C1 = 0;
bus_struct.C.C2.A1 = 0;
bus_struct.C.C2.A2 = [0 + 0i;0 + 0i;0 + 0i;0 + 0i;0 + 0i];

構造体に対応する Bus オブジェクトを作成します。

busInfo = Simulink.Bus.createObject(bus_struct);

この関数により 4 つの Bus オブジェクトが作成されます。slBus1 という名前の Bus オブジェクトは最上位の構造体に対応し、既定の Bus オブジェクト名を使用します。AC および C2 という名前の Bus オブジェクトは、入れ子にされた構造体に対応します。

Bus オブジェクトを表示するには、バス エディターを開きます。

buseditor

入力引数

すべて折りたたむ

モデルの名前またはハンドル。文字ベクトルとして指定します。

指定するモデルは正常にコンパイルされている必要があります。

バスに関連付けられたブロック。文字ベクトル、ブロックのパス名の cell 配列、またはブロック ハンドルのベクトルとして指定します。ブロックが 1 つの場合は、ブロックの絶対パス名を指定します。ブロックが複数ある場合は、ブロックのパス名の cell 配列またはブロック ハンドルのベクトルのいずれかを指定します。

関数は、次のブロックから Bus オブジェクトを作成できます。

  • Bus Creator ブロック

  • サブシステム Inport ブロック

  • サブシステム Outport ブロック

バスの階層構造に関連付けられたブロックを指定する場合、関数は階層内の入れ子にされたすべてのバスについても Bus オブジェクトを作成します。

オブジェクトの構造体または数値構造体。MATLAB timeseries、MATLAB timetable、および matlab.io.datastore.SimulationDatastore オブジェクト、または数値構造体を含むことができる構造体として指定します。

生成されている関数の名前。文字ベクトルとして指定します。ファイル名は一意でなければなりません。

生成されている関数の形式。'cell' または 'object' のいずれかとして指定します。'cell' 形式の方がコンパクトですが、'object' 形式の方が読みやすくなります。

'cell' 形式では、Bus オブジェクト定義を cell 配列の cell 配列に保存し、Simulink.Bus.cellToObject を呼び出して Bus オブジェクトを作成します。後続のそれぞれの cell 配列は Bus オブジェクトを表しており、次のプロパティを含んでいます。

  1. バス名

  2. ヘッダー ファイル

  3. 説明

  4. データ スコープ

  5. 配置

  6. 要素の次元を保持

  7. 要素

要素フィールドは、Bus オブジェクトが参照するそれぞれの Simulink.BusElement オブジェクトについてのこの情報を含む cell 配列です。

  1. 要素名

  2. 次元

  3. データ型

  4. サンプル時間 — サンプル時間が継承されていないと、cell 配列にこのフィールドが含まれます。サンプル時間が継承されていないと、モデルのコンパイル中にエラーが発生します。詳細については、Simulink.BusElement オブジェクトで SampleTime プロパティはサポートされなくなるを参照してください。

  5. 実数/複素数

  6. 次元モード

  7. 最小値

  8. 最大値

  9. 単位

  10. 説明

'object' 形式では、Bus オブジェクト定義は配列として保存されます。関数は、配列インデックス付けを使用して配列の要素にアクセスし、ドット表記を使用してプロパティ値を割り当てます。

データ ディクショナリ。Simulink.data.Dictionary オブジェクトとして指定します。この引数を使用する前に、関数 Simulink.data.dictionary.create や関数 Simulink.data.dictionary.open を使用してディクショナリを Simulink.data.Dictionary オブジェクトで表しておきます。

scope が空の場合、関数は Bus オブジェクトのソースとして MATLAB ベース ワークスペースを使用します。

出力引数

すべて折りたたむ

バス オブジェクト情報。構造体配列として返されます。

blocks を指定する場合、busInfo 構造体配列の各要素は 1 つのブロックに対応し、次のフィールドがあります。

  • block — ブロックのハンドル

  • busName — ブロックに関連付けられている Bus オブジェクトの名前

struct を指定する場合、busInfo 構造体には次のフィールドがあります。

  • block — 空行列 ([])

  • busName — 構造体に対応する Bus オブジェクトの名前

バージョン履歴

R2006a より前に導入

すべて展開する

R2020b 以降はエラー