您现在的位置是:首页 > 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和累加器2S7-400CPU具有4个累加器,累加器3、累加器4的使用减少了中间运算变量的使用。对累加器1、累加器2进行数据的装载和传送,使用LT就可以完成,对累加器3、累加器4进行操作,必须使用累加器指令,累加器指令如表2-43所示。

一个累加器占用32位,如果装载一个16位的字或者整数数据,只占用累加器的低16位或低“字”。如果装载一个32位的双字、双整数、浮点数据,则将累加器占满。在下面的示例程序说明中,ACCUN (1-4)表示累加器NACCU N-L表示累加器N的低16位。

2-43    累加器指令

 

  1TAK指令

  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 1ACCU 2的内容

    NEXT:-I    //执行ACCU 2-LACCU 1-L操作

    TMW  14    //将结果传送到MW14

    2PUSH指令

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 2ACCU 1的值未变为MW10

    3POP指令

    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

    4ENT指令

    ENT指令将累加器3的值复制到累加器4中,将累加器2的值复制到累加器3中,如果直接在L指令前使用,将运算的中间结果存储于ACCU 3中。指令的使用示例程序如下:

    LDBD    0    //装载到DBDOACCU 1(浮点格式)

    LDBD    4    //复制ACCU 1中的值到ACCU 2,装载DBD4ACCU 1(浮点格式)

    +R    //将ACCU 1ACCU 2中的值相加,结果存储于ACCU1

    LDBD    8    //复制ACCU 1中的值到ACCU 2,装载DBD8ACCU 1

    ENT    //赋值ACCU 3中的值到ACCU4,复制ACCU 2中的值(中间结

DBD+DBD4)到ACCU 3

    LDBD  12    //复制ACCU l中的值到ACCU 2,装载DBD12ACCU 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

    5LEAVE指令

    LEAVE指令与ENT指令复制的方向相反,将累加器3的值复制到累加器2中,将累加器4的值复制到累加器3中,累加器1和累加器4中的值不变。

    6INCDEC指令

    INC指令将累加器18(ACCU 1-L-L)中存储的值加18位的整数值),DEC指令将累加器18(ACCU 1-L-L)中存储的值减18位的整数值),累加器1中其他位保持不变,由于指令只对累加器18位进行操作,最大增减值为255。指令的示例程序如下:

    LMB    22    //装载到MB22ACCU 1

    INC    15    //ACCU l(MB22)增加15,将结果存储于ACCU 1-L-L

    TMB    22    //将ACCU 1-L-L的值传送到MB22

    LMB    42    //装载MB42ACCU 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.0ACCU 1

    +AR1    //将ACCU1中的值(P#200.0)装载到地址寄存器1

    +AR2  P#300.0    //将P#300.0装载到地址寄存器2

    LMW [AR1P#0.0]  //装载MW200ACCU l

    LMW [AR2P#0.0]//ACCU1的值复制到ACCU2中装载MW300ACCU 1

    -I//ACCU 2-ACCU1

    TMW    4    //运算结果传送到MW4

    8CAWCAD指令

    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#1234ACCU 1

    CAW    //转换ACCU l-L中两个字节存储值的次序

    TMW  10    //运算结果传送到MW10中。MW10中的值为W#16#3412

    LDW#16#12345678  //装载参数DW#16#12345678ACCU 1

    CAD    //转换ACCU1中四个字节存储值的次序

    TMD    20    //运算结果传送到MD20中。MD20中的值为DW#16#78563412

    9NOPONOP1BLD指令

    NOPONOP1BLD指令用于LADFBD编程语言的显示,当LADFBD编程语言转换为STL编程语言时自动产生,空指令,无实际意义。

(作者稿费要求:需要高清无水印文章的读者3元每篇,请联系客服,谢谢!在线客服:艾特贸易网客服为您服务