主要内容

计算机中的连续时间建模州流程

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

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

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

配置A.州流程连续时间模拟图

要在状态溢图中持续更新,请设置更新方法图表属性到连续,如中所述指定StateFlow图表的属性

默认情况下,启用过零点检测。要禁用此选项,请清除启用零交叉检测复选框。有关更多信息,请参阅禁用零交叉检测

笔记

不能将摩尔图用于连续时间建模。

金宝app解算器

以较小的时间步长保持模式

在连续时间模拟期间,状态流程图仅在主要时间步更新其模式。在次要时间步中,图表根据上一个主要时间步中图表的状态计算输出。有关详细信息,请参阅连续采样时间(金宝appSimulink)

每次步骤计算连续状态

定义本地连续变量时,extenflam图表提供对其衍生物的编程访问。Simu金宝applink求解器在当前时间步骤中基于这些变量的值及其在前一步步骤中的衍生物来计算图表的连续状态。有关更多信息,请参阅连续解算器与离散解算器(金宝appSimulink)

在状态转换中注册零交叉路口

为了确定状态转换发生的时间,状态流程图向Simulink解算器注册过零功能。当Simulink检测到模式变化时,解算器从上一个主要时间步向前搜索,以检测状态转换发生的时间。有关更多信息,请参阅金宝app零交叉检测(金宝appSimulink)

禁用零交叉检测

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

  • 禁用零交点检测。

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

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

您可以选择不同的零交叉检测算法解算器窗格在“模型配置参数”对话框中。有关更多信息,请参阅零交叉检测(金宝appSimulink)

连续时间仿真指南

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

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

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

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

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

在连续时间仿真期间,图表在对应的次要时间步骤中更新其输出期间活动状态的行动。没有状态的图表不会产生输出。要模拟无状态图表在连续时间内的行为,请创建一个调用其图形功能的单个状态期间行动。

更新本地数据进入出口,以及转换操作

为了在连续时间仿真中保持精度,仅在与状态转换对应的主要时间步骤期间更新离散和连续的本地数据。在状态转换期间,只有这些类型的操作发生:

  • 状态出口在过渡开始之前离开国家之前发生的行动。

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

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

  • 转换的条件操作,但仅在转换直接到达状态时。例如,此图表执行操作n ++即使是条件C2.C3.是假的。因为没有状态转换,条件操作更新N在一个小时间步骤中并导致错误。

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

计算状态导数期间行动

在较小的时间步长中,连续时间图表只执行状态期间行动。因为Simuli金宝appnk模型在次要时间步骤期间读取连续时间导数,计算衍生物期间提供最新计算的操作。

不要读取状态中的输出或导数期间过渡条件下的动作或动作

在较小的时间步长内,输出和导数可能不反映其最新值。要提供平滑输出,请从局部离散数据、局部连续数据和图表输入计算值。

不要打电话金宝app状态函数期间过渡条件下的动作或动作

不能在次要时间步长期间调用Sim金宝appulink函数。相反,仅在主要时间步(状态)期间发生的操作中调用Simulink函数进入出口操作和转换操作。在状态中调用Simulink函数金宝app期间在模拟期间,动作或转换条件导致错误。有关更多信息,请参阅在状态溢图中金宝app重用Simulink函数

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

防止在主要时间步骤之间的模式变化,影响控制流程的条件期间操作取决于离散变量。离散变量不会在主要时间步骤之间更改值。

不要使用输入事件

输入事件的存在使图表表现得像触发的子系统,并且无法在连续时间内模拟。例如,如果图表使用连续更新方法,则此模型会生成错误。

要模拟输入事件的行为,请通过输入信号交叉路口块作为连续时间图的输入。

不要使用内部转换

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

限制时态逻辑的使用

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

不要使用更改检测操作符

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

不修改工作点值

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

相关的话题