指定总线元素的初始条件
总线初始化是信号初始化的一种特殊形式。有关初始化信号的一般信息,请参见初始化信号和离散状态.有关初始化总线数组的详细信息,请参见初始化总线数组.
总线初始化指定Simulink的总线元素值金宝app®用于使用该总线的块的首次执行。默认情况下,总线元素的初始值是基础值(由0
).总线初始化涉及指定非零初始条件。
您可以使用总线初始化特性:
为具有不同数据类型的信号指定初始条件。
为总线中的每个元素应用不同的初始条件。
为总线中的元素子集指定初始条件,而不为所有元素指定初始条件。
对多个块、信号或模型使用相同的初始条件。
支持总线初始化的块金宝app
你可以初始化输入到一个块的总线值,如果该块满足以下两个条件:
有初始值或初始条件块参数
金宝app支持公共汽车
这些块支持总线初始化:金宝app
数据存储内存
集成电路
内存
合并
外港(当块在有条件执行的上下文中时)
收到
率转换
单位延迟
例如,单位延迟Block是一个支持总线的块。它的块参数对话框有一个初始条件参数。
您不能初始化具有以下条件的总线:
适应信号
不定位信号
将诊断设置为支持总线初始化金宝app
若要启用总线初始化,在开始模拟之前,请设置未指定初始化检测配置参数为简化
.
创建初始条件结构
您可以创建部分或全部初始条件结构来表示总线的初始值。要创建初始条件结构,可以使用以下方法之一:
定义MATLAB®结构在MATLAB基础或Simulink模型工作空间。金宝app可以手动定义结构,或者对于完整的结构,可以使用
金宝appSimulink.Bus.createMATLABstruct
函数。在支持总线初始化的块的“块参数”对话框中,为初始条件参数指定计算为结构的表达式。金宝app
有关定义MATLAB结构的信息,请参见结构数组.
在初始条件结构中指定的字段必须与总线元素的这些数据属性完全匹配:
的名字
维
复杂性
例如,如果您将一个总线元素定义为一个实[2x2]双数组,那么在初始条件结构中,定义值将该总线元素初始化为一个实[2x2]双数组。
在初始条件结构中为每个具有枚举(枚举
)数据类型。
控制结构字段的数据类型
如果目标总线的任何元素使用的数据类型不是双
,可以使用不同的技术来控制初始条件结构字段的数据类型。所选择的技术会影响所生成代码的效率和可读性。看到初始条件结构字段的控制数据类型.
为初始化创建完整的结构
完整的初始条件结构为总线的每个元素提供初始值。初始条件结构反映总线层次结构,并反映总线元素的属性。
在代码生成过程中指定完整的结构提供了以下优势:
生成更可读的代码
金宝app支持显式初始化所有信号的建模样式
使用金宝appSimulink.Bus.createMATLABStruct
函数简化了具有相同层次结构、名称和数据属性的完整MATLAB初始条件结构的创建。此函数将所有未指定的元素填充为这些元素的基础值。
你可以在函数中使用几种不同的输入,包括:
一个
金宝app仿真软件。公共汽车
对象名称端口句柄数组
方法调用该函数公共汽车编辑器.选择公共汽车
对象,您要为其创建完整的MATLAB结构。然后,单击MATLAB结构.有关示例,请参见使用总线编辑器初始化总线和总线数组.
要检测结构参数何时在形状(层次结构和名称)上与相关总线不一致,请使用Model Advisor。
在建模选项卡上,单击模型的顾问.
点击好吧.
下按照任务>使用总线建模信号和参数中,选择用总线信号检查结构参数的使用情况.
单击运行此检查按钮。
Model Advisor识别部分初始条件结构。
创建结构后,可以在MATLAB编辑器中编辑它。
为初始化创建部分结构
部分初始条件结构为总线的元素子集提供初始值。如果使用部分初始条件结构,则在模拟期间,Simulink将创建完整初始条件结构来表示所有总线元素。金宝app金宝appSimulink为部分初始条件结构没有显式赋值的每个元素分配相应的基础值。
在创建模型的迭代过程中,为块参数值指定部分结构是有用的。部分结构使您能够专注于总线中的信号子集。使用部分结构时,Simulink隐式初始化未指定的信号。金宝app
定义部分初始条件结构时:
只包括总线中的字段。
省略总线中的一个或多个字段。
使初始条件结构中的字段对应于总线元素的嵌套层。
在结构和总线的相同嵌套级别中,可以选择以与总线元素不同的顺序指定结构字段。
请注意
初始条件结构的值必须在相应母线单元的设计最小值和最大值范围内。金宝app当您执行更新图或模拟模型时,Simulink将执行此范围检查。
假设你有一辆公共汽车,前
,由三个要素组成:一个
,B
,C
,具有以下特点:
一个
是一个嵌套总线,有两个信号元素。B
是一个单一信号。C
是包含总线的嵌套总线吗一个
作为一个嵌套总线。
的ex_bus_initial_conditions
模型包括前
公共汽车。
这里是一个总结前
总线层次结构以及总线元素的数据类型、维度和复杂性。
Top A (sub1) A1 (double) A2 (int8, 5x1, complex) B (double) C (sub2) C1 (int16) C2 (sub1) A1 (double) A2 (int8, 5x1, complex)
在这些例子中,K
的初始值是否指定了初始条件结构单位延迟块。初始条件结构对应于前
公共汽车在ex_bus_initial_conditions
模型。这里有一些有效的初始条件说明。
有效的语法 | 描述 |
---|---|
K.a.a1 = 3 |
初始化总线元素 |
K = struct('C', 'C1',int16(4))) |
总线元素 |
K = struct('B',3,'A',struct('A1',4)) |
总线的元素 |
无效的部分初始条件结构
在下面的例子中,K
的初始值是否指定了初始条件结构单位延迟块。初始条件结构对应于前
公共汽车在ex_bus_initial_conditions
模型。
这三个初始条件说明是不有效:
无效的语法 | 语法无效的原因 |
---|---|
K.a.a2 = 3 |
价值维度和复杂性不匹配。总线元素 |
kc . c2 = 3 |
不能使用标量值初始化初始条件子结构。 |
K = struct('B',3,'X',4) |
不能指定不在总线中的字段( |
使用块参数初始化总线
通过为接收总线作为输入并支持总线初始化的块设置初始条件参数来初始化总线(参见金宝app支持总线初始化的块金宝app).
的“块参数”对话框单位延迟Block有一个初始条件参数。
对于支持总线初始化的块,可以替换的金宝app默认值0
使用以下方法之一:
所有这三种方法都要求定义初始条件结构(请参见创建初始条件结构).不能指定非零标量值或任何其他类型的值0
,初始条件结构,或金宝app仿真软件。参数
对象初始化总线。
将初始条件结构定义为MATLAB变量,而不是直接在块参数对话框中指定初始条件结构,这有几个优点,包括:
对多个块重用初始条件结构
使用初始条件结构作为生成代码中的可调参数
MATLAB初始化结构
可以使用MATLAB结构初始化总线,该结构显式地定义了总线的初始条件。
例如,在初始条件参数。单位延迟Block,你可以输入一个结构。
MATLAB初始化变量
可以使用MATLAB变量初始化总线,该变量定义为具有适当值的初始条件结构。
例如,你可以在基本工作区中定义如下的部分结构:
K = struct(“一个”结构(“A1”3),“B”4);
然后可以指定K
结构为初始条件单位延迟块参数:
金宝app仿真软件。参数
初始化对象
初始化总线可以使用金宝app仿真软件。参数
对象的初始条件结构价值
财产。
例如,您可以定义部分结构P
在基本工作空间中(反映ex_bus_initial_conditions
前一节讨论的模型):
P = 金宝appSimulink.Parameter;P.DataType = '总线:Top';P.Value = 金宝appSimulink.Bus.createMATLABStruct('Top');P.Value.A。A1 = 3;P.Value.B = 5;
然后可以指定P
结构为初始条件参数。单位延迟布洛克:
另请参阅
块
功能
金宝appSimulink.BlockDiagram.addBusToVector
|金宝appSimulink.Bus.cellToObject
|金宝appSimulink.Bus.createMATLABStruct
|金宝appSimulink.Bus.createObject
|金宝appSimulink.Bus.objectToCell
|金宝appSimulink.Bus.save