状态流图如何响应事件
Stateflow图表仅在以循环方式响应事件时执行。
由于图表在单个线程上运行,因此基于事件发生的操作对该事件是原子性的。图表中由事件引起的所有活动都在执行返回到接收事件之前发生的活动之前完成。一旦事件启动了一个操作,除非被提前返回中断,否则该操作将完成。
状态流事件源
Simulink事件唤醒状态流程图。您可以使用事件通过广播事件来控制图表的处理。
事件具有层次结构(父级)和范围。父级和作用域共同定义了对事件的访问范围。事件的父级通常决定谁可以触发该事件(具有接收权限)。
图表如何处理事件
状态流程图通过图表层次结构从上到下处理事件:
1 对活动状态执行during和on event_name操作。
2 检查子状态中的有效转换
除Simulink块的输出边缘触发器外,所有事件在图表中都有以下执行:
1 如果事件的接收器处于活动状态,则执行。(事件接收器是事件的父级, 除非使用send()函数进行定向事件广播。)
2 如果事件的接收器未处于活动状态,则什么都不会发生。
3 在广播事件后,广播者根据导致事件的动作语句类型执行早返回逻辑。
注意:Simulink模型中的输出边缘触发事件执行相当于在1和0之间切换输出数据值的值。它不被视为Stateflow事件。