您现在的位置是:首页 > PLC技术 > PLC技术
S7-300/400PLC累加器指令
来源:艾特贸易2017-10-30
简介语句表中的累加器指令用于处理单个或多个累加器的内容,指令的执行与 RLO (逻辑运算结果)无关,也不会对 RLO 产生影响。对于有 4 个累加器的 CPU ,累加器 3 、 4 的内容保持不变。
语句表中的累加器指令用于处理单个或多个累加器的内容,指令的执行与RLO(逻辑运算结果)无关,也不会对RLO产生影响。对于有4个累加器的CPU,累加器3、4的内容保持不变。累加器指令如表3-34所示。
表3-34累加器指令
1.TAK指令
指令TAK (Toggle ACCU l withACCU2)交换累加器1和累加器2的内容。
下面的程序用MW10和MW12中较大的数减去较小的数,运算结果存放在MW14中。
2.堆栈指令
S7-300的CPU有两个累加器,S7-400的CPU有4个累加器。CPU中的累加器组成了一个堆栈,堆栈用来存放需要快速存取的数据,堆栈中的数据按“先进后出”的原则存取。堆栈指令是否执行与状态字无关,也不会影响状态字。
对于只有两个累加器的CPU来说,PUSH(入栈)指令将累加器1的内容复制到累加器2,累加器l的内容不变。POP(出栈)指令将累加器2的内容复制到累加器1,累加器2的内容不变。
对于有4个累加器的CPU来说,PUSH(入栈)指令使堆栈中各层原有的数据依次向下移动一层,栈底(累加器4)的值被推出丢失,如图3-52所示。栈顶(累加器1)的值保持不变。即累加器3的内容复制到累加器4,累加器2的内容复制到累加器3,累加器1的内容复制到累加器2,累加器1的内容不变。
POP(出栈)指令使堆栈中各层原有的数据向上移动一层(如图3-53所示),原来第2层(累加器2)中的数据成为堆栈新的栈顶值,原来栈顶(累加器1)中的数据从栈内消失。即累加器2的内容复制到累加器1,累加器3的内容复制到累加器2,累加器4的内容复制到累加器3,累加器4的内容不变。
图3-52 入栈指令执行前后
图3-53 出栈指令执行前后
“进入累加器堆栈”指令ENT(EnterAccmulator Stack)将累加器3的内容复制到累加器4,累加器2的内容复制到累加器3。使用ENT指令可以在累加器3中保存中间结果。
“离开累加器堆栈”指令LEAVE (Leave Accumulator Stack)将累加器3的内容复制到累加器2,累加器4的内容复制到累加器3,累加器1、4保持不变。
例用下述程序实现浮点数运算(DBDO+DBD4)/(DBD8-DBD12)
3.加、减8位整数指令
字节加指令LNC(Increment ACCUl - LL)和字节减指令DEC(Decrement ACCUl - LL)将累加器1的最低字节(ACCUl - LL)的内容加上或减去指令中的8位常数(0~255),运算结果仍在累加器的最低字节中。累加器1的其他3个字节不变。
这些指令并不适合于16位或32位算术运算,因为累加器1的最低字节和它的相邻字节之间没有进位产生,16位或32位加法运算可以分别使用INC和DEC指令。
4.地址寄存器指令
+ARl (Add to ARl)指令将地址寄存器AR1的内容加上作为地址偏移量的累加器1的低字的内容,或加上指令中的16位常数(-32768~+32767),结果存在AR1中。
+AR2 (Add to AR2)指令将地址寄存器AR2的内容加匕作为地址偏移量的累加器1的低字的内容,或加上指令中的16位常数,结果存在AR2中。
16位有符号整数首先被扩充为24位,其符号位不变,然后与AR1中的低24位有效数字相加。地址寄存器中的存储区域标识符(第24~26位)保持不变。
5.空操作指令
BLD<number>(程序显示指令,空指令)并不执行什么功能,也不会影响状态位。该指令只是用于编程设备的图形显示,在STEP 7中将梯形图或功能块图转换为语句表时,将会自动生成BLD指令。指令中的<number>是编程设备自动生成的。
NOP 0和NOP 1指令并不执行什么功能,也不会影响状态位,它们的指令代码中分别由16个0或16个1组成,其作用与BLD指令类似。
点击排行
