主要内容

使用Initialize, Reinitialize, Reset和Terminate函数

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

子系统块有默认的初始化和终止例程。可以将自定义例程添加到默认例程中初始化函数重新启动功能,终止函数块来更改或读取块状态。还可以使用实现自定义例程重置功能块。这些功能块包含:

  • 一个事件监听器块,该块在接收到初始化、重新初始化或终止函数调用事件时执行组合例程,或在接收到重置函数调用事件时执行自定义例程。

  • 一个国家的作家块来初始化或设置块状态或国家的读者块读取状态。

要定义自定义例程,请编辑块的内容。例如:

  • 设置状态所有者块参数国家的作家国家的读者块。

  • 添加额外的国家的作家国家的读者块。

  • 添加参数的作家块来设置块参数的值。看到初始化和重置参数值

  • 添加数据存储写要写入的块或数据存储读块来读取数据存储中的数据。看到通过创建数据存储对全局数据进行建模

  • 添加块和信号线来提供值国家的作家参数的作家,数据存储写块写入或保存所读取的值国家的读者数据存储读块。

创建带有状态的模型组件

您可以使用Simulink定义模型算法金宝app®块。在本例中,是单个离散时间积分器块定义了对输入信号进行积分的算法。

  1. 打开一个新的Simul金宝appink模型。保存这个带有名称的模型Model01

  2. 添加一个离散时间积分器块。验证默认参数值为1.0获得的价值0初始条件汽车初始条件设置,-1样品时间

  3. 连接一个常数块的输入离散时间积分器块对输入信号建模。连接一个范围块到输出信号。

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

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

初始化块状态

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

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

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

    默认情况下,初始化函数块包含事件监听器事件类型参数设置为初始化.该块还包括国家的作家Block和a常数块作为初始状态值的源的占位符。

  2. 模拟初始条件。在本例中,设置恒定值参数。常数4

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

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

  4. 运行模拟以确认模型模拟无误。

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

复位块状态

方法重置块的状态国家的作家块。若要控制何时发生重置,请使用重置功能块。

请注意

你可以用a重新启动功能Block或a重置功能块来重置块的状态。这两个重新启动功能Block和重置功能块可以写入块状态,或者执行配置块时指定的任何操作。块之间的区别是a重新启动功能首先隐式地将模型中所有块的状态重置为它们的初始条件,然后执行配置块时指定的任何其他操作,包括写入块状态。相比之下,重置功能块,只执行您在配置块时指定的操作。在本例中,由于模型除了离散时间积分器块,重新启动功能块可以用来代替重置功能块,结果没有差异。

  1. 添加一个重置功能块。

  2. 打开重置功能块。

  3. 模型重置条件。在本例中,设置恒定值参数。常数2

  4. 连接状态写入器与状态所有者。打开国家的作家对话框。展开状态所有者选择器树,选择离散时间积分器,然后按应用

  5. 的事件名称重置功能块,重置,显示在块的正面。

    如果单击标记上方,将打开一个列表,其中有一个链接,用于导航到国家的作家位于初始化函数Block和重置功能块。

    请注意

    如果重置功能块被a取代重新启动功能Block,然后重新启动功能块首先设置的状态离散时间积分器函数中指定的初始条件为0离散时间积分器块对话框。的重新启动功能块将使用国家的作家的状态离散时间积分器块设置为2,这将覆盖隐式初始化为0的操作。此动作序列的效果与重置功能的状态离散时间积分器阻挡到2。

    如果一个重新启动功能块的使用没有一个国家的作家Block,然后它会设置状态离散时间积分器块的初始条件为0。如果一个重置功能块的使用没有一个国家的作家块,它不会对任何其他块的状态产生影响。

  6. 运行一个模拟,以确认您的模型模拟无误。

    重置功能块在模拟期间不执行。该块需要函数调用事件信号。

    方法创建函数调用事件信号重置功能块,看创建测试工具以生成函数调用

读取并保存块状态

在模拟结束时,您可以读取块的状态,并保存该状态。

  1. 添加一个终止函数块。

    默认情况下,终止函数块包含事件监听器带有参数的块事件类型设置为终止.该块还包括国家的读者Block和a《终结者》块作为保存状态值的占位符。

  2. 将状态读取器与状态所有者连接。打开国家的读者对话框。从状态所有者选择器树中选择离散时间积分器,然后按应用

  3. 运行一个模拟,以确认您的模型模拟无误。的终止函数块在模拟结束时执行。

  4. 删除您为测试添加的块。取代常数轮廓尺寸Block和范围外港块。

为测试准备模型组件

在将组件模型放在导出函数模型中进行模拟测试时,进行以下更改以避免模拟错误。

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

  2. 打开模型配置参数对话框。确认解算器类型设置为固定步而且解算器设置为汽车.改变固定的大小1汽车

    此更改避免了函数调用子系统中有多个采样次数所引起的模拟错误。

创建一个导出函数模型

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

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

  1. 创建一个Simul金宝appink模型。保存这个带有名称的模型Model02

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

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

  4. 添加一个模型块到子系统并设置模型名称Model01.添加轮廓尺寸而且外港块。

  5. 导航到模型的顶层。

  6. 添加一个轮廓尺寸块。这个块是执行子系统的控制信号。将块名称更改为运行把它连接到函数()端口。

    打开轮廓尺寸对话框和信号的属性选项卡,选择输出函数调用复选框。

  7. 再加一秒轮廓尺寸阻塞并将其重命名为信号.将其连接到三机一体子系统端口。这个块是积分算法的信号。

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

  8. 通过转到属性检查器并将模型的执行域设置为,将模型指定为导出函数模型导出功能.看到指定一个出口函数模型

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

  10. 更新您的模型,并通过按下确认没有错误ctrl - d

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

另请参阅

相关的话题