主要内容

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 的输出端口上定义总线层次结构。

  1. 打开属性检查器或双击 Out Bus Element 模块。

  2. 选择 OutBus

  3. 如果总线属性隐藏,请点击 Show attributes

  4. 数据类型属性旁边,点击 Create and assign bus objects for this bus hierarchy, compiling the model when needed

或者,要以编程方式创建总线对象,请使用 Simulink.Bus.createObject 函数。

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

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

typeeditor

Bus objects in Type Editor

基于 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 对象的名称

替代功能

要从属性检查器或端口对话框为总线元素端口创建并分配 Simulink.Bus 对象,请选择一个总线。在数据类型参数旁边,点击 Create and assign bus objects for this bus hierarchy, compiling the model when needed。软件会编译模型以获取在子系统接口处总线元素端口的最新总线信息。当模型使用数据字典时,软件会在数据字典中创建对象。否则,软件会在基础工作区中创建这些对象。 (自 R2026a 起)

版本历史记录

在 R2006a 之前推出

全部展开