Simulink学习——stateflow快速入门之基础动作语法

Stateflow中的基础动作语法

 

这一节,跟着Simulink的Demo:Define Chart Behavior by Using Actions,来学习一下Stateflow中的基础动作语法。

 

如下为Demo中 stateflow chart内的图。除去状态(框框)和转移(箭头)外,可以看到这里面包含许多动作。图中的动作主要发生在转移(箭头)和状态(圆角框)中。

Simulink学习——stateflow快速入门之基础动作语法

 

 

状态动作

Simulink学习——stateflow快速入门之基础动作语法

如上为stateflow help中的定义,可能读起来比较难理解。这里再简单学习解读下:

entry\en:进入状态的瞬间发生的动作

during\du:处于状态中时发生的动作

exit\ex:退出状态的瞬间发生的动作

 

比如接着改一下上一期的chart:

Simulink学习——stateflow快速入门之基础动作语法

用刚刚说到的动作语法去理解一下上面这个chart,那么从初始状态,到进入状态on到退出状态on发送的事件有:

进入on时,对swi_tch赋值1

在on状态时,对word赋值1

在退出on状态时,对word赋值0

状态行为的语句,直接在状态框图内双击填写即可。

 

 

转移动作

Simulink学习——stateflow快速入门之基础动作语法

 

转移中的动作,在help中描述如上。转移动作通过两个语法来写入:

条件判断语法[]:如写入[a == 1],则对a变量进行布尔运算,判断是否满足条件。如果条件判断为True,则状态转移条件成立,执行状态转移。虽然help中说需要写[condition]{conditional_action},但是其实这两个部分是可以分开写的。如果不写condition,那么默认True。如果不写action,那么默认没有任何动作,直接执行状态转移。

动作语法{}:动作语法中,可以进行许多操作,一般是运算和赋值操作。

 

两种语法混合使用,就可以产生条件、条件动作、动作、或者是无等转移行为。

如下,通过点击转移线即可添加动作语句,自己写括号或者点击这几个图标都可以完成语句的添加。

Simulink学习——stateflow快速入门之基础动作语法

根据Help中描述,结合上面的说明,可以很好地理解Demo中发生的转移有哪些:

Simulink学习——stateflow快速入门之基础动作语法Simulink学习——stateflow快速入门之基础动作语法