电工技术基础_电工基础知识_电工之家-电工学习网

欢迎来到电工学习网!

堆栈为什么要采用先进后出的数据存取方式?

2017-03-12 17:57分类:PLC编程入门 阅读:

 

 
    因为堆栈中的数据是从栈顶“压人”和从栈顶“弹出”的,进栈时栈内原有的数据依次向下移动一层,出栈时栈内的数据依次向上移动一层,所以先压入的数据从堆栈中后弹出。
    这种数据存取方式有些类似于枪支的弹夹中子弹的进出方式。弹夹底部的弹簧将子弹往上顶。从弹夹的入口(顶部)压人一颗子弹,原来的子弹依次向下移动。取出(或射出)弹夹中最上面的子弹后,下面的子弹依次上移。显然,子弹进出弹夹的方式也是先进后出的。
    在图3-16的两级分支电路中,第一条进栈指令MPS将分支点A点处的运算结果保存在堆栈的栈顶,第二条MPS指令将原来在栈顶的A点处的运算结果推移到堆栈的第2层,然后将B点处的运算结果保存在栈顶。执行第一条出栈指令MPP时,将栈顶保存的B点处的运算结果传送到运算结果寄存器,供Y1的线圈对应的输出电路的逻辑运算使用,该输出电路被连接到第二个分支点B点处。同时堆栈中各层的数据依次向上移动一层,原来在第二层的A点的运算结果被移到栈顶。在执行第二条出栈指令MPP时,将栈顶中A点的运算结果传送到运算结果寄存器,供Y2的线圈对应的输出电路的逻辑运算使用,该输出电路被连接到第一个分支点A点处。同时堆栈中的数据依次上移动一层后恢复原状。
    在图3-17所示的电路中,有3块电路需要串并联。执行完前6条指令后,这3块电路内部的运算结果A、B和C分别被存储在堆栈的第2层、第1层和运算结果寄存器中。执行电路块并联指令ORB后,“或”运算B+C的运算结果D存入运算结果寄存器,堆栈中的数据依次上移一层,原来在第2层的数据A移到第一层。执行电路块串联指令ANB后,“与”运算D-A的运算结果存入运算结果寄存器,堆栈中的数据依次向上移动一层后恢复原状。
    从上面两个例子可以看出,堆栈的“先进后出”的数据存取方式刚好可以满足多重分支电路和电路块串、并联运算中数据的保存和使用的顺序,因此堆栈在PLC的逻辑运算中得到了广泛的应用。

上一篇:在分支电路中怎样使用堆栈操作指令?

下一篇:用指令表对分支电路编程时应注意什么问题?

相关推荐

电工推荐

    电工技术基础_电工基础知识_电工之家-电工学习网
返回顶部