文档

评估转换

Stateflow®在图表中使用转换从一个排他(或)状态移动到另一个排他(或)状态。为条目而且执行Stateflow评估转换,以确定它们是否有效。有效的转换是条件标签为真且路径以状态结束的转换。如果转换有效,则Stateflow退出源状态并进入目标状态。以了解评估何时发生执行而且条目工作流,看到状态流图的执行而且输入图表或状态

评估过渡的工作流程

过渡评估令

当多个转换来自单个源时,例如状态或连接,Stateflow使用求值顺序来确定何时测试每个转换。根据图表使用的动作语言,您可以显式或隐式地创建转换的顺序。无论是显式顺序还是隐式顺序,转换都会在转换源附近显示指定转换顺序的数字。

请注意

使用显式排序可以避免在编辑图表时更改过渡顺序。

明确的要求

当您打开一个新的状态流图时,来自源的所有传出转换都将按照您创建它们的顺序自动编号。顺序从1并继续查找下一个可用的号码。

要更改转换的执行顺序,请右键单击转换,并将光标放在上面执行顺序,并选择您希望转换执行的顺序。当您更改一个转换编号时,状态流图通过保留它们的相对顺序,自动为源的其他传出转换重新编号。

隐式排序

对于隐式排序模式下的C图,Stateflow图根据以下条件评估来自单个源的一组传出转换:

  • 层次结构。

    图表根据每个转换的父转换的层次级别,按顺序评估一组传出转换。

  • 标签。

    图表根据标签评估一组具有相同层次优先级的传出转换,其优先级顺序如下:

    1. 带有事件和条件的标签

    2. 带有事件的标签

    3. 有条件的标签

    4. 没有标签

  • 过渡源的角表面位置。

    图表根据源对象表面上的角度位置评估一组具有相同层次和标签优先级的传出过渡。时钟位置最小的过渡具有最高的优先级。例如,具有2点钟源位置的跃迁比具有4点钟源位置的跃迁具有更高的优先级。具有12点钟源位置的转换具有最低优先级。

传出转换示例

在此示例中,初始化了状态流图,并且条目执行的操作为StateA.出现一个新的时间步长,图表苏醒。请遵循状态流程图执行的工作流程, Stateflow找到多个出站转换StateA.此时步长X = 1,Y = 1,Z = 1

评估传出转换

请遵循评估过渡的工作流程,此图表的转换计算步骤依次为:

  1. 过渡1StateA标记为评估。

  2. 过渡1StateA有一种状况。

  3. 条件为真。

  4. 转换1的目的地StateA不是一种状态。

  5. 结确实有外向的跃迁。

  6. 从连接处的过渡1被标记为评估。

  7. 从结点出发的过渡1有一个条件。

  8. 条件为假。

  9. 从连接处的过渡2被标记为评估。

  10. 从结点开始的过渡2没有条件。

  11. 从结出发的转换2的目的地是一个状态(所述).

  12. 所述标记为条目,StateA标记为退出

要完成时间步骤,请遵循退出状态的工作流StateA输入图表或状态的工作流程StateE

带有回溯的传出转换示例

当来自源的所有传出转换都无效或没有以终端连接结束,但之前有未计算的转换时,Stateflow返回到以前的状态或连接来计算所有可能的路径。

在此示例中,初始化了状态流图,并且条目执行的操作为StateA.出现一个新的时间步长,图表苏醒。请遵循状态流程图执行的工作流程, Stateflow找到多个出站转换StateA.此时步长X = 1,Y = 1,Z = 1

用回溯评估传出转换

请遵循评估过渡的工作流程,此图表的转换计算步骤依次为:

  1. 过渡1StateA标记为评估。

  2. 过渡1StateA有一种状况。

  3. 条件为真。

  4. 转换1的目的地StateA不是一种状态。

  5. 结确实有外向的跃迁。

  6. 从连接处的过渡1被标记为评估。

  7. 从结点出发的过渡1有一个条件。

  8. 条件为假。

  9. 从连接处的过渡2被标记为评估。

  10. 从结点出发的过渡2有一个条件。

  11. 条件为假。

  12. 过渡2StateA标记为评估。

  13. 过渡2StateA没有条件。

  14. 转换2的目的地StateA是一种状态(StateE).

  15. StateE标记为条目,StateA标记为退出

要完成时间步骤,请遵循退出状态的工作流StateA输入图表或状态的工作流程StateE

防止回溯

在本例中,终端连接防止回溯。初始化状态流图条目执行的操作为StateA.出现一个新的时间步长,图表苏醒。请遵循状态流程图执行的工作流程, Stateflow找到多个出站转换StateA.此时步长X = 1,Y = 1,Z = 1

请遵循评估过渡的工作流程,此图表的转换计算步骤依次为:

  1. 过渡1StateA标记为评估。

  2. 过渡1StateA有一种状况。

  3. 条件为真。

  4. 转换1的目的地StateA不是一种状态。

  5. 结确实有外向的跃迁。

  6. 从连接处的过渡1被标记为评估。

  7. 从结点出发的过渡1有一个条件。

  8. 条件为假。

  9. 从连接处的过渡2被标记为评估。

  10. 从结点出发的过渡2有一个条件。

  11. 条件为假。

  12. 从连接处的过渡3被标记为评估。

  13. 从结点开始的过渡3没有条件。

  14. 目的地不是一个状态,也没有任何传出转换。

  15. 回到状态流程图执行的工作流程

要完成时间步骤,请遵循状态流程图执行的工作流程StateA从你停止的地方开始。

条件和转换操作

条件的行为

在转换标签语法中,条件操作遵循转换条件并被花括号括起来({}).当条件被计算为true时,但在确定转换路径有效之前,将执行条件操作。

转换操作

在转换标签语法中,转换操作前面有一个正斜杠(/),并用花括号括起来({}).只有在确定转换路径有效之后,才执行转换操作。

在本例中,条件操作和转换操作都存在。初始化状态流图条目执行的操作为StateA.出现一个新的时间步长,图表苏醒。有多个出站转换StateA.此时步长X = 1,Y = 1,Z = 1

使用条件和转换操作评估传出转换

请遵循评估过渡的工作流程,此图表的转换计算步骤依次为:

  1. 过渡1StateA标记为评估。

  2. 过渡1StateA有情况([y >= 1]).

  3. 条件为真。

  4. 没有条件操作。

  5. 转换1的目的地StateA不是一种状态。

  6. 结确实有外向的跃迁。

  7. 从连接处的过渡1被标记为评估。

  8. 从结点出发的过渡1有一个条件([x > 2]).

  9. 条件为假。

  10. 从连接处的过渡2被标记为评估。

  11. 从结点出发的过渡2有一个条件([x >= 1]).

  12. 条件为真。

  13. 有一个条件操作({y = 0;}).现在Y = 0

  14. 结确实有外向的跃迁。

  15. 从连接处的过渡被标记以进行计算。

  16. 从结点出发的过渡1有一个条件([z >= 5]).

  17. 条件为假。

  18. 过渡2StateA标记为评估。

  19. 过渡2StateA没有条件。

  20. 转换2的目的地StateA是一种状态(所述).

  21. 所述标记为条目,StateA标记为退出.执行此有效路径的转换操作(/{z = 5}).现在Z = 5

要完成时间步骤,请遵循退出状态的工作流StateA输入图表或状态的工作流程StateE

相关的话题

这个话题有帮助吗?