主要内容

本页翻译不是最新的。点击此处可查看最新英文版本。

Stateflow 图的执行

R2026a

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

  • 在每个时间步

  • 当 Stateflow 图收到事件时

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

Stateflow 图执行的工作流

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

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

默认转移

默认转移是一种没有源的转移。在不包含任何状态的 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。

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 图已经过初始化并执行了 StateA 和 StateA1 的 entry 动作。在一个新时间步,图被唤醒。

在此时间步,x = 3、y = 0 且 z = 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. 图进入休眠状态。

另请参阅

主题