介绍PLC双线圈输出的规则,一般情况下不允许出现双线圈输出,在三种特定的条件下允许双线圈输出。合理使用双线圈输出可以解决程序设计中的一些问题,还可以减少执行程序的时间。
问:什么是双线圈输出?
答:在用户程序中,同一编程元件的线圈使用了两次或多次,称为双线圈输出。
问:一般情况下为什么不允许双线圈输出?
答:图1a中有输出继电器Y0的两个线圈,在同一扫描周期,两个线圈的逻辑运算结果可能刚好相反,即Y0的线圈一个“通电”,一个“断电”。因为在程序执行完后才将Y0 的 ON/OFF 状态送到输出模块,对于Y0控制的外部负载来说,真正起作用的是最后一个 Y0 的线圈的状态。
图1 双线圈输出
由 P L C 的工作原理可知,PLC程序执行的结果(即运算得到的线圈的通断状态),马上就可以被后面的逻辑运算使用。Y0的线圈的通断状态除了对外部负载起作用外,通过它的触点,还可能对程序中别的元件的状态产生影响。图1a中Y0两个线圈所在的电路将
梯形图划分为3个区域。因为PLC是循环执行程序的,A区和C区中Y0 的状态相同。如果两个线圈的通断状态相反,不同区域中Y0的触点的状态也是相反的,可能使程序运行异常。作者曾遇到因双线圈引起的输出继电器快速振荡的异常现象。所以一般应避免出现双线圈输出现象,例如可以将图1a改为图1b。有时同一元件的线圈分别在不同的程序段中(如自动程序和手动程序),不能用这种合并控制电路的方法来处理双线圈问题。
问:为什么在某些情况下允许双线圈输出?
答:虽然同一元件的线圈在程序中出现两次或多次,只要能保证在同一扫描周期内只执行其中一个线圈对应的逻辑运算,这样的双线圈输出是允许的。
图2:手动/自动程序
问: 那几种情况允许双线圈输出?
下列三种情况允许双线圈输出:
(1)在跳步条件相反的两个程序段(如自动程序和手动程序)中,允许出现双线圈现象,即同一元件的线圈可以在两个程序段中分别出现一次。图2中的X10是自动/手动切换开关,当它为ON 时将跳过自动程序,执行手动程序;为OFF时将跳过手动程序,执行自动程序。实际上CPU 只执行正在处理的程序段中双线圈元件的线圈输出指令。
(2)在调用条件相反的两个子程序中,允许出现双线圈现象,即同一元件的线圈可以在两个子程序中分别出现一次。图3中X20为ON时调用在指针P0 处开始的子程序,X20 为 OFF 时调用在指针 P1 处开始的子程序。图中的 SRET 为子程序返回指令,FEND 为主程序结束指令。
与跳步指令控制的程序段相同,子程序中的指令只是在该子程序被调用时才执行,没有调用时不执行,因为调用它们的条件相反,在一个扫描周期内只能调用一个子程序,实际上只执行正在处理的子程序中双线圈元件的线圈输出指令。
图3:子程序调用
(3)如果使用三菱PLC的STL(步进梯形)指令,由于CPU 只执行活动步对应的STL 触点驱动的电路块,使用STL指令时允许双线圈输出,即不同时闭合的STL触点可以分别驱动同一编程元件的一个线圈。
在顺序功能图中,除了与并行序列有关的步之外,在任何时候各步对应的状态继电器只有一个为 ON。以图4 为例,只有当某一STL触点(图中的“胖触点”)接通时,PLC 才执行STL 触点控制的程序。图3中的状态继电器S21对应的步为活动步时,S21的STL触点闭合,Y1 的第一个线圈“通电”。此时S23对应的步为不活动步,没有执行Y1 的第2个线圈对应的输出指令。
图4:STL指令与双线圈
同一元件的线圈不能在可能同时为活动步的STL区内出现。并行序列中的各条支路是同时执行的,并行序列中两条不同支路中的某两步可能同时为活动步,它们的触点可能同时闭合,在处理双线圈输出时应注意这一问题。