转移,首先被检测。然后是父状态内部子状态之间的转移被检测。在同等层次的转移之间,就需要按照第4章4.1节介绍的转移冲突优先原则依次检测每个转移,而具有最严格限制的转移首先被检测。从MATLAB Release 14 Service Pack 2版本(Stateflow 6.2)开始增加了新特性,同层次转移检测的优先次序也可以由用户自己指定。现在就用上述的检测优先原则来考察一下图5-49所示的Stateflow框图。图5-49具有多重转移的Stateflow框图使用了各种类型的转移。从状态A出发的转移包括:状态A到状态B的转移(使用条件C1进行限制);自循环外部转移(使用事件E1进行限制);内部转移(使用条件C3进行限制)。从子状态A1出发的转移包括:超转移(使用条件C2进行限制);子状态A1到子状态A2的转移(使用事件E2和条件C4共同限制);从子状态A1外边缘出发,终止于父状态内边缘的转移(使用事件E2进行限制)。从子状态A2出发的转移包括:子状态A2到子状态A1的转移(使用事件R和条件C4共同限制);从子状态A2外边缘出发,终止于父状态内边缘的转移(使用事件R进行限制)。这些转移中,有些是处于同一层次的转移,例如那些从同一状态出发且转移上存在转移检测次序标号的转移就是同一层次转移。假设此时父状态A处于活动状态并且子状态A1处于活动状态,当触发发生时,根据前面介绍的层次化状态图转移检测优先权和转移冲突检测优先权,系统处理的次序为:检测由事件E1限制的自循环外部转移(向外的转移);检测由条件C1限制的状态A到状态B的转移(向外的转移);检测由条件C3限制的父状态A的内部转移(内部转移);检测由条件C2限制的从子状态A1出发终止于状态B的转移(超转移);检测由事件E2和条件C4共同限制的从子状态A1出发,终止于子状态A2的转移(转移冲突检测优先权)。
您可以通过以下链接下载相关的文件和工具:
每个链接都包含丰富的资源和详细的信息,可以帮助您更好地理解和应用状态转移相关的概念和工具。
暂无评论