与传统的S7-300/400系列PLC不同,S7-1200/1500系列PLC使用IEC定时器(IEC timer)。IEC定时器的数据(设定值、当前值等)存储在指定的数据块中,用户程序中可以使用的定时器的数量仅受CPU存储容量大小的限制。今天这篇文章,我们就来谈谈IEC定时器的使用。
S7-1200提供了四种IEC定时器:TP(Timer
Pulse,脉冲定时器)、TON(Timer ON-Delay,延时接通定时器)、TOF(Timer
OFF-Delay,延时断开定时器)和TONR(Timer Accumulator,时间累加定时器)。
在博途环境下添加IEC定时器时,系统会自动为其分配背景数据块。本例程添加一个TON定时器,背景DB块如下图:
可以修改背景数据块的名称,也可以使用默认值。这里我们采用默认值,点击【OK】确认后,在系统块(System blocks)中可以看到新生成的IEC定时器的背景数据块包含如下参数:
IEC定时器中常用的参数有五个(可以访问控制):
IN(Input,定时器启动,Start timer);
R(Reset,定时器复位,Reset timer);
PT(Preset time,时间预设值,必须大于0);
ET(Elapse time,当前时间值,时间流逝值);
Q(Ouput,输出);
IEC定时器的时间值是一个32位的双整型变量(DInt),默认为毫秒(ms),最大定时值为
2,147,483,647 ms。当然,以毫秒计算有时候是不方便的,S7-1200也支持以 天-小时-分钟-秒
的方式计时,在时间值的前面加上符号“T#”,比如定时200s,写作T#200s;定时1天-2小时-30分钟-5秒-200毫秒,写作:T#1d_2h_30m_5s_200ms,如下图:
下面来分别介绍下各定时器的时序:
脉冲定时器(TP,Timer
Pulse)用来产生一定时间宽度的脉冲信号,当IN信号从0变为1时,定时器开始计时,此时输出Q为1,;在整个时间流逝的过程中,无论输入IN的信号是否变化,输出Q始终为1;当实际值ET大于等于预设值PT时,输出Q变为0;当输入值IN再次从0变为1时,定时器重新计时;
脉冲定时器的时序如下图:
延时接通定时器(TON,Timer ON-delay)将信号延时接通。
当输入信号IN从0变为1时,定时器开始计时,此时输出Q为0。在计时的过程中,如果时间流逝值ET大于等于预设值PT且输入IN的信号为1时,输出Q为1;在计时过程中,如果输入IN的信号从1变为0,则定时器停止计时。若再次从0变为1,则定时器重新开始计时。当输出Q为1时,若输入IN从1变为0,则输出Q变为0。
延时接通定时器的时序如下图:
延时断开定时器(TOF,Timer Off-delay)将某个信号延时断开。
当输入信号IN从0变为1时,定时器启动,此时输出Q为1。当输入信号IN从1变为0时,定时器开始计时,输出Q保持为1,当流逝的时间值ET大于等于预设的时间值PT且输入IN保持为0时,输出Q变为0。在时间流逝的过程中,若输入IN从0变为1,则定时器复位,当从1变为0时,定时器重新开始计时。
延时断开定时器(TOF)的时序如下图:
时间累加器(TONR,Timer accumulaor)
时间累加器可以对输入信号IN的状态1信号进行累加。当输入信号IN从0变为1时,定时器开始计时,此时输出Q的值为0。定时器计时的过程中,流逝的时间被记录在ET中。若在到达预设值PT之前,输入信号从1变为0,则定时器停止计时。当下次输入信号IN从0变为1时,定时器从上次记录的ET值开始继续计时,直到ET累计的时间大于或等于PT时,输出Q变为1;
当输出Q变为1时,无论输入IN的信号怎么变化,都保持为1。
当复位信号R从0变为1时,输出Q和时间流逝值ET均被复位为0;
时间累加器的时序如下图:
好了,关于S7-1200的IEC定时器就先介绍到这里,欢迎扫描下面的二维码关注我们的微信公众号。
发表评论