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

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