1
PLC编程实用指南
1.5.4.2 1.4.2  定时、计数指令
1.4.2 定时、计数指令

定时与计数指令主要用于定时与计数,也是很常用的指令。特别在使用时间进行控制,或存储内部工作状态时,更需要用它。只是目前很多PLC不用这类指令,而用它的功能或功能块。

定时与计数指令本质上也是一种逻辑输出指令。它也是为了产生输出,实现从入到出的变换。只是,它是延时实现,或达到要求的计数值后实现。所以,有的PLC,如三菱公司PLC,起用定时器、计数器就是用输出(OUT)指令,只是其操作数用定时器、计数器,并在使用它时,同时对定时值、计数值也作设定。

1.常用定时指令

图1-37为三菱PLC调用定时器梯形图程序。

从图知,当X000 ON,T0线圈工作,经延时5s(该定时器计时单位为0.1s),T0的常开触点ON,可使Y000 ON。也就是说,从X000 ON到Y000 ON是有延时的。这里延时时间由定时器T0控制。

欧姆龙PLC定时指令有普通(TIM,时间间隔100ms)、高速(TIMH,时间间隔10ms)、高高速(TIMHH,时间间隔1ms)定时指令多种。在这指令之前,当然要对寄存R赋值,即写R,建立条件,或说连一个输入端。

指令在梯形图上的符号是方框或圆圈。如方框如图1-38所示。

978-7-111-39745-8-Chapter02-82.jpg

图1-37 定时器程序

978-7-111-39745-8-Chapter02-83.jpg

图1-38 欧姆龙PLC的TIM指令框图

这里×××为指定定时器的编号及设定值。

普通定时指令的设定值的设定单位为0.1s。设定值、现值都用BCD码表达。最大设定值可达9999,即999.9s。

如用高速定时指令的设定值的设定单位为0.01s。设定值、现值都用BCD码表达。最大设定值可达9999,即99.99s。用高高速定时指令则设定值的设定单位为0.001s。设定值、现值都用BCD码表达。最大设定值可达9999,即9.999s。

欧姆龙PLC使用定时器的梯形图如图1-39所示。

这里00002为输入点,000为定时器号,#150为定时设定值,单位为0.1s,故定时值为15s。00002 ON后延时15s,TIM000常开触点ON。而一旦00002 OFF,则TIM 000立即OFF。

978-7-111-39745-8-Chapter02-84.jpg

图1-39 定时器使用

欧姆龙CJ1H系列PLC还有TIMX指令。其功能与TIM相同,只是它是按十六进制计时。

提示:虽然这种PLC同时有TIM及TIMX指令,但在编程前要用编程软件,在PLC属性栏中,先做选择,而且,只能选用其中的一种。默认选定为TIM。其他带“X”的指令也都有此情况。

西门子PLC的定时器为增计数,如S7-200,用定时器33时,为每100ms计一个数,直到定时器的现值等于或大于设定值,则产生输出。在输出的同时,计时还在继续,直到达最大值。如图1-40所示,当I2.0 ON,T33开始计数,每100ms加1。到了其值等于3(这里设定值设为3),则T33标志位ON,且其现值还在增加。一旦I2.0 OFF,则计数停止,T33现值回到0,T33标志位OFF。

978-7-111-39745-8-Chapter02-85.jpg

图1-40 S7-200 ON延时定时器使用例子

S7-200除了有ON延时、OFF即时,还有OFF延时、ON即时的定时器。图1-41所示为它的工作情况。

978-7-111-39745-8-Chapter02-86.jpg

图1-41 S7-200 OFF延时定时器使用例子

S7-200定时器都可用以上介绍的复位指令(R)复位。复位作用期间,定时器的现值变为0,标志值OFF,停止计时。

2.其他定时指令

(1)高速定时指令(TIMH、TIMHH,西门子、三菱用不同编号的定时器实现),用其可实现10、1ms为单位的定时。

(2)累计定时指令(TTIM):用以累计计时。它是增计时,计时单位为0.1s。输入端ON时计时,OFF不计时,但不复位。再ON,再计,并累计计时,直到达到设定值,计时停止,并产生输出。计时复位使用复位端ON。

CJ1也还有与TTIM对应的TTIMX指令,所不同的也只是它是按十六进制数计时。

S7-200也有可累积计时的定时指令。如图1-42所示,12.1ON时计时,OFF停止,累计到设定值,产生输出。

978-7-111-39745-8-Chapter02-87.jpg

图1-42 S7-200可累积计时定时指令使用

(3)8位计时指令(TIML):CV1000机开始有此指令,是普通定时指令的加长,设定值可达8位,即99999999。计时值可达115天。

与TIML对应的TIMLX指令,所不同的也只是它是按十六进制数计时。它最多可计49710天。

(4)多输出计时指令(MTIM):CV1000机开始有此指令,可产生8个输出。这8个输出相应于8个设定值。计时时,计时是增计数,现值不断增大,与某一设定值相比,大或等于后者时,即产生相应输出。

这个定时指令,一个相当于多个,扩大了定时器的功能。

与MTIM对应的MTIMX指令,也是用十六进制计时。

3.西门子S7-300、400系列PLC定时指令

有5种,可表达为S5系列格式(称S5TIMER)或S7系列格式。分别是SP(PulseTimer)、SE(Extended Pulse Timer)、SD(ONDelay Timer)、SS(Retentive ON-Delay Timer)、SF(OFF-Delay Timer)。

定时器现值寄存器的内容如图1-43所示。

表1-10为不同时基的编号及最大可能设定的定时值。

978-7-111-39745-8-Chapter02-88.jpg

图1-43 S7-300定时器现值寄存器

表1-10 不同时基的编号及最大可能设定的定时值

978-7-111-39745-8-Chapter02-89.jpg

定时值要预设。其格式有如下两种:

W#16#wxyz:这里W为时基,wxyz为相应的定时值,BCD码。

S5T#aH_bM_cS_dMS:这里S5T表示为S5格式,abcd为相应的定时值的时分秒毫秒。选定后,其时基系统会自行确定。

这5种定时器的有关工作情况见有关使用说明,这里略。

4.有关定时器的使用问题

(1)欧姆龙及三菱PLC的定时指令虽只有延时ON一种,但完全可用这个指令与相应的基本逻辑指令组合,以实现这里的其他四种指令的功能。图1-44所示为ON及时,而OFF延时的程序。其他的程序略。

运行图1-45程序,对欧姆龙PLC而言,这里的200.00即为ON及时OFF延时的定时器。对三菱PLC而言,这里的M0即为ON及时OFF延时的定时器。

978-7-111-39745-8-Chapter02-90.jpg

图1-44 ON及时OFF延时定时程序

(2)用定时器产生定时脉冲(仅ON一扫描周期)信号。最简单的办法是用定时器自身的常闭触点去控制自身线圈,用它的常开触点去产生脉冲。如图1-45所示,这里T33的常闭触点控制T33定时器,当定时间1到,定时器T33产生输出,T33常开触点ON,而T33常闭触点OFF。后者将在下次执行此程序时,使定时器T33停止工作。这将使定时器T33停止输出:其常开触点ON一个扫描周期后,又转为OFF;而常闭触点OFF一个扫描周期后又转为ON,又可开始新的计时。如此周而复始,T33常开触点将不断产生定时脉冲。

要指出的是,对S7-200系列PLC的10ms级的定时器,可能是系统的原因,用此法是受限制的。如图所示,只能在本梯级前的梯级,如图中梯级1,能产生脉冲,而本梯级后,如梯级3,不能产生脉冲。其他两家PLC及S7-200其他级别的定时器无此问题。

5.常用计数指令

(1)三菱PLC计数器。图1-45所示为三菱PLC调用计数器梯形图程序。

978-7-111-39745-8-Chapter02-91.jpg

图1-45 用定时器产生定时脉冲

978-7-111-39745-8-Chapter02-92.jpg

图1-46 计数器程序

从图1-46可知,当X001从OFF到ON,则计数器C0线圈工作,计一个数,当C0计到3,则C0的常开触点ON,可使Y003 ON。也就是说,X001从OFF到ON 3次,Y003工作。这里计数设定值K3(即时数)也可为直接或间接地址。

它的计数器复位使用复位指令。如上例即使用RST C0。而且,实现技术的前提是不执行这个指令。

三菱的定时器、计数器按十六进制工作,故K值最大可设为65535(十六进制FFFF)。

(2)欧姆龙PLC计数器。它实现减计数。有两个输入端,一为计数端,另一为复位端。欧姆龙的指令的梯形图格式如图1-47所示。

该计数器的工作情况是:复位端(R)的逻辑条件为ON,停止计数,现值复位为设定值。复位端OFF,允许计数。这种情况下,当计数端(C)的逻辑条件从OFF到ON时,在该扫描周期,计数器的现值减1。其他情况下,现值不变。当现值减为0时,产生输出,且现值保持为0。

CJ1H还有CNTX指令,所不同的它用十六进制计数。所以,它的计数范围可扩大到65535。

(3)西门子PLC计数器。图1-48a所示为使用西门子增计数器指令程序。

978-7-111-39745-8-Chapter02-93.jpg

图1-47 欧姆龙PLC的计数器指令

978-7-111-39745-8-Chapter02-94.jpg

图1-48 使用西门子增、减计数器指令程序

图1-48a中,CU为增计数端,R为复位端,PV为设定值输入端,C0为计数器标号。当I0.1 ON,计数器复位(现值为0),停止计数,输出OFF。当I0.1 OFF,每I0.0从OFF到ON一次计数器作增1计数。计数器现值大于或等于设定值,计数器输出C0 ON,且继续计数,直到32767这个可能的最大值。而本图当计到48或大于48,则C0 ON,Q0.0工作。

西门子还有减计数器(CTD)。图1-48b所示为使用西门子PLC减计数器指令程序。这里,CD为增计数端,LD为装载端,PV设定值输入端,C1为计数器标号。当I1.2 ON,计数器装载(现值为100),停止计数,输出OFF。当I1.2 OFF,每I0.2从OFF到ON一次计数器作减1计数。计数器现值等于0,计数器产生输出(C0 ON),且计数停止。

6.可逆计数器

可进行双向计数。

(1)三菱PLC可逆计数器是双字的。也是用输出指令调用。计数的方向由相应的特殊继电器状态决定。其计数范围为-2147483648~2147483647,并在此范围内循环计数。即增到最大值时,如再增一个数,则当前值变为最小值。反之也类似。表1-11为FX2N系列的这些计数器及相应的方向切换特殊继电器。

表1-11 FX2N系列可逆计数器所使用的特殊继电器

978-7-111-39745-8-Chapter02-95.jpg

图1-49所示为使用三菱可逆计数器的梯形图程序。

图1-49中,C200为可逆计数器。M8200为其方向切换特殊继电器。M8200 OFF,C200增计数,ON,减计数。当X005 OFF,C200接收X004的增计数,当X005 ON,C200接收X006的减计数。而当X007 ON计数器复位,现值等于0,计数及输出都停止。图1-50所示为该计数器产生输出的情况。

978-7-111-39745-8-Chapter02-96.jpg

图1-49 三菱可逆计数器程序

978-7-111-39745-8-Chapter02-97.jpg

图1-50 可逆计数器产生输出简图

从图1-50可知,只要当前值从小与设定增加,到大于或等于设定值,计数器即产生输出。反之,或计数器复位,则停止输出。

(2)欧姆龙PLC可逆计数其指令为CNTR。除了有复位端,还有两个计数端,一个为正计数端(U),一个为减计数端(D)。西门子PLC为CTUD,还有个设定值输入端。其梯形图格式如图1-51所示。

其工作情况是,初始状态,或复位端ON时,现值为0,不计数。复位端OFF,允许计数。正端从OFF到ON,正计数,计数现值加1;负端从OFF到ON,减计数,计数现值减1。具体计数情况如图1-52所示。

978-7-111-39745-8-Chapter02-98.jpg

图1-51 可逆计数指令

978-7-111-39745-8-Chapter02-99.jpg

图1-52 可逆计数示意图

当增计数到设定值时,再增计1个数,则现值变为0,且产生输出,使计数完成标志位ON,如图1-53所示。

当减计数到现值为0时,再减1个数,则现值变为设定值,也产生输出,使计数完成标志位ON,如图1-54所示。

CJ1H还有CNTRX指令,与CNTR不同的是,它用十六进制,而不是用BCD码计数。所以,它的计数范围可扩大到65535。

978-7-111-39745-8-Chapter02-100.jpg

图1-53 增计数达到设定值时再增计1计数

(3)西门子PLC可逆计数器。图1-55所示为使用西门子PLC可逆计数器的梯形图程序。它是16位可逆计数,在-32768~32767之间循环计数。当计数值大或等于设定值(PV)时,计数器输出常开点ON,并继续计数。图1-56所示为执行该程序的实际计数及输出情况。

978-7-111-39745-8-Chapter02-101.jpg

图1-54 减计数减到0,再减1计数

978-7-111-39745-8-Chapter02-102.jpg

图1-55 西门子PLC可逆计数器