1.概述
在某些设备控制程序中可能要求定时器在计时的过程中具备暂停计时的功能,在计时期间,如果暂停信号为高电平,计时器停止工作,但其当前计时值需要保留,当暂停信号为低电平时,定时器在暂停前的计时值基础上继续计时。
大部分PLC没有提供具备暂停功能的定时器,这就需要编程者自己通过程序来实现这一功能。当然,PLC本身的灵活的可编程性能为实现这一功能提供了很多解决方案,例如可以用定时器与计数器配合,将暂停信号串在计数器的计数端,就能完成带暂停功能的计时器功能。
2 在Twido系列PLC中的实现方法
在Twido PLC中可以使用周期事件来实现具备暂停功能的定时/计时器。Twido具有一路周期可在5~255ms间调整的周期事件功能,也就是时间在5~255ms之间的一个定时中断。首先看一下周期事件的设置:
上面配置了一个100ms的周期事件(定时中断),在此事件/中断中调用0号子程序,超级定时器的实现程序就放在这个子程序中。
上面程序段中使用的变量:
%M0 超级定时器使能
%M1 超级定时器暂停
%M2 超级定时器复位
%M3 超级定时器输出
%MW10 超级定时器计时值
%MW11 超级定时器设置值
在程序使用这个自制的超级定时器:
需要注意之处(如果在程序使用了子程序,必须在主程序结束处加END指令):
程序的指令表源码:
(* 设置超级定时器定时时间值 *)
LD 1
[ %MW11 := 100 ]
(* 超级定时器时间到后输出 *)
LD %M3
ST %Q0.0.0
(* 超级定时器的便能、暂停及复位 *)
LD 1
MPS
AND %I0.0.0
ST %M0
MRD
AND %I0.0.1
ST %M1
MPP
AND %I0.0.2
ST %M2
(* 如果在程序使用了子程序,必须在主程序结束处加END指令 *)
END
(* 一个时基为100MS的超级定时器 *)
SR0:
LD 1
MPS
AND %M0
MPS
ANDN %M1
AND [ %MW10 < %MW11 ]
[ INC %MW10 ]
MPP
AND [ %MW10 >= %MW11 ]
ST %M3
MPP
AND %M2
[ %MW10 := 0 ]
RET
如果需要,在周期中断程序中可以做出多个类似的定时器。