玻璃转盘式 CCD 检测中,产品位置识别的核心逻辑是 “转盘定位基准 + CCD 视觉定位补偿”,通过机械定位保证粗精度,视觉定位修正偏差,最终实现产品在检测区域的精准坐标锁定。以下是 3 种主流实现方案 + 具体落地步骤,结合工业场景(如瓶盖、电子元件检测)直接应用:
一、核心原理:为什么需要 “机械 + 视觉” 双重定位?
二、3 种产品位置识别方案(按精度从低到高)
方案 1:机械定位销 + 光电传感器(低成本粗定位,精度 ±0.1~0.3mm)
适用于对检测精度要求不高(如外观缺陷检测、尺寸公差 ±0.1mm 以上)的场景,依赖机械结构和简单传感器实现位置触发。
1. 硬件组成
2. 工作流程(落地步骤)
3. 关键优化
方案 2:编码器定位 + CCD 视觉校准(中精度,精度 ±0.05~0.1mm)
适用于转盘转速较高(如 60rpm)、机械定位误差无法满足检测需求的场景,通过编码器实时反馈转盘位置,结合 CCD 视觉修正偏差。
1. 硬件组成
2. 工作流程(落地步骤)
3. 核心代码片段(PLC / 运动控制器逻辑)
ladder
// 编码器脉冲累计与工位触发(三菱PLC示例) LD M0(运行使能) SPD X0 K100 D200 // 读取编码器(X0)脉冲频率,计算转速(D200) LD M0 ADD D201 K1 D201 // D201=编码器脉冲累计值,每触发1次加1 CMP D201 D100 M10 // 累计脉冲=工位脉冲数(D100=41)时,M10=ON LD M10 RST D201 // 脉冲累计值清零 OUT Y0 K50 // 转盘减速停止(Y0=电机减速信号,保持500ms) LD M10 AND X1(减速到位) SET M11(触发CCD拍照) // 视觉偏差接收与补偿触发 LD M12(拍照完成) MODRD K2 K9600 K0 K10 D101 M20 // 读取视觉模块(从站2)偏差值ΔX(D101)、ΔY(D102)、Δθ(D103) LD M20(读取成功) MOV D103 D104 // Δθ转换为编码器补偿脉冲(如Δθ=0.5°,1024脉冲/360°≈1.45脉冲,存入D104) DDRVI D104 K500 Y1 Y2 D0 // 转盘微调补偿(Y1=脉冲,Y2=方向)
方案 3:机器视觉 + 伺服电机闭环定位(高精度,精度 ±0.01~0.05mm)
适用于高精密检测场景(如微型电子元件尺寸测量、玻璃基板缺陷检测),完全依赖视觉定位和伺服电机闭环控制,消除机械误差影响。
1. 硬件组成
2. 工作流程(落地步骤)
3. 关键技术:视觉特征提取与偏差计算(Halcon 示例代码)
python
运行
# 读取CCD图像read_image(Image, 'product_image')# 提取产品特征(以圆形产品为例,找圆心)dev_close_window ()dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)threshold (Image, Region, 128, 255) # 二值化处理connection (Region, ConnectedRegions)select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 1000, 10000) # 筛选产品区域gen_circle_contour_xld (Circle, Row, Column, Radius, 0, 6.28318, 'positive', 1)area_center (SelectedRegions, Area, Row, Column) # 得到产品实际圆心坐标(Row=Y_current,Column=X_current)# 计算偏差(基准圆心坐标Row0、Column0已标定存入)Delta_X := Column - Column0
Delta_Y := Row - Row0# 旋转偏差计算(以产品边缘特征点为例)gen_contour_region_xld (Contour, SelectedRegions, 'border')fit_line_contour_xld (Contour, 'tukey', -1, 0, 5, 2, RowBegin, ColBegin, RowEnd, ColEnd, Nr, Nc, Dist)Angle := atan2(Nr, Nc) # 实际旋转角度Delta_Theta := Angle - Angle0 # 旋转偏差# 发送偏差值给运动控制器(通过Modbus TCP)open_modbus_tcp ('192.168.1.100', 502, 1, 0, Handle)write_modbus_register (Handle, 1, 100, Delta_X, Status) # 写入ΔX到寄存器100write_modbus_register (Handle, 1, 101, Delta_Y, Status) # 写入ΔY到寄存器101write_modbus_register (Handle, 1, 102, Delta_Theta, Status) # 写入Δθ到寄存器102三、3 种方案对比与选型建议(直接落地参考)
| 方案类型 | 精度范围 | 成本 | 适用场景 | 核心优势 |
|---|---|---|---|---|
| 机械定位销 + 光电传感器 | ±0.1~0.3mm | 低(<5000 元) | 低精度外观检测(如瓶盖划痕、标签缺失) | 结构简单、维护成本低、响应快 |
| 编码器 + CCD 视觉校准 | ±0.05~0.1mm | 中(1~3 万元) | 中等精度检测(如电子元件尺寸测量、电池极片缺陷) | 兼顾成本与精度、适配中高速转盘 |
| 视觉 + 伺服闭环定位 | ±0.01~0.05mm | 高(3~8 万元) | 高精度检测(如微型零件、玻璃基板、半导体芯片) | 定位精度高、抗机械误差能力强 |


