PLC双线圈输出的规则及在程序设计中的应用

[复制链接]
查看6112 | 回复23 | 2006-11-22 19:23:00 | 显示全部楼层 |阅读模式
介绍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区内出现。并行序列中的各条支路是同时执行的,并行序列中两条不同支路中的某两步可能同时为活动步,它们的触点可能同时闭合,在处理双线圈输出时应注意这一问题。

在用步进梯形指令、转移指令和子程序调用编制PLC程序时,正确使用双线圈输出,可以使程序简单、清晰易懂,因为有很多程序段没有执行,还可以缩短程序执行的时间。没有并行序列时,同时只有一个STL触点闭合。有并行序列时,同时闭合的STL触点的个数等于并行序列中的支路条数。因为在实际的系统中并行序列并不多见,使用TL指令时可以显著地缩短程序执行的时间。

问:怎样检查是否有双线圈输出?

答:可以用PLC的手持式编程器或在计算机上运行的编程软件来检查是否有双线圈输出。PLC一般并不将双线圈输出作为错误,只是将双线圈输出作为警告(Warning)。

有双线圈输出时,用户程序仍然可以执行。

问:在作双线圈输出检查时,会提示对同一编程元件多次使用了OUT(输出线圈)、SET(置位)和RST(复位),对同一编程元件是否可以多次使用了SET和RST指令?

答:SET和RST指令都有保持功能,即控制它们的触点电路断开后,置位或复位的效果保持不变,直到下一次执行相反的指令。对同一编程元件可以多次使用了SET和 RST 指令。

在三菱的 S W O P C - F X G P / WIN-C 编程软件的程序检查对话框中,在检查双线圈输出时,可以选择需要检查哪些输出指令被重复使用。输出指令包括OUT、SET、RST、PLS(上升沿检测)、PLF(下降沿检测)和MC(主控)指令,一般只需要对OUT 指令作双线圈检查。



图5:多种工作方式的切换

问:怎样实现不同的控制程序切换?

答:有的控制系统因产品、工艺或工作方式的改变,需要分别使用若干个不同的控制程序,有些编程元件的线圈可能会在各控制程序中都要出现。为了避免在同一扫描周期执行同一元件的多条线圈输出指令,可在PLC的硬件输入电路中使用单刀多掷的模式选择开关,来调用不同的子程序(见图5中选择单步、单周期和连续工作模式的开关),或用模式选择开关对应的各输入继电器的常开触点作为跳步条件,用跳步指令来切换不同的程序段。

yd810820 | 2006-11-23 18:23:00 | 显示全部楼层
谢谢 受益非浅~~~
dongchunda | 2006-12-9 14:58:00 | 显示全部楼层

谢谢!

[em17][em17][em17]
wdzbcy | 2007-1-18 23:30:00 | 显示全部楼层

好![em01]

谢谢!

ayshi | 2007-1-19 08:18:00 | 显示全部楼层

很好!

不过管理员朋友,请注明您用的是三菱系列的PLC,在欧姆龙和西门子系列的PLC中是不能这样用的!毕竟还有许多如我一样,接触PLC时间不长的朋友。

wangyican | 2007-1-19 23:53:00 | 显示全部楼层

我是刚到的 顶下拉!!真的我看了以后,学到了以前书本上没有的知识!谢谢!! 以后 请各位以后多多指教!!!!

jjkk88 | 2007-1-20 09:59:00 | 显示全部楼层
[em01][em01][em01]
yanglei_5368 | 2007-6-25 12:12:00 | 显示全部楼层

受益多多,谢谢

XINLONGGS | 2007-6-25 18:46:00 | 显示全部楼层

谢谢指点

yzgzy | 2007-6-25 19:57:00 | 显示全部楼层
谢谢
codecat | 2007-6-27 17:55:00 | 显示全部楼层

那这样的双线圈为什么不能输出呢???????

http://www.plcjs.com/bbs/dispbbs.asp?boardid=29&id=4008

gonglvwei | 2007-7-23 23:05:00 | 显示全部楼层

谢谢

huzhiqiang | 2007-7-24 12:10:00 | 显示全部楼层

很实用,也很好懂!谢谢

我平时接触最多的也是三菱PLC

FX1N

xiaocai_1969 | 2008-6-11 17:57:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
jakexu | 2008-10-22 15:17:00 | 显示全部楼层
收益匪浅
m87068742 | 2008-10-31 17:13:00 | 显示全部楼层

真的很不错,我是刚学的,经常犯这样的错误,现在终于明白是什么回事了

paterny | 2008-11-2 21:30:00 | 显示全部楼层
谢谢
m83621 | 2008-11-3 09:02:00 | 显示全部楼层
初学  完全看不懂
[em06][em06][em06]
xuancai | 2008-11-3 19:55:00 | 显示全部楼层
长见识了
rickyu | 2008-11-7 11:37:00 | 显示全部楼层
谢谢楼主
kris2008 | 2008-11-11 21:51:00 | 显示全部楼层
说得不错,顶一下啦。[em01]
ww1342 | 2008-11-11 22:18:00 | 显示全部楼层
比书中讲的还要详细。。谢谢,。
a19750306 | 2008-11-21 12:25:00 | 显示全部楼层
谢谢 受益非浅~~~
wyq276628 | 2008-11-30 20:37:00 | 显示全部楼层

好东西,学习学习!

您需要登录后才可以回帖 登录 | 注册哦

本版积分规则