线下实训
HOME
线下实训
正文内容
合并2台plc编程 0428 「万泉河」PLC编程:谈虎色变双线圈
发布时间 : 2025-05-18
作者 : 小编
访问数量 : 23
扫码分享至微信
Scan me!

0428 「万泉河」PLC编程:谈虎色变双线圈

0428 【万泉河】PLC编程:谈虎色变双线圈

双线圈问题是PLC行业独有的问题。如果把这个名词讲给没有接触过PLC的IT程序员, 对方一定蒙逼,不知所云。

所以,可以算作是PLC工程师相比IT工程师掌握的为数不多的行业门槛。

很多人引以为傲, 而同时也有很多人提及双线圈就谈虎色变。

对程序中有可能出现双线圈忧心忡忡。

看来是入门学习PLC的时候,被某些培训老师给惊吓着了。 留下了病根。

而有一些品牌如三菱的编程软件,在编译过程中会频繁冒出双线圈警告,无疑在同行中也加深了这种忧虑。

以为是完全不可触及的禁区。

而其实,是个很简单的小问题。

双线圈问题的描述是基于梯形图语言的:即在整个PLC的程序范围内,对同一个Q点的输出线圈()指令只能有一次。 不要超过两次。 如果超过两次,就很有可能程序有BUG。 因为两次线圈()之中的某一次会无效。

线圈指令的本质是赋值。

是对某个开关量的Q点,赋值以计算后的结果1或者0。

即如果程序中有连续两次赋值:

Q:=1;

Q:=0;

则最终执行的结果是0,前面的1的赋值部分,被冲掉了。

所以, 除非你有意这样写程序,否则检查中发现这样的语句,就需要小心一点,有可能有错误。

我们这里讲线圈的本质是赋值,但反过来却未必成立。 赋值指令却未必是线圈(),因为还有(S)/(R)置位/复位指令。即,后两者并不是线圈,当说到双线圈的时候,唯一特指的就是只有()。

(S)/(R)置位/复位指令的本质是条件赋值。

所以,线圈指令的本质其实是无条件赋值。 警惕双线圈其实是要你警惕两次以上的无条件赋值。

比如

Q:=I;

这是赋值。

而如果用SR指令写,其实是IF/THEN的条件判断,以文本表达为:

IF I=TRUE THEN

Q:=TRUE;

ELSE

Q:=FALSE;

END_IF;

上述两种程序写法是完全等效的,效果完全一样。然而如果遇到两次需要写操作的场合,而且两次写操作不能合并, 只能分在两个不同的位置。前一种:

Q:=I1;

Q:=I2;

程序是有错误,而且无法解决。

而后一种,则可以各自增加上升沿下降沿的判断,最终分别实现

IF I1=TRUE AND I1_SAVE=FALSE THEN

Q:=TRUE;

IF I1=FALSE AND I1_SAVE= TRUE THEN

Q:=FALSE;

I1_SAVE:=I1;

………….

IF I2=TRUE AND I2_SAVE=FALSE THEN

Q:=TRUE;

IF I2=FALSE AND I2_SAVE= TRUE THEN

Q:=FALSE;

I2_SAVE:=I2;

这样的程序,大致实现了I1和I2分别为TRUE时,都可以点亮Q。 而不必非要把程序逻辑拼在一个段落中, 用OR语句来实现。

注意, 这里的逻辑还是只是大致实现。 是假设I1和I2的变化不会同时发生的情况下。

如果有同时发生, 而且发生时间片段有重叠,那么还需要更复杂的处理。

在我的新书《PLC标准化编程原理与方法》CH5.6.1一节中有详细介绍。

总之,对于双线圈难题的解决方案是:不要用线圈。

S/R不是线圈。

三菱PLC ST语言编程合并类指令函数的用法解析

前面我们说到三菱PLC ST语言编程的触点类函数的一些简单的用法,现在我们来分享一下合并指令函数的一些用法。三菱ST语言合并类函数一共有六条指令,分别是INV 、MEF、 MEP 、 MPP 、MPS 、 MRD。 我们先看前三条具体的含义和操作数怎么填?INV 是逻辑取反指令,现在借用一下西门子喜欢用“能流”这个词,INV就是对它之前都能流取反,前面能流是通电,那结果是没有输出,前面能流没有接通,结果反而有输出。相当于梯形图的这个功能,

它的表达方式是INV(?BOOL_EN?),很明显括号里面填的是一个布尔量,就是取反之前的条件。例如,Y0:=INV(X0 AND X1);X0和X1两个不接通的时候,Y0有输出,X0和X1都接通时反而没有输出。 MEP(?BOOL_EN?):能量流的上升沿检测,相当于梯形图的这个功能。

MEF(?BOOL_EN?):,能流的下降沿检测,相当于梯形图的这个功能。

这两条指令放在一起来说,他们在ST语言中的意思是对能流的上升沿或下降沿进行检测,接通一个扫描周期,触点类的指令中的LDP和LDF很像,很多时候都可以通用。MEP(?BOOL_EN?)括号里面填的是单个触点,或者是多个触点的逻辑关系,它的作用就是对它括号里面逻辑关系导通时接通一个扫描周期,MEF(?BOOL_EN?)也是同样的道理,只不过它是括号里面的逻辑关系不导通时接通一个扫描周期。三菱PLC ST 语言编程中,合并类函数除了前面说到的三个,还有后面的三个函数,他们分别是;MPS(?BOOL_EN?);MRD(?BOOL_EN?);MPP(?BOOL_EN?); 这三个函数主要用于多重输出,MPS进栈,MRD是读栈,MPP是出栈,遵循先入后出的逻辑原则,把信号压入栈堆,最多可以储存11个。这样表述起来就有点繁杂,不符合电气人的理解习惯,换句话说。MPS就是储存中间运算的结果,相当于西门子S7-300的中间输出指令,而MRD就是读取这个运算结果,如果为TRUE表示接通,反之亦然。MPP就是对中间运算结果复位,就是出栈了。下面举个例子来说明他的用法。 Y0:=MPS(x0) AND NOT X1;Y1:=MRD(TRUE) AND X2;Y2:=MRD (TRUE)AND X4;Y3:=MPP(TRUE)AND X5 AND NOT X6;

梯形图编程

这就是ST语言编程的合并输出,前面有多少个条件,那么MPS括号里面就要写多少条件,你们了解了吗?

相关问答

三菱5u字符串怎样合并?

首先,要确保使用的字符串拼接方法是正确的,比如使用StringBuilder类的append()方法来拼接字符串。2.其次,要确保字符串中没有特殊字符,比如换行符、制表符等...

plc两个字符怎么合成字符串?

要将两个字符合成为字符串,你可以使用字符串连接的操作符。在大多数编程语言中,这个操作符通常是加号(+)。你可以使用这个操作符将两个字符连接在一起,从而...

plc多个输出可以同时接同一负载吗?

通常情况下,不建议将PLC的多个输出同时接到同一负载上。这是因为PLC的输出通常设计为以开关形式工作,同时连接多个输出可能会导致电流过大,损坏PLC输出模块。...

欧姆龙软件编程的梯形图后怎么样上传到plc里-ZOL问答

1、硬件准备:将PLC用编程电缆和电脑连接,并安装电缆驱动(USB的要,串口不要)。2、软件准备:在编程软件中通信设置PLC类型、通信类型中toolbus,选择所要连接的串...

靖江英博PLC编程培训内容有哪些

[回答]三菱Fx-2nPLC的结构、原理2、重点主讲三大程序指令(步进指令、步进顺空指令、功能指令)3、AD,DA转换(控制温度、压力、液...8、变频器的控制方式、...

精细化工生产工艺连续化、自动化行吗?-盖德问答-化工人互助问...

这个不好说,因产品工艺不同自动化成度也有高低的精细化工生产过程间歇式,要进行自动化或连续化改造,能够实施吗,有什么好的做法?可行因为大多是...

plc的偏移地址什么意思?

您好,PLC的偏移地址指的是在PLC程序中的数据地址相对于某一参考点的偏移量。这个参考点可以是一个固定的地址、一个寄存器或一个变量。偏移地址可以用来访问PL...

几种气体比例混合-盖德问答-化工人互助问答社区

是可以通过此方法合成的。使用三通阀门控制,一个方向为气体单独循环管路,在流量调节好之后,符合气体混合比例关系,使用plc或者别的电控系统,同时打...

两个开关如何控制变频器?

上...此时FWD充当使能端子,方向有REV端子决定,当开关K1闭合,变频器使能,当开关K2是断开的状态,电机正转,当开关K2是闭合状态,电机反转。三线制的需要三个开关...

plc内部继电器设置方法?

传感器从现场检测到实际值,通过电缆传输到plc中,plc里面有程序,目的就是通过传感器传进入的信号在结合自己里面的程序控制接在plc后面的继电器,继电器的带电...

 维尔胜  华为Mate50官宣:9月6日发布 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2025  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部