四则及逻辑运算指令是基本运算指令。可完成四则运算或逻辑运算,可通过运算实现数据的传送、变位及其他控制功能。
可编程控制器中两种四则运算,即整数四则运算和实数四则运算。前者指令较简单,参加运算的数据只能是整数。非整数参加运算需先取整,除法运算的结果分为商和余数。整数四则运算进行较高准确度要求的计算时,需将小数点前后的数值分别计算再将数据组合起来,除法运算时要对余数再做多次运算才能形成最后的商。这就使程序的设计非常繁琐。而实数运算是浮点运算,是一种高准确度的运算。
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]
指定位元件,得不到余数。商和余数的最高位是符号位。被除数或余数中有一个为负数,商为负数;被除数为负数时,余数为负数。