定时器是编程中很常用的一个功能,编程人员需要熟悉其各种原理特性,这样才能在工作中少踩坑。本次绍定时器的其中一个特性,即定时器的异步刷新。
原因如下:
从定时器启动接通执行定时那一刻,定时器就一直在运行,且本身的时间累计不受plc扫描周期影响。5秒的设定时间到,定时器本身会完成计时,但是由于此刻plc程序并不会马上立即执行定时完成的程序,而是要等到plc刷新到这一段才开始检查定时器是否完成计时。这样,最终时间累计就会受plc扫描周期影响。
为了放大该影响,笔者故意在程序中加入wait等待指令,故意拉长程序扫描时间,这样就很明显采集到了一个20ms的累计时间误差。
由于定时器异步刷新的特点,所以不能用它来做精确定时。精确定时还是推荐使用循环中断(ob30)配合计数器来实现。