可编程控制器中两种四则运算,即整数四则运算和实数四则运算。前者指令较简单,参加运算的数据只能是整数。非整数参加运算需先取整,除法运算的结果分为商和余数。整数四则运算进行较高准确度要求的计算时,需将小数点前后的数值分别计算再将数据组合起来,除法运算时要对余数再做多次运算才能形成最后的商。这就使程序的设计非常繁琐。而实数运算是浮点运算,是一种高准确度的运算。 FX2 系列可编程控制器仅有整数运算指令。 FX2n 系列可编程控制器具有实数运算指令。
( 1 )加法指令
该指令的助记符、指令代码、操作数、程序步如表 8-1 所示。
表 8-1 加法指令的要素
指令名称 |
助记符 |
指令代码位数 |
操作数范围 |
程序步 | ||
S1(.) |
S2(.) |
D(.) | ||||
加法 |
ADD ADD(P) |
FNC20 (16/32) |
K 、 H KnX 、 KnY 、 KnM 、 KnS T 、 C 、 D 、 V 、 Z |
KnY 、 KnM 、 KnS T 、 C 、 D 、 V 、 Z |
ADD 、 ADDP…7 步 DADD 、 DADDP…13 步 |
ADD 加法指令是将指定的源元件中的二进制数相加,结果送到指定的目标元件中去。 ADD 加法指令的说明如图 8-1 表示。
当执行条件 X0 由 OFF → ON 时, [D10]+[D12] → [D14] 。运算是代数运算,如 5+ ( -8 ) =-3 。
ADD 加法指令有 3 个常用标志。 M8020 为零标志, M8021 为借位标志, M8022 为进位标志。
如果运算结果为 0 ,则零标志 M8020 置 1 ;如果运算结果超过 32767 ( 16 位)或 2147483647 ( 32 位),则进位标志 M8022 置 1 ;如果运算结果小于 -32767 ( 16 位)或 -2147483647 ( 32 位),则借位标志 M8021 置 1 。
在 32 为运算中,被指定的字元件是低 16 位元件,而下一个元件为高 16 位元件。
源和目标可以用相同的元件号。若源和目标元件号相同而采用连续执行的 ADD 、( D ) ADD 指令时,加法的结果在每个扫描周期都会改变。
( 2 )减法指令
该指令的助记符、指令代码、操作数、程序步如表 8-2 所示。
表 8-2 减法指令的要素
指令名称 |
助记符 |
指令代码位数 |
操作数范围 |
程序步 | ||
S1(.) |
S2(.) |
D(.) | ||||
减法 |
SUB SUB(P) |
FNC21 (16/32) |
K 、 H KnX 、 KnY 、 KnM 、 KnS T 、 C 、 D 、 V 、 Z |
KnY 、 KnM 、 KnS T 、 C 、 D 、 V 、 Z |
SUB 、 SUBP…7 步 DSUB 、 DSUBP…13 步 |
SUB 减法指令是将指定的源元件中的二进制数相减,结果送到指定的目标元件中去。 SUB 减法指令的说明如图 8-3 表示。
图 8-3 减法指令使用说明
当执行条件 X0 由 OFF → ON 时, [D10]-[D12] → [D14] 。运算是代数运算,如 5- ( -8 )=13。
各种标志的动作、 32 位运算中软元件的指定方法、连续执行型和脉冲执行型的差异均与上述加法指令相同。
( 3 )乘法指令
该指令的助记符、指令代码、操作数、程序步如表 8-3 所示。
表 8-3 乘法指令的要素
指令名称 |
助记符 |
指令代码位数 |
操作数范围 |
程序步 | ||
S1(.) |
S2(.) |
D(.) | ||||
乘法 |
MUL MUL(P) |
FNC22 (16/32) |
K 、 H KnX 、 KnY 、 KnM 、 KnS T 、 C 、 D 、 V 、 Z |
KnY 、 KnM 、 KnS T 、 C 、 D 、 V 、 Z |
MUL 、 MULP…7 步 DMUL 、 DMULP…13 步 |
MUL 乘法指令是将指定的源元件中的二进制数相乘,结果送到指定的目标元件中去。 MUL 乘法指令使用说明如图 8-4 所示。它分 16 位和 32 位两种情况。
图 8-4 乘法指令使用说明
当为 16 位运算,执行条件 X0 由 OFF → ON 时, [D0]x[D2] → [D5 , D4] 。源操作数是 16 位,目标操作数是 32 位。当 [D0]=8 , [D2]=9 时, [D5 , D4]=72 。最高位为符号位, 0 为正, 1 为负。
当为 32 位运算,执行条件 X0 由 OFF → ON 时, [D1 、 D0]x[D3 、 D2] → [D7 、 D6 、 D5 、D4]。源操作数是 32 位,目标操作数是 64 位。当 [D1 、 D0]=238 , [D3 、D2]=189 时, [D7 、 D6 、 D5 、 D4]=44982 ,最高位为符号位, 0 为正, 1 为负。
如将位组合元件用于目标操作数时,限于 K 的取值,只能得到低位 32 位的结果,不能得到高位 32 位的结果。这时,应将数据移入字元件再进行计算。
用字元件时,也不可能监视 64 位数据,只能通过监视高位 32 位和低 32 位。 V 、 Z 不能用于 [D] 目标元件。
( 4 )除法指令
该指令的助记符、指令代码、操作数、程序步如表 8-4 所示。
表 8-4 除法指令的要素
指令名称 |
助记符 |
指令代码位数 |
操作数范围 |
程序步 | ||
S1(.) |
S2(.) |
D(.) | ||||
除法 |
DIV DIV(P) |
FNC23 (16/32) |
K 、 H KnX 、 KnY 、 KnM 、 KnS T 、 C 、 D 、 Z |
KnY 、 KnM 、 KnS T 、 C 、 D 、 |
DIV 、 DIVP…7 步 DDIV 、 DDIVP…13 步 |
DIV 除法指令是将指定的源元件中的二进制数相除, [S1] 为被除数, [S2] 为除数,商送到指定的目标元件 [D] 中去,余数送到 [D] 的下一个目标元件。 DIV 除法指令使用说明如图 8-5 表示。它分 16 位和 32 位两种情况。
图 8-5 除法指令使用说明
当为 16 位运算。执行条件 X0 由 OFF → ON 时,[D0]/[D2] → [D4] 。当 [D0]=19 , [D2]=3 时, [D4]=6 ,[D5]=1。 V 和 Z 不能用于 [D] 中。
当为 32 位运算。执行条件 X0 由 OFF → ON 时,[D1、 D0]/[D3 、 D2] 。商在 [D5 、 D4] ,余数在 [D7 、D6]中。 V 和 Z 不能用于 [D] 中。
商数为 0 时,有运算错误,不执行指令。若 [D] 指定位元件,得不到余数。商和余数的最高位是符号位。被除数或余数中有一个为负数,商为负数;被除数为负数时,余数为负数。
|