!-------------------------------------------------
! 程序名:CAM_COMP_MAIN
! 功能:视觉补偿抓取主程序
! 作者:根据需求编写
! 日期:2025-12-08
!-------------------------------------------------
! 1. 初始化与准备
R[100] = 0 ! 清除补偿成功标志
UFRAME_NUM = 1 ! 使用工件用户坐标系 (根据实际情况设置)
UTOOL_NUM = 1 ! 使用正确的工具坐标系 (根据实际情况设置)
! 2. 移动至拍照等待位置 (安全点)
J P[1] 100% FINE
! 3. 触发视觉系统拍照 (通过DO信号)
DO[1] = ON ! 发送拍照触发信号给相机
WAIT DI[1] = ON ! 等待相机返回"拍照完成"信号 (DI[1])
DO[1] = OFF ! 复位触发信号
! 4. 等待并接收视觉补偿数据 (假设通过GI信号组传入)
! 这里假设视觉系统将处理好的X, Y, Z, R偏移量通过GI[11]-GI[14]发送
WAIT GI[11] > 0 OR GI[11] < 0 TIMEOUT LBL[TIMEOUT_ERR] ! 等待X方向有数据
! 5. 数据转换与存储到PR寄存器
! 5.1 将GI值(整数)转换为浮点数的毫米/度单位,存入R寄存器
R[201] = GI[11] * 0.01 ! X补偿,假设比例因子是0.01mm/计数
R[202] = GI[12] * 0.01 ! Y补偿
R[203] = GI[13] * 0.01 ! Z补偿
R[204] = GI[14] * 0.1 ! Rz旋转补偿,假设比例因子是0.1度/计数
! 5.2 将补偿值写入位置寄存器PR[100](作为偏移量使用)
PR[100, 1] = R[201] ! X
PR[100, 2] = R[202] ! Y
PR[100, 3] = R[203] ! Z
PR[100, 4] = 0 ! W (通常不用)
PR[100, 5] = 0 ! P (通常不用)
PR[100, 6] = R[204] ! R
R[100] = 1 ! 置位补偿数据就绪标志
! 6. 执行视觉补偿抓取
! 6.1 移动至抓取点上方 (安全点)
L P[2] 800mm/sec FINE
! 6.2 使用Offset指令,将PR[100]中的补偿值附加到基准抓取点P[3]上
L P[3] 250mm/sec FINE Offset, PR[100]
! 6.3 执行抓取动作 (闭合手爪)
DO[2] = ON
WAIT 0.5(sec)
! 6.4 抬升至安全点
L P[2] 500mm/sec FINE
! 6.5 后续放置等逻辑...
! ...

! 7. 程序正常结束
R[100] = 0
END
!-------------------------------------------------
! 错误处理标签
!-------------------------------------------------
LBL[TIMEOUT_ERR]
! 视觉数据接收超时处理
UALM[1] = ON ! 触发用户报警
R[100] = 0
HALT
注意发那科机器人组输出最大16位,也就是最大数是65535,相机坐标给PLC需要除以100