1. 玻璃盘CCD影像筛选机系统概述
这套玻璃盘CCD影像筛选机系统是典型的工业视觉检测解决方案,核心由5套高精度CCD视觉系统、旋转玻璃盘传输机构、工控上位机及IO信号转换模块组成。我在自动化检测行业深耕12年,经手过上百套类似系统,但这款设备的程序架构确实有其独到之处——通过多相机协同采样的方式,实现了对小型零部件360度无死角检测,这在手机精密件检测领域尤为关键。
系统工作时,玻璃盘以恒定转速承载被测物件依次通过5个工位。每个CCD相机配置专用环形光源,以15fps的采集频率获取产品特征图像。上位机通过千兆网口接收图像数据后,采用多线程并行处理机制,单个检测周期可控制在200ms以内。最终通过PCIe-1756数字IO板输出12路光耦隔离信号,直接对接PLC控制系统。
关键设计要点:玻璃盘材质必须选用钢化光学玻璃,厚度不低于8mm以保证平面度。我们曾因使用普通玻璃导致成像畸变,更换后误判率直接下降60%。
2. 多CCD视觉系统协同方案
2.1 相机选型与布局
系统采用500万像素的Basler ace系列工业相机,搭配Computar 35mm定焦镜头。5台相机呈72度等分圆周布置,这种"五等分梅花阵"布局是我在汽车轴承检测项目中验证过的成熟方案。每台相机视野重叠率控制在15%-20%,既避免漏检又防止重复处理。
相机参数配置要点:
- 曝光时间:800μs(需与玻璃盘转速严格同步)
- 增益值:18dB(需配合光源亮度动态调整)
- 白平衡:固定5500K色温模式
2.2 触发同步机制
通过PLC发送的编码器Z相信号作为全局触发源,采用星型拓扑连接各相机触发端口。这里有个实战经验:务必在触发线缆上加装磁环,我们曾因电磁干扰导致3号相机随机丢帧,后来用TDK ZCAT2035-0930磁环彻底解决问题。
触发时序配置表:
| 信号类型 | 延迟时间 | 脉宽 | 来源 |
|---|---|---|---|
| 编码器Z相 | 0ms | 1ms | 伺服电机 |
| 相机1触发 | 2ms | 100μs | 工控机 |
| 相机2触发 | 2.5ms | 100μs | 工控机 |
| ... | ... | ... | ... |
3. 上位机软件架构解析
3.1 开发环境搭建
采用VS2019+C# WinForm开发,核心图像处理库使用Halcon 18.11。这里要特别注意:必须安装Halcon的Runtime和Development双版本,我们吃过只装Runtime导致算子无法调用的亏。
关键NuGet包:
- OpenCvSharp4 (v4.5.3)
- Newtonsoft.Json (v13.0.1)
- NationalInstruments.DAQmx (v19.1.0)
3.2 多线程处理模型
主程序采用生产者-消费者模式,创建6个优先级线程:
- 图像采集线程(实时优先级)
- 图像预处理线程×2
- 缺陷检测线程×2
- 结果输出线程
线程间通过BlockingCollection实现数据传递,缓冲区大小设为50帧。实测表明:当缓冲区超过80帧时,工控机内存会突破16GB导致交换延迟。
4. IO通讯与PLC交互
4.1 信号转换方案
选用研华PCIe-1756数字IO卡,其核心优势是支持中断触发模式。通过74HC245芯片做电平转换,将3.3V TTL信号转为24V PLC信号。特别注意:输出端必须加装TVS二极管防护,我们曾因继电器反电动势烧毁过IO通道。
接线规范:
- OK信号:CH0-CH5(共6路)
- NG信号:CH6-CH11(共6路)
- 急停信号:CH12(常闭触点)
4.2 通讯协议设计
自定义基于Modbus RTU的简化协议:
csharp复制// 报文结构示例
byte[] frame = new byte[] {
0x01, // 设备地址
0x10, // 功能码
0x00, 0x02, // 起始地址
0x00, 0x0C, // 数据长度
0x24, // 字节计数
// 12字节数据区
0x01, 0x00, 0x00, 0x01, // OK信号
0x00, 0x01, 0x00, 0x00, // NG信号
0x55, 0xAA, // 校验位
0x0D, 0x0A // 结束符
};
5. 系统调优与故障排查
5.1 检测精度优化
通过灰度值直方图分析设定动态阈值:
halcon复制* Halcon脚本示例
read_image (Image, 'part1.tif')
get_domain (Image, Domain)
reduce_domain (Image, Domain, ImageReduced)
threshold (ImageReduced, Regions, 80, 255)
connection (Regions, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 500, 99999)
5.2 典型故障处理
- 图像模糊:检查玻璃盘平面度(需≤0.1mm/m)
- 信号不同步:用示波器测量触发脉冲时序
- 误判率高:重新标定光源亮度(建议15000-18000lux)
- 通讯中断:检测DB9接头焊点是否氧化
我在东莞某电子厂实施时遇到个经典案例:每天上午10点准时出现误判,最后发现是厂房顶棚玻璃透射的阳光干扰。加装遮光罩后,CPK值从1.0提升到1.67。
