二进制算术运算指令分为16位和32位二进制数的加、减、乘、除、加1和减1等的指令一共16条,如表3-14所示。
表3-14 二进制算术运算指令
1.F20(+)
该指令为16位数的加法指令,其功能是当触发信号接通时,将S指定的16位常数或16位数据存储单元中的数据与D指定的16位数据存储单元中的数据相加,结果存储在D指定的数据存储单元中,如图3-10所示。指令格式及操作数范围如表3-15所示。
图3-10 指令的执行
表3-15 指令格式及操作数范围
当触发信号使X1接通时,内部字继电器WR2中的数据和数据寄存器DT1中的数据相加,结果存储在WR2中(被加数存储单元D中的数据被加法结果覆盖)。16位数据存储单元的数据存储范围是-32768~32767(H8000~H7FFF)。当计算结果超过16位二进制数的范围时,进位标志继电器:R9009瞬间接通(一个扫描周期);当计算结果为0时,R900B瞬间接通(一个扫描周期)。
特别注意的是,如果指令前面是保持型的触发信号,则在每一个扫描周期该指令都执行一次,所以通常要在触发信号后面加上前沿或后沿微分指令,这样才能得到预期的运算结果。高级指令中有很多类似的情况,后面不再重复说明。
2.F21(D+)
该指令为32位数的加法指令,其功能是将由S指定的32位常数或32位数据存储单元中的数据(S为低16位,S+1为高16位)与由D指定的32位数据存储单元中的数据(D为低16位,D+1为高16位)相加,结果存放在数据存储单元D和D+1中,如图3-11所示。
图3-11 指令的执行
指令格式及操作数范围如表3-16所示。
表3-16 指令格式及操作数范围
执行时,触发信号使X1接通时,内部继电器WR3、WR2中的数据分别和数据寄存器DT2、DT1中的数据相加,结果存储在WR3、WR2中(被加数存储单元中的数据被加法结果覆盖)。
32位数据存储单元的数据范围是-2147483648~2147483647(H80000000~H7FFFFFFF)。当计算结果超过32位数据的范围时,进位标志继电器R9009瞬间接通(一个扫描周期);当计算结果为零时,R900B瞬间接通(一个扫描周期)。
如果低16位存储单元已经指定为(D,S),则高位自动指定为(D+1,S+1)。此处,S(低位)=DT1,S+1(高位)=DT2,D(低位)=WR2,D+1(高位)=WR3。
3.F22(+)
该指令为16位数据相加存储在指定单元的指令,功能是将由S1和S2指定的16位常数或16位存储单元中的数据相加,结果存储在指定的D中,如图3-12所示。指令格式及操作数范围如表3-17所示。
图3-12 指令的执行
表3-17 指令格式及操作数范围
当触发信号使X1接通时,内部继电器WR2中的数据和数据寄存器DT1中的数据相加,结果存储在DT5中。当计算结果超过16位二进制数的范围时,进位标志继电器R9009瞬间接通(一个扫描周期);当计算结果为零时,R900B瞬间接通(一个扫描周期)。
4.F23(D+)
该指令为32位数据相加存储在指定单元的指令,功能是将由S1指定的32位常数或32位数据存储单元中的数据(S1为低16位,S1+1为高16位)与由S2指定的32位数据存储单元(S2为低16位,S2+1为高16位)中的数据相加,结果存储在数据存储单元D和D+1中,如图3-13所示。指令格式及操作数范围如表3-18所示。
图3-13 指令的执行
表3-18 指令格式及操作数范围
(续)
当触发信号使X1接通吋,内部继电器WR3、WR2中的数据分别和数据寄存器DT2、DT1中的数据相加,结果分别存储在DT6、DT5中。
计算结果一旦超过32位数据范围时,进位标志继电器R9009瞬间接通(一个扫描周期);当计算结果为零时,R900B瞬间接通(一个扫描周期)。
5.F25(-)
该指令为16位数据的减法指令,其功能是将由D指定的16位数据存储单元中的数据与由S指定的16位常数或16位数据存储单元中的数据相减,结果存储在D指定的数据存储单元中,如图3-14所示。指令格式及操作数范围如表3-19所示。
图3-14 指令的执行
表3-19 指令格式及操作数范围
当触发信号使X1接通时,WR2中的数据和DT1中的数据相减,结果存储在WR2中(被减数存储单元WR2中的数据被减法的结果覆盖)。当计算结果超过16位二进制数的范围时,进位标志继电器R9009瞬间接通(一个扫描周期);当计算结果为零时,R900B瞬间接通(一个扫描周期)。
6.F26(D-)
该指令为两个32位数据的减法指令,其功能是将由D指定的32位数据存储单元(D为低16位,D+1为高16位)中的数据与由S指定的32位常数或32位数据存储单元中的数据(S为低16位,S+1为高16位)相减,结果存储在数据存储单元D和D+1中,如图3-15所示。指令格式及操作数范围如表3-20所示。
图3-15 指令的执行
表3-20 指令格式及操作数范围
(续)
当触发信号使X1接通时,内部继电器WR3、WR2中的数据分别和数据寄存器DT2、DT1中的数据相减,结果存储WR3、WR2中(被减数存储单元DT2、DT1中的数据被减法的结果覆盖)。
计算结果一旦超过32位数据范围时,进位标志继电器R9009瞬间接通(一个扫描周期);当计算结果为零时,R900B瞬间接通(一个扫描周期)。
7.F27(-)
该指令为16位数据相减存储在指定存储单元的指令,其功能是将由S1和S2指定的16位常数或16位存储单元中的数据相减,结果存储在指定的D中,如图3-16所示。指令格式及操作数范围如表3-21所示。
图3-16 指令的执行
表3-21 指令格式及操作数范围
当触发信号使X1接通时,DT1中的数据和WR2中的数据相减,结果存储在DT5中。
计算结果一旦超过16位二进制数的范围时,进位标志继电器R9009瞬间接通(一个扫描周期);计算结果为零时,R900B瞬间接通(一个扫描周期)。
8.F28(D-)
该指令为32位数据相减存储在指定单元的指令,其功能是将由S1指定的32位常数或32位数据存储单元中的数据(S1为低16位,S1+1为高16位)与由S2指定的32位数据存储单元(S2为低16位,S2+1为高16位)中的数据相减,结果存于数据存储单元D和D+1中,如图3-17所示。指令格式及操作数范围如表3-22所示。
图3-17 指令的执行(www.xing528.com)
当触发信号使X1接通时,DT2、DT1中的数据和WR3、WR2中的数据相减,结果存储在DT6、DT5中。
计算结果一旦超过32位数据范围时,进位标志继电器R9009瞬间接通(一个扫描周期);当计算结果为零时,R900B瞬间接通(一个扫描周期)。
表3-22 指令格式及操作数范围
9.F30(∗)
该指令为16位数据的乘法指令,其功能是将由S1指定的16位数据与S2指定的16位数据相乘,相乘的结果存储在(D+1,D)中(32位存储单元),如图3-18所示。指令格式及操作数范围如表3-23所示。
图3-18 指令的执行
表3-23 指令格式及操作数范围
当X1接通时,WR2中的数据和DT1中的数据相乘,结果存储在DT6、DT5中。
10.F31(D∗)
该指令为32位数据的乘法指令,功能是将S1指定的32位数与S2指定的32位数相乘,结果存储在(D+3,D+2,D+1,D)中(64位存储单元),如图3-19所示。指令格式及操作数范围如表3-24所示。
图3-19 指令的执行
表3-24 指令格式及操作数范围
(续)
当触发信号使X1接通时,内部继电器WR1、WR2中的数据和数据寄存器DT2、DT1中的数据相乘,结果存储在DT8、DT7、DT6、DT5中。
值得注意的是,FP1系列的PLC中的C14型和C16型不支持本条指令,其余的C24型、C40型、C56型和C72型都支持。
11.F32(%)
该指令为16位数据的除法指令,功能是将S1指定的16位数除以S2指定的16位数,商存储在D中,余数存储在特殊数据寄存器DT9015中,如图3-20所示。指令格式及操作数范围如表3-25所示。
图3-20 除法指令的功能
表3-25 指令格式及操作数范围
12.F33(D%)
该指令为32位数据的除法指令,功能是将S1指定的32位被除数除以S2指定的32位数,商存储在指定的(D+1,D)中,余数存储在特殊数据寄存器(DT9016,DT9015)中,如图3-21所示。指令格式及操作数范围如表3-26所示。
图3-21 指令的执行
表3-26 指令格式及操作数范围
当触发信号使X1接通时,内部继电器(WR3,WR2)中的数据和数据寄存器(DT2,DT1)中的数据相除,结果存储在(DT6,DT5)中,余数存储在(DT9016,DT9015)中。
在FP1系列PLC的C14型和C16型PLC不支持本条指令,其余的C24型、C40型、C56型和C72型都支持,这个需要注意。
13.F35(+1)
该指令为16位数据加1指令,其功能是将D指定的16位数据加1,结果仍存储在D中,如图3-22所示。指令格式及操作数范围如表3-27所示。
图3-22 指令的功能
表3-27 指令格式及操作数范围
当触发信号使X1接通时,数据寄存器DT1中的数据加1,结果仍存储在DT1中。若DT1=HFFFF,则指令执行一次后DT1=H0。
如果计算结果出现溢出(R9009接通),可使用F36(D+1)指令(32位数据加1),此时要先用F89(EX7)指令将16位数据转换成32位数据。
14.F36(D+1)
该指令是32位数据的加1指令,其功能是将D指定的32位数据加1,结果仍存储在(D+1,D)中,如图3-23所示。指令格式及操作数范围如表3-28所示。
图3-23 指令的功能
表3-28 指令格式及操作数范围
当触发信号使X1接通时,数据寄存器(DT2,DT1)中的数据增加1,结果仍存储在(DT2,DT1)中。若(DT2,DT1)=H1289FFFF,则指令执行一次后(DT2,DT1):H128A0000。
15.F37(-1)
该指令为16位数据的减1指令,其功能是将D指定的16位数据减1,结果仍存储在D中,如图3-24所示。指令格式及操作数范围如表3-29所示。
图3-24 指令的功能
表3-29 指令格式及操作数范围
当触发信号使X1接通时,数据寄存器DT1中的数据减1,结果仍存储在DT1中。若DT1=H0,则指令执行一次后DT1=HFFFF。
如果计算结果出现溢出(R9009接通),可使用:F38(D-1)指令(32位数据减1),此时要先用F89(EXT)指令将16位数转换成32位数据。
16.F38(D-1)
该指令为32位数据减1指令,其功能是将D指定的32数据减1,结果仍存储在(D+1,D)中,如图3-25所示,指令格式及操作数范围如表3-30所示。
图3-25 指令的功能
表3-30 指令格式及操作数范围
当触发信号使X1接通时,数据寄存器(DT2,DT1)中的数据减1,结果仍存储在(DT2,DT1)中。若(DT2,DT1)=H128A0000,则指令执行一次后(DT2,DT1)=H1289FFFF。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。