带重置的接通延时计时器 (TONR)
TONR 指令是一个非保持型计时器,用于累加 TimerEnable 置位的时间。
架构和安全支持
下表列出了支持此指令的控制器和应用程序。
架构 | 标准应用程序 | 安全应用程序 |
|---|---|---|
CompactLogix 5370、ControlLogix 5570、Compact GuardLogix 5370 和 GuardLogix 5570 控制器 | 是 | 否 |
CompactLogix 5380、ControlLogix 5580、Compact GuardLogix 5380、GuardLogix 5580 和 ControlLogix 5590 控制器 | 是 | 是 |
可用语言
梯形图
此指令不可用于梯形图中。
功能块

结构化文本
TONR(TONR_tag);
操作数
结构化文本
操作数 | 类型 | 格式 | 说明 |
TONR 标签 | FBD_TIMER | 结构 | TONR 结构 |
有关结构化文本中表达式语法的详细信息,请参阅结构化文本语法。
功能块
操作数 | 类型 | 格式 | 说明 |
TONR 标签 | FBD_TIMER | 结构 | TONR 结构 |
FBD_TIMER 结构
输入参数 | 数据类型 | 说明 |
EnableIn | BOOL | 如果此参数清零,指令不会执行,也不会更新输出。如果置位,则执行指令。 默认置位。 |
TimerEnable | BOOL | 该参数置位时,计时器运行并累加时间。 默认清零。 |
PRE | DINT | 计时器预设值。该值为 ACC 必须达到的时间量(1 毫秒),达到该时间量时计时结束。如果该值无效,指令会将 Status 中的相应位置位,但计时器不执行。 有效值 = 0 到最大正整数 |
重置 | BOOL | 计时器复位请求。该值置位时,计时器复位。 默认清零。 当 Reset 输入参数置位时,指令将 EN、TT 和 DN 清零,并设置 ACC = 0。 |
输出参数 | 数据类型 | 说明 |
EnableOut | BOOL | 指令生成的有效结果。 |
ACC | BOOL | 累加时间(毫秒)。 |
ENF | BOOL | 计时器使能输出。表示计时器指令已使能。 |
TT | BOOL | 计时器计时输出。该参数置位时,表示计时操作正在进行。 |
DN | BOOL | 计时完成输出。表示累加时间大于或等于预设值。 |
状态 | DINT | 功能块的状态。 |
InstructFault (Status.0) | BOOL | 该指令检测到以下执行错误之一。这不是轻微或严重的控制器错误。检查其他状态位以确定发生的情况。 |
PresetInv (Status.1) | BOOL | 预设值无效。 |
说明
如果为真,TONR 指令将累加时间,直到:
- TONR 指令被禁用
- ACC
PRE
时基始终为 1 毫秒。例如,对于 2 秒计时器,应将 PRE 值输入为 2000。

“复位” 输入参数置位时,该指令将复位。如果在 Reset 为真时 TimerEnable 置位,则当 Reset 恢复为假时,TONR 指令会重新开始计时。
计时器工作原理
计时器工作时会用当前时间减去上次扫描的时间:
- ACC = ACC + (current_time - last_time_scanned)
更新 ACC 后,计时器设置 last_time_scanned = current_time。从而使计时器为下一次扫描做好准备。
重要提示:
在计时器运行时,应务必至少每隔 69 分钟扫描一次计时器。否则 ACC 值会不正确。
last_time_scanned 值的上限为 69 分钟。如果在 69 分钟内未扫描计时器,计时器的计算值将翻转。发生这种情况时,ACC 值会不正确。
如果将该指令放在以下位置,计时器运行时,应在 69 分钟内扫描一次:
- 子例程
- JMP 与 LBL 指令之间的代码段
- 顺序功能图 (Sequential Function Chart, SFC)
- 事件或周期性任务
- 阶段状态例程
影响数学状态标志
否
严重/轻微故障
没有特定于此指令的故障。有关操作数相关的故障,请参阅 。
执行
功能块
条件/状态 | 执行的操作 |
预扫描 | EnableIn 和 EnableOut 位设置为假。 |
Tag.EnableIn 为假 | EnableIn 和 EnableOut 位设置为假。 |
Tag.EnableIn 为真 | EnableIn 和 EnableOut 位设置为真。 将执行指令的主算法,并更新输出。 |
指令首次运行 | 不适用 |
指令首次扫描 | EN、TT 和 DN 清零,ACC 值设置为 0。 |
后扫描 | EnableIn 和 EnableOut 位设置为假。 |
结构化文本
在结构化文本中,EnableIn 在普通扫描期间始终为真。如果指令处于由逻辑激活的控制路径中,指令将会执行。
条件/状态 | 执行的操作 |
预扫描 | 请参见“功能块”表中的“预扫描”行。 |
正常执行 | 请参见“功能块”表中的“Tag.EnableIn 为真”行。 |
后扫描 | 请参见“功能块”表中的“后扫描”行。 |
示例
功能块

结构化文本
TONR_01.PRE := 500;
TONR_01.Reset := Reset;
TONR_01.TimerEnable := Input;
TONR(TONR_01);
timer_state := TONR_01.DN;
提供反馈