• {{item.name}}
{{item.name}}
{{item2.name}}
更多

定时器介绍

star star star star star
0 分
  • 软件编程
  • S7-200
发布时间:2024年04月24日
  • 0
  • 0
定时器介绍

定时器

S7-200指令提供了下述三种类型的定时器。

  • 接通延时定时器(TON):用于单一间隔的定时
  • 有记忆的接通延时定时器(TONR):用于累计许多时间间隔
  • 断开延时定时器(TOF): 用于关断或者故障事件后的延时

定时器号和分辨率

定时器对时间间隔计数。定时器的分辨率(时基)决定了每个时间间隔的长短。

定时器号决定了定时器的分辨率(时基)

SIMATIC定时器有三种分辨率:1ms、10ms和100ms。

S7-200提供了256个可供使用的定时器,即用户可用的定时器号为T0-T255,一旦用户选择了定时器号,就意味着定时器的分辨率(时基)已经确定了。定时器号的分辨率(时基)及最大计时时间,如下表:

表1. 定时器号和分辨率

定时器类型
分辨率
最大定时值
定时器值
TONR
(可保持)
1 ms
32.767s (0.546min.)
T0, T64
10 ms
327.67s (5.46min.)
T1-T4, T65-T68
100 ms
3276.7s (54.6min.)
T5-T31, T69-T95
TON,TOF
(不保持)
1 ms
32.767s (0.546min.)
T32, T96
10 ms
327.67s (5.46min.)
T33-T36, T97-T100
100 ms
3276.7s (54.6min.)
T37-T63, T101-T255

不同分辨率的定时器按以下规律刷新:

  • 1ms:1ms分辨率的定时器,定时器位和当前值的更新不与扫描周期同步。对于大于1ms的程序扫描周期,在一个扫描周期内,定时器位和当前值刷新多次。
  • 10ms:10ms分辨率的定时器,定时器位和当前值在每个程序扫描周期的开始刷新。定时器位和当前值在整个扫描周期过程中为常数。在每个扫描周期的开始会将一个扫描累计的时间间隔加到定时器的当前值上。
  • 100ms:100ms分辨率的定时器,定时器位和当前值在指令执行时刷新。因此为了保证正确的定时值,要确保在一个程序扫描周期中,只执行一次100ms定时器指令。

注意:不能将同一个定时器号同时用作TOF和TON。例如,不能既有TON T32又有TOF T32。也不能重复使用同一定时器号定时。

不同定时器的功能

  • 接通延时定时器(TON): 当使能输入接通时,定时器开始计时,在当前值(TXXX)与预置值(PT)相等时,定时器位接通。使能输入断开后,定时器当前值清零。在定时器到达预置值后,它会继续计时直到计到最大值32767才停止。
  • 有记忆接通延时定时器(TONR): 当使能输入接通时,定时器开始计时;在当前值(TXXX)大于等于预置值时,定时器位接通。当使能输入断开时,定时器当前值保留。若要将定时器当前值清零,必须执行复位命令。在定时器到达预置值后,它会继续计时直到计到最大值32767才停止。
  • 断开延时定时器(TOF): 在输入端接通时,定时器位立即接通,当前值置为零;当输入端由接通转为断开时,定时器开始计时,直到预置时间。当定时器到达预置时间时,则定时器位断开,定时器当前值停止计时。当输入断开的时间小于预设值时,定时器位保持接通。下一次输入断开后,定时器从零开始重新计时直到达到预置值。

定时器在子程序中的表现

在条件调用子程序的主程序中,当停止子程序调用时,如果定时器已经激活正在计时,停止调用这个子程序会造成定时器的失控。不管此时定时器前面的激活条件如何变化,定时器(1ms、10ms 时基的)会一直走到最大值,定时器输出也会在达到设定值时接通;(100ms 时基的定时器会在上述情况下停止计时,但在逻辑上处于失控状态)。

如果用 SM0.0 调用子程序;或者在控制逻辑的时序上做到能够保证定时功能完整执行,定时器会正常运行。使用条件调用含有定时器的子程序时,一定要注意时序逻辑,以免造成程序运行错误。

常问问题

使用定时器加自复位做一个不断重复的计时,调用其他功能或子程序时,为何看起来工作不规律?

请注意《S7-200系统手册》中,或者前文关于三种定时器刷新规律的描述。

按这种方法使用定时器时,定时器的置位、复位可能与程序扫描周期不配合,存在造成上述问题的机制。

定时比较短的定时任务应使用“定时中断”功能,这样更为可靠。

编了一个利用定时器的程序,在编译时已经通过,为何下载到CPU中时提示出错?

这种情况往往是调用的定时器号与定时器类型不配合造成的。参见上面的表格,如T7只能用作TONR,而不能用于TON或TOF。

能否在子程序的局部变量中添加定时器类型?

S7-200的子程序不支持添加定时器或计数器的数据类型。


剩余80%未阅读,请登录查看大全章节内容

  • 评论
更多
  • 分享

    扫码分享

扫码进入移动端

信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。