! 程序名称:VISION_COMP
! 功能:读取视觉系统发送的偏移量,并修正目标抓取位姿
! 输入:
! - GI11-GI14:视觉系统发送的原始补偿值(整数)
! - PR249:预设的理论抓取目标位姿
! - R200:状态与误差代码寄存器
! 输出:
! - PR249:补偿后的实际抓取位姿
! - PR250:Z高度分离的安全点(X,Y,W,P,R与理论点相同,Z为补偿后高度)
! - R200:执行状态(0=正常,-1=错误)
! 使用:在需要视觉补偿的抓取或装配指令前调用此程序
! ------------------------------------------------------------
! -- 1. 读取并转换视觉数据 --
R201 = GI11 * 0.01 ! X补偿,单位:mm (假设系数0.01mm/计数)
R202 = GI12 * 0.01 ! Y补偿,单位:mm
R203 = GI13 * 0.01 ! Z补偿,单位:mm
R204 = GI14 * 0.1 ! Rz旋转补偿,单位:度 (假设系数0.1°/计数)
需要写程序联系17372176505
! -- 2. (可选)数据有效性检查:防止视觉信号异常导致过大位移 --
! 定义允许的最大补偿范围(根据您的应用场景调整以下值)
R210=20 ! 最大允许X/Y补偿(mm)
R211=10 ! 最大允许Z补偿(mm)
R212=15 ! 最大允许旋转补偿(度)
IF (ABS(R201) > R210) OR (ABS(R202) > R210) THEN
R200 = -1 ! 设置错误代码:X/Y补偿超限
JUMP LABEL99 ! 跳转到错误处理
ENDIF
IF ABS(R203) > R211 THEN
R200 = -2 ! 设置错误代码:Z补偿超限
JUMP LABEL99
ENDIF
IF ABS(R204) > R212 THEN
R200 = -3 ! 设置错误代码:旋转补偿超限
JUMP LABEL99
ENDIF

! -- 3. 封装补偿值到偏移寄存器PR248 --
PR248 = P0 ! 将PR248初始化为全零位置点
PR248,1 = R201 ! 设置X偏移
PR248,2 = R202 ! 设置Y偏移
PR248,3 = R203 ! 设置Z偏移
PR248,6 = R204 ! 设置绕Z轴(Rz)旋转偏移
! -- 4. 核心:在正确的坐标系下应用偏移 --
! ':+' 指令将在 PR249 自身的坐标系下叠加 PR248 的偏移量
PR249 = PR249 :+ PR248
! -- 5. 生成Z高度分离的安全点(用于安全移动)--
! 将补偿后的Z值赋予安全过渡点,同时保持其他坐标与理论点一致
PR250 = PR245 ! 假设PR245是预设的、仅XY不同的安全平面点
PR250,3 = PR249,3 ! 仅更新其Z坐标为补偿后的抓取高度
R200 = 0 ! 设置执行成功代码
JUMP LABEL100 ! 跳转到程序正常结束
! -- 6. 错误处理段 --
LABEL99
! 此处可添加具体的错误处理动作,如报警、记录日志、移动到安全位置等
! UALM1 ! 触发用户报警(示例)
! -- 7. 程序结束 --
LABEL100
! 程序执行完毕,返回主程序
END
最好把视觉标定位置写后台程序,标定位置的值大如果不行就需要PLC那边接受到GO输出除以100,或者机器人发之前除以100