您现在的位置是:首页 > PLC技术 > PLC技术

S7-300/400PLC累加器指令

来源:艾特贸易2017-10-30

简介语句表中的累加器指令用于处理单个或多个累加器的内容,指令的执行与 RLO (逻辑运算结果)无关,也不会对 RLO 产生影响。对于有 4 个累加器的 CPU ,累加器 3 、 4 的内容保持不变。


    语句表中的累加器指令用于处理单个或多个累加器的内容,指令的执行与RLO(逻辑运算结果)无关,也不会对RLO产生影响。对于有4个累加器的CPU,累加器34的内容保持不变。累加器指令如表3-34所示。

3-34累加器指令

表3-34累加器指令 

    1TAK指令

    指令TAK  (Toggle ACCU l withACCU2)交换累加器1和累加器2的内容。

下面的程序用MW10MW12中较大的数减去较小的数,运算结果存放在MW14中。

 

  2.堆栈指令

 S7-300CPU有两个累加器,S7-400CPU4个累加器。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-52  入栈指令执行前后

 图3-53 出栈指令执行前后

3-53  出栈指令执行前后

    “进入累加器堆栈指令ENTEnterAccmulator Stack)将累加器3的内容复制到累加器4,累加器2的内容复制到累加器3。使用ENT指令可以在累加器3中保存中间结果。

    “离开累加器堆栈指令LEAVE (Leave Accumulator Stack)将累加器3的内容复制到累加器2,累加器4的内容复制到累加器3,累加器14保持不变。

例用下述程序实现浮点数运算(DBDO+DBD4)/(DBD8-DBD12)

 

    3.加、减8位整数指令

    字节加指令LNC(Increment   ACCUl - LL)和字节减指令DEC(Decrement ACCUl - LL)将累加器1的最低字节(ACCUl - LL)的内容加上或减去指令中的8位常数(0255),运算结果仍在累加器的最低字节中。累加器1的其他3个字节不变。

    这些指令并不适合于16位或32位算术运算,因为累加器1的最低字节和它的相邻字节之间没有进位产生,16位或32位加法运算可以分别使用INCDEC指令。

 

    4.地址寄存器指令

   +ARl (Add to ARl)指令将地址寄存器AR1的内容加上作为地址偏移量的累加器1的低字的内容,或加上指令中的16位常数(-32768+32767),结果存在AR1中。

   +AR2 (Add to AR2)指令将地址寄存器AR2的内容加匕作为地址偏移量的累加器1的低字的内容,或加上指令中的16位常数,结果存在AR2中。

   16位有符号整数首先被扩充为24位,其符号位不变,然后与AR1中的低24位有效数字相加。地址寄存器中的存储区域标识符(第2426位)保持不变。

 

    5.空操作指令

   BLD<number>(程序显示指令,空指令)并不执行什么功能,也不会影响状态位。该指令只是用于编程设备的图形显示,在STEP 7中将梯形图或功能块图转换为语句表时,将会自动生成BLD指令。指令中的<number>是编程设备自动生成的。

   NOP 0NOP 1指令并不执行什么功能,也不会影响状态位,它们的指令代码中分别由160161组成,其作用与BLD指令类似。