去年接了一个东莞电子代工厂的项目。他们8条SMT线,每天出3000多片PCBA板,功能测试良率在92-94%之间波动。乍一看这个数字还行,但算一笔账:每100片板里有6-8片到功能测试才发现有问题——返工成本(人工检测、拆焊、重焊、重新测试)单板约40-60元,一个月下来就是几万块的浪费。
更让人头疼的是,良率波动的原因很难定位。同一个产品昨天良率94%,今天就掉到88%,换班、换料、换程序——哪个环节出了问题?没人说得清。
这篇文章记录我们是怎么用边缘AI网关采集SMT产线的过程参数,通过AI模型预测良率走势的。不是科普,是完全真实的过程。
一、现场情况摸底
先说说工厂的现状。8条SMT线,主要生产消费电子和车载类PCBA。每条线配置:
- 锡膏印刷机(DEK/MPM)
- SPI(锡膏检测仪)——测锡膏厚度、面积、偏移
- 贴片机(ASM/松下)——高速贴装
- 回流焊炉( Heller/劲拓 )——10温区热风
- AOI(自动光学检测)——检查焊点外观
- ICT/功能测试站——最终质量判定
问题在于:这些设备各自有数据输出(锡膏厚度、贴装偏移量、各温区实际温度曲线、AOI检出率),但数据互相独立。工程师看良率的时候,只能在功能测试站看到结果——"这批板不行"——但具体是锡膏太薄、回流焊温区3温度偏低、还是贴片偏移过大?没人知道。
工厂做过一些尝试:
- 手工记录SPI和回流焊参数,Excel里手动对比——太慢,一天下来数据对不上
- 让设备厂商提供数据接口——有的设备开放了OPC UA,有的只给了个串口,数据格式各不相同
- 每周开质量分析会——事后诸葛,这周的问题上周就发生了
老板的想法很直接:"能不能在产线还在跑的时候就告诉我这批板有问题?别等到测试站才发现。"
二、方案设计
目标很明确:采集SMT产线各设备的过程参数,用AI模型建立过程参数 → 良率的预测关系,在功能测试之前就给出预警。
整体架构分为四层:
数据采集层:边缘AI网关统一接入
每条线部署一台边缘AI网关,负责采集以下数据:
- SPI数据:锡膏面积比、高度、体积、偏移量(通过设备以太网接口抓取JSON数据)
- 贴片机数据:元件抛料率、贴装偏移统计(通过SECS/GEM协议)
- 回流焊数据:10个温区实际温度曲线、链速、风机转速(通过OPC UA)
- AOI数据:缺陷类型和位置分布(通过数据库直连)
- 环境数据:温湿度、ESD(静电)检测仪数据
每条线每块板的数据汇总成一条"过程参数记录",包含约50个特征字段。
注意:市面上有MES系统能做到数据汇总,但我们选的边缘网关方案主要是因为现场IT基础薄弱——每条线的设备品牌不同、通讯协议不同,MES对接周期长、成本高。边缘网关可以逐个设备适配协议,逐步接入。
边缘计算层:本地预处理和特征工程
边缘网关不只是在透传数据,而是在本地完成了关键计算:
- 时间对齐:不同设备的数据时间戳精度不一样(SPI是秒级、回流焊是分钟级),需要统一对齐到"每块板"维度
- 特征提取:从回流焊温度曲线提取实际峰值温度、升温斜率、恒温时间等特征,不是用原始温度值
- 统计聚合:每批次(约100块板)汇总均值、标准差、最大值、最小值
- 数据清洗:过滤明显异常值——比如SPI检测到锡膏体积为0的设备读数
预处理后的数据以批次为单位上传到云端。
AI模型层:梯度提升模型做良率预测
模型选型上我们经历了反复。最开始试了LSTM(因为过程参数是时间序列),但实际效果不如XGBoost。原因很简单:良率受单批次参数影响更大,时间序列的长程依赖关系不明显。
最终使用的模型:
- 算法:XGBoost分类器(二分类:良品/不良批次预测)
- 特征:50个过程参数,经过特征选择后保留28个重要特征
- 训练数据:历史3个月的批次数据(约1200个批次)
- 输出:每批次良率预测值 + 置信度 + 高风险参数Top 3
反馈层:看板 + 告警推送
预测结果通过Web看板展示:
- 良率趋势图(实际良率 vs 预测良率)
- 高风险参数排名——告诉产线工程师"这批板风险高,主要是因为回流焊温区4峰值温度偏低"
- 即时告警:批次预测良率低于阈值(88%)时,推送到企业微信
三、实施过程
第一周:设备对接和协议适配
用的时间远超预期。虽然设备厂商都说"支持数据导出",但实际上:
- SPI设备(DEK):有标准HTTP接口,但数据格式是自定义XML,需要写解析器
- 贴片机(ASM):只开放了SECS/GEM,上了一个协议转换模块才读到数据
- 回流焊炉:OPC UA接口,但有些参数名称是日文的,费了不少功夫翻译和确认
- AOI设备:数据存本地SQLite,需要在AOI工控机上装一个Agent来推送
一条线8台设备,每台设备协议不同。一周内能接入4条线已经算效率高了。
这里踩了一个比较大的坑:SPI检测仪的数据输出周期和回流焊不是同步的。SPI每块板都检测,回流焊每10秒输出一次温度数据,但一片板在回流焊里要走4-5分钟。如何把这两个数据关联到同一块板上?
解决方案是用"板号 + 时间窗口"来关联。机器会在每块板上打印二维码,扫描站扫到板号后,取前后4-5分钟的SPI数据和回流焊数据作为这块板的关联参数。
第二周:数据质量问题和清洗
数据接进来了,但质量堪忧。最常见的问题:
- 时间戳不统一:有的设备用UTC,有的用本地时间,有的直接没有时间戳。半夜的批次数据经常找不到对应的炉温曲线
- 空值和重复值:SPI检测偶尔漏检,导致某些板的数据为空;AOI重复上报同一块板的数据
- 量纲不一致:锡膏厚度单位有的用μm、有的用mm、有的直接是设备内部数值(0-1000的任意单位)
- 产品切换时数据混乱:换线时,新产品的参数会混入上一批次的数里
解决这些问题的代价比想象中大。大约花了一周半的时间写清洗脚本和校验规则。规则本身不复杂,难在每种异常都要写对应的处理逻辑。
教训:做数据分析的项目,百分之六十以上的时间花在数据准备上,不是模型上。这个比例在工厂场景只会更高。如果一开始就低估数据清洗的工作量,项目一定会延期。
第三周:基线模型和特征工程
用3个月历史数据跑了一个基线模型。初始效果比较差,准确率只有约65%。分析后发现几个问题:
数据不平衡:1200个批次中,真正的不良批次(良率<85%)只有约90个,占比不到8%。直接用原始数据训练,模型倾向于把所有批次都预测为良品。
解决办法:SMOTE过采样 + 对不良批次加权,把不良批次的权重提高到正常批次的3倍。
特征太多反而不好:50个特征中有不少是高度相关的。比如回流焊温区3和温区4的实际温度高度相关(两个温区挨着,互相影响),同时保留反而增加了噪声。
解决办法:用特征重要性排序 + 人工审核保留了28个特征。一些"直觉上重要但数据上表现不佳"的特征也被剔除了——比如ESD数据,理论上静电影响良率,但该工厂的ESD控制一直做得比较好,这个特征几乎没有区分度。
最意外的发现:最重要的特征不是回流焊温度、也不是锡膏厚度,而是SPI检测的锡膏面积比标准差——也就是同一批板子之间锡膏面积的一致性。一致性越差,良率越低。这个发现反过来指导了产线改进——把锡膏印刷机的参数(刮刀压力、脱模速度)调稳后,良率确实有提升。
第四周:模型上线和联调
模型上线后第一周就遇到了问题:预测值和实际良率偏差较大。排查后发现,我们用的训练数据是冬季的(12月-2月),而现在是6月份。车间温度变化导致回流焊的热补偿和冬天不一样,同样的温度设置在夏天实际板温会偏高。
解决办法:每两周用小批量最新数据微调模型(在线学习),让模型适应季节性变化。
另外一个问题:产线工程师一开始不信任模型。"电脑算出来的良率,跟我测出来的不一样。"我们做了一件事让信任建立起来——在产线入口放了一个大屏幕,屏幕上显示:模型预测良率、实际良率、以及每批次的风险参数Top 3。当预测准了几次之后,工程师开始接受这个工具。
四、实际效果
模型上线运行3个月后,8条线的平均良率稳定在约97%。不是模型直接提升了良率,而是模型提供的预警让工程师能提前干预:发现某批次风险高 → 检查对应的参数 → 调整设备 → 后续批次改善。
其中有18次模型给出了明确的风险参数来源,工程师根据提示快速定位了问题(锡膏偏薄、炉温偏移、贴片偏移增大等),调整后后续批次恢复正常。
不良批次从平均每月40-50批降到约15-20批。每批次平均返工成本约300-500元,月度节省约万元级别。更重要的是,不良品被更早发现(在功能测试前),返工难度和成本都更低。
还有一些意料之外的收获:
- 设备维护参考:模型多次提示某条线上焊温区3温度异常,后来发现是加热丝老化,更换后温度恢复正常
- 新员工培训参考:新来的操作员调试SPI参数时,模型实时反馈参数变化对良率的影响,加速了上手速度
- 客户审核时有数据支撑:工厂原来被客户审核时最怕回答"你们的良率怎么控制的"——现在可以拿出数据和模型预测记录
五、遇到的问题和解决办法
问题1:产品切换频繁,模型需要频繁重新训练
这家工厂的产品种类多(约20种不同型号的PCBA),每种产品的工艺参数差异大。统一模型的效果远不如按产品建模型好。
解决办法:改为按产品分组建模型。产量大的5个产品各建一个独立模型,产量小的产品统一用一个"其他"模型。前端自动识别产品型号后调用对应的模型。
问题2:回流焊温度数据滞后
回流焊的温度数据是10秒一个点,但整片板过完炉要4-5分钟。等温度数据全部出来,板已经到AOI甚至ICT了。"预警"变成了"事后验证",失去了实时性。
解决办法:改为用各温区的设定温度 + 前5块板的实际温度均值来预测。虽然精度有所下降,但做到了"板还没出炉就预警"。
问题3:操作人员抵触
一些经验丰富的产线师傅觉得模型"乱说"——模型说这批板风险高,但凭经验觉得没问题。这种不信任在一次实际验证后开始瓦解:模型预判风险高的一个批次,功能测试确实挂了6块板(正常是1-2块)。
问题4:模型过拟合
早期模型在训练集上表现很好(准确率95%+),但上线后实际上有很大偏差。原因是训练数据量太少(只有90个不良批次),模型记住了特定模式。
解决办法:随着运行天数增加,每个新发现的不良批次都被加入训练集。运行3个月后,不良批次数据量增加到约200批,模型泛化能力明显改善。
六、我的思考
这个项目做完之后,我对"AI提升良率"这件事有了不同的理解。
做好质量预测的关键不是AI算法,而是数据基建。这个项目最花时间的是设备对接、协议解析、数据清洗——不是调参。如果工厂没有好的数据基础(设备互联、数据标准化、时序对齐),再好的算法也没用。
预测的目的不是替代人,而是帮人缩小排查范围。模型不能直接告诉工程师"你去调温区3的加热丝",而是说"温区3温度异常和良率下降相关"。最终的判断和操作还是靠人。但从检查50个参数变成看Top 3风险参数,效率提升很明显。
产线上的AI落地最大的障碍不是技术,是信任。产线师傅不信任黑盒预测,是人之常情。最好的方式不是解释算法原理,而是让他看到预测对了——连续准了几次,信任自然建立。
产品切换频繁的工厂,按产品建模比通用模型靠谱得多。这个经验在后来的项目中也反复验证了——工业场景里,做特化的成本比做通用的低,效果反而好。
七、给你的建议
如果你也在考虑用AI做良率预测,几点个人经验:
- 先做数据摸底,再做模型——花至少一半的时间搞清楚你的设备能输出什么数据、数据质量怎么样、怎么把不同设备的数据关联起来。数据底子清楚了,模型就是顺水推舟的事
- 从一条线开始试点——别上来就想把所有产线全覆盖。先选一条线上跑通流程,验证效果再复制
- 给工程师看的预测结果要可解释——不要只给一个分,"良率92%→预测88%"没用。要告诉他"预测低是因为SPI锡膏面积比标准差超出正常范围"
- 行业经验比数据科学重要——团队里最好有懂SMT工艺的人。我们一开始把回流焊各温区温度全当作独立特征,后来工艺工程师告诉我们温区之间有热耦合,相邻温区温度关联性强。这个知识直接帮我们减了5个冗余特征
- 拥抱数据的不完美——工厂数据永远是脏的。不要等到数据完美了再开始,从能用的数据开始跑,边跑边改进
- 模型要持续更新——季节变化、设备老化、产品换代都会影响参数和良率的关系。把模型更新做成一个自动化流程,而不是一次性工作