主要内容

初始化信号和离散状态

万博1manbetx®允许您指定信号和离散状态的初始值,即信号和离散状态的值在开始时间模拟的。您可以使用信号对象来指定模型中任何信号或离散状态的初始值。此外,对于某些区块,例如:外港数据存储内存,或内存,可以使用信号对象或块参数,也可以同时使用两者来指定块状态或输出的初始值。在这种情况下,Simulink万博1manbetx检查以确保信号对象指定的值和参数是一致的。有关初始化总线信号的信息,请参见指定总线元素的初始条件

在为信号或离散状态初始化指定信号对象时,或将变量指定为块参数的值时,Simulink将指定的名称解析为适当的对象或变量,如万博1manbetx符号解析

给定的信号在任何情况下最多只能与一个信号对象相关联。信号可以多次引用该对象,但每次引用都必须解析为完全相同的对象。具有完全相同属性的不同信号对象将不能满足唯一性的要求。如果模型将多个信号对象与任何信号关联,则会发生编译时错误。有关更多信息,请参见万博1manbetx仿真软件。信号合并块。

使用块参数初始化信号和离散状态

对于具有初始值或初始条件参数的块,您可以使用该参数来初始化信号。例如,下面的块参数对话框将初始条件为0的单位延迟块的信号初始化。

要访问这些块参数,请选择以下技术之一:

  • 使用模型数据编辑器(在建模选项卡上,单击模型数据编辑器),用一个可搜索、可排序的表配置多个信号和状态。若要初始化块状态或数据存储,可以使用适当的选项卡(数据存储).要初始化信号、状态或数据存储,可以使用参数TAB并找到与相关块参数对应的行。

  • 使用属性检查器(在建模选项卡,在设计,点击属性检查器)一次配置一个信号或状态。选择维持目标状态或产生目标信号的块,并找到相应的块参数。

  • 使用块参数对话框。使用这种技术可以一次配置一个信号或状态,或者并排比较几个信号或状态的配置。

有关访问块参数(包括控制信号和状态初始化的参数)的技术的更多信息,请参见设置属性和参数

使用信号对象初始化信号和离散状态

可以使用具有其他存储类的信号对象“汽车”或者,当您将相应数据类别的默认存储类设置为默认的(默认设置)在代码映射编辑器,“模型默认”初始化:

  • 带有初始条件参数的离散状态

  • 模型中的信号,除了总线信号和输出恒定值的块

要指定初始值,请使用Model Explorer或MATLAB®执行以下命令:

  1. 创建信号对象。

    在模型资源管理器工具栏上,选择添加>万博1manbetx仿真软件的信号.信号对象以默认名称出现在基本工作区中。将对象重命名为S1.或者,在命令提示符处使用此命令:

    S1 = 万博1manbetxSimulink.Signal;

    信号对象的名称必须与该对象正在初始化的信号的名称相同。虽然不是必需的,但可以考虑设置信号名称必须解析为Simulink信号对象万博1manbetx选项中的“信号属性”。此设置使MATLAB工作区中的信号对象与模型中出现的信号一致。

    考虑使用数据对象向导创建信号对象。“数据对象向导”将在模型中搜索不存在信号对象的信号。然后,您可以通过一个操作选择性地为搜索结果中列出的多个信号创建信号对象。有关数据对象向导的详细信息,请参见使用数据对象向导为模型创建数据对象

  2. 将信号对象存储类设置为汽车模型的默认.在模型资源管理器内容窗格中,选择信号对象。在“对话框”窗格中,设置存储类ExportedGlobal.或者,在命令提示符处使用此命令:

    S1.CoderInfo。StorageClass =“ExportedGlobal”

  3. 设置初始值。可以指定计算为数值标量值或数组的MATLAB表达式(包括工作区变量的名称)。

    Simu万博1manbetxlink引擎转换初始值,使类型、复杂性和维度与相应的块参数值一致。如果指定的值或表达式无效,则在更新模型时将出现错误消息。

    在“模型资源管理器对话框”窗格中,设置初始值0.5.或者,在命令提示符处使用此命令:

    S1。InitialValue =“0.5”

    如果你也可以使用block参数来设置信号或状态的初始值,你应该将参数设置为空([])或与信号对象的初始值相同的值。如果将参数值设置为空,Simulink将使用信号对象指定的值来初始化信号或状态。万博1manbetx如果将参数设置为任何其他值,Simulink将参数值与信号对象值进行比较,如果不一致则显示万博1manbetx错误。

    下面的示例显示了一个信号对象,该对象指定启用的子系统的初始输出。

    信号年代初始化为4.5。为避免一致性错误,启用的子系统的初始值外港Block必须为[]或4.5。

    如果需要信号对象及其初始值设置在Simulink会话之间保持,请参见万博1manbetx创建持久数据对象

一些初始值设置可能取决于初始化模式。有关更多信息,请参见未指定初始化检测

经典初始化模式:在这种模式下,表示以下信号和状态的信号对象的初始值设置如果未定义(指定为[]):

  • 有条件执行的子系统和Merge块的输出信号

  • 阻塞状态

简化初始化模式:在这种模式下,与以下块的输出相关联的信号对象的初始值将被忽略。取而代之的是相应块的初始值。

  • 有条件执行子系统的输出信号

  • 合并模块

使用信号对象调优初始值

万博1manbetxSimulink允许您使用信号对象作为参数对象的替代品(请参阅万博1manbetx仿真软件。参数)来调优块输出的初始值和可通过可调参数指定的状态。若要使用信号对象调优初始值,请创建与信号或状态同名的信号对象,并将信号对象初始值设置为包含MATLAB工作区中定义的变量的表达式。然后,您可以在模拟期间通过更改相应的工作空间变量的值来优化初始值。

例如,假设您想调优a的初始值内存块状态命名M1.为此,您可以创建一个名为M1,将其存储类设置为“ExportedGlobal”,将初始值设置为KM1。InitialValue =“K”),K为MATLAB工作空间中的一个工作空间变量,并设置内存[]避免一致性错误。你可以改变初始值内存的值,在模拟过程中随时改变块状态K在MATLAB命令行,并更新框图(例如,通过输入Ctrl + D).

信号对象的初始化行为总结

下面的模型和表格显示了可以初始化的不同类型的信号和离散状态,以及每种信号和状态产生的模拟行为。

信号或离散状态 描述 行为
S1 根输入端口
  • 初始化为S1。InitialValue

  • 如果你使用数据导入/导出窗格中的Configuration Parameters对话框来指定根输入的值,初始值将被覆盖,并且可能在每个时间步骤中有所不同。否则,该值保持不变。

X1 单位延迟block -具有初始条件的离散状态的块
  • 初始化为X1。InitialValue

  • 万博1manbetxSimulink检查是否X1。InitialValue匹配为块指定的初始条件,如果发生不匹配则显示错误。

  • 在第一次写入时,输出等于X1。InitialValue状态等于S1

  • 在第一次写入之后的每个时间步骤中,输出等于状态,状态更新为相等S1

  • 如果块在一个已启用的子系统中,您可以使用初始值作为子系统的重置值启用块参数启用时的状态设置为重置

X2 数据存储内存
  • 数据类型工作(DWork)向量初始化为X2。InitialValue.有关功向量的信息,请参见DWork矢量基础

  • 万博1manbetxSimulink检查是否X2。InitialValue匹配为块指定的初始条件,如果发生不匹配则显示错误。

  • 数据存储写块将覆盖该值。

S2 已启用的子系统的输出
  • 初始化为S2。InitialValue或者的值外港块。如果为同一个信号指定了多个初始值,则所有初始值必须相同。

  • 第一次写入发生在子系统启用时。输入子系统输出的块设置该值。

  • 如果是子系统,初始值也用作重置值启用块参数启用时的状态外港块参数禁用时输出设置为重置

S3 持续的信号
  • 初始化为S3。InitialValue

  • 输出值由块在每个时间步重置。

  • 仅影响代码生成。的初始值,用于模拟S3无关紧要,因为值在模型模拟开始时被覆盖。

相关的话题