MPS、MRD、MPP是三菱PLC的堆栈指令,也叫多重输出指令。
由于梯形图编程可以不涉及语句表,所以大多数人仅仅是知道有这么几条指令而已,市面上编的大多数教材也是一知半解,甚至以讹传讹。因为都是从三菱编程手册上抄来的。
先看下面实例:
这是三菱编程手册(参上面台头)P205页的内容,有谁怀疑过上面语句表的正确性吗?有谁知道最后一句中“但是MPS指令和MPP指令的数量差小于11”是什么意思吗?
先说第一个问题。我们在软件GX Works2中输入上述程序,然后将其转换为语句表(右键点程序段开始,编辑-梯形图块列表编辑或写入到SCV文件)
看到的是这样的语句表:
和编程手册上的有什么不同,我们对比一下:
问题来了:是手册上的正确还是实际的PLC程序语句表正确?
关于此问题的展开,看看下面的内容:
直接输出Y4(前面无触点)位置不同,程序步数也不同
再看第二个问题:“ .....但是MPS指令和MPP指令的数量差小于11”。有多少教科书都是从这一句话演绎,比如我手头两本再版或改版多次的比较有名的教材,一个解释成:
“MPS、MPP指令必须成对使用,而且连续使用的次数应少于11次”。另一个演绎为:“逻辑堆栈指令可以嵌套使用,最多11层”。
首先,原文的解释:“MPS指令和MPP指令的数量差小于11”究竟是什么意思?
从日文版的编程手册看,翻译成汉语没什么问题:
那日文的描述就概念不清了:“MPS指令和MPP指令的数量差小于11”,MPS-MPP=11?但从后面的说明,MPS和MPP配对使用,数量当然是相同的。其实这里指的是MPS和MPP配对的多重输出的“重数”。但是数量11又不对,也不是小于,而是不大于12!
请看下面的程序:
其对应的语句表为:
里面的MPS和MPP对数为12对。因此编程手册中的“11”,以及我们的教材中的解释都是没有根据的!
堆栈指令或者说多重输出指令,在实际编程时几乎无需关注,但是同样的程序如何使程序步数最少,MPS、MRD、MPP指令的用法就必须搞清楚。上述内容希望对PLC有兴趣的网友读者有所帮助。