文档

初始化信号和离散状态

关于初始化

请注意

有关初始化总线信号的信息,请参见指定总线信号的初始条件

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

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

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

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

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

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

  • 使用模型数据编辑器(视图>模型数据编辑器).使用此技术可使用可搜索、可排序的表配置多个信号和状态。要初始化块状态或数据存储,可以使用适当的选项卡(数据存储).初始化信号、状态或数据存储,可以使用参数选项卡并查找与相关块参数对应的行。

    有关模型数据编辑器的更多信息,请参见使用模型数据编辑器配置数据属性

  • 使用物业检查主任(视图>模型数据编辑器).使用此技术一次配置一个信号或状态。选择保持目标状态或产生目标信号的块,找到相关块参数。

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

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

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

您可以使用具有非存储类的信号对象“汽车”或者,当您将相应数据类别的默认存储类设置为时默认的(默认设置),“模型默认”初始化:

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

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

要指定初始值,请使用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将使用signal对象指定的值来初始化信号或万博1manbetx状态。如果您将参数设置为任何其他值,Simulink将参数值与信号对象值进行比较,如果它们不同,万博1manbetx则显示错误。

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

经典的初始化模式:在此模式下,表示以下信号和状态的信号对象的初始值设置如果未定义(指定为)将覆盖相应的块参数初始值[]):

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

  • 阻塞状态

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

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

  • 合并模块

使用信号对象调优初始值

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

例如,假设您想调优a的初始值内存块国家命名M1.为此,您可以创建一个名为M1,将其存储类设置为“ExportedGlobal”,将其初始值设置为KM1。InitialValue =“K”),K是MATLAB工作空间中的一个工作空间变量,将Memory块对应的初始条件参数设为[]避免一致性错误。然后,您可以在模拟期间的任何时候通过更改值来更改Memory块状态的初始值K,并更新框图(例如,通过输入Ctrl + D).

示例:使用信号对象初始化子系统输出

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

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

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

信号对象的初始化行为摘要

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

信号或离散状态 描述 行为
S1 根尺寸。
  • 初始化为S1。InitialValue

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

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

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

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

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

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

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

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

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

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

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

  • 如果子系统的Enable块参数,初始值也用作重置值州时启用或Outport块参数输出时禁用被设置为重置

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

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

  • 只影响代码生成。为模拟,设置初始值为S3是无关的,因为值在模型的模拟开始时被覆盖。

相关的话题

这个话题有用吗?