stateflow-有限状态系统-并行机制1
1、并行机制
在有限状态系统中,状态的行为可以按照其解析方式分为两大类:互斥状态(exclusive 或者 OR)和并行状态(parallel 或者 AND)。如果在层次化的状态图中包含了互斥的状态,也 就意味着同一时刻在同一层次的状态中仅有一个状态处于活动状态;若状态被设置为并行 状态,则位于同一层次下的所有状态都在同一时刻处于活动状态。在同一层次下,状态要 么是互斥的,要么是并行的,不可能在同一层次下存在两种模式共存的情况。
如图 6-1 所示,状态 Slot 和状态 Player 的边框是虚线,因此这两个状态就是处于并行 状态的 Stateflow 状态,它们可以同时处于活动的状态,而其内部包含的子状态 NoDisk 和 HasDisk 以及 Stop 和 Play 状态边框是实线,因此子状态之间是互斥的状态,子状态在相应 的层次同一时刻只能有一个处于活动状态。
对于 Stateflow 模型,有以下几点需要再次强调:
■ Stateflow 的状态要么是互斥的要么是并行的。
■ 由互斥状态组成的状态图或父状态,在同一时刻只能有一个活动的子状态。
■ 由并行状态组成的状态图或父状态,一旦被激活,则所有并行子状态同时处于活动 状态。
■ 并行状态在它们的父层次对象——状态图或父状态被激活时也被激活。
■ 转移不可以直接起始于或终止于某个并行状态,不需要也不能为并行的状态创建默 认转移。
■ Stateflow 默认系统为互斥模式。
2、本地事件广播
本地事件主要用于包含并行状态的有限状态 系统,使不同的并行状态之间进行交互。例如,很多 CD 播放器在插入光盘之后就自动进入 到播放状态,如果用 Stateflow 来描述这个过程,就是插入光盘这个动作广播了 PLAY 事件, 将播放器从 Stop 状态切换到 Play 状态
定义本地事件的主要目的就是通过广播本 地事件来影响状态图的运行。进行本地事件广 播的方法非常简单,直接将事件的名称写在相 应的动作中就可以了。那么监听这个事件的相 应动作——状态转移、动作等就会在事件广播 的时刻完成工作。例如在本节开始的时候讲述 的 CD 播放器的例子,就可以利用事件广播来实 现。修改图 6-1 所示的 Stateflow 框图,这里将 PLAY事件和STOP事件定义为状态图的本地事 件,如图 6-19 所示。 在这个框图中,在 Slot 状态的子状态 HasDisk 中增加 entry 动作,这个动作将事件 PLAY 广播出去;同样,在 NoDisk 子状态中也 包含了 entry动作,进行 STOP 事件的广播。于是,当发生 INSERT事件,Slot 系统进入 HasDisk 子状态时,子状态的 entry 动作执行,广播 PLAY 事件,则 Player 状态中的 Play 子状态被激 活。当发生 EJECT 事件,Slot 系统进入 NoDisk 子状态时,子状态的 entry 动作执行,广播 STOP 事件,则 Player 状态中的 Stop 子状态被激活。这就是利用事件广播实现并行状态之 间的相互影响的过程。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!