1.比较指令 (CMP )
CMP 是一条输入指令。
操作数:
操作数 | 数据类型 | 格式 | 说明 |
表达式 | SINT INT DINT REAL | 立即数 标签 | 表达式由被运算符分 隔的标签与/或立即 数组成 |
说明: CMP 指令执行表达式中指定的算术运算比较。用户要执行的运算由表达式定义。用 运算符, 标签和立即数定义表达式。表达式中的复杂部分用圆括号() 定义。
有效运算符
运算符 | 说明 | 最优数据类型 |
+ | 加 | DINT , REAL |
- | 减/非 | DINT , REAL |
* | 乘 | DINT , REAL |
/ | 除 | DINT , REAL |
= | 等于 | DINT , REAL |
< | 小于 | DINT , REAL |
<= | 小于或等于 | DINT , REAL |
> | 大于 | DINT , REAL |
>= | 大于或等于 | DINT , REAL |
<> | 不等于 | DINT , REAL |
** | 指数 | DINT , REAL |
ACS | 反余弦 | REAL |
AND | 按位与 | DINT |
ASN | 反正弦 | REAL |
ATN | 反正切 | REAL |
COS | 余弦 | REAL |
DEG | 弧度转换成角度 | DINT , REAL |
FRD | BCD码转换成整数 | DINT |
LN | 自然对数 | REAL |
L0G | 以10为底的对数 | REAL |
N0T | 位补码 | DINT |
0R | 按位0R | DINT |
RAD | 角度转换成弧度 | DINT, REAL |
sIN | 正弦 | REAL |
sQR | 平方根 | DINT, REAL |
TAN | 正切 | REAL |
T0D | 整数转换成BCD | DINT |
X0R | 按位异或 | DINT |
确定运算顺序 指令按预先规定的顺序, 而不必按用户列出的顺序, 执行写入表达式的 运算。可以通过把分组项组合到圆括号内来改变运算顺序, 强制指令在执行其他运算之前执 行圆括号内的运算, 来改变运算顺序。同级运算顺序从左向右执行。
顺序 | 运算符 |
1 | ACS , ASN , ATN , COS , DEG , FRD , LN , LOG , RAD , SIN , SQR , TAN , TOD |
2 | ** |
3 | - (取反) , NOT |
4 | * , / |
5 | <,<=,>,>=,= |
6 | -(减) , + |
7 | AND |
8 | XOR |
9 | OR |
与专用比较指令相比, 执行一条 CMP 指令速度稍慢而且占用更多的内存。CMP 指令的
优点是用户可以在一条指令内写入复杂的表达式。
如果 CMP 指令判断表达式为真, 则梯级输出条件被设 置为真。
如果输入一个没有比较运算符
的表达时, 例如, Ivalue_ 1+ value_2,则指令计算表达式的数 值:
如果表达式的值是 | 梯级输出条件被设置为 |
非零值 | 真 |
零值 | 假 |
2.等于指令 (EQU )
EQU指令是一条输入指令。
如果 value_ 1 与 value_2 相等, 则梯级输出条件被设置为真。
操作数:
操作数 | 数据类型 | 格式 | 说明 |
源A | SINT INT DINT REAL | 立即数 标签 | 与源B比较的数值 |
源B | SINT INT DINT REAL | 立即数 标签 | 与源A比较的数值 |
说明: EQU 指令测试源 A 的值与源 B 的值是否相等。REAL 数据类型的数值很少绝对相等。 如果必须确定两个 REAL 值是否相等, 可以使用 LIM 指令。
3.大于或等于指令 (GEQ )
GEQ指令是一条输入指令。
如果 value_ 1 大于或等于 value_2 , 则梯级输出条件被设置为真。
操作数
操作数 | 数据类型 | 格式 | 说明 |
源A | SINT INT DINT REAL | 立即数 标签 | 与源B比较的数值 |
源B | SINT INT DINT REAL | 立即数 标签 | 与源A比较的数值 |
说明: GEQ 指令测试源 A 的值是否大于或等于源 B 的值。
4.大于指令 (GRT )
GRT指令是一条输入指令。
如果 value_ 1 大于 value_2 , 则梯级输出条件被设置为真。
操作数:
操作数 | 数据类型 | 格式 | 说明 |
源A | SINT INT DINT REAL | 立即数 标签 | 与源B比较的数值 |
源B | SINT INT DINT REAL | 立即数 标签 | 与源A比较的数值 |
说明: GRT 指令测试源 A 的值是否大于源 B 的值。
5.小于或等于指令 (LEQ )
GEQ指令是一条输入指令。
如果 value_ 1 小于或等于 value_2 , 则梯级输出条件被设置为真。
操作数:
操作数 | 数据类型 | 格式 | 说明 |
源A | SINT INT DINT REAL | 立即数 标签 | 与源B比较的数值 |
源B | SINT INT DINT REAL | 立即数 标签 | 与源A比较的数值 |
6.小于指令 (LES )
LES指令是一条输入指令。
如果 value_小大于 value_2 , 则梯级输出条件被设置为真。
操作数:
操作数 | 数据类型 | 格式 | 说明 |
源A | SINT INT DINT REAL | 立即数 标签 | 与源B比较的数值 |
源B | SINT INT DINT REAL | 立即数 标签 | 与源A比较的数值 |
说明: LES 指令测试源 A 的值是否小于源 B 的值。
7.极限比较指令 (LIM )
LIM 指令是一条输入指令。
操作数:
操作数 | 数据类型 | 格式 | 说明 |
下限 | SINT INT DINT REAL | 立即数 标签 | 下限值 |
源B测试 | SINT INT DINT REAL | 立即数 标签 | 测试值 |
上限 | SINT INT DINT REAL | 立即数 标签 | 上限值 |
说明: LIM 指令比较测试值是否在下限和上限范围内。
LIM 指令举例: 例 1
LowLimit<=HighLimit: 当 0<=value<=100 时, 接通 light_ 1.
例 2
LowLimit>=HighLimit: 当 value>=0 或 value<=- 100 时, 接通 light_ 1.
8.屏蔽等于指令 (MEQ )
MEQ 指令是一条输入指令。
操作数:
操作数 | 数据类型 | 格式 | 说明 |
源 | SINT INT DINT | 立即数 标签 | 与比较值比较的数值 |
屏蔽 | SINT INT DINT | 立即数 标签 | 阻止或通过的位 |
比较 | SINT INT DINT | 立即数 标签 | 与源值比较的数值 |
说明: MEQ 指令比较通过屏蔽的源值和比较值的结果。
MEQ 指令举例:
例 1 :
Value_ 1 :
0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
Mask_ 1:
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 |
通过屏蔽的 value_ 1:
0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | * | * | * | * |
Value_2 :
0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 |
Mask_ 1:
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 |
通过屏蔽的 value_2:
0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | * | * | * | * |
9.不等于指令 (NEQ )
NEQ指令是一条输入指令。
如果 value_ 1不等于value_2 , 则梯级输出条件被设置为真。
操作数:
操作数 | 数据类型 | 格式 | 说明 |
源A | SINT INT DINT REAL | 立即数 标签 | 与源B比较的数值 |
说明: NEQ 指令测试源 A 的值与源 B 的值是否相等。
留言与评论(共有 0 条评论) “” |