计算 (CPT)
此信息适用于 CompactLogix 5370、ControlLogix 5570、Compact GuardLogix 5370、GuardLogix 5570、Compact GuardLogix 5380、CompactLogix 5380、ControlLogix 5580、GuardLogix 5580 和 ControlLogix 5590 控制器。在适用的情况下会注明控制器的差异。
启用后,CPT 指令会求表达式的值并将结果放入 Dest 中。
CPT 指令支持在一个指令中实现复杂的表达式。
如果符合以下任一条件,对表达式进行求值时,在执行计算前会将所有非 LREAL 类型的操作数转换为 LREAL 类型:
- 表达式中的任一操作数为 LREAL 类型。
- Dest 为 LREAL 类型。
如果表达式中任一操作数或 Dest 为非 REAL 类型,且符合以下任一条件,则对表达式求值时,在执行计算前会将所有非 REAL 类型的操作数转换为 REAL 类型:
- 表达式中的所有操作数均为 REAL 类型。
- 表达式中包含 SIN、COS、TAN、ASN、ACS、ATN、LN、LOG、DEG 或 RAD。
- Dest 为 REAL 类型。
在安全应用中允许使用的运算符需要遵从相关规则。请参见
有效运算符
部分。可用语言
梯形图

功能块
此指令不可用于功能块中。
结构化文本
此指令不可用于结构化文本中。
操作数
重要提示:
以下情况下会导致运行出现意外:
- 输出标签操作数被覆盖。
- 结构操作数的成员被覆盖。
- 除非另外指定,否则结构操作数由多条指令共用。
指令中混用数据类型时,需遵从相关的数据转换规则。请参阅数据转换“数据转换”部分。
梯形图
操作数 | 数据类型 CompactLogix 5370、ControlLogix 5570、Compact GuardLogix 5370 和 GuardLogix 5570 控制器 | 数据类型 CompactLogix 5380、ControlLogix 5580、Compact GuardLogix 5380、GuardLogix 5580 和 ControlLogix 5590 控制器 | 格式 | 说明 |
|---|---|---|---|---|
Dest | SINT INT DINT REAL | SINT INT DINT LINT USINT UINT UDINT ULINT REAL LREAL | 标签 | 用于存储结果的标签。 |
Expression | SINT INT DINT REAL | SINT INT DINT LINT USINT UINT UDINT ULINT REAL LREAL | 立即数 标签 | 表达式由标签和/或立即数组成,并以运算符分隔。 |
规范表达式的格式
对于表达式中使用的每个运算符,必须为其提供一到两个操作数(标签或立即数)。可使用下表规范表达式中运算符和操作数的格式。
对如下数量的操作数进行运算的运算符: | 使用此格式: | 示例 |
|---|---|---|
一个操作数 | 运算符(操作数) | ABS(tag) |
两个操作数 | operand_a 运算符 operand_b | tag_b + 5 tag_c AND tag_d (tag_e**2) MOD (tag_f / tag_g) |
确定运算顺序
该指令遵照上述顺序进行表达式运算。使用括号分组来指定运算顺序。这样可以强制指令先执行括号内运算,然后再执行其它运算。
相同顺序的运算从左至右执行。
Order | 操作 |
|---|---|
1 | ( ) |
2 | ABS, ACOS, ASIN, ATAN, COS, DEG, BCD_TO, LN, LOG, RAD, SIN, SQRT, TAN, TO_BCD, TRUNC |
3 | ** |
4 | -(取反),NOT |
5 | *,/,MOD |
6 | -(减),+ |
7 | AND |
8 | XOR |
9 | OR |
影响数学状态标志
控制器 | 影响数学状态标志 |
|---|---|
CompactLogix 5380、ControlLogix 5580、Compact GuardLogix 5380、GuardLogix 5580 和 ControlLogix 5590 控制器 | 在一定条件下影响 |
CompactLogix 5370、ControlLogix 5570、Compact GuardLogix 5370 和 GuardLogix 5570 控制器 | 是 |
请参见数学状态标志部分。
严重/轻微故障
没有特定于此指令的故障。请参见“数组索引编制”通过数组建立索引,了解关于数组索引故障的信息。
执行
梯形图
条件/状态 | 执行的操作 |
|---|---|
预扫描 | 不适用 |
梯级输入条件为假 | 将梯级输出条件设置为梯级输入条件。 |
梯级输入条件为真 | 将梯级输出条件设置为梯级输入条件。 指令会求表达式的值并将结果放入 Dest 中。 |
后扫描 | 不适用 |
示例
梯形图
示例 1
使能后,CPT 指令首先计算 value_1 乘以 5,然后将得出的结果与 value_2 除以 7 的结果相除,并将最终结果放入 result_1。


示例 2
使能后,CPT 指令首先将 float_value_1 和 float_value_2 截断并计算截断后的 float_value_2 的 2 次方,再将截断后的 float_value_1 除以该结果,然后将除得的余数存储在 float_value_result_cpt 中。
梯形图


提供反馈