Simulink.Bus.createObject
从模块或 MATLAB 结构体创建 Simulink.Bus
对象
语法
说明
(其中 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
对象
基于 Bus Creator 模块创建 Simulink.Bus
对象,该模块创建一个具有多级层次结构的总线。
打开名为 BusHierarchy
的示例模型。
mdl = "BusHierarchy";
open_system(mdl)
基于名为 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
基于总线元素端口创建 Simulink.Bus
对象
基于总线元素端口创建 Simulink.Bus
对象,这些对象由 Out Bus Element 模块表示。
打开名为 BusOutput
的示例模型。
mdl = "BusOutput";
open_system(mdl)
输出总线有多级层次结构。顶层总线包含一个嵌套总线。
创建 Simulink.Bus
对象,这些对象在名为 OutBus
的输出端口上定义总线层次结构。
port = "BusOutput/OutBus";
busInfo = Simulink.Bus.createObject(mdl,port);
要查看这些对象,请打开类型编辑器。
typeeditor
在函数中创建并保存 Simulink.Bus
对象
基于 Bus Creator 模块创建 Simulink.Bus
对象,并将 Simulink.Bus
对象定义保存在一个函数中。
打开名为 BusHierarchy
的示例模型。
mdl = "BusHierarchy";
open_system(mdl);
基于名为 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"
格式。例如,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 = '';
从 MATLAB 结构体创建 Simulink.Bus
对象
当您使用 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
的对象对应于顶层结构体,并使用默认名称。名为 A
、C
和 C2
的对象对应于嵌套结构体。
要查看这些对象,请打开类型编辑器。
typeeditor
输入参数
mdl
— 模型名称或句柄
字符向量 | 字符串标量
模型名称或句柄,指定为字符向量或字符串标量。
您指定的模型必须编译成功。
busSource
— 总线定义的来源
字符向量 | 字符串标量 | 由模块路径组成的元胞数组 | 由模块句柄组成的向量
总线定义的源,指定为字符向量、字符串标量、模块路径的元胞数组或模块句柄向量。
此函数可以从在以下源上的总线创建 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")
通过模块路径指定一个总线信源。
示例: Simulink.Bus.createObject(mdl,{'BusHierarchy/Bus Creator','BusHierarchy/Bus Creator1'})
通过模块路径的元胞数组指定多个总线信源。
示例: Simulink.Bus.createObject(mdl,[bc bc1])
通过模块句柄向量指定多个总线信源。
要在由 In Bus Element 或 Out Bus Element 模块表示的端口上指定总线,请使用端口或元素的路径。对于端口,路径由模型名称和端口名称组成。对于端口的元素,路径由模型名称、端口名称和一个或多个元素名称组成。
示例: Simulink.Bus.createObject(mdl,"BusOutput/OutBus")
指定根级总线元素端口的顶层总线。
示例: Simulink.Bus.createObject(mdl,"BusOutput/OutBus.NestedBus")
指定根级总线元素端口的嵌套总线。
S
— 对象结构体或数值结构体
MATLAB timeseries
、MATLAB timetable
和 matlab.io.datastore.SimulationDatastore
对象的结构体 | 数值结构体
对象结构体或数值结构体,指定为其中可以包含 MATLAB timeseries
、MATLAB timetable
和 matlab.io.datastore.SimulationDatastore
对象的结构体或数值结构体。
当您指定具有层次结构的结构体时,此函数将为层次结构中的每个结构体创建 Simulink.Bus
对象。
file
— 要生成的函数的名称
字符向量 | 字符串标量
要生成的函数的名称,指定为字符向量或字符串标量。文件名必须唯一。
fileFormat
— 要生成的函数的格式
"cell"
(默认) | "object"
要生成的函数的格式,指定为 "cell"
或 "object"
。"cell"
格式更紧凑,但 "object"
格式更易于读取。
"cell"
格式用元胞数组的元胞数组定义 Simulink.Bus
对象,并通过调用 Simulink.Bus.cellToObject
创建这些对象。每个子元胞数组表示一个 Simulink.Bus
对象并包含以下属性:
总线名称
头文件
描述
数据作用域
对齐
保留元素维度
元素
元素字段是一个元胞数组,该元胞数组包含 Simulink.Bus
对象引用的每个 Simulink.BusElement
对象的信息:
元素名称
维度
数据类型 - 当此字段指定
Simulink.Bus
对象时,设定不包括Bus:
前缀。当您将Simulink.BusElement
对象的数据类型设置为Simulink.Bus
对象时,此前缀是可选的。采样时间 - 当采样时间未继承时,元胞数组包含此字段。非继承的采样时间会在模型编译期间导致错误。有关详细信息,请参阅 Simulink.BusElement 对象不再支持 SampleTime 属性。
复/实性
采样模式
维度模式
最小
最大
单位
描述
"object"
格式用数组定义 Simulink.Bus
对象。该函数使用数组索引来访问数组元素,并使用圆点表示法为属性赋值。
scope
— 要包含对象的数据字典
Simulink.data.Dictionary
对象
数据字典,指定为 Simulink.data.Dictionary
对象。在使用此参量之前,请使用 Simulink.data.dictionary.create
或 Simulink.data.dictionary.open
等函数通过 Simulink.data.Dictionary
对象来表示字典。
当 scope
为空时,该函数使用 MATLAB 基础工作区作为 Simulink.Bus
对象的信源。
输出参量
busInfo
— 总线对象信息
结构体数组
总线对象信息,以结构体数组形式返回。
当您将模块指定总线信源为时,busInfo
结构体数组的每个元素对应于一个模块,并且包含以下字段:
block
- 模块的句柄busName
- 与模块关联的Simulink.Bus
对象的名称
当您在总线元素端口上指定结构体或总线时,busInfo
结构体包含以下字段:
block
- 空矩阵 ([]
)busName
- 对应于该结构体或总线的Simulink.Bus
对象的名称
版本历史记录
在 R2006a 之前推出R2024a: 从总线元素端口创建对象
在总线元素端口上基于总线创建 Simulink.Bus
对象。有关详细信息,请参阅 busSource
。
R2020b: Simulink.BusElement
对象不再支持 SampleTime
属性
不再支持 Simulink.BusElement
对象的 SampleTime
属性。
指定采样时间的 BusElement
对象会在编译期间导致错误。要从 BusElement
对象中删除采样时间设定,请将其 SampleTime
设置为 -1
。
Simulink.Bus.cellToObject
继续接受为总线元素指定采样时间的元胞数组。Simulink.Bus.objectToCell
、Simulink.Bus.save
和 Simulink.Bus.createObject
继续返回包含非继承采样时间的元胞数组或数组。当继承采样时间 (-1
) 时,这些函数会忽略它。同样,类型编辑器和模型资源管理器在继承时会忽略采样时间。
要指定总线元素的采样时间,请使用对应模块的 SampleTime
模块参数。例如,您可以使用 In Bus Element、Out Bus Element 和 Signal Specification 模块来指定采样时间。
R2016b: Simulink.BusElement
对象将不再支持 SamplingMode
属性
Simulink.BusElement
对象的 SamplingMode
属性已删除。使用 Simulink.BusElement
对象的 SamplingMode
属性的脚本继续工作。Simulink.Bus.cellToObject
函数仍需要 SamplingMode
字段。Simulink.Bus.objectToCell
函数继续在输出元胞数组中包含采样模式。当您将 Simulink.Bus
对象定义保存到使用元胞数组的函数中时,元胞数组将继续包含采样模式。
在以后的版本中,将不再支持 SamplingMode
属性。
要指定信号基于采样还基于帧,请在模块级别(而不是在信号级别)定义输入信号的采样模式。
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)