9.1.8逻辑堆栈的操作心S7-200PLC有9层堆栈,用于处理所有逻辑操作。当线路的逻辑复杂时,也可以借助堆栈指令描述。X从堆栈的角度解释ALD与OLD(堆栈动作自动完成)。1.ALD:把逻辑堆栈第一、二级值作“与”操作结果置于栈顶。ALD指令执行后,堆栈下方数据上移一级。2.OLD:把逻辑堆栈第一、二级值作“或”操作,结果置于栈顶。OLD指令执行后,堆栈下方数据上移一级。图9-9
9.1.8 逻辑堆栈的操作 ❖ S7-200PLC有9层堆栈,用于处理所有逻辑操 作。当线路的逻辑复杂时,也可以借助堆栈指令 描述。 ❖ 从堆栈的角度解释ALD与OLD(堆栈动作自动 完成)。 1. ALD:把逻辑堆栈第一、二级值作“与”操作, 结果置于栈顶。ALD指令执行后,堆栈下方数 据上移一级。 2. OLD:把逻辑堆栈第一、二级值作“或”操作, 结果置于栈顶。OLD指令执行后,堆栈下方数 据上移一级。图9-9
逻辑入栈指令LPS:把栈顶值复制后压入堆栈,栈底值压出丢失。在梯形图中,用于生成一条新的母线,其左侧为原来的主控逻辑块,右侧为新的逻辑块。图9-9逻辑读栈指令LRD:将堆栈中第二级的值复制到栈顶,堆栈中没有入栈或出栈操作,只是栈顶的值被第二级的值取代。在梯形图中,当新母线左侧为主控逻辑块时,LPS开始右侧第一个从逻辑块编程,LRD开始第二个以后的从逻辑块编程。图9-9逻辑出栈指令LPP:将栈顶值弹出,原堆栈中各级栈值向上一次弹一级,堆栈第二级的值成为新的栈顶值。在梯形图中,LPP用于LPS产生的新母线右侧最后一个从逻辑模块编程,它在读取完离它最近的LPS压入堆栈内容时复位该条新母线。图9-9
❖ 逻辑入栈指令LPS:把栈顶值复制后压入堆栈,栈底值压 出丢失。在梯形图中,用于生成一条新的母线,其左侧为 原来的主控逻辑块,右侧为新的逻辑块。图9-9 ❖ 逻辑读栈指令LRD: 将堆栈中第二级的值复制到栈顶,堆 栈中没有入栈或出栈操作,只是栈顶的值被第二级的值取 代。在梯形图中,当新母线左侧为主控逻辑块时,LPS开 始右侧第一个从逻辑块编程,LRD开始第二个以后的从 逻辑块编程。图9-9 ❖ 逻辑出栈指令LPP:将栈顶值弹出,原堆栈中各级栈值向 上一次弹一级,堆栈第二级的值成为新的栈顶值。在梯形 图中,LPP用于LPS产生的新母线右侧最后一个从逻辑 模块编程,它在读取完离它最近的LPS压入堆栈内容时, 复位该条新母线。图9-9
从梯形图的角度写指令:图9-10LD10.0LPS(新母线开始第一个逻辑块用LPS)LD10.1010.2ALDQ0.0=LRD(新母线第二个逻辑块用LRD)LD10.3ON10.4ALDQ0.1=LPP(新母线最后一个逻辑块用LPP)A10.5AN10.6Q0.2
❖从梯形图的角度写指令:图9-10 LD I0.0 LPS (新母线开始第一个逻辑块用LPS) LD I0.1 O I0.2 ALD = Q0.0 LRD (新母线第二个逻辑块用LRD) LD I0.3 ON I0.4 ALD = Q0.1 LPP (新母线最后一个逻辑块用LPP) A I0.5 AN I0.6 = Q0.2
图9-10指令对应堆栈的变化ALD程序执LPSLD I0. 1010.2LRDLD I0. 3LD I0.0行前Q0.0-x10.010.010. 1S1S210.310.0X10.0I0.010.010.0I0.010.010.0X10.0X10.0+fXX....ALDON I0.4LPPA 10.5AN I0.5Q0. 1S4S6S310.0S710.010.010.0xx
图9-10指令对应堆栈的变化 LD I0.0 程序执 行前 X . . X I0.0 LPS I0.0 I0.0 X . . . . LD I0.1 I0.1 I0.0 I0.0 X O I0.2 S1 I0.0 I0.0 X ALD = Q0.1 S2 I0.0 X . . . . . . LRD I0.0 I0.0 X . . LD I0.3 I0.0 I0.0 X I0.3 ON I0.4 S3 I0.0 I0.0 X ALD = Q0.0 S4 I0.0 X . . . . . . LPP I0.0 X . . A I0.5 S6 X AN I0.5 S7 X . . .
LPS、LPP必须配对使用,它们之间的LRD可以使用多次或不使用。写出下列梯形图对应的指令语句:Q0. 010.010.010. 1Q0. 0())(Q0. 110.210.3()()10. 1Q0. 110. 4Q0.2C10.5)Q0. 310.010. 1Q0.110.610.7Q0. 4人2CJ10.8Q0. 5Q0. 0
❖ LPS、LPP必须配对使用,它们之间的LRD可以使用多 次或不使用。 ❖ 写出下列梯形图对应的指令语句: ( ) ( ) I0.0 I0.1 Q0.0 Q0.1 ( ) ( ) I0.0 I0.1 Q0.0 Q0.1 ( ) ( ) ( ) ( ) ( ) ( ) I0.0 I0.1 Q0.0 I0.2 I0.3 I0.4 Q0.1 Q0.2 I0.5 Q0.3 I0.6 I0.7 I0.8 Q0.4 Q0.5