主要内容

指定总线元素的初始条件

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

总线初始化指定Simulink的总线元素值金宝app®用于首次执行使用该总线的块。缺省情况下,总线元素的初始值是地值(表示由0).总线初始化涉及指定非零初始条件。

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

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

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

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

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

支持总线初始化的块金宝app

如果该块符合这两个条件,则可以初始化输入到块的总线值:

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

  • 金宝app支持公共汽车

这些块支持总线初始化:金宝app

  • 数据存储内存

  • 我知道了

  • 内存

  • 合并

  • 外港(当块在一个有条件执行的上下文中)

  • 收到

  • 率过渡

  • 单位延迟

例如,单位延迟块是能够的总线块。它的块参数对话框有一个初始条件范围。

您无法初始化具有:

  • 适应信号

  • 基于帧的信号

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

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

创建初始条件结构

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

  • 定义一个MATLAB®结构在MATLAB基础或Simulink模型工作空间。金宝app您可以手动定义结构,或者对于完整的结构,您可以使用金宝appsimulink.bus.creatematlabstruct.功能。

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

有关定义MATLAB结构的信息,请参阅结构阵列

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

  • 的名字

  • 尺寸

  • 复杂性

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

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

控制数据类型的结构字段

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

创建完整的初始化结构

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

在代码生成期间指定完整结构提供了这些优点:

  • 生成更可读的代码

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

使用金宝appsimulink.bus.creatematlabstruct.函数简化了具有与总线相同的层次结构、名称和数据属性的完整MATLAB初始条件结构的创建。这个函数用这些元素的底值填充所有未指定的元素。

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

  • 一个金宝appsimulink.bus.对象名称

  • 端口句柄数组

您可以从总线编辑器调用该函数。选择公共汽车对象,并为其创建完整的MATLAB结构,然后选择文件>创建MATLAB结构菜单项。

要检测结构参数在形状(层次结构和名称)上是否与相关总线不一致,请使用Model Advisor。

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

  2. 点击好吧

  3. 按照任务>使用公共汽车建模信号和参数中,选择使用总线信号检查结构参数使用

  4. 点击运行此检查按钮。

    Model Advisor识别部分初始条件结构。

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

为初始化创建部分结构

部分初始条件结构为总线的元素的子集提供初始值。如果使用部分初始条件结构,在仿真期间,Simulink会创建完整的初始条件结构以表示所有总线元素。金宝app金宝appSimulink将相应的接地值分配给部分初始条件结构未明确分配值的每个元素。

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

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

  • 只包括总线中的字段。

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

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

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

请注意

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

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

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

  • B是一个单一信号。

  • C嵌套总线是否包含总线一个作为嵌套总线。

ex_bus_initial_conditions.型号包括型号最佳公共汽车。这是模型在更新后出现的方式。

这里是一个总结最佳总线层次结构以及总线元素的数据类型、维度和复杂性。

顶部(SUB1)A1(双)A2(INT8,5X1,复合)B(双)C(SUB2)C1(INT16)C2(SUB1)A1(DOUB1)A2(INT8,5x1,复杂)

在这些例子中,K的初始值是否指定了初始条件结构单位延迟块。初始条件结构对应于最佳公共汽车在ex_bus_initial_conditions.模型。以下是一些有效的初始条件规范。

有效的语法 描述
K.A.A1 = 3

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

k = struct('c',struct('c1',int16(4)))

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

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

总线的元素top.b.top.a.在总线中处于相同的嵌套级别。对于相同嵌套级别的总线元素,相应结构字段的顺序并不重要。

无效的部分初始条件结构

在以下示例中,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在公共汽车中不存在)。

使用块参数初始化总线

通过设置块的初始条件参数来初始化总线,该块接收作为输入的总线并且支持总线初始化(请参阅金宝app支持总线初始化的块金宝app).

例如,块参数对话框单位延迟块有一个初始条件范围。

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

所有三种方法都要求您定义初始条件结构(参见创建初始条件结构).您无法指定非零标量值或除此之外的任何其他类型的值0,初始条件结构,或金宝appSimulink.Parameter.对象初始化总线。

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

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

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

马铃薯结构初始化

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

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

马铃薯变量初始化

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

例如,您可以在基础工作空间中定义以下部分结构:

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

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

金宝appSimulink.Parameter.初始化对象

类初始化总线金宝appSimulink.Parameter.使用初始条件结构的对象价值财产。

例如,您可以定义部分结构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结构的初始条件参数的单位延迟布洛克:

另请参阅

功能

对象

相关的话题