主要内容

使用事件执行图表

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

如何Stateflow图表响应事件

StateFlow图表以周期性方式响应事件。

  1. 事件唤醒了非活动图表。

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

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

    2. 图表执行活动状态的行动。

    3. 该图表继续在层次结构下的下一个级别。

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

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

事件金宝app楷模

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

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

  • 运营商发送可以广播本地或输出事件。

  • 运营商输入出口当图表执行进入或退出的状态下可以生成隐式本地事件。

  • 运营商改变当图表设置变量的值时,可以生成隐式本地事件。

在每种情况下,该图表中断其当前活动以处理新事件。当活动所造成的执行,图表返回到正在发生中断前的活动的新事件结束。

请注意

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

早期返回逻辑

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

动作类型

早期返回逻辑

状态入口行动 如果在处理本地事件后状态不再活动,则该图表停止进入状态的过程。的剩余语句,图表不执行入口行动。
状态行动 如果在处理本地事件后状态不再活跃,则图表停止执行该状态。的剩余语句,图表不执行行动。
状态出口行动 如果在处理本地事件后状态不再活跃,图表将停止退出状态的过程。的剩余语句,图表不执行出口行动和任何过渡行动和国家入口退出状态导致的操作。
条件措施 如果内部或外部转换路径的源状态,或默认转换路径的父状态在本地事件处理后不再活动,图表将停止转换过程。图表不执行转换路径或任何状态上的其余操作出口入口从过渡中产生的行动。
过渡动作 如果过渡路径的父级未处于活动状态,或者父级具有活动置位,则图表停止转换过程。图表不执行转换路径或任何状态上的其余操作入口从过渡中产生的行动。

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

假设状态一个当图表收到事件时是活动的吗E.该图表以以下步骤回应该事件:

  1. 图表确定从活动状态的转换一个国家B是否作为事件的结果有效E

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

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

  4. 图表确定从活动状态的转换一个国家C是否作为事件的结果有效F

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

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

  7. 状态C变得活跃。

  8. 状态C执行它入口行动。

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

提示

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

您可以设置检测无向本地事件广播的诊断级别。在“配置参数”对话框中打开诊断>Stateflow窗格并设置无向事件广播参数没有一个警告,或错误.默认设置是警告

独立图表中的事件

独立状态溢图在调用时接收输入事件一步MATLAB中的功能或输入事件函数®

独立图表还接收Matlab的隐式事件计时器与绝对时间时间逻辑运算符相关联的对象, 和每一个.这些运营商在挂钟时间来定义时序逻辑。如果与时间逻辑运算符关联的状态在图表处理隐式事件之前变为无效,则事件不会唤醒图表。

排队的事件

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

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

假设状态一个当图表收到事件时是活动的吗E.该图表以以下步骤回应该事件:

  1. 图表确定从活动状态的转换一个国家B是否作为事件的结果有效E

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

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

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

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

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

  7. 状态B变得活跃。

  8. 状态B执行它入口行动。

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

  10. 图表确定从活动状态的转换B国家D是否作为事件的结果有效F

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

  12. 状态B变得不活跃。

  13. 状态D变得活跃。

  14. 状态D执行它入口行动。

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

另请参阅

|||||||

相关话题