after
在事件广播或指定时间后执行图
描述
如果自关联状态激活以来 E
事件至少已发生 n
次,则 after(
返回 n
,E
)true
。否则,运算符返回 false
。
如果图自关联状态激活以来至少唤醒了 n
次,则 after(
返回 n
,tick
)true
。否则,运算符返回 false
。
当 Simulink® 模型中的 Stateflow® 图有输入事件时,不支持隐式事件 tick
。
如果自关联状态激活以来至少已经过 n
个时间单位,则 after(
返回 n
,time_unit
)true
。否则,运算符返回 false
。
在 Simulink 模型的图中,将 time_unit
指定为秒 (sec
)、毫秒 (msec
) 或微秒 (usec
)。如果将 n
指定为表达式,图会在仿真期间随着表达式值的变化而调整时滞。
在 MATLAB® 中的独立图中,将 n
指定为大于或等于 0.001
的值且将 time_unit
指定为秒 (sec
)。运算符创建一个 MATLAB timer
对象,该对象生成隐式事件来唤醒图。MATLAB timer
对象的精度限制在 1 毫秒。有关详细信息,请参阅Events in Standalone Charts。
当图完成执行关联状态及其子状态的
entry
动作时,将创建timer
对象。如果将n
指定为在图执行期间其值发生变化的表达式,则图不会调整timer
对象的时滞。当关联状态激活时,
timer
对象会在该状态图步结束时开始运行。此状态图步可以包括图中其他并行状态的执行。如果图在从
timer
对象接收到隐式事件时正在处理另一项操作,则图会将事件排队。当前状态图步完成后,图会处理该事件。如果与时序逻辑运算符相关联的状态在图处理隐式事件之前变为非激活状态,则该事件不会唤醒图。
示例
提示
您可以使用引号将关键字
'tick'
、'sec'
、'msec'
和'usec'
括起来。例如,after(5,'tick')
等效于after(5,tick)
。每当关联状态重新激活时,Stateflow 图都会重置
after
运算符使用的计数器。绝对时间时序逻辑运算符的计时取决于 Stateflow 图的类型:
Simulink 模型中的图根据仿真时间定义绝对时间时序逻辑。
MATLAB 中的独立图根据挂钟时间定义绝对时间时序逻辑,其精度限制在 1 毫秒。
计时上的差异会影响图的行为。例如,假设此图正在执行状态
A
的during
动作。在 Simulink 模型中,对
f
的函数调用在单个时间步中执行,不会增加仿真时间。图第一次唤醒且状态A
已激活至少 2 秒时,会发生从状态A
到状态B
的转移。状态B
中的entry
动作显示的值仅取决于 Simulink 求解器使用的步长。在独立图中,对
f
的函数调用可能需要几秒的挂钟时间才能完成。如果调用持续两秒以上,图会将与after
运算符相关联的隐式事件排队。当函数f
完成执行时,会发生从状态A
到状态B
的转移。状态B
的entry
动作显示的值取决于完成对f
的函数调用所需的时间。
版本历史记录
在 R2014b 中推出