主要内容

为总线元素指定初始条件

总线初始化是信号初始化的一种特殊形式。有关初始化信号的一般信息,请参见初始化信号和离散状态.有关初始化总线数组的详细信息,请参见初始化总线数组

总线初始化指定了Simulink的总线元素值®用于使用该总线的块的第一次执行。默认情况下,总线元素的初始值是地线值(由0).总线初始化涉及指定非零初始条件。

你可以使用总线初始化特性来:

  • 为具有不同数据类型的信号指定初始条件。

  • 为总线中的每个元素应用不同的初始条件。

  • 为总线中的元素子集指定初始条件,而不为所有元素指定初始条件。

  • 对多个块、信号或模型使用相同的初始条件。

支持总线初始化的块

你可以初始化输入到一个块的总线值,如果该块满足以下两个条件:

  • 是否有初始值或初始条件块参数

  • 支持公共汽车

这些块支持总线初始化:

  • 数据存储内存

  • 集成电路

  • 内存

  • 合并

  • 外港(当块位于有条件执行的上下文中时)

  • 收到

  • 率转换

  • 单位延迟

例如,单位延迟块是可总线的块。“块参数”对话框中有一个初始条件参数。

不能初始化具有以下条件的总线:

  • 适应信号

  • 不定位信号

将诊断设置为支持总线初始化

若要启用总线初始化,在开始模拟之前,请设置未指定初始化检测配置参数简化

创建初始条件结构

您可以创建部分或全部初始条件结构来表示总线的初始值。要创建初始条件结构,可以使用以下方法之一:

  • 定义一个MATLAB®结构在MATLAB基础或Simulink模型工作空间。可以手动定义结构,或者对于完整的结构,可以使用Simulink.Bus.createMATLABstruct函数。

  • 在支持总线初始化的块的“块参数”对话框中,为初始条件参数指定计算为结构的表达式。

有关定义MATLAB结构的信息,请参见结构数组

在初始条件结构中指定的字段必须与总线元素的这些数据属性完全匹配:

  • 的名字

  • 复杂性

例如,如果您将一个总线元素定义为实[2x2]双数组,那么在初始条件结构中,定义将该总线元素初始化为实[2x2]双数组的值。

在初始条件结构中为每个具有枚举(枚举)数据类型。

结构字段的控制数据类型

如果目标总线的任何元素使用的数据类型不是,您可以使用不同的技术来控制初始条件结构的字段的数据类型。所选择的技术可能会影响生成代码的效率和可读性。看到初始条件结构字段的控制数据类型

创建完整的初始化结构

一个完整的初始条件结构为总线的每个元素提供了一个初始值。初始条件结构反映总线层次结构并反映总线元素的属性。

在代码生成过程中指定完整的结构提供了以下优点:

  • 生成更可读的代码

  • 支持显式初始化所有信号的建模样式

使用Simulink.Bus.createMATLABStruct函数简化了完整的MATLAB初始条件结构的创建,该结构具有与总线相同的层次结构、名称和数据属性。此函数将用未指定的所有元素的底值填充这些元素。

你可以在函数中使用几种不同的输入,包括:

  • 一个仿真软件。公共汽车对象名称

  • 端口句柄数组

方法调用该函数式编辑器.选择公共汽车对象,你想为它创建一个完整的MATLAB结构。然后,单击MATLAB结构.示例请参见使用类型编辑器初始化总线和总线数组

要检测结构参数在形状(层次结构和名称)上与关联总线不一致时,可以使用Model Advisor。

  1. 建模选项卡上,单击模型的顾问

  2. 点击好吧

  3. 按照任务>使用总线建模信号和参数中,选择检查总线信号的结构参数使用情况

  4. 单击运行这个检查按钮。

    模型顾问识别部分初始条件结构。

创建结构之后,可以在MATLAB编辑器中编辑它。

为初始化创建部分结构

部分初始条件结构为总线元素的子集提供初始值。如果使用部分初始条件结构,在仿真期间,Simulink将创建一个完整的初始条件结构来表示所有总线元素。Simulink为每个元素分配各自的基础值,部分初始条件结构没有显式地为其赋值。

在创建模型的迭代过程中,为块参数值指定部分结构是有用的。部分结构使您能够专注于总线中的信号子集。当使用部分结构时,Simulink隐式初始化未指定的信号。

当你定义部分初始条件结构时:

  • 只包含总线中的字段。

  • 省略总线中的一个或多个字段。

  • 使初始条件结构中的字段对应于总线单元的嵌套级别。

  • 在结构和总线的相同嵌套级别内,可以选择以与总线元素不同的顺序指定结构字段。

请注意

初始条件结构的值必须在相应总线元件的设计最小和最大范围内。当您执行更新图或模拟模型时,Simulink执行此范围检查。

假设你有一辆公共汽车,,由三个要素组成:一个B,C,具有以下特点:

  • 一个是一个嵌套总线,具有两个信号元素。

  • B是一个单一信号。

  • C是包含bus的嵌套总线吗一个作为嵌套总线。

ex_bus_initial_conditions模型包括公共汽车。

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

初始化总线元素Top.A.A1使用价值3.

K =结构(“C”、结构(C1, int16 (4)))

公共汽车元素Top.C.C1int16.相应的结构字段显式指定int16 (4).或者,您可以将字段值指定为4不指定显式数据类型。

K =结构(' B ' 3 ' ',结构(“A1”,4))

总线的元素上面。B而且上面。一个在总线中的嵌套级别相同。对于同一嵌套级别的总线元素,对应结构字段的顺序无关紧要。

无效的部分初始条件结构

在下面的例子中,K的初始值是否指定了初始条件结构单位延迟块。初始条件结构对应于公共汽车的ex_bus_initial_conditions模型。

这三个初始条件规格是有效:

无效的语法 语法无效的原因
K.A.A2 = 3

价值维度和复杂性不匹配。公共汽车元素Top.A.A25 x1,但K.A.A21 x1Top.A.A2是复杂的,但K.A.A2是真实的。

K.C.C2 = 3

不能使用标量值初始化初始条件子结构。

K =结构(' B ' 3 ' X ', 4)

不能指定不在总线中的字段(X总线中不存在)。

使用块参数初始化总线

通过为接收总线作为输入并支持总线初始化的块设置初始条件参数来初始化总线(参见支持总线初始化的块).

的“块参数”对话框单位延迟块有一个初始条件参数。

“单元延迟块参数”对话框

对于支持总线初始化的块,可以替换的默认值0使用以下方法之一:

这三种方法都要求您定义初始条件结构(参见创建初始条件结构).不能指定非零标量值或任何其他类型的值0,初始条件结构,或仿真软件。参数对象初始化总线。

将初始条件结构定义为MATLAB变量,而不是直接在块参数对话框中指定初始条件结构,有几个优点,包括:

  • 对多个块重用初始条件结构

  • 在生成的代码中使用初始条件结构作为可调参数

MATLAB结构初始化

您可以使用MATLAB结构初始化总线,该结构显式地定义了总线的初始条件。

例如,在初始条件参数的单位延迟Block,你可以输入一个结构。

单元延迟块的“块参数”对话框,该块指定初始条件的结构

MATLAB变量初始化

可以使用MATLAB变量初始化总线,该变量定义为具有适当值的初始条件结构。

例如,你可以在基本工作区中定义以下部分结构:

K =结构(“一个”结构(“A1”3),“B”4);

然后可以指定K结构的初始条件单元延迟块参数:

单元延迟块的“块参数”对话框,该块指定初始条件的MATLAB变量

仿真软件。参数对象初始化

方法可以初始化总线仿真软件。参数对象的初始条件结构价值财产。

例如,您可以定义部分结构P在基本工作区中(反映ex_bus_initial_conditions模型在前一节中讨论):

P = Simulink.Parameter;P.DataType = '总线:Top';P.Value = Simulink.Bus.createMATLABStruct(“顶级”);P.Value.A。A1 = 3;P.Value.B = 5;

然后可以指定P结构的初始条件参数的单位延迟布洛克:

“单元延迟块参数”对话框。参数对象的初始条件

另请参阅

功能

对象

相关的话题

Baidu
map