使用初始化、重置和终止函数

一些块维护它们在模拟期间使用的状态信息。例如,单位延迟块使用块的当前状态来计算下一个模拟时间步长的输出信号值。

子系统块有默认的初始化和终止例程。可以将自定义例程添加到默认例程中初始化函数终止函数块,以改变或读取块的状态。这些功能块包含:

  • 事件监听器在接收初始化或终止函数调用事件时执行组合例程的块。

  • 国作家块初始化块状态和国家的读者块读取状态。

创建模型组件与国家

您可以定义使用Simulink模型的算法万博1manbetx®块。在这个例子中,一个单一的离散时间积分器块定义了对输入信号进行积分的算法。

  1. 打开一个新的Simul万博1manbetxink模型。保存此模型的名称Model01

  2. 添加离散时间积分器块。验证默认参数值1.0获得的价值,0初始条件,国家(最有效的)初始条件设置-1样品时间

  3. 连接一个不变块的输入离散时间积分器块输入信号进行建模。连接一个范围阻止对所述输出信号。

  4. 打开“配置参数”对话框。设置规划求解仿真参数类型固定步,求解汽车固定的大小1

  5. 打开范围块,然后运行模拟。由输出信号增大1在每个时间步。

初始化块状态

一些模型算法包含您可以初始化的状态。例如,使用读取传感器值的算法,您可以执行计算来设置初始传感器状态。

在一个模拟的开始,初始化块使用状态国作家块。若要控制初始化何时发生,请使用初始化函数包含国作家块。

  1. 添加一个初始化函数块。

    默认情况下,初始化函数块包含一个事件监听器与块事件类型参数集初始化。该块还包括一个国作家块,和一个不变块作为初始状态值源的占位符。

  2. 模型初始条件。在本例中,设置恒定值参数为不变4

  3. 将国家写入者与国家所有者联系起来。打开状态编写器对话框。展开状态所有者选择器树,选择离散时间积分器,然后单击应用

    国作家块显示状态所有者块的名称。state owner块显示一个标记,指示指向国作家块。如果单击标签上面的标签,将打开一个列表,其中带有导航到国作家块。

  4. 运行模拟以确认您的模型在模拟时没有错误。

    初始化函数在模拟的开始块执行。的输出信号与和初始值开始4然后增加1直到模拟结束。

重置块状态

在模拟过程中,您可以使用a重置块的状态国作家块。若要控制何时发生重置,请使用初始化函数块重新配置到重置功能块。

  1. 添加一个初始化函数块。

  2. 打开新初始化函数块。

  3. 用于重置的配置块。属性的块参数对话框事件监听器块。来自事件类型下拉列表中,选择重启。在事件名称框中,输入事件名称。例如,输入重启。关闭对话框。

  4. 模拟复位条件。在本例中,设置恒定值参数为不变2

  5. 将状态写入器与状态所有者连接。打开状态编写器对话框。展开状态所有者选择器树,选择离散时间积分器,然后单击应用

  6. 导航到的最高层Model01。将块重命名为初始化Function1重置功能

    更新模式,为事件名称后重置功能块被显示在块的表面上。

    如果你点击上面的标签,列表的链接打开了导航到国作家位于块初始化函数块和所述重置功能块。

  7. 运行模拟以确认您的模型模拟没有错误。

    重置功能块在仿真过程中不执行。它需要一个函数调用的事件信号。

    若要为Reset函数块创建函数调用事件信号,请参见创建测试工具来生成函数调用

读取和保存阻塞状态

在一个模拟结束,可以读取块的状态,并保存状态。

  1. 添加终止函数块。

    默认情况下,终止函数块包含一个事件监听器与参数块事件类型设置为终止。该块还包括一个国家的读者块,和一个终结者块作为用于保存状态值的占位符。

  2. 将随国家所有者的状态读者。打开国家阅读器对话框。从国家所有者选择树中,选择离散时间积分器,然后单击应用

  3. 运行模拟以确认您的模型模拟没有错误。的终止函数块执行在模拟结束。

  4. 删除为测试而添加的块。取代不变与框运行轨迹块和所述范围与框外港块。

为测试准备模型组件

做以下修改,以避免模拟误差时的组件模型被放置在模拟测试的出口函数模型。

  1. 属性的块参数对话框离散时间积分器块。组积分方法积累:向前欧拉

  2. 打开“模型配置参数”对话框。确认解决类型设定为固定步求解设定为汽车。更改固定的大小1汽车

    这种变化避免了在一个函数调用子系统具有多个采样时间的模拟误差。

创建导出的函数模型

将模型组件放置在测试工具中以测试初始化、重置和终止函数需要模型遵循导出函数规则。看到导出功能模型概述创建测试工具来生成函数调用

要创建导出功能模型,请将模型组件放置在函数调用子系统块使用模型块。从模型到子系统的输入和输出端口连接输入和输出端口。

  1. 创建一个Simul万博1manbetxink模型。保存此模型的名称Model02

  2. 打开“配置参数”对话框。为求解器设置仿真参数类型固定步。确认求解设定为汽车固定的大小设定为汽车

  3. 添加函数调用子系统块。通过双击块打开子系统。

  4. 添加模型块到子系统和设置型号名称Model01。加运行轨迹外港块。

  5. 导航到模型的顶层。

  6. 添加一个运行轨迹块。这个块是执行子系统的控制信号。将块名称更改为运行并将其连接到函数()港口。

    打开运行轨迹块对话框,并在信号属性选项卡上,选择输出函数调用复选框。

  7. 添加第二个运行轨迹块,并将其重命名为信号。将其与IN1子系统的端口。该块是积分算法的信号。

    添加一个外港块,其重命名为信号,然后将其连接到着干活子系统的端口。这个块是集成信号。

  8. 打开“配置参数”对话框。在模型引用窗格中,设置每个顶级模型允许的实例总数一个

  9. 更新您的模型,并确认没有错误按下按Ctrl-d

下一步是创建一个测试工具。看到创建测试工具来生成函数调用

另请参阅

相关话题