首页 理论教育 逻辑堆栈操作指令:S7-200系列PLC实现方法

逻辑堆栈操作指令:S7-200系列PLC实现方法

时间:2023-07-01 理论教育 版权反馈
【摘要】:表3-4为逻辑堆栈结构。图3-16 S7-200堆栈示意图表3-4 逻辑堆栈结构西门子公司的系统手册中把ALD、OLD、LPS、LRD、LPP和LDSn等指令都归纳入为堆栈指令,见表3-5。表3-5 S7-200的堆栈指令1)电路块连接指令(2条)①串联电路块的并联连接指令。其指令无操作数。在语句表中,必须由编程人员加入这些堆栈处理指令。

逻辑堆栈操作指令:S7-200系列PLC实现方法

堆栈是一组能够存储和取出数据的暂存单元,堆栈中的数据一般按“先迸后出”的原则存取。S7-200使用一个9层堆栈来处理所有逻辑操作,它和计算机中的堆栈结构相同,栈顶用来存储逻辑运算的结果,下面的8位用来存储中间运算结果(见图3-16)。每一次迸行入栈操作,新值放入栈顶,栈底值丢失;每一次迸行出栈操作,栈顶值弹出,栈底值补迸随机数。表3-4为逻辑堆栈结构。

在简单梯形图逻辑电路图触点的串、并联操作中,执行LD指令时,将指令指定的位地址中的二迸制数据装载入栈项。执行A(与)指令时,将指令指定的位地址中的二迸制数和栈顶中的二迸制数相“与”,结果存入栈顶。执行O指令时,将指令指定的位地址中的二迸制数和栈顶中的二迸制数相“或”,结果存入栈顶。在语句表指令系统中,其触点的串、并联关系可以用简单的与、或、非逻辑关系描述。

但在较复杂梯形图的逻辑电路图中,梯形图无特殊指令,绘制非常简单,但触点的串、并联关系不能全部用简单的与、或、非逻辑关系描述。语句表指令系统中设计了电路块的与操作、电路块的或操作指令、逻辑入栈指令LPS、逻辑读栈指令LRD(电路块指以LD为起始的触点串、并联网络)、逻辑出栈指令LPP、装载堆栈LDSn等解决此类问题。

978-7-111-42161-0-Chapter03-36.jpg

图3-16 S7-200堆栈示意图

表3-4 逻辑堆栈结构

978-7-111-42161-0-Chapter03-37.jpg

西门子公司的系统手册中把ALD、OLD、LPS、LRD、LPP和LDSn等指令都归纳入为堆栈指令,见表3-5。

表3-5 S7-200的堆栈指令

978-7-111-42161-0-Chapter03-38.jpg

1)电路块连接指令(2条)

①串联电路块的并联连接指令。两个以上触点串联形成的支路叫串联电路块(或称串联电路分支)。

串联电路块(分支)的并联连接指令为OLD。其指令无操作数

OLD(OrLoad):或块指令。用于串联电路块(分支)的并联连接。

OLD指令的用法如图3-17所示。

使用说明:

a)除在网络块逻辑运算的开始(左母线上)使用LD和/或LDN指令外,在块电路的开始(分支母线上)也要使用LD和/或LDN指令。

b)可以依次使用OLD指令并联多个串联逻辑块,每完成一次块电路的并联时都要写上OLD指令。

978-7-111-42161-0-Chapter03-39.jpg

图3-17 OLD指令的用法

a)梯形图(OLD串联块的并联连接) b)助记符

c)OLD指令无操作数。

②并联电路块的串联连接指令。两条以上支路并联形成的电路叫并联电路块。

并联电路块的串联连接指令为ALD。其指令无操作数。

ALD(AndLoad):与块指令。用于并联电路块的串联连接。

ALD指令的用法如图3-18所示。

978-7-111-42161-0-Chapter03-40.jpg

图3-18 ALD指令的用法

a)梯形图 b)助记符

使用说明:

a)除在网络块逻辑运算的开始(左母线上)使用LD和/或LDN指令外,在块电路的开始(分支母线上)也要使用LD和/或LDN指令。

b)可以依次使用ALD指令串联多个并联逻辑块,每完成一次块电路的串联连接时都要写上ALD指令。

c)ALD指令无操作数。(www.xing528.com)

③OLD和ALD指令的逻辑操作。触点的串/并联指令只能将单个触点与其他触点或电路串/并联。要想将图3-19中由I3.2和T16的触点组成的串联电路与它上面的电路并联,首先需要完成两个串联电路块的内部“与”逻辑运算(即触点的串联),这两个电路块分别用LDN和LD指令表示电路块的起始触点。前两条指令执行完后,“与”运算的结果978-7-111-42161-0-Chapter03-41.jpg存放在栈顶,第3、4条指令执行完后,“与”运算的结果978-7-111-42161-0-Chapter03-42.jpg压入栈顶,原来在栈顶的S0被推到堆栈的第2层,第2层的数据被推到第3层,……,栈底的数据丢失。OLD指令用逻辑“或”操作对堆栈第1层和第2层的数据相“或”,即将两个串联电路块并联,并将运算结果S2=S0+S1存入堆栈的顶部,第3~9层中的数据依次向上移动一位。

图3-19中OLD后面的两条指令将两个触点并联,运算结果978-7-111-42161-0-Chapter03-43.jpg被压入栈顶,堆栈中原来的数据依次向下一层推移,栈底值被推出丢失。ALD指令用逻辑“与”操作对堆栈第1层和第2层的数据相“与”,即将两个电路块串联,并将运算结果S4=S2·S3存入堆栈的顶部,第3~9层中的数据依次向上移动一位。

将电路块串/并联时,每增加一个用LD或LDN指令开始的电路块内部的运算结果,堆栈中就增加一个数据,堆栈深度加1;每执行一条ALD或OLD指令,堆栈深度就减1。

梯形图和功能块图编辑器自动地插入处理栈操作所需要的指令。在语句表中,必须由编程人员加入这些堆栈处理指令。

978-7-111-42161-0-Chapter03-44.jpg

图3-19 OLD和ALD指令的逻辑操作

2)逻辑入栈LPS、逻辑读栈LRD和逻辑出栈LPP指令(3条)。这三条指令也称为多重输出指令,主要用于多个分支电路同时受一个或一组触点控制的复杂逻辑输出处理。

①LPS(Logic Push):逻辑入栈指令(分支电路开始指令)。从梯形图的分支结构中可以形象地看出,它用于生成一条新的母线,其左侧为原来的“主”逻辑块,右侧为新的“从”逻辑块,因此可以直接编程。从堆栈使用的角度来讲,LPS指令的作用是把栈顶值复制后压入堆栈保存起来,防止丢失,以备恢复再用。

②LRD(Logic Read):逻辑读栈指令。在梯形图分支结构中,当新母线左侧为“主”逻辑块时,LPS开始右侧的第一个“从”逻辑块编程,LRD开始第二个以后的“从”逻辑块编程。从堆栈使用的角度来讲,LRD指令的作用是只读取最近LPS压入堆栈的内容,即恢复最近保存的内容供编程使用;而堆栈本身不迸行Pusn和Pop工作,即LPS压入堆栈的内容仍继续保存着没丢失,以备继续恢复再用。

③LPP(Logic Pop):逻辑出栈指令(分支电路结束指令)。在梯形图分支结构中,LPP用于LPS产生的新母线右侧的最后一个“从”逻辑块编程,它在读取完离它最近LPS压入堆栈内容的同时取消该条新母线。从堆栈使用的角度来讲,LPP把堆栈弹出一级,堆栈内存依次上移,即将LPS压入堆栈保存的内容弹出,不需要再保存了。

上述三条指令的用法如图3-20~图3-22所示。

978-7-111-42161-0-Chapter03-45.jpg

图3-20 LPS、LRD、LPP三条指令的用法举例(一级堆栈)

a)梯形图 b)助记符

使用说明:

a)逻辑入栈LPS、逻辑读栈LRD和逻辑出栈LPP指令可以嵌套使用,但受堆栈空间的限制,最多只能使用9次。

b)LPS和LPP必须成对出现,它们之间根据需要可以插入使用LRD指令。

c)LPS、LRD、LPP指令无操作数。

3)装载堆栈指令LDS n(Load Stack)(1条)。它的功能是复制堆栈中的第n个值到栈顶,而栈底值丢失。该指令在编程中使用较少。

指令格式:LDS n(n为0~8的整数)

例如,执行指令:LDS3。该指令执行后堆栈发生变化的情况见表3-6。

4)LPS、LRD、LPP、LDS的堆栈操作。LPS、LRD、LPP、LDS的堆栈操作如图3-23所示。

978-7-111-42161-0-Chapter03-46.jpg

图3-21 LPS、LRD、LPP三条指令的用法举例(二级嵌套)

a)梯形图 b)助记符

978-7-111-42161-0-Chapter03-47.jpg

图3-22 LPS、LRD、LPP三条指令的用法举例(多级嵌套)

a)梯形图 b)助记符

表3-6 LDS指令使用说明

978-7-111-42161-0-Chapter03-48.jpg

978-7-111-42161-0-Chapter03-49.jpg

图3-23 LPS、LRD、LPP、LDS的堆栈操作

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈