主要内容

使用事件执行图表

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

如何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. 图表确定从活动状态的转换BD是否作为事件的结果有效F

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

  12. 状态B变得不活跃。

  13. 状态D变得活跃。

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

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

另请参阅

|||||||

相关的话题