1. 工业视觉与机器人协同的基础原理
在精密装配和分拣场景中,毫米级定位精度是刚需。康耐视相机就像机器人的"眼睛",通过Ethernet I/P协议将视觉数据实时传输给发那科机器人,形成闭环控制。这套系统最核心的优势在于硬件直连带来的低延迟——相比传统PLC中转方案,Ethernet I/P直连能减少30-50ms的通信延迟,这对于高速pick&place场景至关重要。
我曾在汽车零部件装配线上实测过,当传送带速度达到1.2m/s时,传统方案会因为通信延迟导致±0.5mm的定位误差,而直连方案能稳定控制在±0.1mm以内。这背后的技术关键在于网络同步机制:Ethernet I/P使用生产者/消费者模型,相机作为生产者持续广播数据,机器人作为消费者按固定周期(RPI)读取,避免了请求-响应模式带来的等待时间。
2. 硬件连接与网络配置实战
2.1 物理层连接要点
使用标准CAT6网线连接机器人控制柜的Port#1与相机千兆网口。这里有个坑我踩过——发那科某些型号的控制柜网口指示灯状态特殊:绿色常亮表示百兆连接,橙色闪烁才是千兆模式。如果发现相机端显示连接速度不足,建议优先检查网线质量,工业现场推荐使用带屏蔽层的M12接口网线。
2.2 机器人侧IP配置详解
进入发那科机器人示教器:
MENU → SETUP → NEXT → HOSTCOMM选择TCP/IP后按F3进入详细设置,这里有个关键细节:IP地址第三段必须与相机保持一致。例如相机IP设为192.168.10.100,那么机器人IP应配置为192.168.10.x(x≠100)。我曾遇到过因为IP段不一致导致PING通但Ethernet I/P无法建立连接的情况。
子网掩码建议保持255.255.255.0,除非网络拓扑特别复杂。实际项目中发现,某些厂区要求使用255.255.0.0的大子网,这时需要额外配置路由器参数。
3. Ethernet I/P参数深度解析
3.1 关键参数对照表
| 参数项 | 相机侧设置 | 机器人侧设置 | 典型值 |
|---|---|---|---|
| Vendor ID | EDS文件定义 | 必须匹配相机 | 1(Rockwell兼容) |
| RPI | 数据更新周期 | 请求周期 | 8-32ms |
| Input Size | 输出数据长度 | 输入寄存器大小 | 32-64字节 |
| Assembly Instance | 输出实例号 | 输入实例号 | 100/150 |
3.2 配置实操步骤
- 在示教器进入:
MENU → I/O → NEXT → EtherNet/IP - 将Enable设为FALSE后,把TYP切换为SCN(Scanner模式)
- 重点配置Connection1中的Product Code,这个值必须与相机EDS文件完全一致。有次调试时因为把"0xABCD"错输成"ABCD",导致设备反复报"Invalid Vendor/Product"错误。
配置完成后重启机器人,观察Status状态变化:PENDING→RUNNING表示成功。如果卡在PENDING超过1分钟,建议检查防火墙设置,工业设备常会禁用ICMP协议导致误判。
4. 视觉坐标系标定技巧
4.1 九点标定法实战
使用康耐视标配的棋盘格标定板时,建议采用3×3网格布局。具体操作:
- 用机器人TCP精确触碰标定板的9个角点
- 每个点记录两组数据:
- 机器人基坐标系下的机械坐标
- 相机输出的像素坐标
- 在VisionPro中运行"9点标定"工具,会自动计算转换矩阵
实测发现,标定精度与TCP精度强相关。建议先用尖锥工具做TCP四点法标定,误差控制在±0.05mm以内。有个取巧的方法:在标定板角点钻0.5mm小孔,用TCP尖端插入孔中定位,比表面接触精度更高。
4.2 像素当量计算
公式看似简单:
像素当量 = 实际物理尺寸 / 像素数量但要注意视野边缘的畸变校正。建议采用中心区域法:只在视野中央200×200像素区域测量,这样能避免镜头畸变影响。某次项目因忽略这点,导致边缘定位误差达到中心区域的3倍。
5. 机器人程序编写精髓
5.1 拍照触发逻辑优化
原始示例中的轮询等待(DI[39])效率较低,我改进后的方案:
1: DO[30]=ON ; 相机使能 2: WAIT DI[30]=ON TIMEOUT,LBL[ERR] ; 带超时检测 3: DO[31]=PULSE(0.5s) ; 脉冲触发代替电平触发 4: WAIT DI[31]=ON TIMEOUT,LBL[ERR] 5: WAIT DI[39]!=DI[39_PREV] ; 状态跳变检测 6: DI[39_PREV]=DI[39] ; 保存当前状态这个改进使得单次拍照周期从平均120ms降至80ms,关键点在于:
- 使用PULSE指令避免忘记复位
- 通过状态跳变检测替代轮询
- 增加超时处理防止死锁
5.2 坐标转换算法揭秘
偏移量处理中有个隐藏坑:二进制补码问题。当GI信号组表示负值时,直接除以1000会出错。正确做法:
IF DI[145]=ON THEN ; X负方向 R[21] = -(65536 - GI[1])/1000 ELSE R[21] = GI[1]/1000 END这是因为发那科机器人默认使用16位无符号整数传输,而负值实际以补码形式存在。曾经有个项目因此导致所有负偏移量计算错误,零件装配时出现批量反装事故。
6. 故障排查经验库
6.1 典型错误代码处理
| 错误代码 | 含义 | 解决方案 |
|---|---|---|
| SRVO-050 | Ethernet I/IP超时 | 检查RPI是否小于相机曝光周期 |
| INTP-312 | 数据格式错误 | 确认Input/Output大小单位为Words |
| SYST-067 | 通信中断 | 更换网线并禁用节能以太网 |
6.2 信号干扰排查
遇到DI信号偶发跳变时,按以下步骤排查:
- 用示波器检测24V电源纹波(应<200mV)
- 检查所有接地线阻抗(应<1Ω)
- 在DI信号线加磁环(推荐TDK ZCAT系列)
- 修改程序增加去抖动逻辑:
TIMER[1]=RESET WAIT DI[30]=ON TIMER[1]=START WAIT TIMER[1]>50ms IF DI[30]=ON JMP LBL[VALID]
7. 性能优化进阶技巧
7.1 双相机协同方案
对于大视野应用,可以采用主从相机架构:
- 主相机(全局定位):200万像素,视野500×400mm
- 从相机(精确定位):500万像素,视野50×40mm 程序流程:
1: CALL CAM_TRIG(1) ; 触发主相机 2: PR[10]=GET_OFFSET(1) ; 获取粗略位置 3: MOVJ PR[10] ; 移动到粗略位 4: CALL CAM_TRIG(2) ; 触发从相机 5: PR[10]=PR[10]+GET_OFFSET(2) ; 复合偏移这种方案在某手机零部件项目中,将定位精度从±0.2mm提升到±0.05mm。
7.2 动态RPI调整
常规固定RPI值在物体运动速度变化时会造成数据过时或冗余。通过以下逻辑实现动态调整:
R[10]=ABS(VR[1])/100 ; 获取当前速度(mm/ms) R[11]=CLAMP(R[10]*5, 8, 32) ; 计算RPI(5ms/mm) CALL SET_RPI(R[11]) ; 修改Ethernet I/P参数其中VR[1]是机器人实时速度寄存器。实测在变速搬运场景下,该方案可减少30%无效数据传输。