Stateflow的并行状态和复杂逻辑判断

1.Stateflow的动作

⑴条件动作和迁移动作

一般形式

触发事件[迁移条件关系式]{条件动作}/迁移动作

⑵状态动作

一般格式如下,第一行规定状态名称,其余各行规定状态的动作,每个状态的动作必须单独另起一行。

name/
 
entry:entry actions
 
during:during actions
 
exit:exit actions
 
bind:data and events
 
on event_name: on event_name actions

关键词

输入内容

描述

name

在name处输入状态名,随后紧跟“/”

entry或en

entry actions

状态进入动作,表示发生状态迁移,激活了该状态时需要执行的动作。

during或du

during actions

状态仍然激活动作,表示原处于激活的状态受到一个事件的触发,不存在从这个状态发出的状态迁移时,此状态仍处于激活状态需要执行的动作。

exit or ex

exit actions

状态退出动作。表示存在由此状态发出的有效状态迁移时,该状态退出时执行的动作。

bind

data and events

数据事件绑定动作。将数据data和事件events绑定在此状态上。绑定的数据只能在此状态或其子状态内被改写,其他状态只能读取此数据。绑定的事件由此状态或其子状态广播。

on

event_name;

on event_name atcions

特定事件发生动作。 event_name规定一个特定的事件;on event_name actions表示当该状态是激活状态且event_name规定的事件发生时需要执行的动作。

2.Stateflow的隐含事件

  当Stateflow图被唤醒时或进入到某个状态或从某个状态退出或某个内部数据(非输入数据)赋值时,Stateflow会定义并触发某种事件。这些事件是Stateflow自动定义触发的,非用户定义、添加的,故称为隐含事件。

隐含事件

含义

change(data_name)

chg(data_name)

当变量data_name的数值发生变化时,定义或产生一个局部事件

enter(state_name)

en(state_name)

进入状态state_name时,定义或产生一个局部事件

exit(state_name)

ex(state_name)

退出状态state_name时,定义或产生一个局部事件

wakeup

动作图刚刚唤醒时,定义或产生一个局部事件

tick

同wakeup

隐含事件是瞬时逻辑操作的内容之一。

3.动作中的瞬时逻辑操作

⑴after瞬时逻辑操作

一般格式   after(n,E)

其中n是正整数或结果为正整数的表达式,E是基事件(可以是隐含事件),E发生n次后逻辑操作为真,反之为假。对于没有输入的stateflow图,表示当该图被唤醒n次后,瞬时逻辑操作为真。

需要指出的是after瞬时逻辑操作的项链状态每次激活时,基事件E的计数器都被复位为0。

⑵before瞬时逻辑操作

一般格式   before(n,E)

类似于after,当E发生小于n次时,逻辑操作为真,反之为假。同样在相连事件每次激活时,基事件E的计数器被复位为0。

⑶at瞬时逻辑操作

一般格式   at(n,E)

类似于after,当E事件第n次发生时,逻辑操作为真,反之为假。对于没有输入的stateflow图,表示当该图第n次被唤醒时,瞬时逻辑操作为真。同样在相连事件每次激活时,基事件E的计数器被复位为0。

⑷every瞬时逻辑操作

一般格式   every(n,E)

类似于after,当E事件每发生n次时,逻辑操作为真,反之为假。对于没有输入的stateflow图,表示当该图被唤醒次数小于n时,瞬时逻辑操作为真。同样在相连事件每次激活时,基事件E的计数器被复位为0。

4.事件广播

广播是一个非常有效的同步并行状态的方法。

⑴通过迁移动作进行直接事件广播。

直接广播的格式

    send(事件名,状态名)

利用有效事件名直接进行事件广播的格式

    状态名.事件名

⑵通过条件动作进行事件广播。

⑶通过状态动作进行事件广播。


本文转自:http://www.cnblogs.com/wuyuegb2312

  • 6
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值