西门子s7—200系列plc使用一个9层堆栈来处理所有逻辑操作,它和计算机中的堆栈结构相同。堆栈是一组能够存储和取出数据的暂存单元,其特点是“先进后出”。每一次进行人栈操作,新值放人栈顶,栈底值丢失;每一次进行出栈操作,栈顶值弹出,栈底值补进随机数。逻辑堆栈指令主要用来处理对触点进行的复杂连接。
逻辑堆栈指令有:逻辑入栈lps、逻辑读栈lrd和逻辑出栈lpp指令。上述三条指令的用法如图所示。
lps(logic push):逻辑入栈指令(分支电路开始指令)。在梯形图中的分支结构中,可以形象地看出,它用于生成一条新的母线,其左侧为原来的主逻辑块;右侧为若干个新的从逻辑块。从堆栈使用上来讲,lps指令的作用是把当前运算值复制后压人堆栈,以备后用。对于右侧第一个新的从逻辑块,由于其之前的逻辑运算结果就是刚复制并入栈的运算值,因此可以直接在lps指令之后继续编程。
lrd(logic read):逻辑读栈指令。在梯形图分支结构中,当新母线左侧为主逻辑块时, 经过右侧第一个新的从逻辑块的运算,主逻辑块运算结果已经不存在(但在此之前已经被lps指令复制到堆栈中),要进行后续的从逻辑块编程时,就需要使用lrd指令从堆栈中读回主逻辑块运算结果,所以lrd指令用于第二个以后的从逻辑块编程。从堆栈使用上来讲,lrd读取最近的lps压人堆栈的内容,而不进行push和pop工作。
lpp(logic pop):逻辑出栈指令(分支电路结束指令)。在梯形图分支结构中,lpp用于lps产生的新母线右侧的最后一个从逻辑块编程,它在读取完离它最近的lps压入堆栈内容的同时复位该条新母线。从堆栈使用上来讲,lpp把堆栈弹出一级,堆栈内容依次上移。
图 lps、lrd、lpp指令
使用说明:
(1)由于受堆栈空间的限制(9层堆栈),lps、lpp指令连续使用时应少于9次。
(2)lps和lpp指令必须成对使用,它们之间可以使用lrd指令。
(3)lps、lrd、lpp指令无操作数。