前面介绍了Stateflow的图形对象的创建方法和属性修改。完整的有限状态机是由图形对象和若干非图形对象构成的,例如事件、数据对象等。
1.状态图的基本概念
在学习如何在Stateflow模型中使用状态图和状态转移之前,需要了解一下Stateflow对于状态图的定义以及相应的基本概念。Stateflow状态图被称为“状态转移图”,因为在这些状态图中包含了所谓的状态和相应的转移。
状态管理和维护着当前模型中活动的状态。一旦包含了状态转移的状态图处于活动的状态,则状态图将一直处于这种活动状态,直到整个模型仿真计算结束。并且,只要状态图处于活动状态,则必定至少有一个状态处于激活状态。状态图从非活动状态到活动状态以及状态之间的切换,都要由事件触发,即在事件的驱动之下,状态图才能仿真运行。
当在某一指定的时间步长内完成了必要的工作后,状态图简单地进入到一种暂时挂起的状态,等待下一次触发事件的到来。状态图的简单挂起状态并不是非活动状态,而是等待下一次触发事件的到来,也就是说,在连续两次触发事件之间,状态图实际上是一直处于活动状态。
具有状态转移的Stateflow状态图相当于一种包含了离散系统模块的触发子系统。这种子系统在模型运行过程中保持自己的状态,在有触发时更新自己的输出,而在两个连续的触发之间保持自己的状态。
当状态转移图处于非活动状态且有事件触发时,这个状态转移图首先尝试激活相应的状态以及邻近低层次的状态。如果状态转移处于第一层,则执行的第一个元素是系统默认转移。由于状态机在模型运行之前一直处于活动状态,因此默认转移仅仅有效一次,即在状态机被激活的首次有效,这一点必须注意。如果状态的第一层仅有一个状态,则可以不使用默认的转移。
一旦进行一个状态,这个状态就一直处于活动状态,直到退出为止。与状态机类似,状态也在连续两次触发之间挂起而不会成为不活动状态。
Stateflow的事件触发,就是事件驱动的发生。触发可以是系统隐含发送,也可以按照要求显性地定义。在Simulink中,显性定义的事件就是某些过零信号的发送,也就是说,只有过零信号才能触发状态的发生或状态机的激活。由这种触发而引起的相应的动作执行,被称为事件驱动。
在Simulink中能够产生过零信号的模块有正弦振荡信号,方波发生信号、阶跃信号、双端输入开关和静态模块,如图所示,其中双端输入开关和静态模块需要用户使用鼠标双击来切换不同的数值。
参考内容
[1] 张威.Stateflow逻辑系统建模[M].西安:西安电子科技大写出版社,2007.
本文内容来源于网络,仅供参考学习,如内容、图片有任何版权问题,请联系处理,24小时内删除。
作 者 | 郭志龙
编 辑 | 郭志龙
校 对 | 郭志龙
本文暂时没有评论,来添加一个吧(●'◡'●)