Stateflow 图的执行
当 Stateflow® 图唤醒时,图将按照一个工作流来执行动作。在下列情况下,Stateflow 图会唤醒:
在每个时间步
当 Stateflow 图收到事件时
当图第一次唤醒时,图将初始化并变为激活状态,如进入图或状态的工作流中所述。当不再执行任何动作时,图将进入休眠状态,直到有新的时间步或事件将图唤醒。
Stateflow 图执行的工作流
此流程图显示 Stateflow 在执行图或状态时相应的事件进程。在该流程图中,当前状态是指其中有决策正在进行或有进程正在发生的状态。

默认转移
默认转移是一种没有源的转移。在不包含任何状态的 Stateflow 图中,默认转移标记流程图的开始。有关详细信息,请参阅在 Stateflow 中创建流程图。
如果 Stateflow 图不包含任何状态,则图会在每次唤醒时计算默认转移路径。在标记待计算的默认转移后,图将按照 计算转移的工作流 中所示的步骤操作。
注意
图仅在进入状态时计算状态内的默认转移路径,而不是在图每次唤醒时计算。
外部转移
外部转移是一种退出源状态的转移。Stateflow 图将标记待计算的外部转移作为执行状态的第一步。在标记待计算的外部转移后,图按照 计算转移的工作流 中所示的步骤操作。
during 动作
during 动作是使用前缀 during 或 du 在状态标签动作中定义的动作。有关详细信息,请参阅定义状态中的动作。
当图被唤醒,状态为激活状态时,如果没有有效的外部转移,则状态会执行 during 动作。
内部转移
内部转移是一种不退出源状态的转移。有关详细信息,请参阅Control Chart Execution by Using Inner Transitions。
Stateflow 图在状态执行 during 动作后,会标记待计算的内部转移。在标记待计算的内部转移后,图按照 计算转移的工作流 中所示的步骤操作。
具有有效转移的图执行
在此示例中,Stateflow 图已经过初始化并执行了 StateA 和 StateA1 的 entry 动作。在一个新时间步,图被唤醒。
在此时间步,x = 5、y = 2 且 z = 0。

图执行以下步骤:
图有一个激活子状态
StateA。StateA有一个指向StateB的外部转移。图确定转移有效。图将
StateB标记为待进入,将StateA标记为待退出。要退出
StateA,图按照 退出状态的工作流 中所示的步骤操作。要进入
StateB,图按照 进入图或状态的工作流 中所示的步骤操作。
没有有效转移的图执行
在此示例中,Stateflow 图已经过初始化并执行了 StateA 和 StateA1 的 entry 动作。在一个新时间步,图被唤醒。
在此时间步,x = 3、y = 0 且 z = 0。

图执行以下步骤:
图有一个激活子状态
StateA。StateA有一个指向StateB的外部转移。图确定转移无效。图为
StateA执行during动作。现在y = 1。StateA没有任何内部转移。StateA的激活子状态是StateA1。StateA1有一个指向StateA2的外部转移。图确定转移无效。图为
StateA1执行during动作。现在x = 4。StateA1没有任何激活子状态。图进入休眠状态。