
视觉系统的性能优化和异常处理核心矛盾是产线不能停。算法可以慢一点但系统不能崩相机可以掉线但必须能自己恢复。看门狗机制就是解决这个矛盾的关键。性能优化先定位瓶颈再对症下药第一步测量单帧各阶段耗时。用Stopwatch在采集、预处理、算法、通信各阶段打点找到真正的瓶颈。varswStopwatch.StartNew();varimagecamera.Grab(1000);longgrabMssw.ElapsedMilliseconds;sw.Restart();varresultProcess(image);longprocessMssw.ElapsedMilliseconds;sw.Restart();plc.WriteResult(result);longcommMssw.ElapsedMilliseconds;_logger.Info($采图:{grabMs}ms 处理:{processMs}ms 通信:{commMs}ms);第二步针对瓶颈优化。瓶颈优化手段采图慢硬触发替代软触发降低分辨率换更高带宽接口算法慢ROI 裁剪只处理感兴趣区域降采样多线程并行通信慢批量写入替代逐条写异步发送缩短超时UI 卡顿算法线程与 UI 线程分离图像显示降采样ROI 裁剪是最有效的优化。如果只关心图像中央 500×500 的区域就不要处理整幅 5000×5000 的图计算量直接降 100 倍。异常处理分层捕获逐级降级第一层通信异常。PLC 超时、MES 断连、相机掉线。通信层捕获异常后记录日志触发重连向上层返回OperateResult失败状态不抛异常。第二层算法异常。图像为空、模板匹配失败、拟合点数不足。算法层捕获后返回VisionResult { IsOk false, Reason ... }让业务层决定是报警还是放行。第三层业务异常。连续 NG 超过阈值、良率低于下限。业务层触发报警通知操作员介入。try{varimagecamera.Grab(1000);if(imagenull)returnVisionResult.Fail(采图超时);varresultProcess(image);if(!result.IsOk_consecutiveNg10)_alarm.Raise(连续NG超过10次);returnresult;}catch(Exceptionex){_logger.Error(ex,检测流程异常);returnVisionResult.Fail($系统异常:{ex.Message});}关键原则异常不能导致系统崩溃。任何一个环节失败都要有降级路径——采图失败就跳过这一帧算法失败就返回 NG通信失败就入队补传。看门狗机制系统的“心跳监护仪”看门狗的核心是定期检查关键组件的健康状态发现异常时自动恢复。工业视觉系统通常监控三类对象相机看门狗定期检查相机是否在线、是否在出图。如果超过 N 秒没有新帧判定为掉线触发重连。privateDateTime_lastFrameTimeDateTime.Now;privatevoidCameraWatchdog(){while(!_cts.IsCancellationRequested){if((DateTime.Now-_lastFrameTime).TotalSeconds5){_logger.Warn(相机超过5秒无帧触发重连);_camera.Reconnect();}Thread.Sleep(1000);}}PLC 看门狗定期读写一个心跳寄存器。如果连续 N 次读写失败判定为断线触发重连并报警。privateasyncTaskPlcWatchdogAsync(){while(!_cts.IsCancellationRequested){varresultawait_plc.ReadAsync(DB100.100);if(!result.IsSuccess){_logger.Warn(PLC心跳失败);_plc.Reconnect();_alarm.Raise(PLC通信中断);}awaitTask.Delay(5000);}}算法看门狗监控单帧处理时间。如果某帧处理时间超过节拍上限如 2 秒记录警告并考虑跳过该帧。恢复策略自动重连 状态复位看门狗发现异常后需要执行恢复动作相机恢复StopGrab→Close→Open→SetTriggerMode→StartGrab。恢复后清零帧计数器重新开始监控。PLC 恢复Close→Thread.Sleep(1000)→Open。恢复后重新建立握手状态确保ResultsValid和InspectionAck都清零。MES 恢复MES 断线不影响产线检测结果入本地队列MES 恢复后批量补传。性能与可靠性的平衡不要为了性能牺牲可靠性。把超时设到 1ms 可能让通信更快但网络抖动就会导致大量失败。工业场景的超时设置要留有余量——PLC 通信 500ms-1sMES 通信 5-10s相机取图 1-2s。不要为了可靠性牺牲节拍。MES 上传必须异步不能阻塞产线。PLC 写入必须批量不能逐条写。算法必须 ROI 裁剪不能全图处理。一句话总结性能优化的核心是先测量再优化ROI 裁剪最有效。异常处理的核心是分层捕获、逐级降级、不崩系统。看门狗的核心是定期检查、自动恢复、状态复位。三者的共同底线是产线不能停数据不能丢系统不能崩。