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 的值是否相等。
,