基于模型设计(MBD)之stateflow学习——计数器demo介绍

按照参考文献2中的讲解,利用stateflow搭建一个计数器,包含stateflow模块的simulink模型如下图所示。

基于模型设计(MBD)之stateflow学习——计数器demo介绍_第1张图片

基于模型设计(MBD)之stateflow学习——计数器demo介绍_第2张图片

计数器的仿真结果如下图所示。

基于模型设计(MBD)之stateflow学习——计数器demo介绍_第3张图片

下面来介绍下该demo涉及到的stateflow的相关基本知识。

(一)如何创建包含stateflow模块的simulink模型

可以通过如下两种方法来创建包含stateflow模块的simulink模型。

a)直接在Matlab命令行中键入指令sfnew

b)在simulink库浏览器中找到stateflow的模块,然后插入到已有的simulink模型中

(二)状态图和流程图

在stateflow模型中,把包含状态的stateflow框图称为状态图,而将不包含任何状态的stateflow框图称为流程图。

1)状态
状态的标签一般由三部分组成:状态名称、注释和相应的状态动作。
Name
/*Comments*/
Keyword:State Actions

状态动作的关键字主要有下面三种:
a)entry:当状态被激活时执行相应的动作;
b)exit:当状态退出活动状态时执行相应的动作;
c)during:当状态保持其活动状态时执行相应的动作。

2)连接节点
连接节点作为转移通路的判决点或汇合点,在流程图中,由于不包含任何状态,因此只有依靠连接节点完成通路的连接和判断分支。连接节点不是记忆元件,在状态图中任何转移的执行都不能停留在节点上,转移必须到达某个状态时才能停止

3)转移标签
一个完整的转移标签由四部分组成:事件、条件、条件动作和转移动作,也可以包含相应的注释。
/*Comments*/
Event[Condition]{Condition Actions}/Transition Actions

a)事件是stateflow非图形对象的一种。在有限状态机中,只有当事件发生时,才可能去执行相应的转移,因此,stateflow的模型又叫事件驱动系统。
b)位于方括号“[]”中的内容是条件,只有在相应的事件发生且条件也满足时,相应的转移才可能执行。如果在转移上没有定义事件和条件,则意味着该转移在任何事件发生时都会执行。
c)紧接在条件后面的花括号“{}”中的内容就是条件动作,条件动作是在条件满足时就立即执行的某些表达式。
d)位于“/”后面的内容都是转移动作,转移动作只有在整个转移通路都有效时才能执行。

组成转移标签的四个部分不一定完整地出现,但是不论出现哪个部分,标签的内容都必须遵循上面指定的顺序

4)默认转移
默认转移是一类特殊的转移,根据有限状态机的要求,当有限状态系统被激活时,必有某个确定的状态被激活,而默认转移就定义了当状态机被激活或者层次模型中父层次状态被激活时具体哪个子状态被激活。

参考文献:
1)Stateflow逻辑系统建模/张威编著.-西安:西安电子科技大学出版社,2007.10
2)Simulink-Stateflow学习——计数器的搭建和stateflow工作过程. CSDN博文,https://blog.csdn.net/zhanshen112/article/details/79697979

你可能感兴趣的:(嵌入式编程,软件设计)