在制造业产线中不良品剔除是保证产品质量的关键环节。传统人工剔除方式存在效率低、易疲劳、漏检率高、人力成本逐年上升等问题已经无法满足现代工业高速、高精度的生产需求。本文将从硬件选型、模型训练、上位机开发、PLC联动到现场调试完整分享一套工业级智能剔除系统的落地经验。该系统已在多家工厂的食品、电子、汽配产线稳定运行超过1年检测速度可达120件/分钟剔除准确率99.8%以上。系统整体架构智能剔除系统采用视觉感知-决策控制-执行输出的三层架构各模块之间通过工业以太网通信保证数据传输的实时性和可靠性。工业相机C#上位机光电传感器YOLOv12推理引擎PLC控制器气缸剔除机构报警灯SQL Server数据库人机交互界面系统工作流程当产品经过光电传感器时触发工业相机拍照图像传输到上位机后由YOLOv12模型进行缺陷检测上位机根据检测结果判断是否为不良品并计算剔除延迟时间当产品到达剔除工位时上位机发送信号给PLCPLC控制气缸将不良品推入废料箱。硬件系统选型与搭建硬件选型直接决定了系统的最终性能工业现场环境复杂必须选择工业级设备。核心硬件清单工业相机海康威视MV-CA013-20GC130万像素全局快门支持千兆以太网镜头Computar M1214-MP212mm焦距手动光圈光源环形白色LED光源亮度可调PLC西门子S7-1200 1214C DC/DC/DC支持Modbus TCP通信剔除机构高速气缸电磁阀响应时间≤10ms光电传感器欧姆龙E3Z-D61漫反射式工控机研华IPC-610Li5-10400 CPU8GB内存无风扇设计硬件安装注意事项相机安装高度应保证视野覆盖整个产品且产品在视野中心位置光源应与相机同轴安装避免产生阴影影响检测效果光电传感器应安装在相机正前方确保产品完全进入视野时触发拍照剔除气缸应安装在相机下游距离根据产线速度计算一般为1-2米所有设备应可靠接地避免工业现场电磁干扰YOLOv12模型训练与C#端部署数据集制作工业场景下的数据集制作是模型训练的关键直接影响检测准确率。采集至少500张包含各种缺陷类型的产品图像使用LabelImg工具进行标注标注类别包括合格、“划痕”、“变形”、缺料等按8:1:1的比例划分训练集、验证集和测试集进行数据增强随机旋转、翻转、亮度调整、噪声添加等模型训练使用YOLOv12n模型进行训练该模型体积小、速度快非常适合工业边缘部署。yolo traindatadefect.yamlmodelyolov12n.ptepochs100imgsz640batch16训练完成后将模型导出为ONNX格式方便在C#中部署。yoloexportmodelbest.ptformatonnxopset12C#端部署使用Microsoft.ML.OnnxRuntime库进行模型推理支持CPU和GPU加速。publicclassYoloInference:IDisposable{privatereadonlyInferenceSession_session;privatereadonlystring[]_labels;publicYoloInference(stringmodelPath,string[]labels){varoptionsnewSessionOptions();options.AppendExecutionProvider_CPU(0);_sessionnewInferenceSession(modelPath,options);_labelslabels;}publicListDetectionResultDetect(Bitmapimage){// 图像预处理vartensorPreprocessImage(image);// 模型推理varinputsnewListNamedOnnxValue{NamedOnnxValue.CreateFromTensor(images,tensor)};usingvarresults_session.Run(inputs);varoutputresults.First().AsTensorfloat();// 后处理returnPostprocessOutput(output);}publicvoidDispose(){_session?.Dispose();}}这里有个容易踩的坑ONNX Runtime的InferenceSession是重量级对象不能频繁创建和销毁应该在程序启动时初始化一次程序退出时释放。C#上位机核心模块实现上位机采用WPF开发使用MVVM架构保证代码的可维护性和可扩展性。相机采集模块使用海康威视MVS SDK进行相机采集实现连续采集和触发采集两种模式。publicclassHikCamera:IDisposable{privatereadonlyIntPtr_handle;privatebool_isGrabbing;publiceventEventHandlerBitmapImageCaptured;publicvoidOpen(stringip){// 打开相机varstatusMVS.MV_CC_CreateDevice_NET(ref_handle,ip);if(status!MVS.MV_OK)thrownewException($打开相机失败错误码{status});// 设置触发模式MVS.MV_CC_SetEnumValue_NET(_handle,TriggerMode,1);MVS.MV_CC_SetEnumValue_NET(_handle,TriggerSource,7);// 软触发}publicvoidTriggerCapture(){if(!_isGrabbing)return;MVS.MV_CC_TriggerSoftwareExecute_NET(_handle);}publicvoidDispose(){if(_handle!IntPtr.Zero){MVS.MV_CC_StopGrabbing_NET(_handle);MVS.MV_CC_CloseDevice_NET(_handle);MVS.MV_CC_DestroyDevice_NET(_handle);}}}PLC通信模块使用Modbus TCP协议与PLC通信实现数据交换和控制指令发送。publicclassModbusTcpClient:IDisposable{privatereadonlyTcpClient_client;privateNetworkStream_stream;publicasyncTaskConnectAsync(stringip,intport502){_clientnewTcpClient();await_client.ConnectAsync(ip,port);_stream_client.GetStream();}publicasyncTaskWriteCoilAsync(ushortaddress,boolvalue){// 构造Modbus TCP报文varbuffernewbyte[12];// ... 报文构造代码省略await_stream.WriteAsync(buffer,0,buffer.Length);await_stream.ReadAsync(buffer,0,12);}publicvoidDispose(){_stream?.Dispose();_client?.Dispose();}}为了保证通信的可靠性需要实现心跳机制和断线自动重连功能。剔除逻辑控制模块剔除逻辑是系统的核心需要精确计算剔除延迟时间确保不良品准确被剔除。publicclassRejectionController{privatereadonlyModbusTcpClient_plc;privatereadonlydouble_conveyorSpeed;// 产线速度单位m/sprivatereadonlydouble_distance;// 相机到剔除气缸的距离单位mpublicasyncTaskRejectAsync(intproductId){// 计算剔除延迟时间vardelay_distance/_conveyorSpeed*1000;// 等待产品到达剔除工位awaitTask.Delay((int)delay);// 发送剔除信号给PLCawait_plc.WriteCoilAsync(0,true);awaitTask.Delay(50);// 气缸动作时间await_plc.WriteCoilAsync(0,false);}}这里需要注意产线速度可能会有波动应该通过编码器实时获取产线速度动态调整剔除延迟时间。工业级7x24小时稳定性优化工业现场要求系统能够7x24小时不间断运行稳定性是第一位的。多线程设计将不同的功能模块放在不同的线程中运行避免一个模块阻塞影响整个系统。相机采集线程负责图像采集模型推理线程负责缺陷检测PLC通信线程负责与PLC通信数据存储线程负责将检测结果写入数据库内存泄漏防治所有实现IDisposable接口的对象都要正确释放避免在循环中创建大量临时对象使用using语句自动释放资源定期检查内存使用情况及时发现内存泄漏异常处理机制为每个线程添加全局异常处理对所有可能出错的操作添加try-catch块记录详细的异常信息包括时间、模块、错误信息等系统出现异常时能够自动恢复不需要人工干预日志系统使用NLog日志库记录系统运行的所有关键信息方便问题排查。错误日志记录系统错误和异常操作日志记录用户的操作检测日志记录每个产品的检测结果现场调试与常见问题排查现场调试步骤硬件安装与接线检查相机参数调整保证图像清晰测试PLC通信是否正常测试剔除机构是否正常工作导入训练好的模型进行离线测试进行在线测试调整剔除延迟时间连续运行24小时观察系统稳定性常见问题与解决方案误检率高增加训练样本数量优化模型参数调整检测阈值漏检率高检查图像是否清晰调整光源亮度和角度增加缺陷类型的样本剔除不准精确测量相机到剔除气缸的距离实时获取产线速度调整剔除延迟时间通信中断检查网络连接是否稳定增加断线自动重连功能系统运行缓慢优化模型推理速度减少不必要的计算升级工控机配置系统运行效果该系统在某食品厂的饼干产线进行了部署产线速度为100件/分钟。检测速度120件/分钟满足产线需求检测准确率99.8%远高于人工的95%剔除准确率99.9%几乎没有误剔和漏剔系统稳定性连续运行30天无故障人力成本减少了2名质检工人每年节省人力成本约12万元总结与展望本文完整介绍了一套工业级智能剔除系统的落地过程从硬件选型、模型训练、上位机开发到现场调试分享了大量实际经验和踩坑心得。该系统具有成本低、部署快、准确率高、稳定性好等优点能够广泛应用于各种制造业产线。未来我们将继续优化系统性能引入多相机协同检测、3D视觉检测等技术提高系统的检测精度和适用范围。同时我们将结合边缘计算和云计算技术实现多产线数据的集中管理和分析为工厂的智能化升级提供有力支持。