PLC编程经验之二--双线圈输出
datou
2005-04-22 14:00
PLC编程经验之二--双线圈输出
几乎所有的plc的手册都会提醒用户注意不要双线圈输出,但很多初学的朋友还是不理解。看完下面的文字,你就可以理解,什么时候不可以,什么时候还是可以的:
PLC的工作过程书和手册都会介绍,但很多人并没有多留意PLC工作过程会对编程产生什么影响。PLC的程序是在所谓的扫描时间内被执行的,这种扫描过程是从头到尾然再完成io等工作后循环反复。程序在扫描期间执行的中间结果比如,out y3 指令在执行时并没有将y3点亮,而是等到全部扫描完毕后再集中对所有io进行刷新,y3其实只对应一个内存bit位,那么其后的指令对y3的再操作就有可能让让前面的我们所需要的y3的状态发生改变,就是说前面的对y3进行操作的指令就不起作用了。这就是为什么我们不许双线圈操作的原因。
在需要的场合可以使用set和reset来操作就是安全的做法。
还有就是:我们知道程序扫描每次都要扫描主程序,没有主程序是不合法的。而子程序并不是每次扫描都执行,子程序只在条件满足的情况下才执行。所以每次扫描不同时执行的多个子程序就可以对某个线圈进行多次操作。
说的很罗嗦,应该是讲明白了。有不对的,大家补充。
-
2005-04-22 14:48
没接触西门子PLC之前也一直认为在程序中不能对同一个输出点多次使用,编程时想方设法的把各个只路并联起来控制一个输出线圈。现在用西门子的东东后发现,有时候你不得不对同一输出地址进行多次操作,因为西门子的位操作指令各不相同
-
2005-04-22 15:48
怪石,能否举一个例子!?
-
2005-04-22 16:17
怪石,可否举个例子??偶也想知。
-
2005-04-25 08:46
你们好象对西门子的东西不是很熟悉吧?对于一个位最普通的操作是输出---(),另外有置位---(S),复位---(R),还有立即输出等等,你们可以看系统手册,就是对于同一个位地址,输出---()指令也经常多次用(看过别人的程序是这样的),
-
2005-04-25 10:06
提醒用set和rset的朋友,在set后一定要记得rset,否则可能出现非预料中的结果。以前我常用,但有时候就会忘记rset,结果不是想要的,还查不出是那里的问题,废时废力
-
2006-01-09 17:03
让中间继电器去推动线圈,N个中间继电器并联就解决问题了.
-
2006-01-09 19:04
什么叫双线圈输出?是一个梯级中有两个输出?还是在不同梯级中出现同一个输出。
不同梯级中出现同一个输出是允许的,不过IO更新在一个扫描周期只有一次,实际的输出状态由程序中最后一个梯级输出决定。
同一梯级是否允许有两个输出,是由不同PLC类型决定,有的支持,有的不支持。
-
2006-01-09 20:09
PLC的梯形图,不要用传统的继电器图来看它
继电器图不分元件摆放上下之分
而PLC的梯形图元件的摆放和程序有很大的关系
-
2006-02-13 18:29
上面的说得很好,确实如此,可以使用双线圈输出。本人以前也用过,现在做产品设计了,各位大虾,请问一下,做PLC自动控制是否有前途?我现在那不定主意,很想自己单干,但是远离了一段时间,很想听听大家的想法,现在打工觉得实在没有兴趣了,想从头再来!大家给点真诚的意见和建议好么??因为我现在基本是0起步了。
-
2006-02-13 18:29
上面的说得很好,确实如此,可以使用双线圈输出。本人以前也用过,现在做产品设计了,各位大虾,请问一下,做PLC自动控制是否有前途?我现在那不定主意,很想自己单干,但是远离了一段时间,很想听听大家的想法,现在打工觉得实在没有兴趣了,想从头再来!大家给点真诚的意见和建议好么??因为我现在基本是0起步了。
-
2006-02-13 21:30
我看过的有不少是双线圈输出的。
-
2006-02-23 10:31
是吗
-
2006-02-23 11:01
下面3中情况可以采用双线圈,但是这样多次使用会使程序可读性差,建议使用单线圈或用set、reset来使用多线圈。
(1)在跳步条件相反的两个程序段(如自动程序和手动程序)中,允许出现双线圈现象,即同一元件的线圈可以在两个程序段中分别出现一次。
(2)在调用条件相反的两个子程序中,允许出现双线圈现象,即同一元件的线圈可以在两个子程序中分别出现一次。在一个扫描周期内只能调用一个子程序,实际上只执行正在处理的子程序中双线圈元件的线圈输出指令。
(3)如果使用三菱PLC的STL(步进梯形)指令,由于CPU只执行活动步对应的STL触点驱动的电路块,使用STL指令时允许双线圈输出,即不同时闭合的STL触点可以分别驱动同一编程元件的一个线圈。
另外如用用顺序功能图方式编写的松下PLC程序,运行时需要配置PLC以允许双线圈输出。
-
2006-02-23 11:07
下图是一个双线圈的例子,尽量不要这么使用。
-
2006-12-06 22:26
我就是在找这个问题,如果出现不同梯级的双线圈输出,怎样查呢,编译的时候也不报,是不是有好的方法发现这个情况呢?