公司动态
基于流程图式开发的火花塞瑕疵检测方案设计与实践
Matrox Design Assistant 这类流程图式机器视觉软件用来开发火花塞瑕疵检测方案比很多人想象中更实用。它把图像采集、定位、检测、结果输出串成一张可运行的流程图不需要像传统 C/C# 视觉项目那样从头搭框架。对做产线视觉集成的工程师来说最值得关注的不是它内置了多少算法而是这套可视化流程能不能帮你快速验证瑕疵检测思路并且直接和 PLC、相机、光源联动起来。“用流程图开发检测软件”听起来门槛很低实际落地时还是要处理几个关键问题火花塞表面积大、反光强、瑕疵种类多怎么用流程节点组织检测逻辑相机、光源、PLC 怎么接入调试机上跑通的流程怎么在产线上保持稳定。下面按我实际接触这类视觉检测项目时的顺序拆一遍。1. 火花塞瑕疵检测到底要检什么MDA 解决什么问题1.1 火花塞常见瑕疵类型与检测难点火花塞又叫火星塞是发动机点火系统里的关键部件。它外侧有金属螺纹和金属壳体中间是陶瓷绝缘体顶端有中心电极和侧电极。产线上需要检测的瑕疵通常包括陶瓷绝缘体裂纹、崩边、烧蚀、表面污损。中心电极偏移、磨损、长度异常。侧电极位置偏移、变形、间隙不合格。金属螺纹牙伤、缺牙、毛刺。壳体表面的划伤、锈斑、镀层缺陷。整体尺寸超差尤其是电极间隙值。这些瑕疵的检测难点很集中。首先是反光金属表面反光强陶瓷区域又容易产生高光和阴影同一张图里不同材质对光的响应差异大。其次是姿态火花塞在产线上不完全是同一个方向来料到位后可能有轻微旋转、偏移、倾斜检测区域也会跟着变。第三是瑕疵种类多裂纹和污损的灰度特征完全不同不能用单一阈值解决所有问题。1.2 流程图式开发的核心逻辑MDA 和普通流程图绘制软件不一样。它画出来的每个节点都是可执行算子节点之间用连线传递数据流程跑起来后图像数据和结果数据会沿着连线依次经过每个节点。节点类型包括图像采集、形态学处理、模板匹配、斑点分析、卡尺测量、逻辑判断、通信输出等。这种开发方式的优势在于调试时可以直接在任意节点后看中间图像定位问题出在哪一步流程结构一目了然不用像传统代码那样反复查变量换硬件或者换检测逻辑时只需要改局部节点不用重写整个程序。对火花塞这种检测项较多、逻辑分支明确的项目来说流程节点比传统代码更适合快速搭建方案。1.3 不是万能的适用边界MDA 适合中等复杂度的结构视觉检测比如定位、测距、斑点缺陷检测、特征判断、结果通信。但它不是通用编程平台不适合做两件事高自由度算法原型比如自定义卷积网络、复杂多目标跟踪、非线性标定。大规模业务系统比如把产线 MES、追溯、质量分析全包进去。如果你当前项目是“用工业相机拍火花塞找到陶瓷裂纹判 OK/NG把结果给 PLC”MDA 非常合适。如果你还要训练一个专门识别复杂纹理缺陷的深度学习模型那需要另外的模型训练平台MDA 可以作为部署端但模型训练本身不应该靠画流程图硬凑。2. 跑通一个火花塞检测流程需要准备的硬件和运行条件2.1 相机、镜头和光源的基本思路先确定检测精度。以火花塞陶瓷绝缘体上的细小裂纹为例如果视场大约 30mm相机分辨率建议不低于 500 万像素否则细节不够。要是同时做多方向检测或者在更大的视场里看电极间隙再按比例增加分辨率或者切换线扫相机。镜头方面优先考虑低畸变的定焦工业镜头。对金属螺纹、小尺寸电极远心镜头能明显降低边缘变形但价格也高。如果只是做入门验证普通 C 接口工业镜头先跑通流程也可以后面再根据测量精度换镜头。光源是火花塞检测最重要的变量之一。金属壳体反光强用环形光容易把螺纹拍成一片白。更稳的思路是陶瓷区域用高角度环形光或同轴光突出裂纹和崩边。金属区域用低角度条形光或掠射光让划痕和毛刺产生明暗对比。背景尽量用暗色吸光材料减少杂散光。如果检测项同时覆盖陶瓷和金属可以把相机、光源分成两个工位分别拍不要指望一张图解决所有问题。2.2 软件安装与授权注意点MDA 安装前先确认系统版本和驱动兼容性。工业视觉软件对授权、加密狗、网卡绑定这些细节比较敏感建议在独立 Windows 系统上安装避免和其他冲突软件混装。安装完成后先做两件事第一连接相机确认 MDA 能正常采集图像第二用软件自带的模拟图或者自己拍的火花塞样图新建一个空流程确认节点能执行。很多初学者跳过这一步直接连 PLC、调产线结果流程跑不起来最后发现是相机驱动没装好。授权方面MDA 分开发环境和运行环境。开发环境用于画流程图和调试运行环境部署在产线工控机上。这里要特别注意版本一致性用高版本开发流程部署到低版本运行环境时可能提示兼容问题。实际项目里我一般会把运行环境版本和开发环境版本对齐减少不必要的麻烦。2.3 和 PLC 的通信准备火花塞产线检测通常是全自动节拍检测软件要配合 PLC 工作。常见通信方式有三种数字 I/OPLC 给出拍照触发信号MDA 收到后触发相机采集处理完成后输出 OK/NG 信号。以太网通信通过 TCP/IP 或工业协议在 PLC 和 MDA 之间交换触发、状态、结果数据。串口通信在老旧设备上偶尔用传输速率较慢适合结果量小、节拍不高的场景。调试前先画一张信号时序图标明PLC 什么时候发触发MDA 什么时候回 ReadyNG 信号保持多长时间OK/NG 是否需要区分不同通道。不要直接在软件里把每个信号都试一遍后面容易混乱。3. 用流程节点搭一个完整检测方案从采集到判定3.1 第一步图像采集和触发一个完整流程的起点是图像采集节点。这里需要配置相机型号、触发源、曝光时间和图像格式。调试阶段可以选软件触发鼠标点一下拍一张。产线阶段必须改成硬件触发或其他外部触发方式因为节拍由 PLC 控制软件触发可能在信号到来时相机还没准备好。采集节点后面建议加一个“图像有效性判断”检查当前帧是否过暗、过亮、全黑、条纹。火花塞检测中如果来料缺失或者定位机构没到位拍出来的图可能就是空背景。这一步判断能避免后面节点拿空图跑出假结果。3.2 第二步定位和检测区域变换火花塞进入视野后位置不会绝对固定。直接在整个画面里做瑕疵检测会看到很多误判因为螺纹、轮廓、反光点都可能被当成缺陷。正确做法是先用定位节点找到基准。常用定位方式有两种模板匹配在图上找一个稳定的特征区域比如火花塞陶瓷和金属的交界位置用它作为基准点。边缘或几何特征定位找陶瓷外轮廓、电极端点、螺纹起始位置计算偏移和旋转角度。定位完成之后用它做仿射变换把后续检测区域映射到标准位置。也就是说不管火花塞摆放偏了 1mm 还是转了 2 度检测区域都会跟着零件移动。这个步骤省略不得否则光照稍微变化、位置稍微偏一点误判率会直线上升。3.3 第三步瑕疵检测工具怎么选火花塞不同缺陷适合不同的算法节点裂纹、崩边、缺角优先用斑点分析或基于灰度阈值的缺陷检测节点把暗裂纹从亮背景里分离出来。电极偏移、间隙异常用卡尺测量节点测量两条边之间的距离或位置偏差。螺纹区域毛刺边缘检测加形态学处理统计连通域面积和长宽比。表面污损如果污损和正常区域灰度差异明显用灰度阈值加形态学筛选。流程组织上建议把不同检测项分成独立分支每个分支输出一个 Pass/Fail 结果最后汇总。这样排查时很清楚是哪个检测项出了问题不用在一个大流程里从头捋到尾。我自己习惯在每一步检测节点后面加一个“结果预览”或“诊断输出”先看中间结果再决定要不要调阈值。3.4 第四步结果判断和输出检测节点输出的通常是区域面积、数量、边长、角度等数值。你需要在逻辑判断节点里定义合格标准比如缺陷面积大于 0.2 平方毫米判 NG。电极偏移量超过 0.3mm判 NG。裂纹数量大于 0判 NG。螺纹区域连通域面积超过设定值判 NG。判断节点输出一个汇总结果再通过通信节点把 OK/NG 发给 PLC同时把检测数据、时间、批号整理成记录。输出环节要特别注意信号保持时间。如果 OK/NG 信号只闪一下PLC 可能来不及读取。一般建议结果信号保持一段固定时间比如 100ms 到 500ms具体看 PLC 扫描周期。4. 关键参数调优与合格判定标准4.1 曝光、增益、光源强度控制火花塞检测的参数调试顺序是先定光源再调曝光最后才调算法阈值。曝光时间太短陶瓷暗部细节丢失太长金属反光区域过曝螺纹轮廓糊成一片。工业相机和光源配合时我一般先把光圈固定从较低曝光开始逐步增加观察不同区域灰度直方图。目标不是让整张图都好看而是让缺陷区域和正常区域之间有足够灰度差。比如陶瓷裂纹是暗线那就要让陶瓷背景灰度适中裂纹灰度尽量接近 30 以下背景在 120 以上这样后面阈值分割会非常简单。增益尽量不用。增益放大信号的同时也会放大噪点尤其对细小裂纹检测影响很大。如果曝光已经比较长还是暗优先加强光源而不是拼命拉增益。4.2 定位参数模板、搜索区域、分数阈值模板匹配参数最容易出问题的是搜索区域设定。搜索区域越小匹配速度越快误匹配也越少但要求零件位置波动不能太大。搜索区域越大稳定性越高但可能出现多个相似候选区域匹配分数下降。初始调试时建议先把搜索区域放宽看模板匹配分数稳定在多少。如果稳定在 0.9 以上再逐步缩小搜索区域。如果匹配分数忽高忽低先检查是不是有反光点干扰或者模板选在了容易变化的边缘位置。匹配分数阈值不要定得太高。通常 0.7 到 0.9 之间比较常见但这不是固定值。关键是看 NG 件上能不能可靠锁定以及 OK 件会不会因为位置偏移被判定位失败。定位失败的后续节点直接跳过可能导致整张图漏检这个逻辑要提前想好。4.3 缺陷检测阈值缺陷检测阈值要建立在真实样件上。先准备三类样件明确合格的正常件。明确不合格的缺陷件。边缘状态件比如裂纹很浅、污损很小、电极轻微偏移的临界品。用正常件反复跑记录误判率把好件判成 NG。再用缺陷件跑记录漏检率把坏件放过去。阈值应该在两个指标之间取平衡点。比如通过缺陷面积判断是否 NG可以先统计 50 个正常件的最大缺陷面积假设是 0.15 平方毫米再统计 20 个缺陷件的最小缺陷面积假设是 0.4 平方毫米。那阈值可以定在 0.2 到 0.25 之间保留一定安全余量。如果正常件和缺陷件面积分布有重叠说明算法本身不够单纯调阈值无法解决。这时候要回到图像质量或者换检测工具而不是继续硬调参数。4.4 用样件跑出误判指标参数调完之后不要急着上线。先按批次测试比如 100 个正常件和 50 个缺陷件跑完之后统计正常件误判数量。缺陷件漏检数量。定位失败数量。平均处理时间和最大处理时间。这里要重点看最大处理时间。产线节拍如果要求 1 秒一个平均 0.6 秒不一定说明问题可能某个复杂工位在极端条件下要 1.5 秒导致整线卡料。所以要看的是最差情况不是平均情况。5. 单流程跑通之后实机联调最常踩的坑5.1 流程跑通不等于产线稳定实验室里流程能跑和产线上连续跑八小时是两码事。产线环境里最常见的变量是来料位置波动变大之前设定的小搜索区域找不到目标。环境光变化阳光、车间照明、设备指示灯都会干扰图像灰度和反光。机械震动导致画面抖动模板匹配分数下降。节拍变快后相机曝光和光源补光跟不上。所以联调阶段不能只在固定工位上测试。要随机抽不同批次的产品模拟多种摆放位置和光照条件看流程是否还能稳定判出结果。5.2 通信超时和重复触发实机联调时很多“算法没问题”的项目反而死在通信上。常见现象PLC 已经给出触发信号但相机还没初始化完成导致第一张图丢帧。MDA 处理时间超过 PLC 等待时间PLC 以为超时重复发送触发信号。结果输出信号被误接成脉冲信号PLC 没有锁存NG 被后续 OK 覆盖。这类问题的排查顺序是先看 PLC 端信号有没有发出再看 MDA 端有没有收到触发再看处理完成后通信节点有没有回数据最后看 PLC 扫描周期和结果保持时间是否匹配。我建议在流程里加一个“Busy”信号MDA 正在处理时拉高电平PLC 看到 Busy 后才允许发送下一次触发。这样可以避免很多重复触发问题。5.3 日志、图像保存和结果追溯瑕疵检测项目上线后最怕的是出现批量误判但找不到原因。所以日志和图像保存必须提前设计。建议至少记录以下信息时间戳、班次、批次号。当前检测项结果、量化数值。OK/NG 判定结果。原始图像文件名和保存路径。NG 图像一定要保存原始图最好同时保存带检测框的叠加图。这样后续可以拿着图像复盘判断是算法漏检还是产品确实有缺陷。这个问题在产线争议最大没有图像你很难向工艺部门证明质量判定是否合理。5.4 排查顺序先硬件再流程最后参数流程出问题时不要急着调阈值。建议按这个顺序排查看现象是不触发、不拍照、不输出还是错判。看硬件信号相机连接、触发线、光源是否正常亮。看输入图像采集到的图像是否清晰是否过曝是否包含目标。看中间结果从采集到定位到缺陷检测每个节点的输出是否合理。看参数阈值、搜索区域、匹配分数是否因为产品或环境变化而失效。很多时候参数没变但图像变了所以调参数之前先确认输入是否一致。这个步骤能省掉大量无效调试。6. 从原型到批量产线MDA 的边界与扩展方式6.1 多相机、多工位的流程组织火花塞检测如果涉及两个视角比如一张俯视拍陶瓷和电极一张侧视拍螺纹可以有两种组织方式在同一个流程里串行执行两个相机工位之间用信号等待。分成两个独立流程分别部署在不同工位各自独立通信。更推荐后者。因为独立流程耦合度低一个工位暂停维护时另一个还能继续跑。同一个流程里串双相机看起来方便但一旦其中一个相机关联的节点状态异常整个流程都要停。6.2 结果记录和 MES 对接MDA 自带的数据记录能力可以满足基本追溯但如果工厂已经有 MES 系统就需要把检测结果通过接口推送出去。通常做法是MDA 每完成一个检测周期就把结果数据写到指定目录的 CSV 文件或通过 TCP 发送给上位机由上位机统一解析入库。具体字段包括产品条码、检测时间、每个检测项数值、最终判定、图像路径。要注意的是MES 推送不能影响检测主流程。如果网络抖动导致发送失败最好做成异步缓冲也就是先把结果写到本地后台再逐条发送避免检测周期被网络拖慢。6.3 MDA 的边界在哪里MDA 做火花塞瑕疵检测边界主要有三个复杂缺陷分类如果缺陷类型非常多且不同缺陷之间纹理相近纯规则算法会陷入无休止的阈值调整这时候更适合引入深度学习模型做分类。高精度三维测量如果要对电极间隙做微米级 3D 测量需要线激光或结构光MDA 本身不是 3D 点云处理平台。大规模数据管理和复杂 UI如果产线要同时管理多台设备、几十个检测流程、自动配方切换并要做深入的数据分析独立上位机软件更合适。但这不代表 MDA 不能用于生产。很多中等节拍、中等复杂度的检测场景MDA 作为视觉单元是足够的。它解决的问题是“把视觉逻辑快速跑起来并稳定输出结果”而不是“替代整个工厂信息化系统”。6.4 什么时候该上传统代码如果项目出现下面这些信号可以考虑传统视觉开发或者混合部署需要频繁修改底层算法现有节点库满足不了。需要接入私有深度学习模型或第三方面阵相机 SDK。需要复杂业务逻辑比如多配方管理、权限系统、自动报表。需要和多种设备大量交互通信协议复杂节点配置方式维护成本高。传统开发也有成本代码量更大调试工具要自己写换硬件要改接口。所以不必一上来就选代码路线也不要在流程图上硬撑到不可维护。正确策略是先用 MDA 快速验证可行性等到方案稳定后再评估是否需要把核心视觉逻辑迁移到传统平台。如果只是学习建议先用样图把单流程跑通理解采集、定位、检测、输出这四层结构。如果要做产线项目先把通信时序、日志、图像保存、误判指标这四件事想清楚。踩过几次坑之后会发现MDA 能解决大部分结构化视觉检测问题但前提是流程一定要按数据顺序来设计先稳定图像再稳定定位最后才谈检测阈值和分类判断。