堆栈这个概念在计算机中是一个十分重要的概念。堆栈就是一个特殊的数据存储区,最深部的数据叫栈底数据,顶部的数据叫栈顶数据,如图2-16中的iV0。PLC有些操作往往需要把当前的一些数据送到堆栈中保存,待需要的时候再把存入的数据取出来。这就是常说的入栈和出栈,也叫压栈和弹出。S7-200 PLC在编程时可能会用到堆栈指令。比如,逻辑操作中的与块和或块操作、子程序操作、顺控操作、高速计数器操作、中断操作等都会用到堆栈。S7-200 PLC堆栈有9层,如图2-16中iV0~iV8。
西门子公司的系统手册中把ALD、OLD、LPS、LRD、LPP和LDS等指令都归纳为栈操作指令。其中ALD(与块指令)和OLD(或块指令)前面已经介绍过,下面分别介绍其余4条指令。
1.逻辑入栈LPS、逻辑读栈LRD和逻辑出栈LPP指令
这3条指令也称为多重输出指令,主要用于一些复杂逻辑的输出处理。
LPS(Logic Push):逻辑入栈指令(分支电路开始指令)。从堆栈使用上来讲,LPS指令的作用是把栈顶值复制后压入堆栈,栈底的值被推出并消失。从梯形图中的分支结构可以形象地看出,它用于生成一条新的母线,其左侧为原来的主逻辑块,右侧为新的从逻辑块,因此可以直接编程。
LRD(Logic Read):逻辑读栈指令。从堆栈使用上来讲,LRD读取最近的LPS压入堆栈的内容,即复制堆栈中的第2个值到栈顶,而堆栈本身不进行Push和Pop工作,但旧的栈顶的值被新的复制值所取代。在梯形图分支结构中,当新母线左侧为主逻辑块时,右侧的第1个从逻辑块编程由LPS指令开始,第2个以后的从逻辑块编程由LRD指令开始。
LPP(Logic Pop):逻辑出栈指令(分支电路结束指令)。从堆栈使用上来讲,LPP把栈顶值弹出,堆栈内容依次上移。在梯形图分支结构中,LPP用于LPS产生的新母线右侧的最后一个从逻辑块编程,它在读取完离它最近的LPS压入堆栈内容的同时复位该条新母线。
LDS(Load Stack):装入堆栈指令。它的功能是复制堆栈中的第N个值到栈顶,而栈底丢失。装入堆栈指令的有效操作数为0~8。
例如,执行指令:LDS 3,该指令执行后堆栈发生变化的情况如图2-16(d)所示。
(www.xing528.com)
图2-16 逻辑堆栈指令
使用说明:
(1)由于受堆栈空间的限制(9层堆栈),LPS、LPP指令连续使用时应少于9次。
(2)LPS和LPP指令必须成对使用,它们之间可以使用LRD指令。
操作数:LPS、LRD、LPP指令无操作数。
2.堆栈指令应用
逻辑堆栈指令应用如图2-17所示。
图2-17 逻辑堆栈指令应用
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。