Stateflow学习笔记之流程图转移的决策(判定)及执行顺序

 

流程图中转移的类型

在执行活动图或状态的转移前,Stateflow将转移按以下类型进行分组:

  • 默认转移:从相同父级状态开始的所有默认转移;
  • 内部转移:源自状态,并完全驻留在该状态内的所有转移;
  • 外部转移:源自相应的状态,但至少部分地位于该状态之外。

 

每一组都可能会包含其他组的转移段。比如,下面这个例子:

在此示例中,状态A包含内部转移和默认转移。这些转移连接到一个结点,结点有连接到A.A1和A.A2的外部转移。如果状态A处于活动状态,则其内部转移流程包括:

  • 从状态A到结点的内部转移
  • 从结点到状态A.A1和A.A2外部转移

 

此外,状态A的默认转移流程包括:

  • 指向结点的默认转移
  • 从结点到状态A.A1和A.A2外部转移

在这种情况下,源自结点的两个外部转移是多组流程图类型的成员。

 

一组流程图的执行顺序

每个流程图组按组优先级顺序执行,直到出现有效转换。首先执行默认转移组,然后执行外部转移组,最后执行内部转移组。每个流程图组执行如下:

  1. 对活动状态的某一组的转移段排序。活动状态可以具有多个可能的外部转移。流程图在检查有效性之前会对这些转移进行排序。
  2. 选择排序后的下一个转移段。
  3. 测试转移段的有效性。
  4. 如果该段无效,则转到步骤2.
  5. 如果转移段的目标对象是一个状态,则执行以下操作:【由于排版原因,请参见后面的备注】
  6. 如果目标对象是没有指向外部转移段的结点,则:测试停止,不执行任何状态的进入和退出动作。
  7. 如果目标对象是具有传出转移段的结点,则对传出转移段的集合重复步骤1.
  8. 在测试完成结点的所有传出转移段后,执行如下操作:
  • a.回溯,返回至来到该结点的上一个转移段。
  • b.继续步骤2,从备份段之后的下一个转移段开始。

当测试了所有开始的转移时,该组流程图执行完成。

 


备注:目标对象为状态的转移操作

  • a.停止转移段的测试,备份并包含每个从前面的结点到开始转移的转移段,形成转移路径。

  • b.退出作为转移路径的直接子状态的父状态(请参阅退出状态)。

  • c.执行来自最终转换段的完整转移路径上的转移动作。

  • d.目标状态变为活动状态(请参阅进入图表或状态)。


 

 

 

参考资料

处理转移的分组与执行

Process for Grouping and Executing Transitions

https://ww2.mathworks.cn/help/stateflow/ug/process-for-grouping-and-executing-transitions.html

 

转移的评估

Evaluate Transitions

https://ww2.mathworks.cn/help/stateflow/ug/evaluate-transitions.html

 

进入图或状态

Enter a Chart or State

https://ww2.mathworks.cn/help/stateflow/ug/chart-initialization-and-entry-actions.html

 

流程图的执行

Execution of a Stateflow Chart

https://ww2.mathworks.cn/help/stateflow/ug/chart-during-actions.html

 

退出状态

Exit a State

https://ww2.mathworks.cn/help/stateflow/ug/chart-exit-actions.html

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值