您现在的位置是:首页 > PLC技术 > PLC技术
FX2N系列PLC的MPS、MRD、MPP堆栈指令
来源:艾特贸易2017-06-04
简介在讨论图 5-6 所示的梯形图时,直接用 AND 指令和多重输出会导致结果寄存器中的值被覆盖,致使输出结果错误。因此,在 AND 之前需要对结果寄存器的值进行保护。 PLC 给用户提供了一
在讨论图5-6所示的梯形图时,直接用AND指令和多重输出会导致结果寄存器中的值被覆盖,致使输出结果错误。因此,在AND之前需要对结果寄存器的值进行保护。PLC给用户提供了一个11位的堆栈,用于先进后出的数据存储机制。MPS、MRD和MPP指令就是一组堆栈操作指令。 堆栈工作过程如图5 -14所示。数据流按A、B、C的顺序存入堆栈中。其进栈过程如下: (1)A进栈,将A存入堆栈的顶端,如图5-14b所示。 (2)B进栈,A下压,进入第二层,将B存入顶端,如图5 -14c所示。 (3)C进栈,A下压,进入第三层,B下压进入第二层,将C存入顶端,如图5 -14d所示。 堆栈中数据出栈首先读取顶端数据,即最后入栈的数据。出栈过程如下: (1)C出栈,B上移进入顶端,A上移进入第二层,如图5 - 14e所示。 (2)B出栈,A上移进入顶端,如图5-14f所示。 (3)A出栈,如图5-14g所示。 MPS指令用于数据入栈,MRD用于读堆栈数据但不出栈,MPP表示数据出栈。MPS、MRD、MPP指令的功能及操作过程见表5 -6。 表5-6 MPS、MRD、MPP指令的功能及操作过程 堆栈的进栈指令MPS和出栈指令MPP必须成对使用。如果MPS连续使用,最多不能超过11次。
图5-14 堆栈运行过程 有了堆栈指令,图5-6所示的梯形图的运行过程可以十分清楚了,如图5-15所示。 程序运行过程: (1)开辟一个结果寄存器,计算X10、X11、X12的与,并将结果存人结果寄存器。 (2)将结果寄存器的值复制一份放到堆栈中,见指令表第3步。 (3)结果寄存器中的值直接与X13和X14的常闭触点相与,并将结果存入结果寄存器。 (4)将结果寄存器的值再复制一份放人堆栈中,见指令表第6步。注意:这是第二次数据进栈。 (5)结果寄存器的值和X15的上升沿相与后送给Y12。 (6)将堆栈中栈顶的值出栈,送给Y11,见指令表的第10步。注意:此处的堆栈的值是后入栈的值,即第4步中的结果。 (7)再次将堆栈中的值出栈,并赋给Y0。注意:此处堆栈栈顶的值是第一入栈的值,即第(2)步中的值。 明白了堆栈的作用和用法,配合结果寄存器,就可以非常清晰地分析图5 -16至图5 18的运行过程。其中,图5-18所示的程序使用了4层堆栈,程序长度为18步。图5 -19所示的程序将图5 -18中的程序颠倒了一下输出次序,实现同样的功能,但仅仅使用了10步程序,这大大减小了程序存储空间,且提高了运行效率。
图5-15 堆栈指令的使用方法
图5-16 堆栈指令练习一
图5-17 堆栈指令练习二
图5-18 堆栈指令练习三
图5-19 优化后的堆栈指令梯形图
点击排行
