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 timetablematlab.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",它使用元胞数组并且更加紧凑。

示例

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

此命令在基础工作区中创建名为 TopBusNestedBusSimulink.Bus 对象。每个总线对象表示总线层次结构中的一个总线。

要查看 Simulink.Bus 对象,请打开类型编辑器。

typeeditor

TopBus and NestedBus in the Type Editor

基于总线元素端口创建 Simulink.Bus 对象,这些对象由 Out Bus Element 模块表示。

打开名为 BusOutput 的示例模型。

mdl = "BusOutput";
open_system(mdl)

BusOutput model

输出总线有多级层次结构。顶层总线包含一个嵌套总线。

创建 Simulink.Bus 对象,这些对象在名为 OutBus 的输出端口上定义总线层次结构。

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

这些命令在基础工作区中创建名为 TopBusNestedBusSimulink.Bus 对象,并在当前文件夹中创建名为 BusObjectFunction 的文件。

要检查文件内容,请打开文件。默认情况下,该文件使用 "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);

该函数创建四个 Simulink.Bus 对象。名为 slBus1 的对象对应于顶层结构体,并使用默认名称。名为 ACC2 的对象对应于嵌套结构体。

要查看这些对象,请打开类型编辑器。

typeeditor

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

输入参数

全部折叠

模型名称或句柄,指定为字符向量或字符串标量。

您指定的模型必须编译成功。

总线定义的源,指定为字符向量、字符串标量、模块路径的元胞数组或模块句柄向量。

此函数可以从在以下源上的总线创建 Simulink.Bus 对象:

  • Bus Creator 模块

  • In Bus Element 模块表示的输入端口

  • Out Bus Element 模块表示的输出端口

  • 子系统 Inport 模块

  • 子系统 Outport 模块

当总线具有层次结构时,该函数也会为总线层次结构中的嵌套总线创建 Simulink.Bus 对象。

要在 Bus CreatorInportOutport 模块上指定总线,请使用对应的模块路径或句柄。

示例: Simulink.Bus.createObject(mdl,"BusHierarchy/Bus Creator") 通过模块路径指定一个总线信源。

示例: Simulink.Bus.createObject(mdl,{'BusHierarchy/Bus Creator','BusHierarchy/Bus Creator1'}) 通过模块路径的元胞数组指定多个总线信源。

示例: Simulink.Bus.createObject(mdl,[bc bc1]) 通过模块句柄向量指定多个总线信源。

要在由 In Bus ElementOut Bus Element 模块表示的端口上指定总线,请使用端口或元素的路径。对于端口,路径由模型名称和端口名称组成。对于端口的元素,路径由模型名称、端口名称和一个或多个元素名称组成。

示例: Simulink.Bus.createObject(mdl,"BusOutput/OutBus") 指定根级总线元素端口的顶层总线。

示例: Simulink.Bus.createObject(mdl,"BusOutput/OutBus.NestedBus") 指定根级总线元素端口的嵌套总线。

对象结构体或数值结构体,指定为其中可以包含 MATLAB timeseries、MATLAB timetablematlab.io.datastore.SimulationDatastore 对象的结构体或数值结构体。

当您指定具有层次结构的结构体时,此函数将为层次结构中的每个结构体创建 Simulink.Bus 对象。

要生成的函数的名称,指定为字符向量或字符串标量。文件名必须唯一。

要生成的函数的格式,指定为 "cell""object""cell" 格式更紧凑,但 "object" 格式更易于读取。

"cell" 格式用元胞数组的元胞数组定义 Simulink.Bus 对象,并通过调用 Simulink.Bus.cellToObject 创建这些对象。每个子元胞数组表示一个 Simulink.Bus 对象并包含以下属性:

  1. 总线名称

  2. 头文件

  3. 描述

  4. 数据作用域

  5. 对齐

  6. 保留元素维度

  7. 元素

元素字段是一个元胞数组,该元胞数组包含 Simulink.Bus 对象引用的每个 Simulink.BusElement 对象的信息:

  1. 元素名称

  2. 维度

  3. 数据类型 - 当此字段指定 Simulink.Bus 对象时,设定不包括 Bus: 前缀。当您将 Simulink.BusElement 对象的数据类型设置为 Simulink.Bus 对象时,此前缀是可选的。

  4. 采样时间 - 当采样时间未继承时,元胞数组包含此字段。非继承的采样时间会在模型编译期间导致错误。有关详细信息,请参阅 Simulink.BusElement 对象不再支持 SampleTime 属性

  5. 复/实性

  6. 采样模式

  7. 维度模式

  8. 最小

  9. 最大

  10. 单位

  11. 描述

"object" 格式用数组定义 Simulink.Bus 对象。该函数使用数组索引来访问数组元素,并使用圆点表示法为属性赋值。

数据字典,指定为 Simulink.data.Dictionary 对象。在使用此参量之前,请使用 Simulink.data.dictionary.createSimulink.data.dictionary.open 等函数通过 Simulink.data.Dictionary 对象来表示字典。

scope 为空时,该函数使用 MATLAB 基础工作区作为 Simulink.Bus 对象的信源。

输出参量

全部折叠

总线对象信息,以结构体数组形式返回。

当您将模块指定总线信源为时,busInfo 结构体数组的每个元素对应于一个模块,并且包含以下字段:

  • block - 模块的句柄

  • busName - 与模块关联的 Simulink.Bus 对象的名称

当您在总线元素端口上指定结构体或总线时,busInfo 结构体包含以下字段:

  • block - 空矩阵 ([])

  • busName - 对应于该结构体或总线的 Simulink.Bus 对象的名称

版本历史记录

在 R2006a 之前推出

全部展开