您现在的位置是:首页 > PLC技术 > PLC技术
累计器指令
来源:艾特贸易2018-03-26
简介累加器指令对累加器 1 (ACCUl) 、累加器 2(ACCU2) 、累加器 3(ACCU3) 、累加器 4(ACCU4) 进行操作,并且只适合 STL 编程语言。 S7-300 CPU 只有累加器 1 和累加器 2 , S7-400CPU 具有 4 个累加器,累加
累加器指令对累加器1 (ACCUl)、累加器2(ACCU2)、累加器3(ACCU3)、累加器4(ACCU4)进行操作,并且只适合STL编程语言。S7-300 CPU只有累加器1和累加器2,S7-400CPU具有4个累加器,累加器3、累加器4的使用减少了中间运算变量的使用。对累加器1、累加器2进行数据的装载和传送,使用L、T就可以完成,对累加器3、累加器4进行操作,必须使用累加器指令,累加器指令如表2-43所示。
一个累加器占用32位,如果装载一个16位的字或者整数数据,只占用累加器的低16位或低“字”。如果装载一个32位的双字、双整数、浮点数据,则将累加器占满。在下面的示例程序说明中,ACCUN (1-4)表示累加器N,ACCU N-L表示累加器N的低16位。
表2-43 累加器指令
1.TAK指令
TAK指令交换累计器1和累加器2的内容,程序中将两个值进行比较,然后使用值大的变量减值小的变量。指令的使用示例程序如下:
LMW 10 //装载MW10的内容到ACCU 1-L
LMW 12 //装载ACCU l-L的内容到ACCU 2-L,装载MW10的内容到ACCU 1-L
>I //检测ACCU 2-L( MW10)是否大于ACCU 1-L( MW12)
JP NEXT //如果ACCU2(MW10)大于ACCUl(MW12),跳转到程序标号NEXT
TAK //如果小于,交换ACCU 1和ACCU 2的内容
NEXT:-I //执行ACCU 2-L减ACCU 1-L操作
TMW 14 //将结果传送到MW14
2.PUSH指令
PUSH指令在S7-300系列PLC CPU中使用时,将累加器1的值复制到累加器2中,累加器1中的值不变;指令在S7-400系列PLC CPU中使用时,将累加器3的值复制到累加器4中,将累加器2的值复制到累加器3中,将累加器1的值复制到累加器2中,累加器1中的值不变。
PUSH指令执行前后累加器中值的变化如表2-44所示。
表2-44 PUSH指令执行前后累加器中值的变化
指令的使用示例程序如下:
LMW 10//装载MW10的内容到ACCU 1-L
PUSH //将ACCU 3的内容复制到ACCU4,将ACCU2的内容复制到ACCU 3,
将ACCU1的内容复制到ACCU 2,ACCU 1的值未变为MW10
3.POP指令
POP指令与PUSH指令复制的方向相反,在S7-300系列PLC CPU中使用时,将累加器2的值复制到累加器1中,累加器2中的值不变;指令在S7-400系列PLC CPU中使用时,将累加器2的值复制到累加器1中,将累加器3的值复制到累加器2中,将累加器4的值复制到累加器3中,累加器4中的值不变。POP指令执行前后累加器中值的变化如表2-45所示。
表2-45 POP指令执行前后累加器中值的变化
指令的使用示例程序如下:
TMD 10 //将ACCU 1中的值(值A)传送到MD10中
POP //复制ACCU 2中的值到ACCU 1中
TMD 14 //将ACCU 1中的值(值B)传送到MD14中
4.ENT指令
ENT指令将累加器3的值复制到累加器4中,将累加器2的值复制到累加器3中,如果直接在L指令前使用,将运算的中间结果存储于ACCU 3中。指令的使用示例程序如下:
LDBD 0 //装载到DBDO到ACCU 1(浮点格式)
LDBD 4 //复制ACCU 1中的值到ACCU 2,装载DBD4到ACCU 1(浮点格式)
+R //将ACCU 1和ACCU 2中的值相加,结果存储于ACCU1中
LDBD 8 //复制ACCU 1中的值到ACCU 2,装载DBD8到ACCU 1
ENT //赋值ACCU 3中的值到ACCU4,复制ACCU 2中的值(中间结
果DBD+DBD4)到ACCU 3
LDBD 12 //复制ACCU l中的值到ACCU 2,装载DBD12到ACCU 1
-R//ACCU 2减去ACCU 1的值并存储于ACCU1中,复制ACCU 3
中的值到ACCU 2,复制ACCU 4中的值到ACCU 3
/R//ACCU2中的值(DBDO+DBD4)除以ACCU 1的值(DBD8-DBD12)
并将结果存储于ACCU 1中
TDBD 16 //将运算结果传送到DBD16中
5.LEAVE指令
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。指令的示例程序如下:
LMB 22 //装载到MB22到ACCU 1
INC 15 //ACCU l(MB22)增加15,将结果存储于ACCU 1-L-L
TMB 22 //将ACCU 1-L-L的值传送到MB22
LMB 42 //装载MB42到ACCU 1
DEC 20 //ACCU l(MB42)减少20,将结果存储于ACCU l-L-L
T MB 42 //将ACCU 1-L-L的值传送到MB42
7.+AR1与+AR2指令
+AR1指令将累加器1中的值装载到地址寄存器1中,+AR2指令将累加器1中的值装载到地址寄存器2中。指令后面可以直接定义地址指针,例如+AR1 P#10.0,将P#10.0装载到地址寄存器1中,指令的使用示例程序如下:
LP#200.0 //装载地址指针P#200.0到ACCU 1
+AR1 //将ACCU1中的值(P#200.0)装载到地址寄存器1中
+AR2 P#300.0 //将P#300.0装载到地址寄存器2中
LMW [AR1,P#0.0] //装载MW200到ACCU l
LMW [AR2,P#0.0]//ACCU1的值复制到ACCU2中装载MW300到ACCU 1
-I//ACCU 2-ACCU1
TMW 4 //运算结果传送到MW4中
8.CAW与CAD指令
CAW指令将累加器1低字中包含的两个字节相互转换,CAD指令将累加器1中包含的4个字节相互转换。
CAW指令执行前后累加器1中值的变化如表2-46所示。
表2-46 CAW指令执行前后累加器1中值的变化
CAD指令执行前后累加器1中值的变化如表2-47所示。
表2-47 CAD指令执行前后累加器l中值的变化
指令的使用示例程序如下:
LW#16#1234 //装载参数W#16#1234到ACCU 1
CAW //转换ACCU l-L中两个字节存储值的次序
TMW 10 //运算结果传送到MW10中。MW10中的值为W#16#3412
LDW#16#12345678 //装载参数DW#16#12345678到ACCU 1
CAD //转换ACCU1中四个字节存储值的次序
TMD 20 //运算结果传送到MD20中。MD20中的值为DW#16#78563412
9.NOPO、NOP1与BLD指令
NOPO、NOP1、BLD指令用于LAD、FBD编程语言的显示,当LAD、FBD编程语言转换为STL编程语言时自动产生,空指令,无实际意义。
(作者稿费要求:需要高清无水印文章的读者3元每篇,请联系客服,谢谢!在线客服:)
点击排行
