系列视频:S7-200跟我学/跟我做:

S7-200CN: 定时器-跟我学 - 24/185 https://www.ad.siemens.com.cn/service/elearning/cn/CourseV2.aspx?CourseID=273
S7-200CN: 定时器-跟我做 - 25/185 https://www.ad.siemens.com.cn/service/elearning/cn/CourseV2.aspx?CourseID=274
S7-200CN: 接通延时定时器-跟我学 - 60/185 https://www.ad.siemens.com.cn/service/elearning/cn/CourseV2.aspx?CourseID=309
S7-200CN: 接通延时定时器-跟我做 - 61/185 https://www.ad.siemens.com.cn/service/elearning/cn/CourseV2.aspx?CourseID=310
S7-200CN: 断开延时定时器-跟我学 - 62/185 https://www.ad.siemens.com.cn/service/elearning/cn/CourseV2.aspx?CourseID=311
S7-200CN: 断开延时定时器-跟我做 - 63/185 https://www.ad.siemens.com.cn/service/elearning/cn/CourseV2.aspx?CourseID=312
S7-200CN: 保持型接通延时定时器-跟我学 - 64/185 https://www.ad.siemens.com.cn/service/elearning/cn/CourseV2.aspx?CourseID=313
S7-200CN: 保持型接通延时定时器-跟我做 - 65/185 https://www.ad.siemens.com.cn/service/elearning/cn/CourseV2.aspx?CourseID=314

 

定时器

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

 

定时器号和分辨率

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

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

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

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

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

不同定时器的功能

定时器在子程序中的表现

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

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

 

常问问题

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

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

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

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

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

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

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

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