作者 我是一颗小小草 侠圣
经验值: 2017 发帖数: 806 精华帖: 2
主题:遇到的“双线圈”问题
2011-11-05 10:27:42 楼主
主题
经常谈到双线圈问题,看资料介绍,自己理解无非就是程序里面不能出现一个以上诸如OUT Y0的指令。出现上述现象程序扫描会以最后一个线圈逻辑结果作为输出结果。
问题1:是语法绝对禁止出现双线圈,还是允许可以存在双线圈?如果允许可以,出现双线圈我放弃前面线圈的逻辑,只要后面线圈的逻辑不就行了吗?如果坚决禁止,出现后最终逻辑不可预测,那么程序中就要坚决禁止了。
前段时间我在现场修改一较大程序(可惜是台达PLC,不是西门子PLC),其中对输出点(例如Y0)用了大量的SET、 RST 指令,最后只输出一条OUT指令。监控发现有诸如下面的现象存在(见截图):
当X0导通时,其中只有Y2导通,Y0、Y1均不导通。查找此段程序以下没有任何RST Y0,RST Y1指令。当时就怀疑是程序最后使用了OUT指令引起的。现场紧急,来不及慢慢琢磨,立即删掉OUT指令,所有逻辑都想法使用SET /RST指令,最终给解决了。但引出了:
问题2:对于同一输出点大量使用了SET /RST指令后,还能不能再使用OUT指令?(注:这个程序用三菱软件中语法检查工具检查,结果汇报有双线圈问题,台达软件好像没有这个功能,但程序能编译通过,可以下载运行)
上面谈到我在现场修改的程序结构是这样的:主程序中调用了两个子程序,并且有一个自动、手动跳转指令。(当然台达编程是在一起写的,不像200子程序已经分开编写了)。对于同一个输出主程序中全部使用了SET /RST指令,子程序中以及跳转到的手动程序部分却使用了OUT指令。(据了解这个程序现场使用也快两年了,感觉还是能正常使用)
问题3:对于同一个输出主程序中全部使用SET /RST指令,子程序中以及跳转到的手动程序部分(跳转部分当然属于主程序)还能使用OUT指令吗?
问题4:对于双线圈的限制,是PLC普遍的规律,还是各个品牌有一些略微的差别?
每天进步一点点,无限接近零缺陷 更多
翼飞凌 奇侠
作者 主题
经验值: 6297 发帖数: 4244 精华帖: 16
主题:回复:遇到的“双线圈”问题 2011-11-05 11:35:53 1楼 楼主,什么叫双线圈?回答一下。
我是一颗小小草 侠圣
经验值: 2017 发帖数: 806
精华帖: 2
主题:回复:遇到的“双线圈”问题 2011-11-05 15:03:20 2楼 “双线圈”
我自己理解就是程序里面对同一个输出地址不止一次使用了线圈输出(OUT)指令。 每天进步一点点,无限接近零缺陷 阿鸣 奇侠
经验值: 6302 发帖数: 4256 精华帖: 24
主题:回复:遇到的“双线圈”问题 2011-11-05 17:25:50 3楼
双线圈不是语法错误。双线圈有时会引起逻辑控制上的错误。 一日三省吾身 cuihuanxing 游民
经验值: 110 发帖数: 59
作者
精华帖: 0
主题:回复:遇到的“双线圈”问题 2011-11-05 22:17:25 4楼
主题
双线圈是在同一个扫描周期内输出线圈同时断开和接通! yanxiao 斑竹
经验值: 10046 发帖数: 8514
精华帖: 23
主题:回复:遇到的“双线圈”问题 2011-11-05 22:17:41 5楼 楼主接触PLC可能也不少时间了。
现在的PLC,不仅仅是模拟继电器,功能已远超继电器。
输出叫线圈,可能是个习惯叫法。PLC的输出是“线圈”吗?输出就是输出,不能把它限在“线圈”范围。
好,退一步讲,如果对同一个OUT作了两次输出,如你所言,扫描的结果是后一个有效。不管前一次的输出是什么目的,既然知道规则,还有什么不妥的地方?知道不是最后的(内部)输出不会影响物理输出,让它作一下本身临时的存贮单元有何不可,这个意义上既清楚又不易发生资源冲突,应该是优先采用才对。
好,再退一步讲,就算每个输出指令都影响物理输出(立即输出指令),同一扫描周期内多次的输出,也是有意义的。比如,每一个扫描周期,让某个输出点输出一个完整的脉冲(当然是快速输出,用晶体管的),先是低平(0),中间是高电平(1),再回到低电平(0),你认为能实现吗?这就是在同一个扫描周期内,需要多次输出(物理输出)的情况。
因此,我在本论坛一直质疑“双线圈”的叫法,以及人为使用上的限制。造成双线圈出问题的,一般就是编程上的错误。用中间变量(“继电器”)中转一下,不出问题了,实质只是问题不再显现出来。 阿进 侠士
经验值: 1256 发帖数: 528 精华帖: 5
作者
主题:回复:遇到的“双线圈”问题 2011-11-06 16:08:02 6楼
主题
双线圈用好了,程序简洁方便,再配合SET/RST逻辑更清晰。如果总是最后一条起作用,就找找时序的问题吧。
不仅是PLC程序的问题,所有的CPU程序共有的问题。 共同学习,相互支持,一起提高。 Automann 奇侠
经验值: 7438 发帖数: 3367 精华帖: 96
主题:回复:遇到的“双线圈”问题 2011-11-06 18:43:21 7楼
在用户程序中,同一编程元件的线圈使用了两次或多次,称为双线圈输出。对同一编程元件,可以多次使用SET和RST指令。
下图中有过程映像输出位Q2.3的两个线圈,在同一个扫描周期,两个线圈的逻辑运算结果可能刚好相反,即Q2.3的线圈一个“通电”,一个“断电”。对于Q2.3控制的外部负载来说,真正起作用的是最后一个Q2.3的线圈的状态。
Q2.3的线圈的通断状态除了对外部负载起作用外,通过它的触点,还可能对程序中别的元件的状态产生影响。如果图中两个线圈的通断状态相反,B区域与其余区域中Q2.3触点的状态也是相反的,可能使程序运行异常。作者曾遇到因双线圈引起的物理输出继电器快速振荡的异常现象。所以一般应避免出现双线圈输出现象,例如将控制两个线圈的触点电路并联后控制一个线圈。
只要能保证在同一扫描周期内只执行其中一个线圈对应的逻辑运算,这样的双线圈输出是允许的。下列两种情况允许双线圈输出:
1)在跳步条件相反的两个程序段中,允许出现双线圈输出,即同一元件的线圈可以在两个程序段中分别出现一次。实际上CPU只执行正在处理的程序段中双线圈元件的一个线圈输出指令。
2)在调用条件相反的两个子程序(例如自动程序和手动程序)中,允许出现双线圈现象,即同一元件的线圈可以在两个子程序中分别出现一次。子程序中的指令只是在该子程序被调用时才执行,没有调用时不执行。
三菱的编程软件可以检查是否有双线圈输出,但是并不将双线圈输出作为错误,只是作为警告。有双线

