经验值: 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)在调用条件相反的两个子程序(例如自动程序和手动程序)中,允许出现双线圈现象,即同一元件的线圈可以在两个子程序中分别出现一次。子程序中的指令只是在该子程序被调用时才执行,没有调用时不执行。
三菱的编程软件可以检查是否有双线圈输出,但是并不将双线圈输出作为错误,只是作为警告。有双线
作者
圈输出时,用户程序仍然可以执行。 追求完美 迷糊的熊 侠客
主题
经验值: 640 发帖数: 212
精华帖: 0
主题:回复:遇到的“双线圈”问题 2011-11-06 21:15:28 8楼
这个问题,你自己注意点,编写完后要检查程序就能及时发现。反正不用出现双线圈就好了。 在迷茫中前进 陌子辰 游士
经验值: 191 发帖数: 120
精华帖: 0
主题:回复:遇到的“双线圈”问题 2011-11-07 12:49:12 9楼
双线圈是允许出现的,所谓的双线圈输出出现问题的时候,大部分是程序问题,比如说程序扫描方式,时序问题,还有就是当线圈位于子程序或者跳转的时候也会出现类似的问题
我是一颗小小草 侠圣
经验值: 2017 发帖数: 806
精华帖: 2
主题:回复:遇到的“双线圈”问题 2011-11-08 16:05:38 10楼
今天亲自用台达的PLC验证了这个问题: xo接通y0没有输出(图1)
作者 主题
xo接通y0有输出(图2)
xo接通y0没有输出(图3)
X4接通Y0接通(图4)
每天进步一点点,无限接近零缺陷 shine 斑竹
经验值: 8196
作者 发帖数: 6948 精华帖: 23
主题:回复:遇到的“双线圈”问题 2011-11-08 21:51:34 11楼
主题
PLC有他自己的规则,什么可以做,什么不可以做,什么样的程序,会有什么样的结果,都是确定的。 双线圈,或者多线圈,其结果决定于最后一个修改该点状态的指令,记住这一点,一切都可以解释了 凌飞翼 侠圣
经验值: 3844 发帖数: 2643 精华帖: 25
主题:回复:遇到的“双线圈”问题 2011-11-08 22:17:40 12楼
版主说的很简明,实际就是与输出状态的刷新时刻有关。 最靠近刷新的前一个状态,决定了实际输出状态。
制冷、热工-许可证试验室承建,给了我深究测量与控制的绝好机会。分享-值得期待! yanxiao 斑竹
经验值: 10046 发帖数: 8514
精华帖: 23
主题:回复:遇到的“双线圈”问题 2011-11-08 23:34:38 13楼 再罗嗦几句:
线圈输出,有两种不同机制的输出:一种是能流本身的直接输出;另一种是由能流决定的间接输出。STL语句就是“=”指令和“S(ET)/R(ESET)”指令。如果前一种的两次输出遭到诟病,后一种的两次输出呢?如果只输出一次,这程序怎么写? 凌飞翼 侠圣
作者 主题
经验值: 3844 发帖数: 2643 精华帖: 25
主题:回复:遇到的“双线圈”问题 2011-11-09 07:01:04 14楼
quote:以下是引用
yanxiao在2011-11-08 23:34:38的发言:
再罗嗦几句:
线圈输出,有两种不同机制的输出:一种是能流本身的直接输出;另一种是由能流决定的间接输出。STL语句就是“=”指令和“S(ET)/R(ESET)”指令。如果前一种的两次输出遭到诟病,后一种的两次输出呢?如果只输出一次,这程序怎么写?
是啊,所谓双线圈,特指“能流直接输出”。“S(ET)/R(ESET)”指令经常会被不同条件下重复使用。最关键还得是编程者自己清楚:“程序执行的结果是否能满足实际工艺要求”。
因为双线圈无论是逻辑上还是语法上都没有问题,只是在本扫描周期内执行一次以上的“能流直接输出”时,物理输出仅符合程序最后一次的状态而已。
我一般是单独做一个“输出”子程序,用sm0.0调用,不同的工作状态用中间位过渡,在“输出”中进行并联后执行“能流直接输出”。这样编程再也不用担心双线圈问题。
制冷、热工-许可证试验室承建,给了我深究测量与控制的绝好机会。分享-值得期待! Automann 奇侠
经验值: 7438 发帖数: 3367 精华帖: 96
作者
主题:回复:遇到的“双线圈”问题 2011-11-09 07:24:22 15楼
quote:以下是引用凌飞翼在主题
2011-11-09 07:01:04的发言:
[quote][b]
我一般是单独做一个“输出”子程序,用sm0.0调用,不同的工作状态用中间位过渡,在“输出”中进行并联后执行“能流直接输出”。这样编程再也不用担心双线圈问题。
请问凌侠,自动、手动程序中的中间位需要并联吗? 追求完美 我123 侠客
经验值: 968 发帖数: 265 精华帖: 0
主题:回复:遇到的“双线圈”问题 2011-11-09 07:51:33 16楼
有双线圈,编译时不会提示错误,我觉得不好,应该提示错误, 西门子高工 我是一颗小小草 侠圣
经验值: 2017 发帖数: 806
精华帖: 2
主题:回复:遇到的“双线圈”问题 2011-11-09 09:09:25 17楼
quote:以下是引用我123在2011-11-09 07:51:33的发言:
有双线圈,编译时不会提示错误,我觉得不好,应该提示错误,
讨论了这么多,我认识到:所谓的双线圈,它本来就不是一种错误,只是编程者不经意间既成事实后会引起事与愿违的执行结果,所以一般情况下编写程序时应避免出现,但有特殊情况下用此法会收到“奇效”,所以一般PLC编程软件编译时是不会提示“双线圈”错误的。 每天进步一点点,无限接近零缺陷 Alwaystrong 侠士
作者 经验值: 1435 发帖数: 531
精华帖: 3
主题:回复:遇到的“双线圈”问题 2011-11-09 11:02:47 18楼
主题
甭管用SET RST还是其他的,编程时一定要养成良好的习惯,那就是尽量避免双线圈。最好还是并联后一个输出结果,这样会更条理清晰。 lyq0536@163.com 阿进 侠士
经验值: 1256 发帖数: 528 精华帖: 5
主题:回复:遇到的“双线圈”问题 2011-11-09 11:29:42 19楼
quote:以下是引用我123在2011-11-09 07:51:33的发言:
有双线圈,编译时不会提示错误,我觉得不好,应该提示错误,
不放心的话,编译一下看交叉表,历历在目,全都清楚啦。
其实双线圈的问题与PLC的发展历史一样,起初是为不懂计算机技术的电气工程师们开发设计的简单逻辑控制应用程序。在计算机很金贵,很奢侈,不普及的时代对特殊群体那时双线圈的问题显得比较突出,有很多PLC报警或提示双线圈,对于学习过计算机编程的人来说他又不算什么问题,很容易排除或加以利用,特别是现在计算机很普及,PLC的功能也比以前强大的多。人们对计算机的编程也不再感觉那么神秘的今天,双线圈的问题也越来越淡了。只是有些初学者还为此困惑,但掌握了要领很快会度过的。 再者双线圈报警随着人们编程能力的提高也会越来越报不准了。因为输出点不仅局限于位逻辑编程,字节、字、双字的逻辑控制及传送、移位等等都可直接控制改变,达到目的。经常会出现双线圈报警但又没错误 ,没报警但又有错误。所以说它的功能淡化了。
因篇幅问题不能全部显示,请点此查看更多更全内容