Main Content

every

按固定间隔执行图

描述

示例

自关联状态激活以来,E 事件每发生 n时,every(n,E) 返回 true。否则,运算符返回 false

示例

自关联状态激活以来,图每唤醒 n时,every(n,tick) 返回 true。否则,运算符返回 false

当 Simulink® 模型中的 Stateflow® 图有输入事件时,不支持隐式事件 tick

示例

自关联状态激活以来,每经过 n 秒时,every(n,sec) 返回 true。否则,运算符返回 false

在 MATLAB® 中的独立图中,将 n 指定为大于或等于 0.001 的值。运算符创建一个 MATLAB timer 对象,该对象生成隐式事件来唤醒图。MATLAB timer 对象的精度限制在 1 毫秒。有关详细信息,请参阅Events in Standalone Charts

  • 当图完成执行关联状态及其子状态的 entry 动作时,将创建 timer 对象。对于后续迭代,当图完成执行关联状态及其子状态的 during 动作时,将重置 timer 对象。如果将 n 指定为在图执行期间其值发生变化的表达式,则图仅在 timer 对象重置时调整时滞。

  • 当关联状态激活时,timer 对象会在该状态图步结束时开始运行。此状态图步可以包括图中其他并行状态的执行。

  • 如果图在从 timer 对象接收到隐式事件时正在处理另一项操作,则图会将事件排队。当前时间步完成后,图将处理该事件,并为下一次迭代重置计时器对象。

  • 如果与时序逻辑运算符相关联的状态在图处理隐式事件之前变为非激活状态,则该事件不会唤醒图。

注意

只有 MATLAB 中的独立图支持此语法。在 Simulink 模型的图中,请改用具有 after 运算符的外部自环转移。有关详细信息,请参阅不要在 Simulink 模型的图中用 every 来表示绝对时间时序逻辑

示例

全部展开

状态激活后,在图每处理三次 E 事件的广播时,显示状态消息。

on every(3,E): disp("ON");

Stateflow chart that uses the every operator in a state.

状态激活后,在图每处理五次 E 事件的广播时,发生转出关联状态的转移。

every(5,E)

Stateflow chart that uses the every operator in a transition.

自关联状态激活以来,每发生七次 tick 事件且变量 temp 大于 98.6 时,发生转出关联状态的转移。

every(7,tick)[temp > 98.6]

Stateflow chart that uses the every operator in a transition.

状态激活后,每过 12.3 秒 temp 变量增加 5。

在 MATLAB 中的独立图中,输入:

on every(12.3,sec): temp = temp+5;

Stateflow chart that uses the every operator in a state.

在 Simulink 模型中的图中,不支持使用 every 作为绝对时间时序逻辑运算符。

提示

  • 您可以使用引号将关键字括起来,如 'tick''sec'。例如,every(5,'tick') 等效于 every(5,tick)

  • 每当关联状态重新激活时,Stateflow 图都会重置 every 运算符使用的计数器。

  • MATLAB 中的独立图根据挂钟时间定义绝对时间时序逻辑,其精度限制在 1 毫秒。

版本历史记录

在 R2014b 中推出