堆栈指令是FX系列PLC中新增的基本指令,用于多重输出电路,为编程带来了便利。在FX系列PLC中有11个存储单元,它们专门用来存储程序运算的中间结果,被称为栈存储器。MPS、MRD、MPP指令分别为进栈、读栈和出栈指令。MPS指令用于将逻辑运算结果存入栈存储器;MRD指令用于读出栈存储器的结果;MPP指令用于取出栈存储器结果并清除,见表4-8。
表4-8 MPS、MRD、MPP指令
使用一次MPS就将此刻的运算结果送入栈存储器的第一个存储单元,而将原来第一个存储单元的数据移到堆栈的下一个存储单元,如图4-41所示。
MRD只用来读出堆栈存储器最上面一个存储单元的最新数据,此时栈存储器内的数据不移动。
使用MPP指令,最上面一个存储单元的数据被取出,这个数据就从栈存储器中被清除,同时各数据向上一段移动。
1.MPS指令
MPS指令称为“进栈指令”。使用一次MPS指令将此时刻的运算结果送入栈存储器的第1单元,再使用一次MPS指令,将此时刻的运算结果送入栈存储器的第1个存储单元,而原栈存储器的数据依次下移一存储单元。该指令没有操作元件。
2.MRD指令
MRD指令称为“读栈指令”,它将栈存储器的第1存储单元数据(最后进栈的数据)读出且该数据继续保存在栈存储器的第一存储单元,栈存储器内的数据不发生移动。该指令没有操作元件。
图4-41 栈存储器示意图
3.MPP指令
MPP指令称为“出栈指令”,它将栈存储器第1单元数据读出,同时该数据消失,栈存储器内的数据依次上移一单元。该指令没有操作元件。
图4-42所示为MPS、MRD、MPP指令在梯形图中的表示。
图4-43所示为执行MPS、MRD、MPP指令时,栈存储器内的数据移动方向。
图4-42 MPS、MRD、MPP指令在梯形图中的表示
图4-43 栈存储器
【例4-15】(见图4-44):
解:这项指令是进行分支多重输出回路编程用的方便指令。利用MPS指令存储得出的运算中间结果,然后驱动Y002。用MRD指令将该存储读出,再驱动输出Y003,Y004,用MPP指令将存储数据出栈,再驱动Y005。
【例4-16】将只使用一层栈存储器的梯形图转换为指令表,梯形图如图4-45所示。
解:指令表如下:
LD X000
MPS
AND X001
图4-44 梯形图及指令表(例4-15)
OUT Y000
MRD
AND X002
OUT Y001
MRD
AND X003
OUT Y002
MPP
AND X004
OUT Y003
【例4-17】 写出图4-46所示梯形图的指令表。
图4-45 梯形图(例4-16)
图4-46 梯形图(例4-17)
解:指令语句表如下:
0 LD X00011 ORB
1 MPS 12 ANB
2 LD X00113 OUT Y002
3 OR X00214 MPP
4 ANB 15 AND X005
5 OUT Y00116 OUT Y003
6 MRD 17 LD X010
7 LD X00318 OR X011
8 AND X00619 ANB
9 LD X00420 OUT Y004 10 AND X007
本例使用了一个存储单元,并用了ANB、ORB指令。
【例4-18】写出图4-47所示梯形图的指令表。(www.xing528.com)
解:所示梯形图的指令表如下:
0 LD X00010 AND M2
1 MPS 11 MPS
2 AND X00112 AND M3
3 MPS 13 OUT Y003
4 AND X00314 MPP
5 OUT Y00115 AND M4
6 MPP 16 OUT Y004
7 AND M1
8 OUT Y002
9 MPP
本例为两个存储单元编程实例。
【例4-19】 写出图4-48所示梯形图的指令表。
图4-47 梯形图(例4-18)
图4-48 梯形图(例4-19)
解:指令语句表如下:
0 LD M06 AND M3
1 MPS 7 MPS
2 AND M18 AND M4
3 MPS 9 OUT Y001
4 AND M210 MPP
5 AND M211 OUT Y002
12 MPP 15 OUT Y004
13 OUT Y00316 MPP
14 MPP 17 OUT Y005
本例为4个存储单元实例。
【例4-20】(见图4-49):
图4-49 梯形图及指令表(例4-20)
例题解释:
1)当公共条件X000闭合时,X001闭合则Y000接通;X002接通则Y001接通;Y002接通;X003接通则Y003接通。
2)上述程序举例中可以用两种不同的指令形式(见图4-49)。
4.MPS、MRD、MPP指令使用说明
1)堆栈指令没有目标元件。
2)MPS和MPP指令必须配对使用。
3)由于栈存储单元只有11个,所以栈的层次最多为11层。
4)MPS、MRD、MPP指令之后如果有其他触点串联,要用AND或ANI指令;MPS、MRD、MPP指令之后若有触点组成的电路块串联,要用ANB指令;MPS、MRD、MPP指令之后若无触点串联,而直接与线圈相连,应该用OUT指令。
5)MPS、MPP指令可以重复使用,但是连续使用不能超过11次,且两者必须成对使用,缺一不可,MRD指令有时可以不用。
6)MRD指令可多次使用,但在打印、图形编程面板的画面显示等方面有24行限制。
7)最终输出电路以MPP指令代替MRD指令,读出存储并复位清零。
程序举例:
【例4-21】1层堆栈,如图4-50所示。
1层堆栈,ANB、ORB指令并用,如图4-51所示。
【例4-22】2层堆栈,如图4-52所示。
【例4-23】4层堆栈,如图4-53所示。
上面编程例中,若使用纵接输出的形式,就可以不采用MPS指令了。
图4-50 梯形图及指令表(1层堆栈)
图4-51 梯形图及指令表(ANB、ORB指令并用)
图4-52 梯形图及指令表(例4-22)
图4-53 梯形图及指令表(例4-23)
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。