Main Content

Simulink.Bus.createObject

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

説明

busInfo = Simulink.Bus.createObject(mdl,busSource) は、mdl で指定されたモデル内の busSource で指定されたバスの Simulink.Bus オブジェクトを作成します。関数は作成されたオブジェクトについての情報を返します。

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

busInfo = Simulink.Bus.createObject(S) は、S で指定された構造体から Simulink.Bus オブジェクトを作成します。構造体には、MATLAB® timeseries オブジェクト、MATLAB timetable オブジェクト、および matlab.io.datastore.SimulationDatastore オブジェクトを含めることができます。構造体は数値構造体でもかまいません。

関数はベース ワークスペース内にオブジェクトを作成します。

busInfo = Simulink.Bus.createObject(___,file) は、Simulink.Bus オブジェクトの定義を関数内に保存します。関数の名前は file で指定します。

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

busInfo = Simulink.Bus.createObject(___,file,fileFormat) は、fileFormat"object" の場合、Simulink.Bus オブジェクトの定義を配列を使用して保存します。"object" 形式を使用すると、関数が読みやすくなります。fileFormat の既定の設定は cell 配列を使用する "cell" であり、こちらの方がコンパクトになります。

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

すべて折りたたむ

複数レベルの階層をもつバスを作成する Bus Creator ブロックから Simulink.Bus オブジェクトを作成します。

BusHierarchy という名前のモデル例を開きます。

mdl = "BusHierarchy";
open_system(mdl)

BusHierarchy model with two Bus Creator blocks

Bus Creator1 という名前の Bus Creator ブロックから Simulink.Bus オブジェクトを作成します。このブロックは、ソース ブロックおよび別の Bus Creator ブロックから入力を受け取ります。

block = "BusHierarchy/Bus Creator1";
busInfo = Simulink.Bus.createObject(mdl,block);

このコマンドにより、TopBus および NestedBus という名前の Simulink.Bus オブジェクトがベース ワークスペース内に作成されます。それぞれのバス オブジェクトがバス階層内のバスを表します。

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

typeeditor

TopBus and NestedBus in the Type Editor

Out Bus Element ブロックで表されるバス要素端子から Simulink.Bus オブジェクトを作成します。

BusOutput という名前のモデル例を開きます。

mdl = "BusOutput";
open_system(mdl)

BusOutput model

出力バスに複数レベルの階層があります。最上位のバスに入れ子にされたバスが含まれています。

OutBus という名前の出力端子のバス階層を定義する Simulink.Bus オブジェクトを作成します。

port = "BusOutput/OutBus";
busInfo = Simulink.Bus.createObject(mdl,port);

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

typeeditor

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

BusHierarchy という名前のモデル例を開きます。

mdl = "BusHierarchy";
open_system(mdl);

BusHierarchy model with two Bus Creator blocks

Bus Creator1 という名前の Bus Creator ブロックから Simulink.Bus オブジェクトを作成します。このブロックは、ソース ブロックおよび別の Bus Creator ブロックから入力を受け取ります。Simulink.Bus オブジェクトの定義を関数内に保存するには、ファイル名も指定します。

block = "BusHierarchy/Bus Creator1";
file = "BusObjectFunction";
busInfo = Simulink.Bus.createObject(mdl,block,file);

これらのコマンドにより、TopBus および NestedBus という名前の Simulink.Bus オブジェクトがベース ワークスペース内に作成され、BusObjectFunction という名前のファイルが現在のフォルダー内に作成されます。

ファイルの内容を調べるには、ファイルを開きます。既定では、"cell" 形式がファイルで使用されます。たとえば、cell 配列で Chirp 要素が定義されています。

{'Chirp', 1, 'double', 'real', 'Sample', 'Fixed', [], [], '', ''};

読みやすさを考慮して書式設定されたファイルにするには、ファイルの形式を "object" として指定します。

file1 = "BusObjectFunctionFormatted";
busInfo1 = Simulink.Bus.createObject(mdl,block,file1,"object");

ファイルの内容を調べるには、ファイルを開きます。"object" 形式では、ドット表記を使用してプロパティ値を割り当てる配列によって Chirp 要素が定義されています。

elems(1) = Simulink.BusElement;
elems(1).Name = 'Chirp';
elems(1).Dimensions = 1;
elems(1).DimensionsMode = 'Fixed';
elems(1).DataType = 'double';
elems(1).Complexity = 'real';
elems(1).Min = [];
elems(1).Max = [];
elems(1).DocUnits = '';
elems(1).Description = '';

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];

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

busInfo = Simulink.Bus.createObject(bus_struct);

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

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

typeeditor

Simulink.Bus objects named slBus1, A, C, and C2 in the Type Editor

入力引数

すべて折りたたむ

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

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

バス定義のソース。文字ベクトル、string スカラー、ブロック パスの cell 配列、またはブロック ハンドルのベクトルとして指定します。

この関数は、次のソースのバスから Simulink.Bus オブジェクトを作成できます。

  • Bus Creator ブロック

  • In Bus Element ブロックで表される入力端子

  • Out Bus Element ブロックで表される出力端子

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

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

バスに階層がある場合、関数はバス階層内の入れ子にされたバスについて Simulink.Bus オブジェクトを作成します。

Bus Creator ブロック、Inport ブロック、または Outport ブロックのバスを指定するには、対応するブロックのパスまたはハンドルを使用します。

例: Simulink.Bus.createObject(mdl,"BusHierarchy/Bus Creator") では、ブロック パスで 1 つのバス ソースを指定しています。

例: Simulink.Bus.createObject(mdl,{'BusHierarchy/Bus Creator','BusHierarchy/Bus Creator1'}) では、ブロック パスの cell 配列で複数のバス ソースを指定しています。

例: Simulink.Bus.createObject(mdl,[bc bc1]) では、ブロック ハンドルのベクトルで複数のバス ソースを指定しています。

In Bus Element ブロックまたは Out Bus Element ブロックで表される端子のバスを指定するには、端子または要素のパスを使用します。端子の場合、パスはモデル名と端子名で構成されます。端子の要素の場合は、モデル名、端子名、および 1 つ以上の要素名でパスが構成されます。

例: Simulink.Bus.createObject(mdl,"BusOutput/OutBus") では、ルートレベルのバス要素端子の最上位のバスを指定しています。

例: Simulink.Bus.createObject(mdl,"BusOutput/OutBus.NestedBus") では、ルートレベルのバス要素端子の入れ子にされたバスを指定しています。

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

階層をもつ構造体を指定すると、この関数は階層内の各構造体について Simulink.Bus オブジェクトを作成します。

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

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

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

  1. バス名

  2. ヘッダー ファイル

  3. 説明

  4. データ スコープ

  5. 配置

  6. 要素の次元を保持

  7. 要素

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

  1. 要素名

  2. 次元

  3. データ型 — このフィールドで Simulink.Bus オブジェクトが指定されている場合、仕様に接頭辞 Bus: は含まれません。この接頭辞は、Simulink.BusElement オブジェクトのデータ型を Simulink.Bus オブジェクトに設定する場合はオプションです。

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

  5. 実数/複素数

  6. サンプリング モード

  7. 次元モード

  8. 最小値

  9. 最大値

  10. 単位

  11. 説明

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

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

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

出力引数

すべて折りたたむ

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

バス ソースとしてブロックを指定する場合、busInfo 構造体配列の各要素が 1 つのブロックに対応し、次のフィールドが含まれます。

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

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

構造体またはバス要素端子のバスを指定する場合、busInfo 構造体には次のフィールドが含まれます。

  • block — 空行列 ([])

  • busName — 構造体またはバスに対応する Simulink.Bus オブジェクトの名前

バージョン履歴

R2006a より前に導入

すべて展開する