FANUC 机器人通过 PR 位置寄存器(Position Register) 实现相机引导焊接,核心是:相机算出焊缝偏移 → 数据写入 PR → 程序用 PR 偏移修正原路径。下面从原理、流程、通信、标定、编程到完整示例,详细说明实现方法。
一、PR 寄存器基础(关键)
PR[i]:FANUC 用来存 6D 位姿(X/Y/Z/W/P/R) 的可读写寄存器。
用途:
存固定点(HOME、焊接起点)
存视觉偏移量 / 目标位姿(相机引导核心)
做位置运算:PR[10]=PR[1]+PR[2]、PR[5,3]=PR[5,3]+10(Z+10mm)
格式:笛卡尔(POS)/ 关节(JNT),视觉引导用 笛卡尔(世界 / 用户坐标)。
二、整体架构:相机 → PR → 机器人
1. 硬件与通信
相机方案:
FANUC iRVision(内置,最稳)
第三方视觉(基恩士、康耐视、国产)+ 工控机
通信方式:
EtherNet/IP(最常用):视觉 → 机器人 GI 组输入(32bit / 组)
TCP Socket(KAREL):传完整 XYZWPR 字符串
Profinet/ProfiBus
信号约定(示例):
DO [1]=ON:机器人 触发拍照
DI [1]=ON:相机 数据有效
GI [1]~GI [6]:X/Y/Z/W/P/R 偏移(整数,需转 mm/°)
2. 坐标标定(必须做)
Eye To Hand(相机固定)/ Eye In Hand(相机装腕部) 都要做:
手眼标定:得到相机坐标 ↔ 机器人坐标的转换矩阵
工具坐标系(TCP):标定焊枪尖端
用户坐标系(UFRAME):工件 / 焊缝基准
标定结果存在:
iRVision:自动存在内部寄存器
第三方:标定文件 + 机器人 PR 基准点
三、相机引导焊接标准流程(含 PR)
1. 示教基准程序(无视觉)
示教一条理想焊缝路径:P[1]→P[2]→P[3]
把基准起点存入 PR [1](基准点)
2. 视觉拍照与数据读取
plaintext
! 1. 移动到拍照安全位
L P[0] 500mm/s FINE
! 2. 触发相机
DO[1]=ON
WAIT DI[1]=ON TIMEOUT LBL[ERR] ! 等数据有效
DO[1]=OFF
! 3. GI → R寄存器(单位转换:0.01mm/bit)
R[1]=GI[1]*0.01 ! X偏移
R[2]=GI[2]*0.01 ! Y偏移
R[3]=GI[3]*0.01 ! Z偏移
R[4]=GI[4]*0.1 ! W旋转
R[5]=GI[5]*0.1 ! P旋转
R[6]=GI[6]*0.1 ! R旋转
3. 偏移写入 PR(核心)
plaintext
! 方法A:偏移量 PR[10]
PR[10]=LPOS ; 清0
PR[10,1]=R[1] ; X
PR[10,2]=R[2] ; Y
PR[10,3]=R[3] ; Z
PR[10,4]=R[4] ; W
PR[10,5]=R[5] ; P
PR[10,6]=R[6] ; R
! 方法B:直接生成目标点 PR[20]
PR[20]=PR[1] ; 基准点
PR[20,1]=PR[20,1]+R[1] ; X+偏移
PR[20,2]=PR[20,2]+R[2] ; Y+偏移
PR[20,3]=PR[20,3]+R[3] ; Z+偏移
4. 带 PR 偏移的焊接运动
plaintext
! 方案1:整体偏移(推荐)
L PR[1]+PR[10] 300mm/s FINE ; 偏移起点
ARC ON
L PR[2]+PR[10] 200mm/s FINE ; 偏移路径
L PR[3]+PR[10] 200mm/s FINE
ARC OFF
! 方案2:直接走视觉目标点
L PR[20] 300mm/s FINE
ARC ON
L PR[21] 200mm/s FINE
L PR[22] 200mm/s FINE
ARC OFF
5. 循环 / 质量检查
plaintext
LBL[10]
! 拍照→PR偏移→焊接
IF DI[2]=ON ; 不合格
JMP LBL[10] ; 重拍
ENDIF
四、iRVision(原生)+ PR 写法(更简洁)
plaintext
! iRVision触发
VISION RUN_SNAP 1 ; 任务1
VISION GET_OFFSET 1,PR[10] ; 偏移→PR[10]
! 焊接
L P[1]+PR[10] 300mm/s FINE
ARC ON
L P[2]+PR[10] 200mm/s FINE
ARC OFF
五、KAREL 高级用法(Socket 读视觉)
plaintext
! KAREL接收视觉XYZWPR并写入PR[50]
PROGRAM VIS_RECV
VAR
STATUS:INTEGER
BUF:STRING[64]
X,Y,Z,W,P,R:REAL
POS:XYZWPR
BEGIN
OPEN TCP_CLIENT '192.168.1.100',5000,STATUS
READ BUF,STATUS
! 解析"X10.2,Y-5.0,Z0.5,W0,P0,R0"
PARSE BUF,X,Y,Z,W,P,R
POS.X=X
POS.Y=Y
POS.Z=Z
POS.W=W
POS.P=P
POS.R=R
SET_POS_REG(50,POS,STATUS) ; 写入PR[50]
END
六、关键要点与常见问题
PR 坐标系一致
基准点、偏移、运动必须同坐标系(UFRAME/UTOOL)
单位转换
GI 是整数,必须乘系数(0.01mm/0.1°)
偏移叠加规则
PR[目标]=PR[基准]+PR[偏移]
故障处理
超时、数据异常、PR 未初始化
精度
标定 + 重复定位 + 滤波→±0.1mm 级
七、完整 TP 程序示例(可直接套用)
plaintext
! PR[1]=基准起点
! PR[10]=视觉偏移
! R[1~6]=偏移量
! DI[1]=视觉有效
! DO[1]=触发
! UFRAME[1]=工件坐标
! UTOOL[1]=焊枪
L P[0] 500mm/s FINE ; 安全位
DO[1]=ON
WAIT DI[1]=ON TIMEOUT LBL[ERR]
DO[1]=OFF
# 数据转换
R[1]=GI[1]*0.01
R[2]=GI[2]*0.01
R[3]=GI[3]*0.01
R[4]=GI[4]*0.1
R[5]=GI[5]*0.1
R[6]=GI[6]*0.1
# 偏移→PR[10]
PR[10]=LPOS
PR[10,1]=R[1]
PR[10,2]=R[2]
PR[10,3]=R[3]
PR[10,4]=R[4]
PR[10,5]=R[5]
PR[10,6]=R[6]
# 焊接
L PR[1]+PR[10] 300mm/s FINE
WAIT 0.2
ARC ON
L PR[2]+PR[10] 200mm/s FINE
L PR[3]+PR[10] 200mm/s FINE
ARC OFF
WAIT 0.2
L P[0] 500mm/s FINE
JMP LBL[END]
LBL[ERR]
! 报警处理
LBL[END]
七、总结
PR 是视觉→机器人的数据桥梁:存偏移 / 目标位姿
流程:标定 → 拍照 → GI→R→PR → 偏移运动
两种模式:
基准 + 偏移:P[i]+PR[偏移](灵活)
直接目标:PR[视觉结果](简单)
稳定关键:标定、坐标系统一、单位转换、滤波、超时处理