主要内容

初始化信号和离散状态

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. 创建信号对象。

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

    S1 = 金宝appSimulink.Signal;

    信号对象的名称必须与对象正在初始化的信号的名称相同。虽然不是必需的,但可以考虑设置信号名称必须解析为Simulink信号对象金宝app“信号属性”对话框中的。这个设置使MATLAB工作空间中的信号对象与模型中出现的信号保持一致。

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

  2. 将信号对象存储类设置为非汽车模型的默认.在模型浏览器中内容窗格中,选择信号对象。在“对话框”窗格中,设置存储类ExportedGlobal.或者,在命令提示符下使用这个命令:

    S1.CoderInfo。StorageClass =“ExportedGlobal”

  3. 设置初始值。您可以指定一个MATLAB表达式,包括一个工作空间变量的名称,该表达式的计算结果是一个数值标量值或数组。

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

    在模型资源管理器对话框中,设置初始值0.5.或者,在命令提示符下使用这个命令:

    S1。InitialValue =“0.5”

    如果您还可以使用block参数来设置信号或状态的初始值,则应该将该参数设置为空([])或与信号对象的初始值相同。如果将参数值设置为空,Simulink将使用signal对象指定的值来初始化信号或金宝app状态。如果您将参数设置为任何其他值,Simulink将参数值与信号对象值进行比较,如果它们不同,金宝app则显示错误。

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

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

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

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

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

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

  • 阻塞状态

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

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

  • 合并模块

使用信号对象调优初始值

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

相关的话题