累加器指令对累加器1(ACCU1)、累加器2(ACCU2)、累加器3(ACCU3)、累加器4(ACCU4)进行操作,并且只适合STL编程语言。S7-300 CPU只有累加器1和累加器2,S7-400 CPU具有4个累加器,累计器3、4的使用减少了中间运算变量的使用。对累加器1、2进行数据的装载和传送,使用L、T就可以完成;对累加器3、4进行操作,必须使用累加器指令。累加器指令见表6-30。
在前面已经介绍了累加器的使用,一个累加器占用32位,如果装载一个16位的字或整数数据,只占用累加器的低16位或低“字”,如果装载一个32位的双字、双整数、浮点数据,则将累加器占满,在下面示例程序说明中,ACCU N(1~4)表示累加器N,ACCU N—L表示累计器N的低16位。
1.TAK指令
TAK指令交换累加器1、2的内容,指令的使用参考下面的示例程序,示例程序中将两个值进行比较,然后使用值大的变量减值小的变量。
表6-30 累加器指令
2.PUSH指令
PUSH指令在S7-300系列PLC CPU中使用时,将累加器1的值复制到累加器2中,累加器1中的值不变,指令在S7-400系列PLC CPU中使用时,将累加器3的值复制到累加器4中,将累加器2的值复制到累加器3中,将累加器1的值复制到累加器2中,累加器1中的值不变。
PUSH指令执行前后累加器中值的变化如下:
指令的使用参考下面的示例程序:
3.POP指令
POP指令与PUSH指令复制的方向相反,在S7-300系列PLC CPU中使用时,将累加器2的值复制到累加器1中,累加器2中的值不变;指令在S7-400系列PLC CPU中使用时,将累加器2的值复制到累加器1中,将累加器3的值复制到累加器2中,将累加器4的值复制到累加器3中,累加器4中的值不变。POP指令执行前后累加器中值的变化如下:
指令的使用参考下面的示例程序:
4.ENT指令
ENT指令将累加器3的值复制到累加器4中,将累加器2的值复制到累加器3中,如果直接在L指令前使用,将运算的中间结果存储于ACCU3中。指令的使用参考下面的示例程序:(www.xing528.com)
5.LEAVE指令
与ENT指令复制的方向相反,将累加器3的值复制到累加器2中,将累加器4的值复制到累加器3中,累加器1、4中的值不变。
6.INC与DEC指令
INC指令将累加器1低8位(ACCU 1-L-L)中存储的值加1(8位的整数值),DEC指令将累加器1低8位(ACCU 1-L-L)中存储的值减1(8位的整数值),累加器1中其他位保持不变,由于指令只对累加器1低8位进行操作,最大增减值为255。指令的使用参考下面的示例程序:
7.+AR1与+AR2指令
+AR1指令将累加器1中的值装载到地址寄存器1中,+AR2指令将累加器1中的值装载到地址寄存器2中,指令后面可以直接定义地址指针,例如+AR1P#10.0,将P#10.0装载到地址寄存器1中,指令的使用参考下面的示例程序:
8.CAW与CAD指令
CAW指令将累加器1低字中包含的两个字节相互转换,CAD指令将累加器1中包含的4个字节相互转换。
CAW指令执行前后累加器1中值的变化如下:
CAD指令执行前后累加器1中值的变化如下:
指令的使用参考下面的示例程序:
9.NOP 0、NOP 1与BLD指令
NOP 0、NOP 1、BLD指令用于LAD、FBD编程语言的显示,当LAD、FBD编程语言转换为STL编程语言时自动产生空指令,无实际意义。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。