2024年2月19日发(作者:揭启颜)
PMC功能
PMC功能
讲述PMC功能和PMC程序编写的基本事项
这里讲述以下内容:
● PMC的基本功能
● 功能指令一览
种类
编程语言
级数
第一级执行周期
基本指令处理速度
I/O Link最大信号点数
0i-D
0i-Mate D
T地址范围
C地址范围
K地址范围
D地址范围
A地址范围
符号
基本规格
扩展规格
基本规格
扩展规格
“○B”为软件包B包的标准配置。
I/O Link第二通道功能,为选项功能,需要指定。
使用符号和指令扩展规格时,需要使用FANUC LADDER-III软件。
梯形图
3
4/8msec
25nsec/step
2048/2048
○
—
T0~T499,T9000~T9499
C0~C399,C5000~C5199
K0~K99,K900~K999
D0~D9999
A0~A249,A9000~A9249
3
1μsec/step
1024/1024
○B
○
T0~T79,T9000~T9079
C0~C79,C5000~C5039
K0~K19,K900~K999
D0~D2999
A0~A249,A9000~A9249
16字符
40字符
30字符
255字符
指令
- 151 -
PMC功能
系统信号
地址
地址
梯形图
运行状态
扫描周期
梯形图运行开始信号
R9015.0
梯形图停止信号
R9015.1
梯形图运行状态
R9091.2
R9015
#7
#6
#5
#4
#3
#2
#1 #0
R9091
FL
FL2
RUN
ON
OFF
#7
#6
FL
#5
FL2
#4
#3
#2
RUN
#1
ON
#0
OFF
:1秒周期信号
:0.2秒周期信号
:PMC运行
:常1信号
:常0信号
(ON/OFF 比1:1)
(ON/OFF 比1:1)
STPR RUNR
STPR :梯形图停止信号
RUNR :梯形图运行信号
- 152 -
PMC功能
PMC的数据形式分为二进制形式、BCD码形式和位型三种。
CNC和PMC间的接口信号为二进制形式。一般来说,PMC数据也采用二进制形式。
带符号的二进制形式(Binary)
可进行1字节,2字节,4字节的二进制处理
可使用的数值范围如下
1字节
2字节
4字节
在顺序程序中指令数据的长度和初始地址
在诊断画面(PMCDGN)确认2字节,4字节的地址数据时,地址号大的为高位地址。
由R100指定4字节长的数据时地址和位的对应关系如下:
-128~+127
-32768~+32767
-2147483648~+2147483647
采用2的补码表示
地址
地址
地址
地址
用2字节表示-100和+100时
+0
2
+1
+2
+3
100
01100100
00000000
00000000
00000000
-100
10011100
11111111
11111111
11111111
最高位数
为1时为负数
R100
R101
R102
R103
#7
27
215
223
±
#6
26
214
222
230
#5
25
213
221
229
#4
24
212
220
228
#3
23
211
219
227
#2
22
210
218
226
#1
21
29
217
225
#0
20
28
216
224
- 153 -
PMC功能
BCD形式:Binary Coded Decimal
在十进制数的二-十进制中,用4位的二进制码表示十进数的各位。
可处理2位或4位的十进制数,符号用其他信号进行处理。
+0
#7 #6 #5 #4 #3 #2 #1 #0
10位
80 40 20 10 8 4
个位
2 1
+1
1000位
8000 4000 2000 1000 800
100位
400 200 100
例:63和1234的BCD码表示。
BCD码和二进制数的变换通过DCNV,DCNVB指令来进行。
63
+0
+1
01100011
—
1234
00110100
00010010
位型:Bit
处理1位信号和数据时,在地址之后指令小数点的位号
地址
例:X0001.2(地址X0001的第二位)
可以以位为单位来读写数据表的部分数据部分。
xxxxx
#7
#6
#5
V
#4
#3
#2
#1
#0
- 154 -
PMC功能
格雷码
0~15的4位二进制表示如下。如果旋钮开关的触点信号使用二进制代码来表示,在切换触点时,存在有2位数据同时变化的情况,造成变化的不连续性。
如下所示,如果采用4位格雷码表示,在旋钮开关触点进行切换时,相邻的触点只有一位数据进行变化,不存在不连续的现象。
把由旋钮开关输入的格雷码信号转换为二进制数据,可成为正常处理用数值,这样程序更容易书写。
| g3(Xxxx.x) b3(Rxxx.x)|
*----||-------------------------------------------------------------()---*
| |
| b3 g2 b2 |
*----||-------|/|--*------------------------------------------------()---*
| |
| b3 g2 | |
*----|/|------||---* |
| |
| b2 g1 b1 |
*----||-------|/|--*------------------------------------------------()---*
| |
| b2 g1 | |
*----|/|------||---* |
| |
| b1 g0 b0 |
*----||-------|/|--*------------------------------------------------()---*
| |
| b1 g0 | |
*----|/|------||---* |
| |
0
0
0
0
0
1
0
0
0
1
2
0
0
1
0
3
0
0
1
1
4
0
1
0
0
5
0
1
0
1
6
0
1
1
0
7
0
1
1
1
8
1
0
0
0
9
1
0
0
1
10
1
0
1
0
11
1
0
1
1
12 13
1
1
0
0
1
1
0
1
14 15
1
1
1
0
1
1
1
1
0
0
0
0
0
1
0
0
0
1
2
0
0
1
1
3
0
0
1
0
4
0
1
1
0
5
0
1
1
1
6
0
1
0
1
7
0
1
0
0
8
1
1
0
0
9
1
1
0
1
10
1
1
1
1
11
1
1
1
0
12 13 14 15
1
0
1
0
1
0
1
1
1
0
0
1
1
0
0
0
格雷码和二进制按照上述规律进行变换,使用格雷码旋钮开关,可以提高安全性。
- 155 -
PMC功能
第1级
第1级程序中,如果没有输入信号,只需要编写END1功能指令。
程序的开头到END1命令之间为第一级程序,系统每4/8msec执行一次。
主要是处理急停、跳转、超程等信号。
第2级
sequence是“顺序”的意思。
在第二级程序上因为有同步输入信号存储器,所以输入脉冲信号时,其信号宽带应大于扫描
信号时间。
扫描时间显示在PMC诊断画面的标题栏上。
END1命令之后,END2命令之前的顺序程序为第二级程序。
第二级程序通常包括机床操作面板、ATC(自动换刀装置)程序等。
第3级
在编写顺序程序时可选择是否使用第3级程序,本教材不使用第3级。
END2命令和END3命令之间的程序为第三级程序。
第三级程序主要处理低速响应的信号。
- 156 -
PMC功能
子程序
将重复执行处理和模块化的程序作为子程序登录。
子程序功能指令登录在END3命令和END命令之间。
子程序顺序程序,从SP命令开始到SPE命令结束,作为1组。可以登录5000或者512个子程序。
不使用第3级时,子程序在END和END2之间进行编辑。
顺序程序为附加选择功能,可选择将子程序用梯形图语言或顺序程序任意一种进行记述。
在第2级程序中可使用条件调用命令CALL或无条件调用命令CALLU来调用子程序。
第1级程序中不能调用子程序。
第一级
急停
超程
跳转
END1
第二级
运行转备
运行方式切换
手动进给
手轮进给
自动运行
MST功能
CALL命令
信息显示
SP P10
END2
子程序
SP
SPE
END
CALL
CALLU
命令
SPE
- 157 -
PMC功能
定时器
TMR
TMRB
TMRC
TMRBF
计数器
CTR
CTRB
CTRC
数据传送
MOVB
MOVW
MOVD
MOVN
MOVE
MOVOR
XMOVB
XMOV
数值比较
COMPB
COMP
COIN
EQB
EQW
EQD
NEB
NEW
NED
GTB
GTW
GTD
LTB
LTW
LTD
SUB32
SUB15
SUB16
SUB200
SUB201
SUB202
SUB203
SUB204
SUB205
SUB206
SUB207
SUB208
SUB209
SUB210
SUB211
- 158 -
二进制数据比较
BCD数据比较
BCD一致性判断
1字节长二进制比较(=)
2字节长二进制比较(=)
4字节长二进制比较(=)
1字节长二进制比较(≠)
2字节长二进制比较(≠)
4字节长二进制比较(≠)
1字节长二进制比较(>)
2字节长二进制比较(>)
4字节长二进制比较(>)
1字节长二进制比较(<)
2字节长二进制比较(<)
4字节长二进制比较(<)
SUB43
SUB44
SUB47
SUB45
SUB8
SUB28
SUB35
SUB18
1字节数据传送
2字节数据传送
4字节数据传送
任意字节数据传送
逻辑乘后数据传送
逻辑加后数据传送
二进制变址修改数据传送
BCD变址修改数据传送
SUB5
SUB56
SUB55
计数器
追加计数器
追加计数器
SUB3
SUB24
SUB54
SUB77
延时定时器(上升沿触发)
固定延时定时器(上升沿触发)
延时定时器(上升沿触发)
固定延时定时器(下降沿触发)
PMC功能
GEB
GEW
GED
LEB
LEW
LED
RNGB
RNGW
RNGD
数据处理
DSCHB
DSCH
DIFU
DIFD
EOR
AND
OR
NOT
PARI
SFT
COD
CODB
DCNV
DCNVB
DEC
DECB
演算命令
ADDB
SUBB
MULB
DIVB
ADD
SUB
MUL
DIV
NUMEB
SUB212
SUB213
SUB214
SUB215
SUB216
SUB217
SUB218
SUB219
SUB220
SUB34
SUB17
SUB57
SUB58
SUB59
SUB60
SUB61
SUB62
SUB11
SUB33
SUB7
SUB27
SUB14
SUB31
SUB4
SUB25
SUB36
SUB37
SUB38
SUB39
SUB19
SUB20
SUB21
SUB22
SUB40
1字节长二进制比较(≥)
2字节长二进制比较(≥)
4字节长二进制比较(≥)
1字节长二进制比较(≤)
2字节长二进制比较(≤)
4字节长二进制比较(≤)
1字节长二进制比较(范围)
2字节长二进制比较(范围)
4字节长二进制比较(范围)
二进制数据检索
BCD数据检索
上升沿输出
下降沿输出
异或
逻辑乘
逻辑和
逻辑非
奇偶校验
移位寄存器
BCD码变换
二进制码变换
数据转换
扩展数据转换
BCD译码
二进制译码
二进制加法运算
二进制减法运算
二进制乘法运算
二进制除法运算
BCD加法运算
BCD减法运算
BCD乘法运算
BCD除法运算
二进制常数赋值
- 159 -
PMC功能
NUME
CNC相关
DISPB
EXIN
WINDR
WINDW
AXCTL
PSGNL
PSGN2
程序控制
COM
COME
JMP
JMPE
JMPB
JMPC
LBL
CALL
CALLU
CS
CM
CE
SP
SPE
END1
END2
END3
END
NOP
回转控制
ROT
ROTB
SUB23
SUB41
SUB42
SUB51
SUB52
SUB53
SUB50
SUB63
SUB9
SUB29
SUB10
SUB30
SUB68
SUB73
SUB69
SUB65
SUB66
SUB74
SUB75
SUB76
SUB71
SUB72
SUB1
SUB2
SUB48
SUB64
SUB
SUB6
SUB26
BCD常数赋值
信息显示
外部数据输入
CNC数据读取
CNC数据写入
PMC轴控制指令
位置信号
位置信号
公共线控制开始
公共线控制结束
跳转
跳转结束
标号跳转1
标号跳转2
标号
有条件子程序调用
无条件子程序调用
选择调用开始
选择子程序调用
选择调用结束
子程序开始
子程序结束
第1级程序结束
第2级程序结束
第3级程序结束
程序结束
无操作
BCD回转控制
二进制回转控制
上述功能指令仅为0i-D系统的部分常用功能指令,且均为0i-D系统和0i-Mate D系统的标
准功能,其余的功能指令详见相关说明书。
- 160 -
PMC功能
定时器命令
延时定时器(上升沿触发):SUB3/TMR
ACT为1并经过设定的时间后,输出W1为1。时间在PMC参数画面进行设定,所以
顺序程序编写完成后,用户也可以变更设定时间。ACT为0后,W1马上变为0。
ACT
SUB3
TMR
W1
定时器号
ACT
设定时间
W1
【控制条件】
ACT
=0 : 定时器输出W1为0
=1 : 启动定时器
【定时器号】(初始状态)
1~8 : 以48ms为单位,最大设定时间1572.8秒
: 以8ms为单位,最大设定时间262.1秒 9以上
在定时器命令中指定定时器号。定时器设定时间在PMC维修画面的定时器画面进行设定。
所以顺序程序在编写完成之后,也可以方便的变更时间。
定时器的个数根据PMC不同而不同。
定时器初始设定时间
48ms定时器
8ms定时器
0i-D
PMC
1到8
9到250
0i-D/0i Mate-D
PMC/L
1到8
9到40
使用定时器号的自动分配功能时,可将没有使用的定时器号自动分配,非常方便。
上述的定时器设定时间为原始值。软件操作时,可以根据下表的单位进行转换。
- 161 -
PMC功能
1msec
8msec
10msec
48msec
100msec
1秒
1分
1msec~32.7秒
8msec~262.1秒
10msec~327.7秒
48msec~1572.8秒
100msec~54.6分
1秒~546分
1分~546小时
定时器9以上初始值
定时器1~8初始值
定时器的定时器精度,对应存储在T9000~T9499中,设值含义如下:
0
1
2
3
4
5
:
:
:
:
:
:
缺省(8msec/48msec)
1msec
10msec
100msec
1秒
1分
【输出】
W1 : ACT接通后,经过定时器设定的时间后,输出即接通为1。
【使用范例】
X0.0接通后再经过100ms,R0.0就接通为1。
“精度”由T9000~T9499来决定,每个计数器占两个字节,同时也对应T9000~T9499的
相应两字节为“精度”设定地址,依次类推。对于1号计数器,对应为T9000~T9001设定
精度,如果T9000~T9001为0,则精度按缺省处理,为48ms。范例中T9000=3,即精度
等级为100,在此条件下,“设定时间”必须是100的倍数。
- 162 -
PMC功能
固定延时定时器(上升沿触发):SUB24/TMRB
ACT为1后经过设定的时间,接通W1为1。在命令控制参数中指定设定时间。
主要用于程序编写完成之后,用户无需变更设定时间的情况。
ACT为0时,输出W1为0。
ACT
SUB24
TMRB
W1
定时器号
设定时间
ACT
设定时间
W1
【控制条件】
ACT
=0 : 定时器输出W1为0
=1 : 启动定时器
【控制参数】
定时器号
设定时间
: 1~500
: 以毫秒为单位进行设定(最大32,767,000)
定时器的个数根据PMC类型不同而不同。
定时器初始设定数据
定时器号
设定时间
0i-D
PMC
1到500
0i-D/0i Mate-D
PMC/L
1到100
1到32,760,000(毫秒) 1到32,760,000(毫秒)
固定延时定时器(上升沿触发)TMRB和固定延时定时器(下降沿触发)TMRBF共用定时
器号,注意不要重复。建议使用自动分配功能,更加方便。
固定延时定时器TMRB和延时定时器TMR不共用定时器号,故不产生冲突。
【输出】
W1 : ACT接通后,经过定时器设定的时间后,输出即接通为1。
- 163 -
PMC功能
【使用范例】
·X0.0接通3秒之后,R0.0输出为1。
·在任意时间一旦X0.0为0,R0.0马上为0。
延时定时器(上升沿触发):SUB54/TMRC
定时器精度范围扩展为以分为单位,可作为长时间定时器使用。
在控制参数中可以自由的指定定时器设定时间地址,所以没有定时器个数限制。
ACT
SUB54
TMRC
W1
定时器精度
定时器设定时间地址
定时器寄存器地址
ACT
设定时间
W1
【控制条件】
ACT
=0 : 定时器输出W1为0
=1 : 启动定时器
【控制参数】
定时器精度 :
种类
1msec
8msec
10msec
48msec
100msec
1秒
10秒
1分
定时器精度
5
0
6
1
7
2
3
4
- 164 -
设定时间范围
1msec~32.7秒
8msec~262.1秒
10msec~327.7秒
48msec~1572.8秒
100msec~54.6分
1秒~546分
10秒~91小时
1分~546小时
PMC功能
【定时器设定时间地址】
: 指定用于存储定时器设定值2字节长地址的首地址。
(通常使用D地址)
【定时器寄存器地址】
: 指定使用该命令时的4字节长地址的首地址。(通常使用R地址)
【输出】
W1 : ACT为1经过定时器设定的时间后,输出即接通为1。
【使用范例】
·本例定时器精度为8ms
·假设D100中数据为100,则定时器定时时间为100*8=800ms
·即X0.0接通经过800ms之后,R0.0接通为1.
·同样,在任意时间如果X0.0为0,则输出R0.0立即为0
·R100为系统作业区域
- 165 -
PMC功能
固定延时定时器(下降沿触发):SUB77/TMRBF
固定延时定时器设定的时间是固定的,因此定时器的设定时间和顺序程序一同写入到
F-ROM中。
ACT
SUB77
TMRBF
W1
定时器号
设定时间
设定时间
ACT
W1
【控制条件】
ACT
=0 : 定时器输出W1为0
=1 : 启动定时器
【控制参数】
定时器号
设定时间
: 1~500
: 以msec为单位进行设定(最大32,767,000)
定时器的个数根据PMC类型不同而不同
定时器初始设定数据
定时器号
设定时间
0i-D
PMC
1到500
0i-D/0i Mate-D
PMC/L
1到100
1到32,760,000(毫秒) 1到32,760,000(毫秒)
固定延时定时器(上升沿触发)TMRB和固定延时定时器(下降沿触发)TMRBF共用定时
器号,注意不要重复。建议使用自动分配功能,更加方便。
- 166 -
【输出】
W1
: ACT为1后输出W1马上变为1.
ACT为0后经过设定时间,输出W1才为0。
PMC功能
计数器命令
计数器:SUB5/CTR
PMC参数画面的计数器数值为十进制表示,当内部数据形式为BCD和二进制形式时,
可通过系统参数画面进行选择。
是进行加减计数的计数器。作为预置型计数器时,首先设定计数器的计数上限,当计数
值和设定值相同的时候,输出信号。此外还可作为环形计数器,重复计数。
CN0
UPDOWN
RST
ACT
W1
SUB5
CTR
计数器号
【控制条件】
CN0
=0 : 计数器的初始值为0
=1 : 计数器的初始值为1
UPDOWN
=0 : 为加计数器
=1 : 为减计数器
=1 : 将计数器复位为初始值 RST
加计数器时,复位为CN0设定的初始值;减计数器时,复位为计数器预置值。
ACT =1 : 收到信号的上升沿时进行1次计数,并更新计数值。
【控制参数】
计数器号
: 指定计数器号。
计数器的最大值和当前值均在PMC参数画面进行显示和设定。
- 167 -
PMC功能
计数器号的最大值,根据PMC类型不同而不同。
计数器号
计数器的数据形式为二进制时,计数范围为0~32767。为BCD形式时,计数范围为0~9999。
计数器号使用自动分配功能时,将未使用的计数器号进行分配,十分方便。
0i-D
PMC
1到100
0i-D/0i Mate-D
PMC/L
1到20
【使用范例】
【输出】
W1
=1 : 为计数器输出信号。
加计数到最大值,减计数到最小值时输出为1。
每个计数器占据4个字节,前两个字节为“设定值”,后两个字节为“现在值”。
如上例中,1号计数器地址为C0~C3,其中设定值地址为C0~C1,现在值地址为C2~C3。
·从1到20进行计数的计数器(设定值即为预置值)
·在X0.0的上升沿,“现在值”加1,当“现在值”到20时,R0.0输出为1
·当F1.1为1时,“现在值”复位为1
- 168 -
PMC功能
固定计数器:SUB56/CTRB
在控制参数中指定预置值的计数器。计数值为二进制形式。
CN0
UPDOWN
RST
ACT
SUB56
CTRB
W1
计数器号(1~100)
预置值
【控制条件】
CN0
=1 : 计数器的初始值为1
=0 : 计数器的初始值为0
UPDOWN
=0 : 为加计数器
=1 : 为减计数器
=1 : 将计数器复位为初始值 RST
加计数器时,复位为CN0设定的初始值;减计数器时,复位为计数器预置值。
【控制参数】
计数器号
计数器号
ACT =1 : 收到信号的上升沿时进行1次计数,并更新计数值。
:
0i-D
PMC
1到100
0i-D/0i Mate-D
PMC/L
1到20
预置值 :在0~32767内进行预置值指定。
CTRB命令的计数值,在地址C5000以内,均占用2个字节。
【输出】
W1
=1 : 为计数器结束输出。
加计数到最大值,减计数到最小值时输出为1。
- 169 -
PMC功能
计数器:SUB55/CTRC
为标准计数器的扩展形式。可利用数据表进行设置的计数器,计数值为二进制形式。
CN0
UPDOWN
RST
ACT
W1
SUB55
CTRC
计数器预置值地址
计数器寄存器地址
【控制条件】
CN0
=1 : 计数器的初始值为1
=0 : 计数器的初始值为0
UPDOWN
=0 : 为加计数器
=1 : 为减计数器
=1 : 将计数器复位为初始值 RST
加计数器时,复位为CN0设定的初始值;减计数器时,复位为计数器预置值。
ACT =1 : 为1时进行计数。
【控制参数】
计数器预置值地址
: 指定2字节的存储器的首地址。(通常指令为D地址)
计数器寄存器地址
: 指定连续的4字节存储器的起始地址。
电源关断时仍需保存计数值,使用D地址指定;
无需保存时,使用R地址。
使用R地址指令计数器寄存器地址时,当电源接通时,计数器的累计值为0
- 170 -
【输出】
W1 =1 : 为计数器输出。加计数到最大值,减计数到最小值时输出为1。
PMC功能
数据传送命令
1字节长数据传送:SUB43/MOVB
把1字节的数据从被指令的传出位置地址传送到指定的传入位置地址。
ACT
SUB43
MOVB
传出位置地址
传入位置地址
【控制条件】
ACT =1 : 执行命令
【控制参数】
传出位置地址
: 1字节数据的存储位置地址
传入位置地址
: 1字节数据的传入位置地址
【使用范例】
当X0.0为1时,将D100的数据传送给R200
2字节长数据传送:SUB44/MOVW
把2字节的数据从被指令的传出位置地址传送到指定的传入位置地址。
- 171 -
PMC功能
ACT
SUB44
MOVW
传出位置地址
传入位置地址
【控制条件】
ACT =1 : 执行命令
【控制参数】
传出位置地址
: 2字节数据的存储位置地址
传入位置地址
: 2字节数据的传入位置地址
【使用范例】
当X0.0为1时,将D100~D101的数据传送给R200~R201
4字节长数据传送:SUB47/MOVD
把4字节长的数据从被指令的传出位置地址传送到指定的传入位置地址。
ACT
SUB47
MOVD
传出位置地址
传入位置地址
【控制条件】
ACT =1 : 执行命令
- 172 -
PMC功能
【控制参数】
传出位置地址
: 4字节数据的存储位置地址
传入位置地址
: 4字节数据的传入位置地址
任意字节长数据传送:SUB45/MOVN
传送指定长度(1~200)的数据从指令源地址到目的地址。
ACT SUB45
MOVN
传送字节数(1~200)
传送源地址
传送目的地址
【控制条件】
ACT =1 : 执行命令
【控制参数】
传送字节数 : 指令需要传送的字节长度(1~200)
传送源地址 : 传送字节数据的存储位置地址。
传送目的地址
: 传送字节数据的传入位置地址。
【使用范例】
当X0.0为1时,将D100~D104的数据传送给R100~R104
- 173 -
PMC功能
逻辑乘后数据传送:SUB8/MOVE
将逻辑乘数据和输入数据进行逻辑乘(AND)运算,并将结果输出至指定地址。
还可以用来从指定地址中排除不需要的位数。
ACT
SUB8
MOVE
逻辑乘数据的高4位
逻辑乘数据的低4位
输入数据地址
输出地址
【控制条件】
ACT =1 : 执行命令
【控制参数】
逻辑乘数据 : 逻辑乘
输入数据地址
: 进行逻辑乘操作的数据
: 指定输入数据进行逻辑乘运算之后的结果输出地址 输出地址
【使用范例】
X10 :0 1 0 0 1 0 1 0
逻辑乘数据 :0 0 0 1 1 1 1 1
R100 :0 0 0 0 1 0 1 0
- 174 -
PMC功能
逻辑和后数据传送:SUB28/MOVOR
将指定的1个字节的输入数据和逻辑和数据根据控制参数进行逻辑和(OR)运算,
并将结果输出至指定地址。
ACT
SUB28
MOVOR
逻辑和数据的高4位
逻辑和数据的低4位
输入数据地址
输出地址
【控制条件】
ACT =1 : 执行命令
【控制参数】
逻辑和数据 : 指定进行逻辑和运算的常数
输入数据地址
: 指定输入数据地址
: 指定输入数据进行逻辑和运算之后的结果输出地址 输出地址
【使用范例】
X10
R200
R100
:0 1 0 0 1 0 1 0
:0 0 0 1 1 1 1 1
:0 1 0 1 1 1 1 1
- 175 -
PMC功能
二进制变址数据传送:SUB35/XMOVB
对指定地址的数据表的数据进行读取或写入操作。数据形式为二进制。此外,数据表的
数据个数使用地址进行指定,程序完成之后,数据个数可进行变更。控制参数的设定,
分为基本规格和扩展规格2种。使用扩展规格时,1个命令可一次操作多个数据。
RW
RST
ACT
SUB35 0 n n d
XMOVB
W1(错误输出)
格式指令
数据表容量存储地址
数据表首地址
输入/输出数据存储地址
表内号存储地址
【控制条件】
RW
=0 : 从数据表中读出数据
=1 : 向数据表中读入数据
=1 : 复位并输出W1=0
=1 : 执行指令
RST
ACT
【控制参数】
格式指定n n : 索引表内数据数(00~99)
d
设定00或01,默认为标准设置一致
设定02及以上,作为扩展规格,读取nn长度的数据到数据表中。
: 指定数据长度(1,2,4)
数据表容量存储地址
: 用于存储数据表的数据数目,所占用的字节数需符合格式指定中
的设定,数据表的数据数有效范围由d指定的数据长度决定。
数据表首地址
: 设定数据表的表头地址
输入/输出数据存储地址
: 输入输出时,设定输入数据或读出结果的存放地址。
表内号存储地址
: 用于存储被读取或写入的数据的表内号。
【输出】
W1 : 表内号超过“数据表容量存储地址”中的值时,输出W1=1。
- 176 -
PMC功能
【使用范例】
·该功能模块使用了扩展规格,每次从数据表中读取出2字节长度的数据
·该数据表式以D150为表头地址的数据表(即D150的表内号为0,D151表内号
为1,D152表内号为2,以下逐一递增)
·R300指令数据表的长度,如果R300中数据为5,则数据表范围从D150~D159
·R200中指定要从数据表中读取的连续2个字节长度的第一个数据的表内号
·R100为读取的连续两个字节长度数据的存储地址的首地址,即存储地址为
R100~R101
·如果R300中数据为10,R200中数据为2,按图例,当X0.0为1时,则读取
D152~D153中存储的数据至R100~R101中,也即R100~R101数据为10
- 177 -
PMC功能
变址数据传送:SUB18/XMOV
对指定地址的数据表的数据进行读取或写入操作,适用于2或者4字节BCD数据。
BYT
RW
RST
ACT
SUB18
XMOV
W1(错误输出)
数据表容量
数据表首地址
输入/输出数据存储地址
表内号存储地址
【控制条件】
BYT
=0 : 数据表中存储的数据为BCD两位。
=1 : 数据表中存储的数据为BCD四位。
=0 : 从数据表中读取数据。
=1 : 向数据表中写入数据。
=1 : 复位,输出W1=0。
=1 : 执行命令。
RW
RST
ACT
【控制参数】
数据表容量 : 指定数据表的数据数目。
如果表头为0,表尾为n,则数据表容量设定为n+1。
数据表首地址
: 设定数据表的表头地址
输入/输出数据存储地址
: 输入输出时,设定输入数据或读出结果的存放地址。
表内号存储地址
: 用于存储被读取或写入的数据的表内号。
【输出】
W1 : 如果表内号超过编程指定的数据表容量,产生错误输出,W1=1。
- 178 -
PMC功能
数值比较命令
二进制大小比较:SUB32/COMPB
1~4字节长的二进制数据之间的大小比较。
ACT
SUB32
COMPB
0 0
格式指定
输入数据(常数/地址)比较数据地址
【控制条件】
ACT =1 : 执行命令。
【控制参数】
输入数据格式指定
□ =0 : 输入数据为常数。
=1 : 输入数据为地址指定。
:指定数据长度(1,2,4)
: 用于比较的基准数据,输入数据的形式取决于上述的指定。
△
输入数据
比较数据地址
: 指定用于存放比较数据的地址。
【输出】
比较结果输出至R9000寄存器,直接进行运算结果确认。
#7
#6
#5
#4
#3
#2
#1
N
#0
Z R9000
【使用范例】
N =1:输入数据<比较数据
=0:输入数据=比较数据
假设在D100中存储的数据值为十进制数20,在R100中位十进制数25,指令如下:
- 179 -
PMC功能
当X0.0为1时,比较指令生效,由于D100小于R100,则输出R9000.1=1
大小比较:SUB15/COMP
2位或4位BCD数据的数值比较,比较结果输出到W1。
BYT
ACT
SUB15
COMP
W1(比较结果输出)
输入数据格式指定
输入数据(常数/地址)
比较数据地址
【控制条件】
BYT
=0 : 输入和比较数据均为BCD两位数据。
=1 : 输入和比较数据均为BCD四位数据。
=1 : 执行指令。
ACT
【控制参数】
输入数据格式指定
=0 : 输入数据用常数来指定。
=1 : 输入数据用地址来指定。
: 比较用的基准数据,格式取决于上述的指定。 输入数据
比较数据地址
: 指定用于存放比较数据的地址。
【输出】
W1
=0 : 输入数据>比较数据
=1 : 输入数据≤比较数据
- 180 -
PMC功能
一致性判断:SUB16/COIN
2位或4位BCD数据的数值比较。
BYT
ACT
SUB16
COIN
W1(比较结果输出)
输入数据格式指定
输入数据(常数/地址)
比较数据地址
【控制条件】
BYT
=0 : 输入和比较数据均为BCD两位数据。
=1 : 输入和比较数据均为BCD四位数据。
=1 : 执行指令。
ACT
【控制参数】
输入数据格式指定
=0 : 输入数据用常数来指定。
=1 : 输入数据用地址来指定。
: 比较用的基准数据,格式取决于上述的指定。 输入数据
比较数据地址
: 指定用于存放比较数据的地址。
【输出】
W1
=0 : 输入数据≠比较数据
=1 : 输入数据=比较数据
- 181 -
PMC功能
带符号的二进制数据比较(=): SUB200/EQB
SUB201/EQW
SUB202/EQD
带符号的二进制数据比较(≠): SUB203/NEB
SUB204/NEW
SUB205/NED
带符号的二进制数据比较(>): SUB206/GTB
SUB207/GTW
SUB208/GTD
带符号的二进制数据比较(<): SUB209/LTB
SUB210/LTW
SUB211/LTD
带符号的二进制数据比较(≥): SUB212/GEB
SUB213/GEW
SUB214/GED
带符号的二进制数据比较(≤): SUB215/LEB
SUB216/LEW
SUB217/LED
- 182 -
PMC功能
1~4字节长度的二进制数据数值比较。
ACT
SUB200
EOB
W1
数据1(常数/地址)
数据2(常数/地址)
【控制条件】
ACT =1 : 执行指令。
【控制参数】
数据1
数据2
: 指定进行比较的1号数据的地址或者常数值
: 指定进行比较的2号数据的地址或者常数值
数据1和数据2可以为常数或用地址指定,编辑梯形图程序时,输入用数字构成的字符时,
视为数值,可用地址进行输入。
【输出】
如下条件时,W1输出为1
EQB,EQW,EQD
NEB,NEW,BED
GTB,GTW,GTD
LTB,LTW,LTD
GEB,GEW,GED
LEB,LEW,LED
1= 数据1=数据2
1= 数据1≠数据2
1= 数据1>数据2
1= 数据1<数据2
1= 数据1≥数据2
1= 数据1≤数据2
- 183 -
PMC功能
带符号的二进制数据比较(范围): SUB218/RNGB
SUB219/RNGW
SUB220/RNGD
判断1~4字节长度的二进制数据是否在指定范围内。
ACT
SUB218
RNGB
W1
数据1(常数/地址)
数据2(常数/地址)
输入数据(常数/地址)
【控制条件】
ACT =1 : 执行命令。
【控制参数】
数据1
数据2
输入数据
: 指定进行比较的1号数据的地址或者常数值。
: 指定进行比较的1号数据的地址或者常数值。
: 指定进行比较的数据的地址或者常数
数据1和数据2可以为常数或用地址指定,编辑梯形图程序时,输入用数字构成的字符时,
视为数值,可用地址进行输入。
【输出】
W1
=1:
比较数据1≤输入数据≤比较数据2
比较数据2≤输入数据≤比较数据1
除上以外 =0:
- 184 -
PMC功能
二进制数据检索:SUB34/DSCHB
检索指定数据表的数据,检索到后输出首地址。
和DSCH命令不同,数据值为二进制形式,数据表的数据用地址进行指定。
即使程序完成之后,也可以变更表容量。
RST
ACT
SUB34
DSCHB
W1(检索结果输出)
数据长度
数据表容量存储地址
数据表首地址
检索数据地址
检索结果输出地址
【控制条件】
RST
ACT
=1 : 检索结果W1输出为0
=1 : 执行命令。
【控制参数】
数据长度 : 指定检索数据长度(1,2,4)
数据表容量存储地址
: 指定存储数据表容量的地址。
根据指定字节长度分配所需字节数的存储区。
数据表首地址
: 设定数据表的表头地址
检索数据地址
: 设定检索数据输入地址
检索结果输出地址
: 经过检索,如果找到被检索数据,输出表内号至检索结果的地址。
【输出】
W1 : 没有找到待检索数据时输出W1为1。
- 185 -
PMC功能
数据检索:SUB17/DSCH
数据检索指令仅适用于PMC的数据表,DSCH指令在数据表中检索指定的数据,并输
出其表内号,如未找到指定数据,则输出W1为1。
BYT
RST
ACT
SUB17
DSCH
W1(检索结果输出)
数据表容量
数据表首地址
检索数据地址
检索结果输出地址
【控制条件】
BYT
=0 : 数据表中存储的数据为BCD两位
=1 : 数据表中存储的数据为BCD四位
=1 : 检索结果W1输出为0
=1 : 执行指令。
RST
ACT
【控制参数】
数据表容量
: 指定检索对象数据表大小。
数据表首地址
: 指定数据表的表头地址。
检索数据地址
: 设定检索数据输入地址。
检索结果输出地址
: 经过检索,如果找到被检索数据,输出表内号至检索结果的地址。
【输出】
W1 : 如若没有找到待检索数据,输出为1
- 186 -
PMC功能
演算命令
上升沿输出:SUB57/DIFU
取输入信号的上升沿,并在1个扫描周期内输出信号W1为1。
ACT SUB57
DIFU
W1(脉冲)
上升沿号(1~1000)
【控制条件】
ACT : 上升沿输出信号指定。
【控制参数】
上升沿号 : 指定上升沿输出指令的上升沿号
上升沿号的个数,根据PMC的不同而不同。
PMC类型
0i-D PMC
0i-D/0i Mate-D PMC/L
上升沿号
1到1000
1到256
上升沿输出DIFU和下降沿输出DIFD双方共用沿号,注意不要重复。
使用自动分配功能,可以将未使用的沿号自动分配,十分方便。
下降沿输出:SUB58/DIFD
取输入信号的上升沿,并在1个扫描周期内输出信号W1为1。
ACT SUB58
DIFD
W1(脉冲)
下降沿号(1~1000)
【控制条件】
ACT : 下降沿输出信号指定。
【控制参数】
下降沿号 : 指定下降沿输出指令的下降沿号。
- 187 -
PMC功能
下降沿号的个数,根据PMC的不同而不同。
PMC类型
0i-D PMC
0i-D/0i Mate-D PMC/L
下降沿号
1到1000
1到256
上升沿输出DIFU和下降沿输出DIFD双方共用沿号,注意不要重复。
使用自动分配功能,可以将未使用的沿号自动分配,十分方便。
异或运算:SUB59/EOR(XOR)
对指定的2个数据进行异或运算(XOR)。
ACT
SUB59
EOR
0 0
格式指定
被运算数据地址
运算数据(常数/地址)
运算结果输出地址
【控制条件】
ACT =1 : 执行指令。
【控制参数】
格式指定
□ =0 : 运算数据为常数
=1 : 运算数据为地址指定
: 指令运算数据字节长度(1,2,4) △
被运算输入数据
: 由此地址开始并且数据长度和格式指定中一致的数据作为输入数
据,是被异或的数据。
运算数据 : 由地址或者参数直接给出。
运算结果输出地址
: 用来存储异或操作后结果的地址。数据长度在格式指定中给出。
- 188 -
PMC功能
逻辑乘:SUB60/AND
将指定的的2种数据进行逻辑和AND操作,输出。
ACT
SUB60
AND
0 0
【控制条件】
ACT =1 : 执行指令。
格式指定
被运算数据地址
运算数据(常数/地址)
运算结果输出地址
【控制参数】
格式指定
□ =0 : 运算数据为常数
=1 : 运算数据为地址指定
: 指令运算数据字节长度(1,2,4) △
被运算输入数据
: 由此地址开始并且数据长度和格式指定一致的数据作为输入数
据,是被逻辑乘的数据。
运算数据 : 由地址或者参数直接给出。
运算结果输出地址
: 用来存储逻辑乘操作后结果的地址。数据长度在格式指定中给出。
逻辑或:SUB61/OR
将指定的的2种数据进行OR操作,输出。
ACT
SUB61
OR
0 0
格式指定
被运算数据地址
运算数据(常数/地址)
运算结果输出地址
- 189 -
PMC功能
【控制条件】
ACT =1 : 执行指令。
【控制参数】
格式指定
□ =0 : 运算数据为常数
=1 : 运算数据为地址指定
: 指令运算数据字节长度(1,2,4) △
被运算输入数据
: 由此地址开始并且数据长度和格式指定一致的数据作为输入数
据,是被逻辑或的数据。
运算数据 : 由地址或者参数直接给出。
运算结果输出地址
:用来存储逻辑或操作后结果的地址。数据长度在格式指定中给出。
逻辑非:SUB62/NOT
将指定地址的数据进行NOT运算,输出到运算结果输出地址。
ACT
SUB62
NOT
0 0 0
格式指定
被运算数据地址
运算结果输出地址
【控制条件】
ACT =1 : 执行指令。
【控制参数】
格式指定 : 指令运算数据字节长度(1,2,4)
被运算数据地址
: 被逐位取反的输入数据。
运算结果输出地址
: 用来存储逻辑非操作后结果的地址。数据长度在格式指定中给出。
- 190 -
PMC功能
奇偶校验:SUB11/PARI
对1个字节的指定数据进行奇偶校验,检测到不正常时输出错误报警。
O.E
RST
ACT
SUB11
PARI
W1(错误输出)
校验数据地址
【使用范例】
【输出】
W1
【控制参数】
校验数据地址
: 指定进行奇偶校验的数据的存储地址。
【控制条件】
OE
=0 : 偶校验
=1 : 奇校验
RST
ACT
=1 : 发生奇偶校验错误时,若RST=1,则输出W1=0
=1 : 执行奇偶校验命令。
: 在执行指令之后如果结果不正常,输出W1为1。
·X0.0接通时,该功能模块起效,且为奇效验。
·假设X10为00111010,由于1的数量为4个(偶数个),输出R0.0为1。
·假设X10为00111000,由于1的数量为3个(奇数个),输出R0.0为0。
- 191 -
PMC功能
寄存器移位:SUB33/SFT
该指令可使2个字节长的数据左移或者右移1位。当数据“1”在最左方(第15位)时
如果执行左移指令,或者数据“1”在最右方(第0位)执行右移指令时,输出W1为1。
DIR
CONTRST
ACT
SUB33
SFT
移位数据地址
W1
【控制条件】
DIR
=0 : 左移
=1 : 右移
CONT =0 : 向指令的方向偏移1位,每位的状态都被相邻位取代。
=1 : 向指令的方向偏移1位,保留原本状态是1的位状态。
=1 : 复位输出数据W1=0。
=1 : 执行移位指令。
RST
ACT
【控制参数】
移位数据地址
: 指定连续2个字节移位数据的首地址。
【输出】
W1
=0 : 移位操作后,没有“1”状态移出
=1 : 移位操作后,有“1”状态移出
- 192 -
PMC功能
代码变换命令
代码变换:SUB7/COD
在该命令的内置变换表中设置数值,表号(0~99)用2位BCD码指定,数据值写入变
换数据输出地址。所用数据均为BCD码表示。
BYT
RST
ACT
SUB7
COD
W1(错误输出)
变换数据数(0~99)
变换数据输入地址
变换数据输出地址
【控制条件】
BYT
=0 : 指定变换表中数据位BCD两位
=1 : 指定变换表中数据位BCD四位
=1 : 复位输出W1=0
=1 : 执行COD指令
RST
ACT
【控制参数】
变化数据数 : 指定变换的数据容量,范围为0~99。
变换数据输入地址
: 存储变换表数据,需要指定为1字节(2位BCD码)数据。
变换数据输出地址
: 变换完成之后,存储由数据表输出的数据。
【输出】
W1 : 执行COD指令时,如果转换输入地址出现错误,输出为1。
【使用范例】
如范例中所示:
当R100=0时,R200=10,
当R100=1时,R200=3,依次类推。
- 193 -
PMC功能
二进制代码转换:SUB27/CODB
在该命令的内置变换表中设置数值,表号(0~255)用二进制数据指定。
数据值写入变换数据输出地址。所用数据均为二进制码表示。
RST
SUB27
CODB
W1(错误输出)
格式指定
变换数据数(0~256)
变换数据输入地址
变换数据输出地址
ACT
【控制条件】
RST
ACT
=1 : 复位输出W1=0
=1 : 执行COD指令。
【控制参数】
格式指定 : 指定变换数据长度(1,2,4字节)
变化数据数 : 指定变换的数据容量,范围为0~256。
变换数据输入地址
: 变换表的数据可以根据指定表号取出,存储变换表表号的地址称
为变换数据输入地址,需要指定为1字节数据。
变换数据输出地址
: 变换完成之后,存储由数据表输出的数据。
【输出】
W1 : 执行CODB指令时,如果转换输入地址出现错误,输出为1。
- 194 -
PMC功能
数据转换:SUB14/DCNV
1或者2个字节的二进制数据和BCD数据间的互相转换。
BYT
CNV
RST
ACT
SUB14
DCNV
W1(错误输出)
输入数据地址
转换数据输出地址
【控制条件】
BYT
=0 : 处理数据长度为1个字节
=1 : 处理数据长度为2个字节
=0 : 二进制代码转换为BCD代码
=1 : BCD代码转换为二进制代码
=1 : 复位错误输出线圈W1,即此时W1=0
=1 : 执行DNCV指令
CNV
RST
ACT
【控制参数】
输入数据地址
: 指定待转换数据的存储地址
转换数据输出地址
: 指定转换完成之后数据的输出地址
【输出】
W1
: 当被转换数据应为BCD码数据但实际是二进制数据时,或者二进
制转换为BCD码数据转换数据超过预先指定的数据大小时,输出
W1=1。
- 195 -
PMC功能
扩展数据变换:SUB31/DCNVB
1~4字节长度的二进制代码和BCD代码之间的相互转换。
SIN
CNV
RST
ACT
【控制条件】
SIN
W1(错误输出)
数据长度
输入数据地址
转换数据输出地址
SUB31
DCNVB
=0 : 输入的BCD代码数据符号为正
=1 : 输入的BCD代码数据符号为负
=0 : 二进制代码转换为BCD代码
=1 : BCD代码转换为二进制代码
=1 : 复位错误输出线圈W1,即此时W1=0
=1 : 执行DNCV指令
CNV
RST
ACT
【控制参数】
数据长度 : 指定待转换数据的数据长度(1,2,4字节)
输入数据地址: 指定待转换数据的存储地址
转换数据输出地址
: 指定转换完成之后数据的输出地址
【输出】
W1 : 转换结果出错时输出
【运算结果】
确认二进制代码和BCD码转换时的符号和溢出状况。
#7
#6
#5
V
#4
#3
#2
#1
N
#0
R9000
V =1:溢出
N =0:符号为正
=1:符号为负
- 196 -
PMC功能
BCD译码:SUB4/DEC
两位BCD代码和给定定数据进行判定,一致时输出W1为1,不一致时输出为0。
ACT SUB4
DEC
n n d d
W1(结果)
BCD译码数据地址(1字节长)
译码指令
【控制条件】
ACT
=0 : 译码输出结果W1为0
=1 : 执行译码指令
【控制参数】
BCD译码数据地址
: 指定1字节长BCD译码数据的存储地址
: 指定译码相关的数据和译码位数
nndd nn指定译码值
dd译码位数指定 01 = 只译低位,高位为0
10 = 只译高位,低位为0
11 = 高低位均译
译码指令
【输出】
W1
: ACT为1时,当指定的BCD译码数据地址中的数据和译码值相
同时,输出W1为1,不相同时输出为0。
ACT为0时,输出W1为0
【使用范例】
- 197 -
PMC功能
范例中为对M代码进行译码操作,当NC执行M辅助功能指令时,F7.0为1时,
该指令生效。
·该指令同时只能对一个给定数据进行译码
·范例为对M3进行译码的梯形图
·当执行M3指令时,此时译码输出F10中为3,输出R0.0=1
·DEC功能代码中的数据位BCD码,所以如果对M10及其以上的M代码进
行译码时,由于F10为二进制形式,所以必须先进行数据转换,将F10转
换为BCD码格式,再进行译码操作。
二进制译码:SUB25/DECB
1~4字节的二进制代码数据译码,所指令的连续8位数据之一与待译码数据相同时,
输出对应位为1。
ACT
SUB25 0 n n d
DECB
【控制参数】
格式指定
: 指定1~4字节长二进制译码数据的存储首地址
0nnd
d 代表待译码数据的字节长度(1,2,4字节)
【控制条件】
ACT
=0 : 将所有输出复位为0
=1 : 执行译码指令
格式指令
译码数据地址
译码指定
转换数据输出地址
nn 代表组数(指定为0时,视为1组8个)
译码数据地址
: 指定1~4字节二进制译码数据的首地址
: 给出要译码的连续8个数字的第一个 译码指定
译码数据输出地址
: 指定译码数据的输出地址
每组使用1个字节
- 198 -
PMC功能
#7
输出地址+0
+1
+2
·
·
+7
+15
+23
·
·
#6
+6
+14
+22
·
·
#5
+5
+13
+21
·
·
#4
+4
+12
+20
·
·
#3
+3
+11
+19
·
·
#2
+2
+10
+18
·
·
#1
+1
+9
+17
·
·
#0
+0
+8
+16
·
·
+98
+791 +790 +789 +788 +787 +786 +785 +784
【使用范例】
范例为对M代码进行译码操作,当系统收到M辅助功能指令时,F7.0为1时,该
指令生效。
·F10为系统M代码输出地址
·该译码指令对从M3~M10的连续8个M代码进行译码
·译码输出地址位为R10,且R10同时仅有一位为1
·比如当指令M3时,R10.0=1,指令M4时,R10.1=1,对应关系如下:
R10
#7
M10
#6
M9
#5
M8
#4
M7
#3
M6
#2
M5
#1
M4
#0
M3
- 199 -
2024年2月19日发(作者:揭启颜)
PMC功能
PMC功能
讲述PMC功能和PMC程序编写的基本事项
这里讲述以下内容:
● PMC的基本功能
● 功能指令一览
种类
编程语言
级数
第一级执行周期
基本指令处理速度
I/O Link最大信号点数
0i-D
0i-Mate D
T地址范围
C地址范围
K地址范围
D地址范围
A地址范围
符号
基本规格
扩展规格
基本规格
扩展规格
“○B”为软件包B包的标准配置。
I/O Link第二通道功能,为选项功能,需要指定。
使用符号和指令扩展规格时,需要使用FANUC LADDER-III软件。
梯形图
3
4/8msec
25nsec/step
2048/2048
○
—
T0~T499,T9000~T9499
C0~C399,C5000~C5199
K0~K99,K900~K999
D0~D9999
A0~A249,A9000~A9249
3
1μsec/step
1024/1024
○B
○
T0~T79,T9000~T9079
C0~C79,C5000~C5039
K0~K19,K900~K999
D0~D2999
A0~A249,A9000~A9249
16字符
40字符
30字符
255字符
指令
- 151 -
PMC功能
系统信号
地址
地址
梯形图
运行状态
扫描周期
梯形图运行开始信号
R9015.0
梯形图停止信号
R9015.1
梯形图运行状态
R9091.2
R9015
#7
#6
#5
#4
#3
#2
#1 #0
R9091
FL
FL2
RUN
ON
OFF
#7
#6
FL
#5
FL2
#4
#3
#2
RUN
#1
ON
#0
OFF
:1秒周期信号
:0.2秒周期信号
:PMC运行
:常1信号
:常0信号
(ON/OFF 比1:1)
(ON/OFF 比1:1)
STPR RUNR
STPR :梯形图停止信号
RUNR :梯形图运行信号
- 152 -
PMC功能
PMC的数据形式分为二进制形式、BCD码形式和位型三种。
CNC和PMC间的接口信号为二进制形式。一般来说,PMC数据也采用二进制形式。
带符号的二进制形式(Binary)
可进行1字节,2字节,4字节的二进制处理
可使用的数值范围如下
1字节
2字节
4字节
在顺序程序中指令数据的长度和初始地址
在诊断画面(PMCDGN)确认2字节,4字节的地址数据时,地址号大的为高位地址。
由R100指定4字节长的数据时地址和位的对应关系如下:
-128~+127
-32768~+32767
-2147483648~+2147483647
采用2的补码表示
地址
地址
地址
地址
用2字节表示-100和+100时
+0
2
+1
+2
+3
100
01100100
00000000
00000000
00000000
-100
10011100
11111111
11111111
11111111
最高位数
为1时为负数
R100
R101
R102
R103
#7
27
215
223
±
#6
26
214
222
230
#5
25
213
221
229
#4
24
212
220
228
#3
23
211
219
227
#2
22
210
218
226
#1
21
29
217
225
#0
20
28
216
224
- 153 -
PMC功能
BCD形式:Binary Coded Decimal
在十进制数的二-十进制中,用4位的二进制码表示十进数的各位。
可处理2位或4位的十进制数,符号用其他信号进行处理。
+0
#7 #6 #5 #4 #3 #2 #1 #0
10位
80 40 20 10 8 4
个位
2 1
+1
1000位
8000 4000 2000 1000 800
100位
400 200 100
例:63和1234的BCD码表示。
BCD码和二进制数的变换通过DCNV,DCNVB指令来进行。
63
+0
+1
01100011
—
1234
00110100
00010010
位型:Bit
处理1位信号和数据时,在地址之后指令小数点的位号
地址
例:X0001.2(地址X0001的第二位)
可以以位为单位来读写数据表的部分数据部分。
xxxxx
#7
#6
#5
V
#4
#3
#2
#1
#0
- 154 -
PMC功能
格雷码
0~15的4位二进制表示如下。如果旋钮开关的触点信号使用二进制代码来表示,在切换触点时,存在有2位数据同时变化的情况,造成变化的不连续性。
如下所示,如果采用4位格雷码表示,在旋钮开关触点进行切换时,相邻的触点只有一位数据进行变化,不存在不连续的现象。
把由旋钮开关输入的格雷码信号转换为二进制数据,可成为正常处理用数值,这样程序更容易书写。
| g3(Xxxx.x) b3(Rxxx.x)|
*----||-------------------------------------------------------------()---*
| |
| b3 g2 b2 |
*----||-------|/|--*------------------------------------------------()---*
| |
| b3 g2 | |
*----|/|------||---* |
| |
| b2 g1 b1 |
*----||-------|/|--*------------------------------------------------()---*
| |
| b2 g1 | |
*----|/|------||---* |
| |
| b1 g0 b0 |
*----||-------|/|--*------------------------------------------------()---*
| |
| b1 g0 | |
*----|/|------||---* |
| |
0
0
0
0
0
1
0
0
0
1
2
0
0
1
0
3
0
0
1
1
4
0
1
0
0
5
0
1
0
1
6
0
1
1
0
7
0
1
1
1
8
1
0
0
0
9
1
0
0
1
10
1
0
1
0
11
1
0
1
1
12 13
1
1
0
0
1
1
0
1
14 15
1
1
1
0
1
1
1
1
0
0
0
0
0
1
0
0
0
1
2
0
0
1
1
3
0
0
1
0
4
0
1
1
0
5
0
1
1
1
6
0
1
0
1
7
0
1
0
0
8
1
1
0
0
9
1
1
0
1
10
1
1
1
1
11
1
1
1
0
12 13 14 15
1
0
1
0
1
0
1
1
1
0
0
1
1
0
0
0
格雷码和二进制按照上述规律进行变换,使用格雷码旋钮开关,可以提高安全性。
- 155 -
PMC功能
第1级
第1级程序中,如果没有输入信号,只需要编写END1功能指令。
程序的开头到END1命令之间为第一级程序,系统每4/8msec执行一次。
主要是处理急停、跳转、超程等信号。
第2级
sequence是“顺序”的意思。
在第二级程序上因为有同步输入信号存储器,所以输入脉冲信号时,其信号宽带应大于扫描
信号时间。
扫描时间显示在PMC诊断画面的标题栏上。
END1命令之后,END2命令之前的顺序程序为第二级程序。
第二级程序通常包括机床操作面板、ATC(自动换刀装置)程序等。
第3级
在编写顺序程序时可选择是否使用第3级程序,本教材不使用第3级。
END2命令和END3命令之间的程序为第三级程序。
第三级程序主要处理低速响应的信号。
- 156 -
PMC功能
子程序
将重复执行处理和模块化的程序作为子程序登录。
子程序功能指令登录在END3命令和END命令之间。
子程序顺序程序,从SP命令开始到SPE命令结束,作为1组。可以登录5000或者512个子程序。
不使用第3级时,子程序在END和END2之间进行编辑。
顺序程序为附加选择功能,可选择将子程序用梯形图语言或顺序程序任意一种进行记述。
在第2级程序中可使用条件调用命令CALL或无条件调用命令CALLU来调用子程序。
第1级程序中不能调用子程序。
第一级
急停
超程
跳转
END1
第二级
运行转备
运行方式切换
手动进给
手轮进给
自动运行
MST功能
CALL命令
信息显示
SP P10
END2
子程序
SP
SPE
END
CALL
CALLU
命令
SPE
- 157 -
PMC功能
定时器
TMR
TMRB
TMRC
TMRBF
计数器
CTR
CTRB
CTRC
数据传送
MOVB
MOVW
MOVD
MOVN
MOVE
MOVOR
XMOVB
XMOV
数值比较
COMPB
COMP
COIN
EQB
EQW
EQD
NEB
NEW
NED
GTB
GTW
GTD
LTB
LTW
LTD
SUB32
SUB15
SUB16
SUB200
SUB201
SUB202
SUB203
SUB204
SUB205
SUB206
SUB207
SUB208
SUB209
SUB210
SUB211
- 158 -
二进制数据比较
BCD数据比较
BCD一致性判断
1字节长二进制比较(=)
2字节长二进制比较(=)
4字节长二进制比较(=)
1字节长二进制比较(≠)
2字节长二进制比较(≠)
4字节长二进制比较(≠)
1字节长二进制比较(>)
2字节长二进制比较(>)
4字节长二进制比较(>)
1字节长二进制比较(<)
2字节长二进制比较(<)
4字节长二进制比较(<)
SUB43
SUB44
SUB47
SUB45
SUB8
SUB28
SUB35
SUB18
1字节数据传送
2字节数据传送
4字节数据传送
任意字节数据传送
逻辑乘后数据传送
逻辑加后数据传送
二进制变址修改数据传送
BCD变址修改数据传送
SUB5
SUB56
SUB55
计数器
追加计数器
追加计数器
SUB3
SUB24
SUB54
SUB77
延时定时器(上升沿触发)
固定延时定时器(上升沿触发)
延时定时器(上升沿触发)
固定延时定时器(下降沿触发)
PMC功能
GEB
GEW
GED
LEB
LEW
LED
RNGB
RNGW
RNGD
数据处理
DSCHB
DSCH
DIFU
DIFD
EOR
AND
OR
NOT
PARI
SFT
COD
CODB
DCNV
DCNVB
DEC
DECB
演算命令
ADDB
SUBB
MULB
DIVB
ADD
SUB
MUL
DIV
NUMEB
SUB212
SUB213
SUB214
SUB215
SUB216
SUB217
SUB218
SUB219
SUB220
SUB34
SUB17
SUB57
SUB58
SUB59
SUB60
SUB61
SUB62
SUB11
SUB33
SUB7
SUB27
SUB14
SUB31
SUB4
SUB25
SUB36
SUB37
SUB38
SUB39
SUB19
SUB20
SUB21
SUB22
SUB40
1字节长二进制比较(≥)
2字节长二进制比较(≥)
4字节长二进制比较(≥)
1字节长二进制比较(≤)
2字节长二进制比较(≤)
4字节长二进制比较(≤)
1字节长二进制比较(范围)
2字节长二进制比较(范围)
4字节长二进制比较(范围)
二进制数据检索
BCD数据检索
上升沿输出
下降沿输出
异或
逻辑乘
逻辑和
逻辑非
奇偶校验
移位寄存器
BCD码变换
二进制码变换
数据转换
扩展数据转换
BCD译码
二进制译码
二进制加法运算
二进制减法运算
二进制乘法运算
二进制除法运算
BCD加法运算
BCD减法运算
BCD乘法运算
BCD除法运算
二进制常数赋值
- 159 -
PMC功能
NUME
CNC相关
DISPB
EXIN
WINDR
WINDW
AXCTL
PSGNL
PSGN2
程序控制
COM
COME
JMP
JMPE
JMPB
JMPC
LBL
CALL
CALLU
CS
CM
CE
SP
SPE
END1
END2
END3
END
NOP
回转控制
ROT
ROTB
SUB23
SUB41
SUB42
SUB51
SUB52
SUB53
SUB50
SUB63
SUB9
SUB29
SUB10
SUB30
SUB68
SUB73
SUB69
SUB65
SUB66
SUB74
SUB75
SUB76
SUB71
SUB72
SUB1
SUB2
SUB48
SUB64
SUB
SUB6
SUB26
BCD常数赋值
信息显示
外部数据输入
CNC数据读取
CNC数据写入
PMC轴控制指令
位置信号
位置信号
公共线控制开始
公共线控制结束
跳转
跳转结束
标号跳转1
标号跳转2
标号
有条件子程序调用
无条件子程序调用
选择调用开始
选择子程序调用
选择调用结束
子程序开始
子程序结束
第1级程序结束
第2级程序结束
第3级程序结束
程序结束
无操作
BCD回转控制
二进制回转控制
上述功能指令仅为0i-D系统的部分常用功能指令,且均为0i-D系统和0i-Mate D系统的标
准功能,其余的功能指令详见相关说明书。
- 160 -
PMC功能
定时器命令
延时定时器(上升沿触发):SUB3/TMR
ACT为1并经过设定的时间后,输出W1为1。时间在PMC参数画面进行设定,所以
顺序程序编写完成后,用户也可以变更设定时间。ACT为0后,W1马上变为0。
ACT
SUB3
TMR
W1
定时器号
ACT
设定时间
W1
【控制条件】
ACT
=0 : 定时器输出W1为0
=1 : 启动定时器
【定时器号】(初始状态)
1~8 : 以48ms为单位,最大设定时间1572.8秒
: 以8ms为单位,最大设定时间262.1秒 9以上
在定时器命令中指定定时器号。定时器设定时间在PMC维修画面的定时器画面进行设定。
所以顺序程序在编写完成之后,也可以方便的变更时间。
定时器的个数根据PMC不同而不同。
定时器初始设定时间
48ms定时器
8ms定时器
0i-D
PMC
1到8
9到250
0i-D/0i Mate-D
PMC/L
1到8
9到40
使用定时器号的自动分配功能时,可将没有使用的定时器号自动分配,非常方便。
上述的定时器设定时间为原始值。软件操作时,可以根据下表的单位进行转换。
- 161 -
PMC功能
1msec
8msec
10msec
48msec
100msec
1秒
1分
1msec~32.7秒
8msec~262.1秒
10msec~327.7秒
48msec~1572.8秒
100msec~54.6分
1秒~546分
1分~546小时
定时器9以上初始值
定时器1~8初始值
定时器的定时器精度,对应存储在T9000~T9499中,设值含义如下:
0
1
2
3
4
5
:
:
:
:
:
:
缺省(8msec/48msec)
1msec
10msec
100msec
1秒
1分
【输出】
W1 : ACT接通后,经过定时器设定的时间后,输出即接通为1。
【使用范例】
X0.0接通后再经过100ms,R0.0就接通为1。
“精度”由T9000~T9499来决定,每个计数器占两个字节,同时也对应T9000~T9499的
相应两字节为“精度”设定地址,依次类推。对于1号计数器,对应为T9000~T9001设定
精度,如果T9000~T9001为0,则精度按缺省处理,为48ms。范例中T9000=3,即精度
等级为100,在此条件下,“设定时间”必须是100的倍数。
- 162 -
PMC功能
固定延时定时器(上升沿触发):SUB24/TMRB
ACT为1后经过设定的时间,接通W1为1。在命令控制参数中指定设定时间。
主要用于程序编写完成之后,用户无需变更设定时间的情况。
ACT为0时,输出W1为0。
ACT
SUB24
TMRB
W1
定时器号
设定时间
ACT
设定时间
W1
【控制条件】
ACT
=0 : 定时器输出W1为0
=1 : 启动定时器
【控制参数】
定时器号
设定时间
: 1~500
: 以毫秒为单位进行设定(最大32,767,000)
定时器的个数根据PMC类型不同而不同。
定时器初始设定数据
定时器号
设定时间
0i-D
PMC
1到500
0i-D/0i Mate-D
PMC/L
1到100
1到32,760,000(毫秒) 1到32,760,000(毫秒)
固定延时定时器(上升沿触发)TMRB和固定延时定时器(下降沿触发)TMRBF共用定时
器号,注意不要重复。建议使用自动分配功能,更加方便。
固定延时定时器TMRB和延时定时器TMR不共用定时器号,故不产生冲突。
【输出】
W1 : ACT接通后,经过定时器设定的时间后,输出即接通为1。
- 163 -
PMC功能
【使用范例】
·X0.0接通3秒之后,R0.0输出为1。
·在任意时间一旦X0.0为0,R0.0马上为0。
延时定时器(上升沿触发):SUB54/TMRC
定时器精度范围扩展为以分为单位,可作为长时间定时器使用。
在控制参数中可以自由的指定定时器设定时间地址,所以没有定时器个数限制。
ACT
SUB54
TMRC
W1
定时器精度
定时器设定时间地址
定时器寄存器地址
ACT
设定时间
W1
【控制条件】
ACT
=0 : 定时器输出W1为0
=1 : 启动定时器
【控制参数】
定时器精度 :
种类
1msec
8msec
10msec
48msec
100msec
1秒
10秒
1分
定时器精度
5
0
6
1
7
2
3
4
- 164 -
设定时间范围
1msec~32.7秒
8msec~262.1秒
10msec~327.7秒
48msec~1572.8秒
100msec~54.6分
1秒~546分
10秒~91小时
1分~546小时
PMC功能
【定时器设定时间地址】
: 指定用于存储定时器设定值2字节长地址的首地址。
(通常使用D地址)
【定时器寄存器地址】
: 指定使用该命令时的4字节长地址的首地址。(通常使用R地址)
【输出】
W1 : ACT为1经过定时器设定的时间后,输出即接通为1。
【使用范例】
·本例定时器精度为8ms
·假设D100中数据为100,则定时器定时时间为100*8=800ms
·即X0.0接通经过800ms之后,R0.0接通为1.
·同样,在任意时间如果X0.0为0,则输出R0.0立即为0
·R100为系统作业区域
- 165 -
PMC功能
固定延时定时器(下降沿触发):SUB77/TMRBF
固定延时定时器设定的时间是固定的,因此定时器的设定时间和顺序程序一同写入到
F-ROM中。
ACT
SUB77
TMRBF
W1
定时器号
设定时间
设定时间
ACT
W1
【控制条件】
ACT
=0 : 定时器输出W1为0
=1 : 启动定时器
【控制参数】
定时器号
设定时间
: 1~500
: 以msec为单位进行设定(最大32,767,000)
定时器的个数根据PMC类型不同而不同
定时器初始设定数据
定时器号
设定时间
0i-D
PMC
1到500
0i-D/0i Mate-D
PMC/L
1到100
1到32,760,000(毫秒) 1到32,760,000(毫秒)
固定延时定时器(上升沿触发)TMRB和固定延时定时器(下降沿触发)TMRBF共用定时
器号,注意不要重复。建议使用自动分配功能,更加方便。
- 166 -
【输出】
W1
: ACT为1后输出W1马上变为1.
ACT为0后经过设定时间,输出W1才为0。
PMC功能
计数器命令
计数器:SUB5/CTR
PMC参数画面的计数器数值为十进制表示,当内部数据形式为BCD和二进制形式时,
可通过系统参数画面进行选择。
是进行加减计数的计数器。作为预置型计数器时,首先设定计数器的计数上限,当计数
值和设定值相同的时候,输出信号。此外还可作为环形计数器,重复计数。
CN0
UPDOWN
RST
ACT
W1
SUB5
CTR
计数器号
【控制条件】
CN0
=0 : 计数器的初始值为0
=1 : 计数器的初始值为1
UPDOWN
=0 : 为加计数器
=1 : 为减计数器
=1 : 将计数器复位为初始值 RST
加计数器时,复位为CN0设定的初始值;减计数器时,复位为计数器预置值。
ACT =1 : 收到信号的上升沿时进行1次计数,并更新计数值。
【控制参数】
计数器号
: 指定计数器号。
计数器的最大值和当前值均在PMC参数画面进行显示和设定。
- 167 -
PMC功能
计数器号的最大值,根据PMC类型不同而不同。
计数器号
计数器的数据形式为二进制时,计数范围为0~32767。为BCD形式时,计数范围为0~9999。
计数器号使用自动分配功能时,将未使用的计数器号进行分配,十分方便。
0i-D
PMC
1到100
0i-D/0i Mate-D
PMC/L
1到20
【使用范例】
【输出】
W1
=1 : 为计数器输出信号。
加计数到最大值,减计数到最小值时输出为1。
每个计数器占据4个字节,前两个字节为“设定值”,后两个字节为“现在值”。
如上例中,1号计数器地址为C0~C3,其中设定值地址为C0~C1,现在值地址为C2~C3。
·从1到20进行计数的计数器(设定值即为预置值)
·在X0.0的上升沿,“现在值”加1,当“现在值”到20时,R0.0输出为1
·当F1.1为1时,“现在值”复位为1
- 168 -
PMC功能
固定计数器:SUB56/CTRB
在控制参数中指定预置值的计数器。计数值为二进制形式。
CN0
UPDOWN
RST
ACT
SUB56
CTRB
W1
计数器号(1~100)
预置值
【控制条件】
CN0
=1 : 计数器的初始值为1
=0 : 计数器的初始值为0
UPDOWN
=0 : 为加计数器
=1 : 为减计数器
=1 : 将计数器复位为初始值 RST
加计数器时,复位为CN0设定的初始值;减计数器时,复位为计数器预置值。
【控制参数】
计数器号
计数器号
ACT =1 : 收到信号的上升沿时进行1次计数,并更新计数值。
:
0i-D
PMC
1到100
0i-D/0i Mate-D
PMC/L
1到20
预置值 :在0~32767内进行预置值指定。
CTRB命令的计数值,在地址C5000以内,均占用2个字节。
【输出】
W1
=1 : 为计数器结束输出。
加计数到最大值,减计数到最小值时输出为1。
- 169 -
PMC功能
计数器:SUB55/CTRC
为标准计数器的扩展形式。可利用数据表进行设置的计数器,计数值为二进制形式。
CN0
UPDOWN
RST
ACT
W1
SUB55
CTRC
计数器预置值地址
计数器寄存器地址
【控制条件】
CN0
=1 : 计数器的初始值为1
=0 : 计数器的初始值为0
UPDOWN
=0 : 为加计数器
=1 : 为减计数器
=1 : 将计数器复位为初始值 RST
加计数器时,复位为CN0设定的初始值;减计数器时,复位为计数器预置值。
ACT =1 : 为1时进行计数。
【控制参数】
计数器预置值地址
: 指定2字节的存储器的首地址。(通常指令为D地址)
计数器寄存器地址
: 指定连续的4字节存储器的起始地址。
电源关断时仍需保存计数值,使用D地址指定;
无需保存时,使用R地址。
使用R地址指令计数器寄存器地址时,当电源接通时,计数器的累计值为0
- 170 -
【输出】
W1 =1 : 为计数器输出。加计数到最大值,减计数到最小值时输出为1。
PMC功能
数据传送命令
1字节长数据传送:SUB43/MOVB
把1字节的数据从被指令的传出位置地址传送到指定的传入位置地址。
ACT
SUB43
MOVB
传出位置地址
传入位置地址
【控制条件】
ACT =1 : 执行命令
【控制参数】
传出位置地址
: 1字节数据的存储位置地址
传入位置地址
: 1字节数据的传入位置地址
【使用范例】
当X0.0为1时,将D100的数据传送给R200
2字节长数据传送:SUB44/MOVW
把2字节的数据从被指令的传出位置地址传送到指定的传入位置地址。
- 171 -
PMC功能
ACT
SUB44
MOVW
传出位置地址
传入位置地址
【控制条件】
ACT =1 : 执行命令
【控制参数】
传出位置地址
: 2字节数据的存储位置地址
传入位置地址
: 2字节数据的传入位置地址
【使用范例】
当X0.0为1时,将D100~D101的数据传送给R200~R201
4字节长数据传送:SUB47/MOVD
把4字节长的数据从被指令的传出位置地址传送到指定的传入位置地址。
ACT
SUB47
MOVD
传出位置地址
传入位置地址
【控制条件】
ACT =1 : 执行命令
- 172 -
PMC功能
【控制参数】
传出位置地址
: 4字节数据的存储位置地址
传入位置地址
: 4字节数据的传入位置地址
任意字节长数据传送:SUB45/MOVN
传送指定长度(1~200)的数据从指令源地址到目的地址。
ACT SUB45
MOVN
传送字节数(1~200)
传送源地址
传送目的地址
【控制条件】
ACT =1 : 执行命令
【控制参数】
传送字节数 : 指令需要传送的字节长度(1~200)
传送源地址 : 传送字节数据的存储位置地址。
传送目的地址
: 传送字节数据的传入位置地址。
【使用范例】
当X0.0为1时,将D100~D104的数据传送给R100~R104
- 173 -
PMC功能
逻辑乘后数据传送:SUB8/MOVE
将逻辑乘数据和输入数据进行逻辑乘(AND)运算,并将结果输出至指定地址。
还可以用来从指定地址中排除不需要的位数。
ACT
SUB8
MOVE
逻辑乘数据的高4位
逻辑乘数据的低4位
输入数据地址
输出地址
【控制条件】
ACT =1 : 执行命令
【控制参数】
逻辑乘数据 : 逻辑乘
输入数据地址
: 进行逻辑乘操作的数据
: 指定输入数据进行逻辑乘运算之后的结果输出地址 输出地址
【使用范例】
X10 :0 1 0 0 1 0 1 0
逻辑乘数据 :0 0 0 1 1 1 1 1
R100 :0 0 0 0 1 0 1 0
- 174 -
PMC功能
逻辑和后数据传送:SUB28/MOVOR
将指定的1个字节的输入数据和逻辑和数据根据控制参数进行逻辑和(OR)运算,
并将结果输出至指定地址。
ACT
SUB28
MOVOR
逻辑和数据的高4位
逻辑和数据的低4位
输入数据地址
输出地址
【控制条件】
ACT =1 : 执行命令
【控制参数】
逻辑和数据 : 指定进行逻辑和运算的常数
输入数据地址
: 指定输入数据地址
: 指定输入数据进行逻辑和运算之后的结果输出地址 输出地址
【使用范例】
X10
R200
R100
:0 1 0 0 1 0 1 0
:0 0 0 1 1 1 1 1
:0 1 0 1 1 1 1 1
- 175 -
PMC功能
二进制变址数据传送:SUB35/XMOVB
对指定地址的数据表的数据进行读取或写入操作。数据形式为二进制。此外,数据表的
数据个数使用地址进行指定,程序完成之后,数据个数可进行变更。控制参数的设定,
分为基本规格和扩展规格2种。使用扩展规格时,1个命令可一次操作多个数据。
RW
RST
ACT
SUB35 0 n n d
XMOVB
W1(错误输出)
格式指令
数据表容量存储地址
数据表首地址
输入/输出数据存储地址
表内号存储地址
【控制条件】
RW
=0 : 从数据表中读出数据
=1 : 向数据表中读入数据
=1 : 复位并输出W1=0
=1 : 执行指令
RST
ACT
【控制参数】
格式指定n n : 索引表内数据数(00~99)
d
设定00或01,默认为标准设置一致
设定02及以上,作为扩展规格,读取nn长度的数据到数据表中。
: 指定数据长度(1,2,4)
数据表容量存储地址
: 用于存储数据表的数据数目,所占用的字节数需符合格式指定中
的设定,数据表的数据数有效范围由d指定的数据长度决定。
数据表首地址
: 设定数据表的表头地址
输入/输出数据存储地址
: 输入输出时,设定输入数据或读出结果的存放地址。
表内号存储地址
: 用于存储被读取或写入的数据的表内号。
【输出】
W1 : 表内号超过“数据表容量存储地址”中的值时,输出W1=1。
- 176 -
PMC功能
【使用范例】
·该功能模块使用了扩展规格,每次从数据表中读取出2字节长度的数据
·该数据表式以D150为表头地址的数据表(即D150的表内号为0,D151表内号
为1,D152表内号为2,以下逐一递增)
·R300指令数据表的长度,如果R300中数据为5,则数据表范围从D150~D159
·R200中指定要从数据表中读取的连续2个字节长度的第一个数据的表内号
·R100为读取的连续两个字节长度数据的存储地址的首地址,即存储地址为
R100~R101
·如果R300中数据为10,R200中数据为2,按图例,当X0.0为1时,则读取
D152~D153中存储的数据至R100~R101中,也即R100~R101数据为10
- 177 -
PMC功能
变址数据传送:SUB18/XMOV
对指定地址的数据表的数据进行读取或写入操作,适用于2或者4字节BCD数据。
BYT
RW
RST
ACT
SUB18
XMOV
W1(错误输出)
数据表容量
数据表首地址
输入/输出数据存储地址
表内号存储地址
【控制条件】
BYT
=0 : 数据表中存储的数据为BCD两位。
=1 : 数据表中存储的数据为BCD四位。
=0 : 从数据表中读取数据。
=1 : 向数据表中写入数据。
=1 : 复位,输出W1=0。
=1 : 执行命令。
RW
RST
ACT
【控制参数】
数据表容量 : 指定数据表的数据数目。
如果表头为0,表尾为n,则数据表容量设定为n+1。
数据表首地址
: 设定数据表的表头地址
输入/输出数据存储地址
: 输入输出时,设定输入数据或读出结果的存放地址。
表内号存储地址
: 用于存储被读取或写入的数据的表内号。
【输出】
W1 : 如果表内号超过编程指定的数据表容量,产生错误输出,W1=1。
- 178 -
PMC功能
数值比较命令
二进制大小比较:SUB32/COMPB
1~4字节长的二进制数据之间的大小比较。
ACT
SUB32
COMPB
0 0
格式指定
输入数据(常数/地址)比较数据地址
【控制条件】
ACT =1 : 执行命令。
【控制参数】
输入数据格式指定
□ =0 : 输入数据为常数。
=1 : 输入数据为地址指定。
:指定数据长度(1,2,4)
: 用于比较的基准数据,输入数据的形式取决于上述的指定。
△
输入数据
比较数据地址
: 指定用于存放比较数据的地址。
【输出】
比较结果输出至R9000寄存器,直接进行运算结果确认。
#7
#6
#5
#4
#3
#2
#1
N
#0
Z R9000
【使用范例】
N =1:输入数据<比较数据
=0:输入数据=比较数据
假设在D100中存储的数据值为十进制数20,在R100中位十进制数25,指令如下:
- 179 -
PMC功能
当X0.0为1时,比较指令生效,由于D100小于R100,则输出R9000.1=1
大小比较:SUB15/COMP
2位或4位BCD数据的数值比较,比较结果输出到W1。
BYT
ACT
SUB15
COMP
W1(比较结果输出)
输入数据格式指定
输入数据(常数/地址)
比较数据地址
【控制条件】
BYT
=0 : 输入和比较数据均为BCD两位数据。
=1 : 输入和比较数据均为BCD四位数据。
=1 : 执行指令。
ACT
【控制参数】
输入数据格式指定
=0 : 输入数据用常数来指定。
=1 : 输入数据用地址来指定。
: 比较用的基准数据,格式取决于上述的指定。 输入数据
比较数据地址
: 指定用于存放比较数据的地址。
【输出】
W1
=0 : 输入数据>比较数据
=1 : 输入数据≤比较数据
- 180 -
PMC功能
一致性判断:SUB16/COIN
2位或4位BCD数据的数值比较。
BYT
ACT
SUB16
COIN
W1(比较结果输出)
输入数据格式指定
输入数据(常数/地址)
比较数据地址
【控制条件】
BYT
=0 : 输入和比较数据均为BCD两位数据。
=1 : 输入和比较数据均为BCD四位数据。
=1 : 执行指令。
ACT
【控制参数】
输入数据格式指定
=0 : 输入数据用常数来指定。
=1 : 输入数据用地址来指定。
: 比较用的基准数据,格式取决于上述的指定。 输入数据
比较数据地址
: 指定用于存放比较数据的地址。
【输出】
W1
=0 : 输入数据≠比较数据
=1 : 输入数据=比较数据
- 181 -
PMC功能
带符号的二进制数据比较(=): SUB200/EQB
SUB201/EQW
SUB202/EQD
带符号的二进制数据比较(≠): SUB203/NEB
SUB204/NEW
SUB205/NED
带符号的二进制数据比较(>): SUB206/GTB
SUB207/GTW
SUB208/GTD
带符号的二进制数据比较(<): SUB209/LTB
SUB210/LTW
SUB211/LTD
带符号的二进制数据比较(≥): SUB212/GEB
SUB213/GEW
SUB214/GED
带符号的二进制数据比较(≤): SUB215/LEB
SUB216/LEW
SUB217/LED
- 182 -
PMC功能
1~4字节长度的二进制数据数值比较。
ACT
SUB200
EOB
W1
数据1(常数/地址)
数据2(常数/地址)
【控制条件】
ACT =1 : 执行指令。
【控制参数】
数据1
数据2
: 指定进行比较的1号数据的地址或者常数值
: 指定进行比较的2号数据的地址或者常数值
数据1和数据2可以为常数或用地址指定,编辑梯形图程序时,输入用数字构成的字符时,
视为数值,可用地址进行输入。
【输出】
如下条件时,W1输出为1
EQB,EQW,EQD
NEB,NEW,BED
GTB,GTW,GTD
LTB,LTW,LTD
GEB,GEW,GED
LEB,LEW,LED
1= 数据1=数据2
1= 数据1≠数据2
1= 数据1>数据2
1= 数据1<数据2
1= 数据1≥数据2
1= 数据1≤数据2
- 183 -
PMC功能
带符号的二进制数据比较(范围): SUB218/RNGB
SUB219/RNGW
SUB220/RNGD
判断1~4字节长度的二进制数据是否在指定范围内。
ACT
SUB218
RNGB
W1
数据1(常数/地址)
数据2(常数/地址)
输入数据(常数/地址)
【控制条件】
ACT =1 : 执行命令。
【控制参数】
数据1
数据2
输入数据
: 指定进行比较的1号数据的地址或者常数值。
: 指定进行比较的1号数据的地址或者常数值。
: 指定进行比较的数据的地址或者常数
数据1和数据2可以为常数或用地址指定,编辑梯形图程序时,输入用数字构成的字符时,
视为数值,可用地址进行输入。
【输出】
W1
=1:
比较数据1≤输入数据≤比较数据2
比较数据2≤输入数据≤比较数据1
除上以外 =0:
- 184 -
PMC功能
二进制数据检索:SUB34/DSCHB
检索指定数据表的数据,检索到后输出首地址。
和DSCH命令不同,数据值为二进制形式,数据表的数据用地址进行指定。
即使程序完成之后,也可以变更表容量。
RST
ACT
SUB34
DSCHB
W1(检索结果输出)
数据长度
数据表容量存储地址
数据表首地址
检索数据地址
检索结果输出地址
【控制条件】
RST
ACT
=1 : 检索结果W1输出为0
=1 : 执行命令。
【控制参数】
数据长度 : 指定检索数据长度(1,2,4)
数据表容量存储地址
: 指定存储数据表容量的地址。
根据指定字节长度分配所需字节数的存储区。
数据表首地址
: 设定数据表的表头地址
检索数据地址
: 设定检索数据输入地址
检索结果输出地址
: 经过检索,如果找到被检索数据,输出表内号至检索结果的地址。
【输出】
W1 : 没有找到待检索数据时输出W1为1。
- 185 -
PMC功能
数据检索:SUB17/DSCH
数据检索指令仅适用于PMC的数据表,DSCH指令在数据表中检索指定的数据,并输
出其表内号,如未找到指定数据,则输出W1为1。
BYT
RST
ACT
SUB17
DSCH
W1(检索结果输出)
数据表容量
数据表首地址
检索数据地址
检索结果输出地址
【控制条件】
BYT
=0 : 数据表中存储的数据为BCD两位
=1 : 数据表中存储的数据为BCD四位
=1 : 检索结果W1输出为0
=1 : 执行指令。
RST
ACT
【控制参数】
数据表容量
: 指定检索对象数据表大小。
数据表首地址
: 指定数据表的表头地址。
检索数据地址
: 设定检索数据输入地址。
检索结果输出地址
: 经过检索,如果找到被检索数据,输出表内号至检索结果的地址。
【输出】
W1 : 如若没有找到待检索数据,输出为1
- 186 -
PMC功能
演算命令
上升沿输出:SUB57/DIFU
取输入信号的上升沿,并在1个扫描周期内输出信号W1为1。
ACT SUB57
DIFU
W1(脉冲)
上升沿号(1~1000)
【控制条件】
ACT : 上升沿输出信号指定。
【控制参数】
上升沿号 : 指定上升沿输出指令的上升沿号
上升沿号的个数,根据PMC的不同而不同。
PMC类型
0i-D PMC
0i-D/0i Mate-D PMC/L
上升沿号
1到1000
1到256
上升沿输出DIFU和下降沿输出DIFD双方共用沿号,注意不要重复。
使用自动分配功能,可以将未使用的沿号自动分配,十分方便。
下降沿输出:SUB58/DIFD
取输入信号的上升沿,并在1个扫描周期内输出信号W1为1。
ACT SUB58
DIFD
W1(脉冲)
下降沿号(1~1000)
【控制条件】
ACT : 下降沿输出信号指定。
【控制参数】
下降沿号 : 指定下降沿输出指令的下降沿号。
- 187 -
PMC功能
下降沿号的个数,根据PMC的不同而不同。
PMC类型
0i-D PMC
0i-D/0i Mate-D PMC/L
下降沿号
1到1000
1到256
上升沿输出DIFU和下降沿输出DIFD双方共用沿号,注意不要重复。
使用自动分配功能,可以将未使用的沿号自动分配,十分方便。
异或运算:SUB59/EOR(XOR)
对指定的2个数据进行异或运算(XOR)。
ACT
SUB59
EOR
0 0
格式指定
被运算数据地址
运算数据(常数/地址)
运算结果输出地址
【控制条件】
ACT =1 : 执行指令。
【控制参数】
格式指定
□ =0 : 运算数据为常数
=1 : 运算数据为地址指定
: 指令运算数据字节长度(1,2,4) △
被运算输入数据
: 由此地址开始并且数据长度和格式指定中一致的数据作为输入数
据,是被异或的数据。
运算数据 : 由地址或者参数直接给出。
运算结果输出地址
: 用来存储异或操作后结果的地址。数据长度在格式指定中给出。
- 188 -
PMC功能
逻辑乘:SUB60/AND
将指定的的2种数据进行逻辑和AND操作,输出。
ACT
SUB60
AND
0 0
【控制条件】
ACT =1 : 执行指令。
格式指定
被运算数据地址
运算数据(常数/地址)
运算结果输出地址
【控制参数】
格式指定
□ =0 : 运算数据为常数
=1 : 运算数据为地址指定
: 指令运算数据字节长度(1,2,4) △
被运算输入数据
: 由此地址开始并且数据长度和格式指定一致的数据作为输入数
据,是被逻辑乘的数据。
运算数据 : 由地址或者参数直接给出。
运算结果输出地址
: 用来存储逻辑乘操作后结果的地址。数据长度在格式指定中给出。
逻辑或:SUB61/OR
将指定的的2种数据进行OR操作,输出。
ACT
SUB61
OR
0 0
格式指定
被运算数据地址
运算数据(常数/地址)
运算结果输出地址
- 189 -
PMC功能
【控制条件】
ACT =1 : 执行指令。
【控制参数】
格式指定
□ =0 : 运算数据为常数
=1 : 运算数据为地址指定
: 指令运算数据字节长度(1,2,4) △
被运算输入数据
: 由此地址开始并且数据长度和格式指定一致的数据作为输入数
据,是被逻辑或的数据。
运算数据 : 由地址或者参数直接给出。
运算结果输出地址
:用来存储逻辑或操作后结果的地址。数据长度在格式指定中给出。
逻辑非:SUB62/NOT
将指定地址的数据进行NOT运算,输出到运算结果输出地址。
ACT
SUB62
NOT
0 0 0
格式指定
被运算数据地址
运算结果输出地址
【控制条件】
ACT =1 : 执行指令。
【控制参数】
格式指定 : 指令运算数据字节长度(1,2,4)
被运算数据地址
: 被逐位取反的输入数据。
运算结果输出地址
: 用来存储逻辑非操作后结果的地址。数据长度在格式指定中给出。
- 190 -
PMC功能
奇偶校验:SUB11/PARI
对1个字节的指定数据进行奇偶校验,检测到不正常时输出错误报警。
O.E
RST
ACT
SUB11
PARI
W1(错误输出)
校验数据地址
【使用范例】
【输出】
W1
【控制参数】
校验数据地址
: 指定进行奇偶校验的数据的存储地址。
【控制条件】
OE
=0 : 偶校验
=1 : 奇校验
RST
ACT
=1 : 发生奇偶校验错误时,若RST=1,则输出W1=0
=1 : 执行奇偶校验命令。
: 在执行指令之后如果结果不正常,输出W1为1。
·X0.0接通时,该功能模块起效,且为奇效验。
·假设X10为00111010,由于1的数量为4个(偶数个),输出R0.0为1。
·假设X10为00111000,由于1的数量为3个(奇数个),输出R0.0为0。
- 191 -
PMC功能
寄存器移位:SUB33/SFT
该指令可使2个字节长的数据左移或者右移1位。当数据“1”在最左方(第15位)时
如果执行左移指令,或者数据“1”在最右方(第0位)执行右移指令时,输出W1为1。
DIR
CONTRST
ACT
SUB33
SFT
移位数据地址
W1
【控制条件】
DIR
=0 : 左移
=1 : 右移
CONT =0 : 向指令的方向偏移1位,每位的状态都被相邻位取代。
=1 : 向指令的方向偏移1位,保留原本状态是1的位状态。
=1 : 复位输出数据W1=0。
=1 : 执行移位指令。
RST
ACT
【控制参数】
移位数据地址
: 指定连续2个字节移位数据的首地址。
【输出】
W1
=0 : 移位操作后,没有“1”状态移出
=1 : 移位操作后,有“1”状态移出
- 192 -
PMC功能
代码变换命令
代码变换:SUB7/COD
在该命令的内置变换表中设置数值,表号(0~99)用2位BCD码指定,数据值写入变
换数据输出地址。所用数据均为BCD码表示。
BYT
RST
ACT
SUB7
COD
W1(错误输出)
变换数据数(0~99)
变换数据输入地址
变换数据输出地址
【控制条件】
BYT
=0 : 指定变换表中数据位BCD两位
=1 : 指定变换表中数据位BCD四位
=1 : 复位输出W1=0
=1 : 执行COD指令
RST
ACT
【控制参数】
变化数据数 : 指定变换的数据容量,范围为0~99。
变换数据输入地址
: 存储变换表数据,需要指定为1字节(2位BCD码)数据。
变换数据输出地址
: 变换完成之后,存储由数据表输出的数据。
【输出】
W1 : 执行COD指令时,如果转换输入地址出现错误,输出为1。
【使用范例】
如范例中所示:
当R100=0时,R200=10,
当R100=1时,R200=3,依次类推。
- 193 -
PMC功能
二进制代码转换:SUB27/CODB
在该命令的内置变换表中设置数值,表号(0~255)用二进制数据指定。
数据值写入变换数据输出地址。所用数据均为二进制码表示。
RST
SUB27
CODB
W1(错误输出)
格式指定
变换数据数(0~256)
变换数据输入地址
变换数据输出地址
ACT
【控制条件】
RST
ACT
=1 : 复位输出W1=0
=1 : 执行COD指令。
【控制参数】
格式指定 : 指定变换数据长度(1,2,4字节)
变化数据数 : 指定变换的数据容量,范围为0~256。
变换数据输入地址
: 变换表的数据可以根据指定表号取出,存储变换表表号的地址称
为变换数据输入地址,需要指定为1字节数据。
变换数据输出地址
: 变换完成之后,存储由数据表输出的数据。
【输出】
W1 : 执行CODB指令时,如果转换输入地址出现错误,输出为1。
- 194 -
PMC功能
数据转换:SUB14/DCNV
1或者2个字节的二进制数据和BCD数据间的互相转换。
BYT
CNV
RST
ACT
SUB14
DCNV
W1(错误输出)
输入数据地址
转换数据输出地址
【控制条件】
BYT
=0 : 处理数据长度为1个字节
=1 : 处理数据长度为2个字节
=0 : 二进制代码转换为BCD代码
=1 : BCD代码转换为二进制代码
=1 : 复位错误输出线圈W1,即此时W1=0
=1 : 执行DNCV指令
CNV
RST
ACT
【控制参数】
输入数据地址
: 指定待转换数据的存储地址
转换数据输出地址
: 指定转换完成之后数据的输出地址
【输出】
W1
: 当被转换数据应为BCD码数据但实际是二进制数据时,或者二进
制转换为BCD码数据转换数据超过预先指定的数据大小时,输出
W1=1。
- 195 -
PMC功能
扩展数据变换:SUB31/DCNVB
1~4字节长度的二进制代码和BCD代码之间的相互转换。
SIN
CNV
RST
ACT
【控制条件】
SIN
W1(错误输出)
数据长度
输入数据地址
转换数据输出地址
SUB31
DCNVB
=0 : 输入的BCD代码数据符号为正
=1 : 输入的BCD代码数据符号为负
=0 : 二进制代码转换为BCD代码
=1 : BCD代码转换为二进制代码
=1 : 复位错误输出线圈W1,即此时W1=0
=1 : 执行DNCV指令
CNV
RST
ACT
【控制参数】
数据长度 : 指定待转换数据的数据长度(1,2,4字节)
输入数据地址: 指定待转换数据的存储地址
转换数据输出地址
: 指定转换完成之后数据的输出地址
【输出】
W1 : 转换结果出错时输出
【运算结果】
确认二进制代码和BCD码转换时的符号和溢出状况。
#7
#6
#5
V
#4
#3
#2
#1
N
#0
R9000
V =1:溢出
N =0:符号为正
=1:符号为负
- 196 -
PMC功能
BCD译码:SUB4/DEC
两位BCD代码和给定定数据进行判定,一致时输出W1为1,不一致时输出为0。
ACT SUB4
DEC
n n d d
W1(结果)
BCD译码数据地址(1字节长)
译码指令
【控制条件】
ACT
=0 : 译码输出结果W1为0
=1 : 执行译码指令
【控制参数】
BCD译码数据地址
: 指定1字节长BCD译码数据的存储地址
: 指定译码相关的数据和译码位数
nndd nn指定译码值
dd译码位数指定 01 = 只译低位,高位为0
10 = 只译高位,低位为0
11 = 高低位均译
译码指令
【输出】
W1
: ACT为1时,当指定的BCD译码数据地址中的数据和译码值相
同时,输出W1为1,不相同时输出为0。
ACT为0时,输出W1为0
【使用范例】
- 197 -
PMC功能
范例中为对M代码进行译码操作,当NC执行M辅助功能指令时,F7.0为1时,
该指令生效。
·该指令同时只能对一个给定数据进行译码
·范例为对M3进行译码的梯形图
·当执行M3指令时,此时译码输出F10中为3,输出R0.0=1
·DEC功能代码中的数据位BCD码,所以如果对M10及其以上的M代码进
行译码时,由于F10为二进制形式,所以必须先进行数据转换,将F10转
换为BCD码格式,再进行译码操作。
二进制译码:SUB25/DECB
1~4字节的二进制代码数据译码,所指令的连续8位数据之一与待译码数据相同时,
输出对应位为1。
ACT
SUB25 0 n n d
DECB
【控制参数】
格式指定
: 指定1~4字节长二进制译码数据的存储首地址
0nnd
d 代表待译码数据的字节长度(1,2,4字节)
【控制条件】
ACT
=0 : 将所有输出复位为0
=1 : 执行译码指令
格式指令
译码数据地址
译码指定
转换数据输出地址
nn 代表组数(指定为0时,视为1组8个)
译码数据地址
: 指定1~4字节二进制译码数据的首地址
: 给出要译码的连续8个数字的第一个 译码指定
译码数据输出地址
: 指定译码数据的输出地址
每组使用1个字节
- 198 -
PMC功能
#7
输出地址+0
+1
+2
·
·
+7
+15
+23
·
·
#6
+6
+14
+22
·
·
#5
+5
+13
+21
·
·
#4
+4
+12
+20
·
·
#3
+3
+11
+19
·
·
#2
+2
+10
+18
·
·
#1
+1
+9
+17
·
·
#0
+0
+8
+16
·
·
+98
+791 +790 +789 +788 +787 +786 +785 +784
【使用范例】
范例为对M代码进行译码操作,当系统收到M辅助功能指令时,F7.0为1时,该
指令生效。
·F10为系统M代码输出地址
·该译码指令对从M3~M10的连续8个M代码进行译码
·译码输出地址位为R10,且R10同时仅有一位为1
·比如当指令M3时,R10.0=1,指令M4时,R10.1=1,对应关系如下:
R10
#7
M10
#6
M9
#5
M8
#4
M7
#3
M6
#2
M5
#1
M4
#0
M3
- 199 -