主要内容

连续时间建模状态流

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

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

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

配置状态流连续时间模拟图

持续更新是状态流程图属性。

  1. 在图表内右键单击并选择性质从上下文菜单。

  2. 在“图表属性”对话框中,设置更新方法字段到不断的.当您选择此选项时:

    • 这个启用过零检测选中此复选框。

    • 这个启用超级步骤语义复选框不可用。

  3. (可选)缺省情况下,开启过零检测功能。若要禁用此选项,请清除启用过零检测复选框。有关详细信息,请参阅禁用过零检测

  4. 点击好吧

笔记

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

互动万博1manbetx解算器

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

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

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

定义局部连续变量时,状态流程图提供对其派生变量的编程访问。Simulink解算器根据这些变量的值及其在上一时间步的导数计算图表在当前时间步的连续状态。有关详细信息,请参阅万博1manbetx连续与离散解算器

状态转换上的寄存器过零

为了确定何时发生状态转换,状态流图向Simulink求解器注册了一个过零函数。万博1manbetx当Simu万博1manbetxlink检测到模式改变时,解算器从前一个主要时间步向前搜索,以检测状态何时发生转变。有关更多信息,请参见过零检测

禁用过零检测

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

  • 禁用过零检测。

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

  • 修改Simulink模型中控制过零频率的参数。万博1manbetx

您可以在屏幕上选择不同的过零检测算法解算器“模型配置参数”对话框中的窗格。有关详细信息,请参阅过零检测

连续时间模拟指南

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

  • Simulink解算器在每个主要时间步长中使用的次要间隔数。万博1manbetx

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

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

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

在连续时间模拟过程中,图表会在对应于在期间活动状态的操作。没有状态的图表不会产生输出。要在连续时间内模拟无状态图表的行为,请创建一个状态,该状态在其内部调用图形函数在期间行动

在中更新本地数据条目,退出,以及过渡行动

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

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

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

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

  • 对转换执行条件操作,但仅当转换直接达到状态时。例如,此图表执行操作n++即使在条件允许的情况下c2c3这些都是假的。由于没有状态转换,因此条件操作将更新N在较小的时间步长内,并导致错误。

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

计算状态导数在期间行动

在小时间步长中,连续时间图只执行状态在期间行动。因为Simulink模型在较万博1manbetx小的时间步长内读取连续时间导数,所以在在期间动作来提供最新的计算。

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

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

不要打电话万博1manbetx功能状态在期间行动或在过渡条件

不能在较小的时间步骤中调用Sim万博1manbetxulink函数。相反,只在主要时间步骤发生的万博1manbetx动作中调用Simulink函数:state条目退出动作和转换动作。在状态中调用Si万博1manbetxmulink函数在期间在模拟过程中,过渡条件中的操作或操作会导致错误。有关详细信息,请参阅在状态流图中万博1manbetx重用Simulink组件

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

为防止主要时间步长之间的模式更改,请注意影响控制流的条件在期间行动取决于离散变量。离散变量不会在主要时间步之间改变值。

不要使用输入事件

输入事件的存在使图表的行为类似于触发的子系统,无法在连续时间内进行模拟。例如,如果图表使用连续更新方法,此模型将生成错误。

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

不使用内部转换

在连续时间模拟过程中,当模式发生变化时条目目标状态的操作向Simulink模型指示发生了状态转换。对于内部转换,图表从不执行万博1manbetx条目行动有关详细信息,请参阅内部过渡

限制时间逻辑的使用

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

不使用变更检测操作符

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

不要修改工作点值

不支持修改连续时间图表的工作点。如果加载连续时间图表的工作点,则无法修改状态的活动或本地或输出图表数据的任何值。有关详细信息,请万博1manbetx参阅图表作业点使用规则

相关话题