Main Content

Stateflow 图的执行

当 Stateflow® 图唤醒时,图将按照一个工作流来执行动作。在下列情况下,Stateflow 图会唤醒:

  • 在每个时间步

  • 当 Stateflow 图收到事件时

当图第一次唤醒时,图将初始化并变为激活状态,如进入图或状态的工作流中所述。当不再执行任何动作时,图将进入休眠状态,直到有新的时间步或事件将图唤醒。

Stateflow 图执行的工作流

此流程图显示 Stateflow 在执行图或状态时相应的事件进程。在该流程图中,当前状态是指其中有决策正在进行或有进程正在发生的状态。

Flow chart that shows the steps for executing a chart or state.

默认转移

默认转移是一种没有源的转移。在不包含任何状态的 Stateflow 图中,默认转移标记流程图的开始。有关详细信息,请参阅在 Stateflow 中创建流程图

如果 Stateflow 图不包含任何状态,则图会在每次唤醒时计算默认转移路径。在标记待计算的默认转移后,图将按照 计算转移的工作流 中所示的步骤操作。

注意

图仅在进入状态时计算状态内的默认转移路径,而不是在图每次唤醒时计算。

外部转移

外部转移是一种退出源状态的转移。Stateflow 图将标记待计算的外部转移作为执行状态的第一步。在标记待计算的外部转移后,图按照 计算转移的工作流 中所示的步骤操作。

during 动作

during 动作是使用前缀 duringdu 在状态标签动作中定义的动作。有关详细信息,请参阅定义状态中的动作

当图被唤醒,状态为激活状态时,如果没有有效的外部转移,则状态会执行 during 动作。

内部转移

内部转移是一种不退出源状态的转移。有关详细信息,请参阅Control Chart Execution by Using Inner Transitions

Stateflow 图在状态执行 during 动作后,会标记待计算的内部转移。在标记待计算的内部转移后,图按照 计算转移的工作流 中所示的步骤操作。

具有有效转移的图执行

在此示例中,Stateflow 图已经过初始化并执行了 StateAStateA1entry 动作。在一个新时间步,图被唤醒。

在此时间步,x = 5y = 2z = 0

Stateflow chart with top-level states called StateA and StateB. StateA has substates StateA1 and StateA2. StateB has substates StateB1 and StateB2.

图执行以下步骤:

  1. 图有一个激活子状态 StateA

  2. StateA 有一个指向 StateB 的外部转移。图确定转移有效。

  3. 图将 StateB 标记为待进入,将 StateA 标记为待退出。

  4. 要退出 StateA,图按照 退出状态的工作流 中所示的步骤操作。

  5. 要进入 StateB,图按照 进入图或状态的工作流 中所示的步骤操作。

没有有效转移的图执行

在此示例中,Stateflow 图已经过初始化并执行了 StateAStateA1entry 动作。在一个新时间步,图被唤醒。

在此时间步,x = 3y = 0z = 0

Stateflow chart with top-level states called StateA and StateB. StateA has substates StateA1 and StateA2. StateB has substates StateB1 and StateB2.

图执行以下步骤:

  1. 图有一个激活子状态 StateA

  2. StateA 有一个指向 StateB 的外部转移。图确定转移无效。

  3. 图为 StateA 执行 during 动作。现在 y = 1

  4. StateA 没有任何内部转移。

  5. StateA 的激活子状态是 StateA1

  6. StateA1 有一个指向 StateA2 的外部转移。图确定转移无效。

  7. 图为 StateA1 执行 during 动作。现在 x = 4

  8. StateA1 没有任何激活子状态。

  9. 图进入休眠状态。

相关主题