本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

图执行的类型

Stateflow 图的生命周期

Stateflow® 图会经历几个执行阶段:

阶段说明
非激活图不具有激活状态
激活图具有激活状态
休眠图具有激活状态,但没有要处理的事件

当 Simulink® 模型首次触发 Stateflow 图时,图未激活且不具有激活状态。在图执行并完全处理来自 Simulink 模型的初始触发事件后,它将控制权转移回模型并进入休眠模式。在发生下一个 Simulink 触发事件时,图从休眠状态被激活。

请参阅How Events Drive Chart Execution

未激活图的执行

当图未激活并且首次被来自 Simulink 模型的事件触发时,它会首先执行其默认流程图集(请参阅Order of Execution for a Set of Flow Charts)。如果此动作不会导致进入某状态并且图具有并行分解,则每个并行状态都将被激活(请参阅Enter a Chart or State)。

如果执行默认流路径不会导致进入某状态,则会发生状态不一致错误。

激活图的执行

在图首次被 Simulink 模型触发后,它成为激活图。当图接收到来自模型的另一个事件时,它将再次作为激活图执行。如果图不具有状态,则每次执行都等同于初始化图。否则,将执行激活子状态。并行状态按照其激活顺序执行。

初始化时的图执行

默认情况下,图在首次唤醒时,它会执行默认转移路径。此时,图可以访问输入、写入输出和广播事件。

如果希望图从已知配置开始执行,可以启用 Execute (enter) Chart At Initialization 图属性。当您打开此选项时,图的状态配置将在时间 0 处初始化,而不是在首次发生输入事件时。图的默认转移路径在模型初始化阶段的时间 0 处执行,对应于 S-Function 的 mdlInitializeConditions() 阶段。有关详细信息,请参阅Execute (Enter) Chart at Initialization

注意

如果此图的输出连接到 SimEvents® 模块,请不要选中此复选框。要了解有关在模型中同时使用 Stateflow 图和 SimEvents 模块的详细信息,请参阅 SimEvents 文档。

由于初始化阶段的瞬态性质,请不要在图的默认转移路径中执行以下这些会在初始化阶段执行的动作及其相关联的状态 entry 动作。请遵循以下指导原则:

  • 不要访问图输入数据,因为连接到图输入端口的模块可能尚未初始化其输出。

  • 不要从其他图中调用导出的图形函数,因为这些图可能尚未初始化。

  • 不要广播函数调用输出事件,因为触发子系统可能尚未初始化。

您可以在 Configuration Parameters 对话框的 Diagnostics > Stateflow 窗格中控制对图输入数据进行无效访问的诊断操作级别。有关详细信息,请参阅Invalid input data access in chart initialization (Simulink)诊断的文档。

在不包含状态的 Stateflow 图中忽略在初始化时执行。

相关主题