1 计算指令 (CPT )

CPT 指令是一条输出指令。

罗克韦尔,AB,PLC,基础指令集讲解,4,计算/算术指令(1)

操作数:

操作数:

数据类型:

格式:

说明:

目的单元

sINT INT DINT REAL

标签

存储结果的标签

表达式

sINT 1NT DINT REAL

立即数 标签

表达式由运算符分开 的标签/立即数组成。

说明:CPT 指令执行表达式中定义的算术运算。当指令被使能时 CPT 指令计算表达式的数值 并且存放结果于目的单元内。与其它算术指令运算相比 CPT 指令的运算速度稍慢而 且占用 更多的内存。CPT 指令的优点是它允许用户在一条指令内输入复杂的表达式。

有效运算符:

运算符:

说明:

最优数据类型:

D INT, REAL

-

减/非

D INT, REAL

*

D INT, REAL

/

D INT, REAL

**

指数(xtoy)

D INT, REAL

ACS

反余弦

REAL

AND

按位与

DINT

ASN

反正弦

REAL

ATN

反正切

REAL

COS

余弦

REAL

DEG

弧度转换成角度

D INT, REAL

FRD

BCD码转换成整数

DINT

LN

自然对数

REAL

LOG

以 10 为底的对数

REAL

NOT

位补码

DINT

OR

按位 0R

DINT

RAD

角度转换成弧度

D INT, REAL

SIN

正弦

REAL

SQR

平方根

D INT, REAL

TAN

正切

REAL

TOD

整数转换成 BCD

DINT

XOR

按位异或

DINT

确定运算顺序 指令按预先规定的顺序而不必按用户列出的顺序执行写入表达式的运算。可 以通过把分组项组合到圆括号内来改变运算顺序强制指令在执行其他运算之前执行圆括号 内的运算来改变运算顺序。同级的运算顺序是从左向右执行。

顺序: 运算符:

1 ACS , ASN , ATN , COS , DEG , FRD , LN , LOG , RAD , S IN , SQR , TAN TOD

2 **

3 -(取反)NOT

4 * , /

5 -(减)

6 AND

7 XOR

8 OR

执行:

条件:

动作:

预扫描

梯级输出条件被设置为假。

梯级输入条件为假

梯级输出条件被设置为假。

梯级输入条件为真

指令计算表达式并存放结果于目的单元梯 级输出条件被设置为真。

算术状态标志: 影响算术状态标志

故障条件: 无 CPT指令举例: 当指令被使能时 CPT 指令计算 value_ 1 乘以 5 的结果, 然后此结果被 value_2 除以 7 的结果 除并把最后结果存放在 result_ 1 内.

罗克韦尔,AB,PLC,基础指令集讲解,4,计算/算术指令(2)

2 加法指令(ADD)

ADD 指令是一条输出指令。

操作数:

操作数

数据类型

格式

说明

源A

SINT INT DINT

REAL

立即数 标签

与源B操作数相加的 值。

说明:ADD 指令使源 A 操作数与源 B 操作数相加并存放计算结果于目的单元内。

执行:

条件:

动作:

预扫描

梯级输出条件被设置为假。

梯级输入条件为假

梯级输出条件被设置为假。

梯级输入条件为真

目的单元=源A 源B,梯级输出条件被 设置为真。

算术状态标志: 影响算术状态标志

故障条件: 无 ADD指令举例: 当指令使能时 ADD 指令使 float_value_ 1 与 float_value_2 相加并存放结果于 add _result 内。

罗克韦尔,AB,PLC,基础指令集讲解,4,计算/算术指令(3)

3 减法指令(SUB)

SUB 指令是一条输出指令。

操作数:

操作数

数据类型

格式

说明

源A

SINT INT DINT

REAL

立即数 标签

减去源B操作数相加 的值。

源B

SINT INT DINT

REAL

立即数 标签

从源A操作数减去的 值

目的单元

SINT INT DINT

REAL

标签

存放计算结果的标 签。

说明:SUB 指令使源 A 操作数减去源 B 操作数并存放结果于目的单元内。

执行:

条件:

动作:

预扫描

梯级输出条件被设置为假。

梯级输入条件为假

梯级输出条件被设置为假。

梯级输入条件为真

目的单元=源A一源B梯级输出条件被 设置为真。

算术状态标志: 影响算术状态标志

故障条件: 无SUB指令举例:

当指令使能时 SUB 指令使 float _value_ 1 减去 float_ value_2 并存放结果于 subtract_result 内。

罗克韦尔,AB,PLC,基础指令集讲解,4,计算/算术指令(4)

4 乘法指令(MUL)

MUL 指令是一条输出指令。 操作数:

操作数

数据类型

格式

说明

源A

SINT INT DINT

REAL

立即数 标签

被乘数

源B

SINT INT DINT

REAL

立即数 标签

乘数

目的单元

SINT INT DINT

REAL

标签

存放计算结果的 标签。

说明:MUL 指令使源 A 操作数与源 B 操作数相乘并存放计算结果于目的单元。

执行:

条件:

动作:

预扫描

梯级输出条件被设置为假。

梯级输入条件为假

梯级输出条件被设置为假。

梯级输入条件为真

目的单元=源A*源B,梯级输出条件被 设置为真。

算术状态标志: 影响算术状态标志

故障条件: 无 MUL指令举例: 当指令使能时 MUL 指令使 float_value_ 1 与 float_value_2 相乘并存放结果于 multjply_result 内。

罗克韦尔,AB,PLC,基础指令集讲解,4,计算/算术指令(5)

5 .除法指令(DIV)

DIV指令是一条输出指令。

操作数:

操作数

数据类型

格式

说明

源A

SINT INT

DINT REAL

立即数 标签

被除数值。

源B

SINT INT

DINT REAL

立即数 标签

除数值。

说明:DIV 指令使源 A 操作数被源 B 操作数除并存放结果于目的单元。

执行:

条件:

动作:

预扫描

梯级输出条件被设置为假。

梯级输入条件为假

梯级输出条件被设置为假。

梯级输入条件为真

目的单元=源A/源B, 梯级输出条件被 设置为真。

算术状态标志: 影响算术状态标志

故障条件: 无 DIV指令举例: 当指令使能时 DIV 指令使 float_value_ 1 被 float_value_2 除并存放结果于 divide_result 内。

罗克韦尔,AB,PLC,基础指令集讲解,4,计算/算术指令(6)

6 平方根指令(SQR)

SQR 指令是一条输出指令。

操作数:

操作数

数据类型

格式

说明

SINT INT DINT

REAL

立即数 标签

计算该值的平方 根。

目的单元

SINT INT DINT

REAL

立即数 标签

存放计算结果的 标签。

说明: SQR 指令计算源操作数的平方根并存放计算结果于目的单元内。如果源操作数是负数 则指令在计算源操作数的平方根之前先计算其绝对值。

执行:

条件:

动作:

预扫描

梯级输出条件被设置为假。

梯级输入条件为假

梯级输出条件被设置为假。

梯级输入条件为真

目的单元=梯级输出条件被设置为真。 Destination=(Soure)1/2

算术状态标志: 影响算术状态标志

故障条件: 无

SQR指令举例:

当指令被使能时 SQR 指令计算value_ 1 的平方根并存放计算结果于 sqr_result 内。

7 取反指令(NEG)

NEG 指令是一条输出指令。

操作数:

操作数

数据类型

格式

说明

SINT INT DINT

REAL

立即数 标签

要取反的数值。

目的

SINT INT DINT

REAL

立即数 标签

存放计算结果的 标签。

说明: NEG 指令改变源操作数的符号并存放结果于目的单元。如果对一个负数取反则结果是 正数。如果对正数取反则结果是负数。

执行:

条件:

动作:

预扫描

梯级输出条件被设置为假。

梯级输入条件为假

梯级输出条件被设置为假。

梯级输入条件为真

目的单元=0一源操作数,梯级输出条件 被设置为真。