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 timetablematlab.io.datastore.SimulationDatastore 对象的结构体创建 Bus 对象。

如果指定具有层次结构的结构体,此函数将为层次结构中的每个结构体创建 Bus 对象。

Bus 对象是在基础工作区中创建的。

示例

busInfo = Simulink.Bus.createObject(___,file)Bus 对象保存在函数中,该函数在由元胞数组构成的元胞数组中定义对象属性,然后通过调用 Simulink.Bus.cellToObject 创建 Bus 对象。

在上述语法中指定任何输入参数组合,后跟 file 参数。

示例

busInfo = Simulink.Bus.createObject(___,file,format)Bus 对象保存在具有指定格式的函数中。该函数可以使用元胞数组或数组来定义对象属性。

busInfo = Simulink.Bus.createObject(struct,file,format,scope)scope 指定的数据字典中创建 Bus 对象。

示例

全部折叠

打开示例模型。

open_system('BusObjectCreationModel')

创建与 Bus Creator 模块创建的总线对应的 Bus 对象。

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

基于两个 Bus Creator 模块创建 Bus 对象,并将 Bus 对象定义保存在一个函数中。

打开示例模型。

open_system('BusObjectCreationModel');

使用 getSimulinkBlockHandle 函数将 Bus Creator 模块的模块句柄赋给一个变量。

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

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

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

typeeditor

输入参数

全部折叠

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

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

与总线相关联的模块,指定为字符向量、模块路径名称的元胞数组或模块句柄的向量。如果有一个模块,则指定模块的完整路径名称。如果有多个模块,则指定模块路径名称元胞数组或模块句柄向量。

此函数可以基于下列模块创建 Bus 对象:

  • Bus Creator 模块

  • 子系统 Inport 模块

  • 子系统 Outport 模块

如果指定与总线层次结构关联的模块,该函数还会为该层次结构中的所有嵌套总线创建 Bus 对象。

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

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

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

'cell' 格式将 Bus 对象定义保存在由元胞数组构成的元胞数组中,并通过调用 Simulink.Bus.cellToObject 创建 Bus 对象。每个子元胞数组表示一个 Bus 对象并包含以下属性:

  1. 总线名称

  2. 头文件

  3. 描述

  4. 数据作用域

  5. 对齐

  6. 保留元素维度

  7. 元素

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

  1. 元素名称

  2. 维度

  3. 数据类型

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

  5. 复/实性

  6. 维度模式

  7. 最小

  8. 最大

  9. 单位

  10. 描述

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

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

如果 scope 为空,则该函数使用 MATLAB 基础工作区作为 Bus 对象的信源。

输出参数

全部折叠

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

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

  • block - 模块的句柄

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

当您指定 struct 时,busInfo 结构体包含以下字段:

  • block - 空矩阵 ([])

  • busName - 对应于该结构体的 Bus 对象的名称

版本历史记录

在 R2006a 之前推出

全部展开