3. 图像采集与生产批次绑定
在质量追溯系统中,图像本身只是“证据”,真正让证据具备追溯价值的是它与生产批次的绑定关系。如果一张缺陷图像无法回答“它属于哪个工单、哪一批次、哪一刻生产、由哪台相机拍摄”,那么后续的缺陷统计、SPC 分析和客户追溯都会失去意义。本节围绕 HALCON 图像采集链路,讲清楚从相机接口到元数据落库的完整实现方法。
相机接口与采集算子
HALCON 通过统一的图像采集接口(Image Acquisition Interface)屏蔽不同厂商相机的差异。常用接口包括 GigEVision、GenICamTL、USB3Vision、DirectShow 等,工业场景中以 GigE Vision 和 GenICam 传输层最为常见。采集流程遵循固定范式:先 open_framegrabber 打开设备,再 grab_image 或 grab_image_async 取图,最后 close_framegrabber 释放资源。
open_framegrabber ('GigEVision2', 0, 0, 0, 0, 0, 0, 'progressive',
-1, 'default', -1, 'false', 'cam_01', 0, -1, AcqHandle)
grab_image_async (Image, AcqHandle, -1)
* 处理图像 ...
close_framegrabber (AcqHandle)
其中 grab_image_async 的最后一个参数是超时时间(毫秒),设为 -1 表示无限等待。生产线上更推荐异步采集配合双缓冲,避免取图阻塞处理线程。相机参数如曝光 ExposureTime、增益 Gain、触发模式 TriggerMode 可通过 set_framegrabber_param 在打开后设置。
触发与时间戳
产线相机通常工作在硬件触发模式:光电传感器或 PLC 发出上升沿信号,相机曝光取图。相比软触发,硬触发能保证图像与工件位置严格对应。在 HALCON 中设置 TriggerMode='On'、TriggerSource='Line0' 即可启用外部触发。
时间戳是批次绑定的关键字段。它有两个来源:一是相机内部硬件时间戳(GevTimestampTickFrequency 相关),精度高但需与系统时钟对齐;二是主机侧采集时刻,通过 count_seconds 或系统 API 获取。生产追溯建议以主机侧 UTC 时间戳为准,并记录相机时间戳作为辅助校验。两者偏差超过阈值(例如 50 ms)时应记录告警,提示时钟同步异常。
批次号与工单号注入
批次号(BatchID)和工单号(WorkOrder)通常来自 MES 或上位机,不会由相机产生。常见注入方式有三种:
- PLC 信号映射:MES 下发工单后,PLC 将批次号写入寄存器,采集程序通过
read_framegrabber_param或 OPC UA 读取,与当前图像关联。 - 文件/数据库轮询:采集程序定时查询共享表或本地文件,获取当前活跃工单。
- 消息队列推送:MES 通过 MQTT/Kafka 推送换批事件,采集程序订阅并更新内存中的批次上下文。
无论哪种方式,都必须处理“换批瞬间”的边界问题:换批信号到达时,可能仍有在途图像属于旧批次。稳妥做法是给每张图像打上采集时间戳,再根据换批生效时间戳判断归属,而不是简单地用“当前批次”覆盖。
图像元数据组织
一张可追溯图像应携带以下元数据:图像 ID、采集时间戳、相机编号、工位号、批次号、工单号、产品序列号(若有)、曝光/增益参数、触发序号、图像文件路径或数据库主键。HALCON 本身不存储这些业务字段,通常做法是采集后立即写入数据库或结构化文件(如 JSON/CSV),图像文件按 批次号/日期/工单号/ 目录归档。
BatchID_WorkOrder_Station_Timestamp_Seq.png 格式,即使数据库暂时不可用,也能从文件名恢复基本追溯信息。采集异常与重采策略
采集异常主要包括:超时无图、图像全黑/过曝、触发丢失、相机掉线、传输丢包。HALCON 中 grab_image_async 超时会抛出异常,需用 try...catch 捕获并记录错误码。对于图像质量问题,可用 min_max_gray 检查灰度范围,若动态范围过小则判定为无效图像。
重采策略应分级处理:单次超时先重试 1~2 次;连续失败则切换备用相机或报警停线;图像质量不合格时,若工件仍在工位可立即重采,若已流走则标记该工件为“无有效图像”,进入人工复检队列。所有重采动作都要记录重采次数和原因,避免用重采掩盖设备稳定性问题。
把上述环节串起来看,采集程序的核心职责不是“取到图”,而是“取到一张身份明确、质量可信、可被追溯的图”。批次号注入解决身份问题,时间戳解决时序问题,元数据组织解决存储问题,异常与重采策略解决可信问题。四者缺一,追溯链就会在某个环节断裂。