

PMC比较指令如下:
序号
指令名称
功能号
功能
1
EQB
200
1字节二进制比较(=)
2
EQW
201
2字节二进制比较(=)
3
EQD
202
4字节二进制比较(=)
4
NEB
203
1字节二进制比较(≠)
5
NEW
204
2字节二进制比较(≠)
6
NED
205
4字节二进制比较(≠)
7
GTB
206
1字节二进制比较(>)
8
GTW
207
2字节二进制比较(>)
9
GTD
208
4字节二进制比较(>)
10
LTB
209
1字节二进制比较(<)
11
LTW
210
2字节二进制比较(<)
12
LTD
211
4字节二进制比较(<)
13
GEB
212
1字节二进制比较(≥)
14
GEW
213
2字节二进制比较(≥)
15
GED
214
4字节二进制比较(≥)
16
LEB
215
1字节二进制比较(≤)
17
LEW
216
2字节二进制比较(≤)
18
LED
217
4字节二进制比较(≤)
19
RNGB
218
范围比较(1字节)
20
RNGW
219
范围比较(2字节)
21
RNGD
220
范围比较(4字节)
22
COMPB
32
二进制数值大小判别
23
COMP
15
数值大小判别
24
COIN
16
一致性检测
13GEB(1字节二进制比较(≥):SUB 212)
14GEW(2字节二进制比较(≥):SUB 213)
15GED(4字节二进制比较(≥):SUB 214)
这组指令用于比较数据1是否大于等于数据2,根据操作数的字节不同分为3种指令:
指令名称
指令号
数据类型
13
GEB
212
1字节长度数据
14
GEW
213
2字节长度数据
15
GED
214
4字节长度数据
指令格式:

控制条件:
(a) 输入信号(ACT)
ACT=0:指令不执行,输出W1=0。
ACT=1:指令执行,结果输出到W1中。
参数:
(a) 数据1
(b) 数据2
数据1和数据2均可以以常数或者是存储地址形式指定,数据的有效范围如下:
GEB:-128至127
GEW:-32768至32767
GED:-2147483648至2147483647
输出(W1):
W1=1:当ACT=1且数据1≥数据2。
W1=0:当不执行比较指令时(也就是ACT=0时);
当执行数据比较指令(ACT=1)且数据1<数据2时。
指令示例:(以SUB212为例)

该程序指令中R1000为数据1的存储地址,假设数据1为1000;R1010为数据2的存储地址,假设数据2为1001。当R100.0为1时指令执行,输出R0101.0=0(数据1<数据2)。
R1000
1000
R1010
1001
输出结果为
R0101.0
0
16LEB(1字节二进制比较(≤):SUB 215)
17LEW(2字节二进制比较(≤):SUB 216)
18LED(4字节二进制比较(≤):SUB 217)
这组指令用于比较数据1是否小于等于数据2,根据操作数的字节不同分为3种指令:
指令名称
指令号
数据类型
16
LEB
215
1字节长度数据
17
LEW
216
2字节长度数据
18
LED
217
4字节长度数据
指令格式:

控制条件:
(a) 输入信号(ACT)
ACT=0:指令不执行,输出W1=0。
ACT=1:指令执行,结果输出到W1中。
参数:
(a) 数据1
(b) 数据2
数据1和数据2均可以以常数或者存储地址形式指定,数据的有效范围如下:
LEB:-128至127
LEW:-32768至32767
LED:-2147483648至2147483647
输出(W1):
W1=1:当ACT=1且数据1≤数据2。
W1=0:当不执行比较指令时(也就是ACT=0时);
当执行数据比较指令(ACT=1)且数据1>数据2时。
指令示例:(以SUB215为例)

该程序指令中R1000为数据1的存储地址,假设数据1为1000;R1010为数据2的存储地址,假设数据2为1001。当R100.0为1时指令执行,输出R0101.0=1(数据1<数据2)。
R1000
1000
R1010
1001
输出结果为
R0101.0
1
19RNGB(范围比较(1字节):SUB 218)
20RNGW(范围比较(2字节):SUB 219)
21RNGD(范围比较(4字节):SUB 220)
这组指令用于进行范围的比较,当满足如下条件时W1的输出将变为1。
数据1≤输入数据≤数据2或者数据2≤输入数据≤数据1,根据操作数节数的不同分为3种指令:
指令名称
指令号
数据类型
19
RNGB
218
1字节长度数据
20
RNGW
219
2字节长度数据
21
RNGD
220
4字节长度数据
指令格式:

控制条件:
(a) 输入信号(ACT)
ACT=0:指令不执行,输出W1=0。
ACT=1:指令执行,结果输出到W1中。
参数:
(a) 数据1
(b) 数据2
数据1和数据2均可以以常数或者存储地址的形式指定,数据的有效范围如下:
NEB:-128至127
NEW:-32768至32767
NED:-2147483648至2147483647
输出(W1):
W1=1:当不执行比较指令时(也就是ACT=0时);
当执行数据比较指令(ACT=1)且输入数据大小不在数据1和数据2之间时。
W1=0:当ACT=1且数据1≤输入数据≤数据2;
当ACT=1且数据2≤输入数据≤数据1。
指令示例:(以SUB218为例)

该程序指令中R1000为比较的下限值存储地址(假设为50),R1100为比较的上限值存储地址(假设为100),R1200为比较数据的存储地址,假设为70,则当R100.0为1的时候输出R101.0=1(数据1≤输入数据≤数据2)。
下限数据R1000
50
上限数据R1100
100
比较数据
70
输出结果为:
R101.0
0
22COMPB(二进制数值大小判别:SUB 32)
该指令用于比较1、2、4字节数据的大小,结果将输出至运算结果输出寄存器(R9000)中。
指令格式:

控制条件:
(a) 输入信号
ACT=0:指令不执行。
ACT=1:指令执行。
参数:
(a) 格式指定
指定1、2、4字节的数据长度以及输入数据(“常数”或者“地址数据”)。

(b) 输入数据
指定用于比较的输入数据的地址。
(c) 比较数据
指定比较数据,以地址或者常数形式指定。
运算结果寄存器(R9000)
数据的计算结果输出到该寄存器中,寄存器各位的具体含义如下:

以下表格显示了输入数据,比较数据和操作寄存器相关位的关系
R9000.5
R9000.1
R9000.0
输入数据=比较数据
0
0
1
输入数据>比较数据
0
0
0
输入数据<比较数据
0
1
0
溢出
1
0
0
指令示例:

R9000.5
R9000.1
R9000.0
R1000<R1010
0
1
0
该程序指令中参数1001表示比较的数据为1字节的二进制数以地址形式进行指定,参数R1000为输入数据地址,设其值为1000;R1010为比较数据地址,设其值为1001。则当R100.0为1的时候
23COMP(数值大小判别 :SUB 15)
该指令用于BCD码大小的比较。
指令格式:

控制条件:
(a) 指定数据(BYT)
BYT=0:2位BCD码数据比较。
BYT=1:4位BCD码数据比较。
(b) 输入信号(ACT)
ACT=0:指令不执行,W1不改变。
ACT=1:指令执行,结果输出到W1。
参数:
(a) 格式指定
0:指定输入数据为常数。
1:指定输入数据为地址。
(b) 输入数据
“输入数据”通过“格式指定”指定为整数或者是存储该值的地址。
(c) 比较数据地址
指定比较数据的存储地址。
输出(W1):
W1=0:输入数据>比较数据。
W1=1:输入数据≤比较数据。
指令示例:

程序指令中R9091.0为常0信号,这样BYT=0操作数为2位BCD码,参数0001指定了操作数通过地址指定,R1000为输入数据地址设其值为34, R2000为比较数据地址设其值为45。当R100.0=1是输出R300.0=1。
输出数据R1000
34
比较数据R2000
45
输出结果为:
R300.0
1
24COIN(一致性检测 :SUB 16)
一致性检测功能指令将对输入数据和比较数据进行一致性比较,数据均为BCD码编码。
指令格式:

控制条件:
(a) 指定数据类型(BYT)
BYT=0:1字节BCD码数据比较。
BYT=1:2字节BCD码数据比较。
(b) 输入信号(ACT)
ACT=0:指令不执行,W1不改变。
ACT=1:指令执行,结果输出到W1中。
参数:
(a) 格式指定
0:指定输入数据为常数。
1:指定输入数据为地址。
(b) 输入数据
输入数据可以指定为整数或者是存储该值的地址,通过“格式指定”进行选择。
(c) 比较数据地址
指定比较数据的地址。
输出(W1):
W1=0:输入数据≠比较数据。
W1=1:输入数据=比较数据。
指令示例:

程序指令中R9091.0为常0信号,则BYT=0为2位的BCD码,参数0001表示为操作数以地址形式表示,R1000为输入数据地址设其值为34,R2000为比较数据地址设定为34,则当R100.0=1时输出R300.0=1(输入数据=比较数据)。
输入数据R1000
34
比较数据R2000
34
输出结果为:
R300.0
1
本文转自:FANUC数控技术
