S7-200-PLC的指令系统基本指令3(堆栈指令)课件.ppt
,基本指令(三),S7-200可编程序控制器,基本指令(三)S7-200可编程序控制器,教学内容,LPS:进栈指令。LRD:读栈指令。LPP:出栈指令。,教学内容LPS:进栈指令。,教学目标,价值目标:培养学生探索问题 的本质特征的科学态度知识目标:了解逻辑堆栈操作指令的基本功能能力目标:熟练运用堆栈指令进行梯形图与 指令表的互换,教学目标价值目标:培养学生探索问题 的本质特征的科学态度,教学难点,堆栈的原理及正确的运用,教学难点堆栈的原理及正确的运用,堆栈操作指令,又称多分支回路指令 S7-200CN系列PLC使用一个9层堆栈来处理所有逻辑操作。堆栈是一组能够存储和取出数据的暂存单元,其特点是“先进后出”。每一次进行入栈操作,新值放入栈顶,栈底值丢失;每一次进行出栈操作,栈顶值出栈,第2级堆栈内容上升到栈顶,栈底自动生成随机数。逻辑堆栈指令主要用来完成对触点进行复杂的连接,堆栈操作指令 又称多分支回路指令,堆栈操作指令,LPS(入栈)指令:LPS指令把栈顶值复制后压入堆栈,栈中原来数据依次下移一层,栈底值压出丢失。LRD(读栈)指令:LRD指令把逻辑堆栈第二层的值复制到栈顶,2-9层数据不变,堆栈没有压入和弹出。但原栈顶的值丢失。LPP(出栈)指令:LPP指令把堆栈弹出一级,原第二级的值变为新的栈顶值,原栈顶数据从栈内丢失。,堆栈操作指令 LPS(入栈)指令:LPS指令把栈顶值复制后,说明: 逻辑堆栈指令可以嵌套使用,最多为9层。为保证程序地址指针不发生错误,入栈指令LPS和出栈指令LPP必须成对使用,最后一次读栈操作应使用出栈指令LPP。下图为逻辑堆栈指令的简单应用。,堆栈操作指令,说明:堆栈操作指令,2,3,4,5,6,7,8,9,堆栈使用示意图:LPS进栈,第一次使用LPS指令,堆栈操作指令,123456789堆栈使用示意图:LPS进栈第一次使用LPS,3,4,5,6,7,8,9,堆栈使用示意图:LPS进栈,第二次使用LPS指令,堆栈操作指令,123456789堆栈使用示意图:LPS进栈第二次使用LPS,3,4,5,6,7,8,9,堆栈使用示意图:LPS进栈,第二次使用LPS指令,将第一次内容压入第2层,堆栈操作指令,123456789堆栈使用示意图:LPS进栈第二次使用LPS,4,5,6,7,8,9,堆栈使用示意图:LPS进栈,第三次使用LPS指令,将第二次内容压入第2层,又将第一次内容从第2层再压入第3层,堆栈操作指令,123456789堆栈使用示意图:LPS进栈第三次使用LPS,堆栈操作指令,说明: 2、使用LRD,是读出最上端所存的最新数 据的专用指令,栈内的数据不发生移 动。,堆栈操作指令说明:,4,5,6,7,8,9,堆栈使用示意图:LRD读栈,读取最上层的内容,堆栈中的内容不发生变化,堆栈操作指令,123456789堆栈使用示意图:LRD读栈123读取最上层,堆栈操作指令,说明: 3、使用LPP指令,各数据按顺序向上 移动,后进的先出,将最上端的 数据读出,同该数据就从栈中消 失。,堆栈操作指令说明:,4,5,6,7,8,9,堆栈使用示意图:LPP出栈,第一次使用LPP,堆栈操作指令,123456789堆栈使用示意图:LPP出栈123第,4,5,6,7,8,9,堆栈操作指令,堆栈使用示意图:LPP出栈,第一次使用LPP,第二层的内容上移到第一层,第三层的内容上移到第二层,123456789堆栈操作指令堆栈使用示意图:LPP出栈12,S7-200-PLC的指令系统基本指令3(堆栈指令)课件,说明: 4、由于堆栈操作有其独特的顺序性,因此要求堆栈的用法要求必须正确无误。堆栈只要保证入栈次数和出栈次数相等就不会出现大的问题,读栈不影响堆栈的指针的变化。 5、这些指令为独立指令,不带任何软元件编号。,堆栈操作指令,说明:堆栈操作指令,例1:一层堆栈,指令表LD I0.0A I0.1,堆栈操作指令,分支点开始,使用LPS指令,3 LPS,入栈,例1:一层堆栈 指令表堆栈操作指令I0.0,例1:一层堆栈,指令表LD I0.0A I0.1,3 LPS,出栈,4 A I0.25 Q0.0,6 LPP,7 Q0.1,使用LPP指令,堆栈操作指令,例1:一层堆栈 指令表3 LPS出栈,例1:一层堆栈,指令表LD I0.0A I0.1,3 LPS,4 A I0.25 Q0.0,6 LPP,7 Q0.1,8 LD I0.3,堆栈操作指令,LPS,9 LPS,10 A I0.411 Q0.2,LPP,12 LPP,13 A I0.514 Q0.3,例1:一层堆栈 指令表3 LPS4,例1:一层堆栈,指令表LD I0.0A I0.1,3 LPS,4 A I0.25 Q0.0,6 LPP,7 Q0.1,8 LD I0.3,9 LPS,10 A I0.411 Q0.2,13 A I0.514 Q0.3,12 LPP,LPS,15 LD I0.6,16 LPS,17 A I0.718 Q0.4,堆栈操作指令,例1:一层堆栈 指令表3 LPS4,例1:一层堆栈,指令表LD I0.0A I0.1,3 LPS,4 A I0.25 Q0.0,6 LPP,7 Q0.1,8 LD I0.3,9 LPS,10 A I0.411 Q0.2,13 A I0.514 Q0.3,12 LPP,15 LD I0.6,16 LPS,17 A I0.718 Q0.4,LRD,LRD,LPS,19 LRD,20 A I1.021 Q0.5,读栈,22 LRD,23 A Q1.124 Q0.6,读栈,LPP,25 LPP,26 A I1.227 Q0.7,堆栈操作指令,例1:一层堆栈 指令表3 LPS4,说明1: 入栈的目的就是要将当前的逻辑运算结果暂时保存起来,然后就像没有入栈指令一样完成本行指令。 再在入栈点上将逻辑运算结果读出来,进行下一重输出行。 如果是最后一次使用栈内结果,就必须是出栈指令LPP,若不是最后一次使用,则应该用读栈指令LRD,去除结果后参加运算。,堆栈操作指令,说明1:堆栈操作指令,说明2: 栈操作指令LPS、LRD、LPP在使用中可以这样理解:除了对分支电路进行操作外,在程序中没有其它作用。 在编写程序时,可以分两部分来分析: 一方面,要保证栈操作的正确性,入栈、出栈要配对使用并且使用正确; 另一方面,在阅读程序时可以不看栈操作指令,按梯形图掌握程序的正确性。,堆栈操作指令,说明2:堆栈操作指令,例2:二层堆栈,指令表1 LD I0.1,堆栈操作指令,例2:二层堆栈 指令表堆栈操作指令M1.1,例2:二层堆栈,LPS,指令表1 LD I0.1,堆栈操作指令,例2:二层堆栈LPS 指令表堆栈操作指令M,例2:二层堆栈,指令表1 LD I0.1,2 LPS,第一层入栈,3 A I0.2,堆栈操作指令,LPS,LPS,例2:二层堆栈 指令表2 LPS第一,例2:二层堆栈,指令表1 LD I0.1,2 LPS,第一层入栈,3 A I0.2,4 LPS,第二层入栈,5 A I0.36 Q0.0,7 LPP,第二层出栈,8 AN M1.09 Q0.1,堆栈操作指令,LPS,LPP,LPS,例2:二层堆栈 指令表2 LPS第一,例2:二层堆栈,指令表1 LD I0.1,2 LPS,3 A I0.2,4 LPS,5 A I0.36 Q0.0,7 LPP,8 AN M1.09 Q0.1,10 LPP,第二层出栈,11 A M1.1,12 LPS,第一层入栈,13 A M1.214 Q0.2,15 LPP,第一层出栈,16 A I0.4 Q0.3MEND,堆栈操作指令,LPS,LPP,LPS,LPP,例2:二层堆栈 指令表2 LPS3,例2:二层堆栈,指令表1 LD I0.1,2 LPS,3 A I0.2,4 LPS,5 A I0.36 Q0.0,7 LPP,8 AN M1.09 Q0.1,10 LPP,11 A M1.1,12 LPS,13 A M1.214 Q0.2,15 LPP,16 A I0.4 Q0.3MEND,堆栈操作指令,例2:二层堆栈 指令表2 LPS3,例2:二层堆栈,说明: 确定堆栈的层数,只要看一个阶梯上有几条支路就是几层堆栈。 例题中第二层出栈后就不是多层栈了。 多重输出只要顺序不错,连续入栈、出栈的次数最多可达9层。,堆栈操作指令,例2:二层堆栈说明:堆栈操作指令,I/O分配表SB1 停止按钮 I0.0SB2 启动按钮1 I0.1SB3 启动按钮2 I0.2SB4 启动按钮3 I0.3KM1 接触器 Q0.0KM2 接触器 Q0.1KM3 接触器 Q0.2,例3:练习,堆栈操作指令,SB1SB2 KM1 SB3,接线图,例3:练习,堆栈操作指令,SB1SB2 KM1 SB3,梯形图,I0.0,I0.1,Q0.0,I0.2,Q0.0,Q0.1,I0.3,Q0.1,Q0.0,Q0.1,Q0.2,Q0.2,例3:练习,LPS,LPS,LPP,LPP,LRD,LRD,堆栈操作指令,SB1SB2 KM1 SB3,谢谢,谢谢,知识回顾Knowledge Review,祝您成功!,知识回顾Knowledge Review祝您成功!,