三菱 | 定时器的这个知识点,99%的人都不知道!
前几天,有个工程师,问了我一个问题,他说在做一个工程,需要控制一个电机,运转1.25s的时间后,停止转动,发现总是存在误差,不能及时动作,就算用了1ms的定时器也是一样,存在延时,由于这个设备对时间的精度要求比较高,他没办法达到控制要求,以下是他写的程序:
这里我们要了解一个概念,普通的定时器,线圈的导通受到扫描周期的影响。
PLC的工作分为3个步骤,输入检测、程序扫描、输出刷新,这个过程需要消耗时间,也就是说,定时器线圈触发的条件,受到扫描周期的影响,要等程序扫描完加入下一个周期,才开始触发线圈,触发定时器线圈的时间到了,也要完成程序扫描然后才能输出。这个就会造成一些误差,触发线圈的时间最大有2个扫描周期的延时,线圈导通后,定时器的常开触点触发对应的指令最大也有2个扫描周期的延迟,这样一个定时器从触发,到触点动作,最大会有4个扫描周期的时间延迟。假如这个程序的扫描周期是10ms,那么延迟最大将达到40ms。
1ms和10ms级别的定时器不受扫描周期的影响,就是说你线圈的导通信号一导通那么定时器就会马上计时,这个不会受到扫描周期的影响,但是,定时器的常开触点触发控制指令时,这一步会受到扫描周期的影响,导致我们输出滞后了。
所以上图的这个程序定时时间到了,rst Y0不是马上执行的,而是要等到程序扫描完后,再执行Y0的复位,导致Y0输出的时间过长。
这个时候我们需要用到定时中断,我把程序优化了一下,如下图:
采用I601中断指针,I601这段中断程序每隔1ms就会执行一遍,这样的话延迟输出的时间就不会超过中断的时间间隔1ms的2倍,就是最多有2ms的延迟。精度大大的提高了。
部分不能看懂这篇文章的同学,可以先去学习plc扫描周期和中断的相关知识点。
来源:PLC发烧友,作者:陈育鑫