主要内容

使用事件执行图表

一个事件是一个可以在状态流中唤醒和触发动作的非图形对象®图表。有关更多信息,请参见通过广播事件同步模型组件

如何Stateflow图表响应事件

状态流程图以周期性的方式响应事件。

  1. 事件唤醒不活动的图表。

  2. 图表通过从上到下的图表层次结构执行转换和状态操作来响应事件。从图表层面开始:

    1. 图表检查状态之间的有效转换。

    2. 图表执行而且活动状态的操作。

    3. 图表继续到层次结构的下一层。

  3. 在接收到下一个事件之前,图表将变为非活动状态。

显示图表如何响应事件的流程图。

有关更多信息,请参见状态流程图的执行

事件金宝app模型

在仿真金宝app软件®模型,状态流程图接收来自模型中其他块的输入事件。

在处理事件时,状态或转换操作可以生成触发其他步骤的显式或隐式事件。例如:

  • 操作员发送可以广播本地或输出事件。

  • 运营商输入而且退出可以在图表执行进入或退出状态时生成隐式本地事件。

  • 操作员改变可以在图表设置变量值时生成隐式局部事件。

在每种情况下,图表都会中断其当前活动以处理新事件。当由新事件引起的活动完成执行时,图表返回到中断之前发生的活动。

请注意

在Simu金宝applink模型中,输出边缘触发事件的执行相当于在0和1之间切换输出数据值。这种类型的事件不会中断图表的当前活动。相反,接收块在模型下次执行该块时处理该事件。有关更多信息,请参见通过发送输出事件激活S金宝appimulink块

早回逻辑

处理局部事件的结果可能与事件生成之前发生的操作相冲突。根据操作类型的不同,图表通过使用早期返回逻辑来解决这些冲突。

动作类型

早回逻辑

状态条目行动 如果在处理本地事件后,状态不再活跃,图表将停止进入该状态的过程。列表中的其余语句不执行条目行动。
状态行动 如果在处理本地事件后状态不再活动,则图表将停止执行该状态。列表中的其余语句不执行行动。
状态退出行动 如果在处理本地事件后,该状态不再活跃,图表将停止退出该状态的进程。列表中的其余语句不执行退出动作也没有任何过渡动作和状态条目退出状态导致的操作。
条件作用 如果内部或外部转换路径的源状态或默认转换路径的父状态在处理本地事件后不再活动,则图表将停止转换过程。图表不会在转换路径或任何状态上执行其余操作退出而且条目进行转换所导致的操作。
过渡行动 如果转换路径的父路径不是活动的,或者父路径有活动的子状态,则图表将停止转换过程。图表不会在转换路径或任何状态上执行其余操作条目进行转换所导致的操作。

例如,在这个图表中,输入事件E本地活动F触发状态之间的转换。

包含状态A、B、C和D的状态流图。

假设这种状态一个当图表接收到事件时是活动的E.图表通过以下步骤响应事件:

  1. 该图表决定了从活动状态的过渡一个B作为事件的结果是否有效E

  2. 图表执行有效转换和广播事件的条件操作F

  3. 图表中断了状态的转换一个B并开始处理事件F

  4. 该图表决定了从活动状态的过渡一个C作为事件的结果是否有效F

  5. 状态一个执行它退出行动。

  6. 状态一个变得不活跃。

  7. 状态C变得活跃。

  8. 状态C执行它条目行动。

在图表处理事件之后F,国家C是图表的活动状态。因为国家一个不再活动,图表使用早期返回逻辑并停止从状态的转换一个B

提示

避免使用无定向本地事件广播。无方向本地事件广播可能在图表中导致不必要的递归行为。相反,使用定向广播发送本地事件。有关更多信息,请参见广播本地事件以同步并行状态

在模拟过程中,状态流程图可以检测到无定向的本地事件广播。若要控制诊断操作的级别,请打开“配置参数”对话框,然后在诊断>Stateflow窗格中,设置无定向事件广播参数没有一个警告,或错误.默认设置为警告.有关更多信息,请参见无定向事件广播(金宝app模型)

独立图表中的事件

类时,独立状态流图接收输入事件一步函数或MATLAB中的输入事件函数®

独立图表也从MATLAB接收隐式事件计时器与绝对时间时态逻辑运算符关联的对象,每一个.这些运算符根据时钟时间定义时间逻辑。如果与时间逻辑运算符关联的状态在图表处理隐式事件之前变为非活动,则该事件不会唤醒图表。

事件排队

如果图表在接收到事件时正在处理另一个操作,则当当前步骤完成时,图表将该事件排队等待执行。您可以通过设置配置选项指定事件队列的大小-eventQueueSize当您创建图表对象时。有关更多信息,请参见图表对象配置选项

例如,在这个图表中,输入事件E而且F触发状态之间的转换。假设SendF是MATLAB路径中调用输入事件函数的函数F

包含状态A、B、C和D的状态流图。

假设这种状态一个当图表接收到事件时是活动的E.图表通过以下步骤响应事件:

  1. 该图表决定了从活动状态的过渡一个B作为事件的结果是否有效E

  2. 图表执行有效转换的条件操作并调用该函数SendF

  3. SendF调用输入事件函数F.因为图表正在忙着处理一个条件操作,所以它将事件排队F

  4. 图表完成条件操作的执行。

  5. 状态一个执行它退出行动。

  6. 状态一个变得不活跃。

  7. 状态B变得活跃。

  8. 状态B执行它条目行动。

  9. 图表开始处理排队事件F

  10. 该图表决定了从活动状态的过渡BD作为事件的结果是否有效F

  11. 状态B执行它退出行动。

  12. 状态B变得不活跃。

  13. 状态D变得活跃。

  14. 状态D执行它条目行动。

在图表处理事件之后F,国家D是图表的活动状态。

另请参阅

|||||||

相关的话题