主要内容

连续时间建模Stateflow

混合系统使用模态逻辑从一种模式转换到另一种模式,以响应物理事件和条件。在这些系统中,连续时间动力学控制每个模式。这种混合系统的一个简单例子就是弹跳球。球不断地在空中移动,直到它碰到地面,在那一点上模式改变或不连续发生。结果,球突然改变了方向和速度。有关更多信息,请参见在连续时间模型一个弹跳球

通过配置statflow模拟响应连续和离散模式变化的混合系统®连续时间建模的图表。在状态流程图中,您可以简洁而直观地将模态逻辑表示为一系列状态、转换或流程图。您还可以将状态信息表示为连续的局部变量,并自动访问时间导数。

在Simulink中只有状态流图支持连续时间模拟金宝app金宝app®模型。如果您的连续系统不包含模态逻辑,请考虑使用Simulink模型。金宝app有关更多信息,请参见连续系统模型(金宝app模型)

配置一个Stateflow连续时间模拟图

要在状态流图中启用持续更新,请设置更新方法表属性连续,如为状态流图指定属性

缺省情况下,开启过零检测功能。若要禁用此选项,请清除使讨论二阶导数过零检测复选框。有关更多信息,请参见禁用讨论二阶导数过零检测

请注意

您不能使用摩尔图进行连续时间建模。

互动金宝app解算器

在“次要时间步骤”中保持模式

在连续时间模拟中,状态流图只在主要时间步更新其模式。在小时间步长中,图表根据最后一个主要时间步长期间图表的状态计算输出。有关更多信息,请参见连续样品时间(金宝app模型)

计算每个时间步骤的连续状态

当您定义局部连续变量时,状态流图提供了对其衍生品的编程访问。Simu金宝applink求解器根据这些变量的值及其在前一个时间步长的导数来计算当前时间步的连续状态。有关更多信息,请参见连续与离散解算器(金宝app模型)

在状态转换上注册零交叉

为了确定何时发生状态转换,状态流图向Simulink求解器注册了一个过零函数。金宝app当Simu金宝applink检测到模式改变时,解算器从前一个主要时间步向前搜索,以检测状态何时发生转变。有关更多信息,请参见讨论二阶导数过零检测(金宝app模型)

禁用讨论二阶导数过零检测

对状态转换的过零检测可以在准确性和性能之间做出权衡。在检测过零时,Simulink模型可以准确地模拟模式变化,而不会过金宝app度减少步长。对于显示出喋喋不休,或两种连续运行模式之间的频繁波动,过零检测可能会潜在地影响模拟时间。抖振需要一个Simulink模型来检查快速连金宝app续的零交叉,这会减慢仿真的速度。在这些情况下,你可以:

  • 禁用零交点检测。

  • 为你的图表选择一个不同的过零检测算法。

  • 修改Simulink模型中控制零交叉频率的参数。金宝app

您可以选择不同的过零检测算法上解算器窗格中的。有关更多信息,请参见讨论二阶导数过零检测(金宝app模型)

连续时间模拟指南

为了保持连续时间模拟结果的完整性和平滑性,将图表约束为状态流图语义的受限子集。通过限制语义,输入不依赖于不可预知的因素,如:

  • Simulink求解器在每个主要时间步骤中使用的小间隔的数量。金宝app

  • 稳定积分和过零算法所需的迭代次数。

通过最小化这些副作用,状态流程图可以在较小的时间步骤中维护其状态,并仅在主要时间步骤中更新其状态。因此,状态流图可以基于连续时间的恒定状态计算输出。

连续时间图必须至少有一个状态

在连续时间模拟中,图表在较小的时间步长下更新其输出激活状态的动作。没有状态的图表不会产生输出。要在连续时间内模拟无状态图的行为,创建一个调用其中的图形函数的单一状态行动。

更新本地数据条目退出,以及转换操作

为了在连续时间模拟中保持精度,只在状态转换对应的主要时间步骤中更新离散和连续的局部数据。在状态转换期间,只有以下类型的操作会发生:

  • 状态退出操作,这些操作发生在转换开始时离开状态之前。

  • 状态条目操作,在转换结束时进入新状态后发生。

  • 转换操作,在转换期间发生。

  • 条件操作在转换上,但仅当转换直接到达某个状态时。例如,这个图表执行动作n + +即使条件c2c3都是虚假的。因为没有状态转换,所以条件动作会更新n在较小的时间步长,并导致错误。

不写入本地连续数据状态动作,因为这些动作发生在较小的时间步骤中。

计算状态导数行动

在小时间步长中,连续时间图只执行状态行动。因为Simuli金宝appnk模型在小的时间步骤中读取连续时间的导数,计算导数动作来提供最新的计算。

不读取状态下的输出或导数行动或在过渡条件

在较小的时间步长中,有可能输出和导数不能反映它们的当前值。为了提供平滑的输出,需要从局部离散数据、局部连续数据和图表输入中计算值。

不叫金宝app功能状态行动或在过渡条件

不能在较小的时间步骤中调用Sim金宝appulink函数。相反,只在主要时间步骤发生的金宝app动作中调用Simulink函数:state条目退出动作和转换动作。在状态中调用Si金宝appmulink函数在模拟过程中,操作或转换条件会导致错误。有关更多信息,请参见在状态流图中金宝app重用Simulink函数

使用离散变量来控制条件行动

为了防止主要时间步骤之间的模式改变,将影响控制流的条件输入动作依赖于离散变量。离散变量在主要时间步长之间不改变值。

不使用输入事件

输入事件的存在使图表表现得像一个被触发的子系统,并且无法在连续时间内进行模拟。例如,如果图表使用连续更新方法,这个模型就会产生错误。

要模拟输入事件的行为,将输入信号通过打穿越块作为连续时间图的输入。

不使用内部转换

在连续时间模拟过程中,当模式发生变化时条目目标状态的动作向Simulink模型指示发生了状态转换。金宝app对于内部过渡,图表永远不会执行条目行动。有关更多信息,请参见内心的转变

限制时间逻辑的使用

不要使用基于事件的时间逻辑,因为在连续时间模拟中,没有滴答的概念。对连续时间模拟只使用绝对时间时序逻辑。有关更多信息,请参见用时序逻辑执行控制图

不使用变更检测操作符

为了实现更改检测,statflow以一种影响小时间步和下一个主要时间步之间图表行为的方式缓冲变量。

不修改工作点值

不支持修改连续时间图的工作点。金宝app如果加载连续时间图表的工作点,则不能修改状态活动或本地或输出图表数据的任何值。有关更多信息,请参见使用图表操作点的指南

相关的话题