一、背景故事:一封客诉邮件引发的十八天
客户的品质工程师发来一封邮件,内容不长:他们在终端产品的可靠性试验中发现了三颗失效器件,追到我们这边的出货批号,要求我们提供这批产品的完整制造履历,包括每道工序的设备、关键工艺参数、所用原材料批号、以及当时的过程控制数据。要求的回复时间是五个工作日。
这封邮件在我们内部走了十八个工作日。过程大致是这样:出货批号先给到成品仓,他们从一份Excel台账里查到对应的生产批次号,这一步用了一天。生产批次号给到MES管理员,他要查这批经过的所有工序,但因为跨了月度归档,要分别从当前库和归档库捞两次,合并时还发现有两道工序的记录对不上,又花了三天核对。
拿到工序清单后,要找每道工序用的设备。MES记录的是机台号,但客户问的关键工序是多腔体设备,需要精确到腔体。腔体信息只在EAP的日志里,要设备工程师去捞原始日志,这一步四天。工艺参数更麻烦,存在SCADA的历史库里,按时间戳查,而MES的时间戳和SCADA的时间戳有时区处理上的历史遗留差异,对齐又花了两天。
原材料批号是最难的。WMS只记录了发料到哪个车间,没有记录具体哪批料用在了哪个生产批次上。最后是靠仓管的领料单和车间的领用记录人工比对推断的,而且只能推断出可能的两三个批号,无法给出确定答案。这一项用了五天,最终提交给客户的报告里,原材料这一栏写的是范围而不是确定值。
客户对这份报告不满意,一是超期十三天,二是追溯链不完整。后续的供应商审核里这一项被开了一个主要不符合项。这件事直接推动了我们的MES与QMS集成改造项目。这篇文章就是这个项目的完整复盘。
二、技术原理:追溯链的本质是对象关系
先把概念理清楚。MES管的是生产执行:批次在哪道工序、用了哪台设备、什么时候开始什么时候结束。QMS管的是质量体系:检验记录、不合格品处置(NCR)、纠正预防措施(CAPA)、客户投诉处理、审核与文件管理。两者在职责上是互补的,但在数据上高度重叠——因为质量问题永远发生在具体的生产对象上。
追溯的本质是在一张对象关系图上做路径查询。核心对象有六类:出货单元、生产批次、晶圆或单品、工序执行记录、设备腔体、物料批号。追溯就是从任意一个对象出发,沿着关系边走到其他对象。从客诉到根因是反向追溯,从一批可疑原材料找出所有受影响产品是正向追溯,两个方向都必须支持。
表1:质量数据闭环追溯的六个典型断点与打通方式
断点位置 | 表现形式 | 根本原因 | 打通方式 |
客诉到批次 | 客户给的是出货编号,查不到内部批次 | 出货与生产批次映射只存在于Excel | 在主数据中心建立出货批与生产批的持久映射关系表 |
批次到工序 | 知道批次但查不全经过的工序与时间 | MES历史数据按月归档,跨月查询要人工捞 | 建立追溯专用查询视图,跨归档表统一检索 |
工序到设备腔体 | 只记录了机台号,没记腔体号 | MES工单粒度建在机台层级 | 工单执行记录增加腔体字段,由EAP自动回填 |
设备到工艺参数 | 知道用了哪台设备但拿不到当时参数 | 参数存在设备本地或SCADA历史库,与MES不通 | 关键参数快照随工序完工事件写入MES |
批次到原材料 | 查不到用的是哪批光刻胶哪批靶材 | WMS发料记录与MES消耗记录未关联 | 发料时绑定批次,消耗时写回物料批号 |
异常到处置闭环 | NCR开了但不知道对应批次是否已冻结 | QMS与MES的状态各自独立 | NCR创建自动触发MES批次Hold,关闭时自动Release |
这个模型看起来简单,但落地时会撞上一个根本问题:同一个对象在不同系统里有不同的标识。生产批次在MES里叫LotID,在QMS里叫批号,在WMS里可能又是另一套编码,在给客户的报告里还有一个出货批号。如果这些标识之间没有权威的映射关系,任何跨系统查询都是在猜。这就是为什么本文图2的架构里,主数据中心被放在了和集成中间层同等重要的位置。我的经验是,集成项目失败的案例里,八成以上死在主数据而不是接口技术上。
第二个原理性问题是集成模式的选择。接口调用模式是同步的:A系统调用B系统的接口,等待返回。好处是简单直接、实时性好;坏处是强耦合,B系统宕机A就阻塞,而且随着系统数量增加,接口数量按平方增长,很快变成一张无法维护的网。事件驱动模式是异步的:A系统把发生的事情作为事件发到消息总线上,关心这件事的系统自己订阅。好处是松耦合、削峰、容错;坏处是最终一致而非强一致,需要处理重复投递等问题。
实践中的选型原则是:需要立即得到答案才能继续的场景用接口调用,比如QMS创建NCR时需要同步校验这个批次号是否真实存在;通知类、数据同步类的场景用事件驱动,比如MES的工序完工事件广播给QMS和SPC。两者混用是常态,不必二选一。但有一条硬规则:任何写操作的接口必须设计成幂等的,即同样的请求执行多次与执行一次结果相同。我们在这一点上栽过跟头,网络抖动导致重试,同一条NCR被创建了三次,统计报表上的不合格品数量凭空翻了三倍。
三、现状分析:多数工厂的集成程度
第一种是完全不集成。MES和QMS各是各的系统,需要跨系统的信息就靠人工导出Excel再导入。这在中小规模工厂很常见。它的问题不只是慢,更是数据在人工搬运过程中会失真:复制错行、筛选条件设错、版本混乱。而且这类人工工作通常由一两个熟手承担,这些人一旦休假或离职,整个链条就断了。
第二种是单向推送。MES把生产数据定期推给QMS,通常是每天一次的批量文件或数据库同步。这比人工强,但只解决了从生产到质量这一个方向,反过来QMS的判定结果(比如某批被判不合格)无法即时反馈到MES去冻结批次。我见过一个案例,QMS里已经判定某批产品不合格,MES那边毫不知情,这批产品照常流转,两天后已经进了成品仓,最后是靠人工发现拦下来的。
第三种是接口点对点互联。有集成,但是一对一硬连的。MES连QMS一条接口,MES连WMS一条,QMS连WMS又一条,再加上SPC和EAP,五个系统之间可能有十几条接口。这种架构在系统少的时候能用,一旦要新增系统或者改造某个系统,牵一发动全身。我们改造前就是这个状态,当时的接口清单上有十九条,其中有四条已经没人知道是干什么用的,但也没人敢关。
还有一个更隐蔽的现状问题是追溯链的完整率从来没被度量过。大家默认只要系统里有数据就能追溯,但实际上链条上任何一环缺失,整条链就断了。我们在改造前做了一次基线测量:随机抽取100个生产批次,尝试完整追溯六类对象,结果只有61.4%的批次能走通全链。缺失最严重的是腔体信息和原材料批号,各有三成以上的批次查不到。
四、瓶颈问题:卡在哪里
第一个瓶颈是主数据不统一,前面已经提过,这是最根本的问题。难点不在技术,在于历史遗留。每个系统的编码规则都是当年上线时定的,各有各的道理,而且都已经跑了很多年,有大量历史数据和下游报表依赖。统一编码意味着要么改系统要么建映射,前者动静太大,后者又要处理历史数据的映射补录。我们最终选了建映射,光是补录历史映射关系就花了六周。
第二个瓶颈是数据粒度不匹配。MES的工单粒度建在机台层级,质量追溯需要腔体层级;WMS的发料粒度是按车间按天,追溯需要按批次;SPC的数据粒度是子组,追溯需要单片。粒度不匹配无法靠接口解决,必须改造源系统的数据采集。这部分工作量往往被严重低估,在我们的项目里它占了总工作量的四成以上。
第三个瓶颈是历史数据的处理。集成改造上线后新数据是完整的,但客户投诉经常涉及一两年前的产品。历史数据的缺失是补不回来的——当时没记录的腔体信息,现在也变不出来。这个现实必须提前和管理层与客户沟通清楚,设定一个追溯能力的生效日期,之前的批次按尽力而为处理。我们的做法是在改造完成后主动向主要客户发了一份说明,告知从某日期起的批次可提供完整追溯,这个主动沟通反而赢得了信任。
第四个瓶颈是组织责任的模糊。MES归IT或数字化部门,QMS归质量部门,WMS归物流,EAP归设备。集成项目横跨四个部门,谁来主导、谁的需求优先、接口出问题谁负责排查,这些如果不事先定清楚,项目会在扯皮中消耗掉大部分时间。我们的做法是成立了一个由质量总监牵头的专项组,四个部门各派一名有决策权的代表常驻,每周固定例会,所有跨部门争议在例会上当场裁决。
五、解决方案:三层架构与六个断点的打通
整体架构见本文图2,分三层:底层是数据源系统(MES、SPC、EAP、WMS),中层是主数据中心加集成中间层(事件总线),上层是QMS的质量业务流程。这里说明几个关键设计。
主数据中心是整个方案的地基。它做三件事:第一,维护六类核心对象的权威标识;第二,维护各系统本地标识与权威标识的映射关系;第三,维护基础编码字典(产品编码、工序编码、缺陷代码、设备编码)。缺陷代码的统一尤其重要,我们改造前MES里的缺陷代码有一百四十七个,QMS里有九十二个,两套代码只有部分对应关系,导致统计口径永远对不上。统一后定为一百零八个,两个系统共用同一套字典。
事件总线解耦了系统间的直接依赖。我们定义了十二类核心业务事件,包括批次开工、工序完工、批次Hold、批次Release、检验完成、NCR创建、NCR关闭、物料消耗等。每个事件有标准的消息结构,包含事件类型、发生时间、涉及对象的权威标识、以及业务载荷。系统只管发布自己产生的事件和订阅自己关心的事件,不需要知道其他系统的存在。
图2:闭环集成的三层架构。关键设计是中间的事件总线与左侧的主数据中心:前者解耦了系统间的直接依赖,后者保证批次与编码在四个系统里指向同一个对象。没有主数据中心,任何接口都只是在搬运对不上的数据。
六个断点的打通方式见本文表1,这里补充几个实施细节。腔体信息的补齐是改造工作量最大的一项:需要MES的工单执行记录表增加腔体字段,并且由EAP在工序完工时自动回填。难点在于老设备的EAP无法提供腔体粒度信息,我们对这部分设备采用了折中方案:通过工单开始与结束时间匹配设备日志中的腔体占用记录来推断,准确率约96%,并在数据上打了推断标记,追溯报告中会注明该字段为推断值。
原材料批号的打通改造了发料流程。原先仓库发料只登记到车间,改造后要求发料时必须扫描目标生产批次的条码,建立物料批号与生产批次的绑定。这一步增加了现场操作,推行时遇到不小阻力。我们的应对是把扫码设备做到足够方便(用无线扫码枪直接对接系统,扫完即完成,不需要在电脑上做任何操作),并且把这一步的耗时控制在三秒以内。操作便利性直接决定了流程改造能否落地。
NCR与MES的Hold联动是闭环的关键一环。设计是这样:QMS创建NCR时,同步调用MES接口校验批次存在性,校验通过后发布NCR创建事件;MES订阅该事件,自动对涉及批次执行Hold,Hold原因码写入NCR编号;NCR关闭时发布关闭事件,MES自动Release,但Release需要质量人员在MES侧二次确认,这是一道防呆设计。这个联动上线后,判定不合格但未及时冻结的情况彻底消失。
六、实战案例:改造后的第一次客诉追溯
改造完成三个月后,又来了一次类似的客诉。同样是客户在可靠性试验中发现失效,同样要求完整制造履历。这次的处理过程可以直接对比。
第一步,质量工程师在QMS里新建客诉单,输入客户给的出货批号。系统通过主数据中心的映射关系自动解析出对应的三个生产批次,耗时秒级。改造前这一步是一天。
第二步,点击追溯报告按钮。系统自动从追溯服务拉取六类对象的完整关系数据,生成一份结构化报告,包含:每个批次经过的全部工序及起止时间、每道工序使用的设备与腔体、关键工艺参数的实测值与当时的控制限、所用原材料的批号与来料检验记录、以及全部inline量测数据。报告生成耗时约四分钟。
第三步是人工分析,这一步无法自动化,也不应该自动化。工程师看报告发现,三个批次有一个共同点:都经过了同一台设备的三号腔,而且时间集中在某个五天窗口内。查该腔体的参数记录,发现那五天内某个参数的均值有轻微上移,虽然在规格内但已偏离中心。再查设备维护记录,那五天恰好在一次PM之后、一次参数复核之前。根因清晰:PM后的参数复原有偏差,而当时的复核流程没能发现。
第四步是处置闭环。在QMS里创建NCR,关联三个批次,MES自动Hold了尚在制的相关批次(共七个批次,这是正向追溯的价值——不只处理已投诉的,还要找出所有可能受影响的)。同时创建CAPA,纠正措施是对该窗口内的产品做加严检验,预防措施是修改PM后的参数复核流程,增加关键参数的强制比对确认步骤。
整个过程从收到客诉到给出根因分析报告,用了四点五小时,其中系统自动部分约十分钟,其余是工程师的分析时间。客户的回复要求是五个工作日,我们在当天就给了初步报告,第三天给了包含改善措施的完整报告。客户品质经理在回信里专门提了一句响应速度超出预期。
七、实施效果:数据说话
核心指标见本文图1。单次完整追溯耗时从144小时(18个工作日)降到4.5小时,这是最直观的改善。追溯链完整率从61.4%提升到97.8%,剩下的2.2%主要是老设备腔体信息只能推断的那部分以及少量历史遗留数据。客诉响应周期从18天降到3.5天,NCR处理周期从12.5天降到4天。
数据一致率是我认为最有价值的一项。定义是同一个业务对象在MES与QMS两个系统里关键字段完全一致的比例。改造前是73.2%,也就是说四分之一的数据对不上。改造后是99.1%。这个指标的改善直接消除了大量的对账工作,质量部门原先每月要花三天做MES与QMS的数据核对,现在这项工作取消了。
人工介入环节从14个降到3个。保留的三个是有意为之:客诉单的初始录入、追溯报告的分析判断、NCR关闭时的Release二次确认。这三个环节都需要人的专业判断,不应该自动化。这里想强调一个观点:集成的目标不是消灭所有人工,而是把人从数据搬运里解放出来,专注于判断和决策。
客户审核方面,改造完成后的第一次年度审核,上一年那个关于追溯能力的主要不符合项被判定为已关闭。审核员现场做了一次抽查追溯,随机指定了一个批号,我们在会议室里当场用了不到十分钟生成了完整报告。这一项在审核报告里被列为亮点实践。后续在争取该客户的新产品导入时,质量体系评分是加分项之一。
还有一个溢出效应值得一提。主数据中心和事件总线建起来之后,它们成了后续所有系统集成的公共基础设施。改造完成后的一年半里,我们又接入了三个新系统(设备健康管理、能耗管理、供应商协同平台),每个的集成工作量都只有第一次的三分之一左右,因为主数据和事件规范都是现成的。原先那十九条点对点接口,也逐步下线了十四条。这说明这类基础设施型投入的回报是延后的但复利的,评估时不能只看第一个项目。
图1:改造前后的核心指标对比。单次追溯耗时从144小时(18个工作日)降到4.5小时,追溯链完整率从61.4%提升到97.8%,人工介入环节从14个减少到3个。
表2:两种集成模式的对比与选型建议
对比维度 | 接口调用模式 | 事件驱动模式 | 选型建议 |
耦合程度 | 强耦合,调用方需知道被调方地址与协议 | 松耦合,通过消息总线中转 | 跨系统跨厂商优先事件驱动 |
实时性 | 同步调用,毫秒级返回 | 异步投递,通常秒级 | 需要即时判定的场景用接口 |
故障影响 | 被调方宕机则调用方阻塞 | 消息暂存于队列,恢复后补投 | 关键链路必须用事件驱动 |
数据一致性 | 同步返回易保证,但跨多系统需分布式事务 | 最终一致,需幂等设计 | 追溯类场景最终一致即可 |
流量峰值承受 | 峰值直接打到被调方 | 队列削峰,消费端按能力处理 | 批量完工场景必须削峰 |
实施与运维成本 | 开发简单,接口多了难以管理 | 需搭建总线,但长期可维护性好 | 超过三个系统互联即应上总线 |
典型适用场景 | NCR创建时同步校验批次是否存在 | 工序完工事件广播给QMS与SPC | 两者混合使用,按场景分工 |
配套资料与实战工具包
本文涉及的脚本、参数模板、检查清单已整理成配套资料包,可直接用于工厂落地实施,内容随实践持续更新。点击文章上方「VIP资源」下载区免费获取:
- 质量追溯六类对象关系模型与断点自查表(含完整率度量脚本)
- 主数据中心映射表设计与历史补录三档处理规范
- 十二类核心业务事件定义与消息结构模板(含幂等设计要求)
- NCR与MES Hold联动流程配置说明(含防呆二次确认规则)
- MES与QMS集成分三期实施路线图与范围控制清单
────────────────────────────────────────
本文首发于博客:半导体智能制造| MES工程师实战笔记
你在实际项目里遇到过类似情况吗?是怎么处理的?欢迎在评论区分享你的实战经验,一起交流进步。
标签:MES自动化|半导体Fab | MES系统| SPC |良率提升|智能制造