3. 数据采集系统搭建:MES系统对接、SPC数据采集、AOI检测数据导入

数据采集,说白了就是给产线装「眼睛」和「耳朵」。
没有数据,良率提升就是空谈。我见过太多工厂,设备跑得飞起,但问起某个批次的缺陷分布,没人说得清。
嗯,这章我们就来搞定这件事。

核心目标:打通 MES、SPC、AOI 三大系统,让数据自动、准确、实时地汇聚到良率分析平台。

3.1 MES 系统对接:生产数据的「主动脉」

MES(制造执行系统)记录了每一片晶圆、每一个模组的完整生产履历。
对接 MES,就是要拿到这些信息:

  • 批次信息:批次号、产品型号、数量、生产日期
  • 工艺路线:经过哪些站点、每站开始/结束时间
  • 设备参数:每步工艺使用的设备 ID、腔室、配方
  • 量测数据:关键尺寸、膜厚、电阻等在线量测值
  • 良率结果:CP 测试、FT 测试的 Pass/Fail 判定
  • 我个人习惯用 中间表 + API 的方式对接。MES 厂商通常提供标准接口,但数据格式千奇百怪。我踩过一个坑:某家 MES 的时间字段居然用字符串存,格式还不统一,解析时差点崩溃。

    避坑指南:对接前先做数据字典对齐。我曾经因为「Wafer ID」字段名不一致,导致数据关联失败,排查了整整两天。

    对接流程示例(伪代码)

    # 伪代码:MES 数据拉取与清洗
    def fetch_mes_data(batch_id):
        # 1. 调用 MES API
        raw_data = mes_api.get_batch_detail(batch_id)
        
        # 2. 字段映射与清洗
        clean_data = {
            'batch_id': raw_data['LOT_ID'],
            'product': raw_data['PROD_NAME'],
            'route': raw_data['ROUTE_ID'],
            'steps': []
        }
        
        # 3. 解析工艺步骤
        for step in raw_data['STEPS']:
            clean_data['steps'].append({
                'station': step['STATION'],
                'equip': step['EQUIP_ID'],
                'start_time': parse_time(step['START_TIME']),
                'end_time': parse_time(step['END_TIME']),
                'param': step.get('PARAM', {})
            })
        
        return clean_data

    3.2 SPC 数据采集:过程稳定的「晴雨表」

    SPC(统计过程控制)数据,是用来监控工艺是否稳定的。
    你想想看,如果某个参数突然漂移,等良率掉下来再发现,损失已经造成了。

    SPC 数据采集的关键点:

    1. 自动采集:从设备 SECS/GEM 接口直接读取,避免人工录入错误
    2. 实时上传:每笔量测数据生成后,立即推送到 SPC 服务器
    3. 规则判定:内置 Western Electric 规则,自动触发报警
    4. 数据归档:历史数据按产品、站点、参数分类存储
    注意:SPC 数据采集频率要合理。太密浪费存储,太疏漏掉异常。一般建议:关键参数每片/每批采集,次要参数按频次抽检。

    SPC 数据模型示例

    字段 类型 说明
    measurement_id string 量测记录唯一 ID
    product string 产品型号
    station string 量测站点
    param_name string 参数名称(如 CD、THK)
    param_value float 量测值
    measure_time datetime 量测时间
    equip_id string 设备 ID
    rule_flag int 触发的 SPC 规则编号(0 表示正常)

    3.3 AOI 检测数据导入:缺陷的「显微镜」

    AOI(自动光学检测)是发现外观缺陷的主力。
    但 AOI 设备厂商众多,数据格式五花八门。有的输出 CSV,有的用 XML,还有的自定义二进制。

    我的做法是:统一数据格式。不管源头是什么,导入后都转成标准结构。

    标准 AOI 数据字段

    • 缺陷 ID:全局唯一
    • 批次号:关联 MES
    • 面板 ID:单片唯一标识
    • 缺陷类型:划伤、脏污、崩边、缺角等
    • 坐标:X/Y 位置,单位 μm
    • 尺寸:长、宽、面积
    • 灰度/颜色特征:辅助分类
    • 检测时间:精确到毫秒
    经验之谈:AOI 数据量巨大,一台设备一天可能产生几百万条缺陷记录。建议做数据压缩:同类型、同区域的缺陷合并为「缺陷簇」,大幅减少存储压力。

    3.4 数据采集系统架构总览

    下面这张图,是我在实际项目中用过的架构。它把 MES、SPC、AOI 的数据流串起来了。

    数据采集系统架构图 数据采集系统架构总览 MES 系统 SPC 采集 AOI 检测 数据采集中间件(ETL + 消息队列) 数据仓库(时序数据库 + 关系数据库 + 对象存储) 良率分析平台 SPC 监控看板 缺陷分类系统 说明:数据从 MES/SPC/AOI 采集后,经中间件清洗转换,存入数据仓库,最终供上层应用使用。

    3.5 数据质量保障

    数据采回来了,但质量不行,分析结果就是垃圾。
    我总结了几条必须做的检查:

    • 完整性检查:关键字段不能为空,比如批次号、设备 ID
    • 一致性检查:同一批次在不同系统的数据要能关联上
    • 时效性检查:数据延迟不能超过设定阈值(比如 5 分钟)
    • 异常值检查:量测值超出规格范围的要标记
    血的教训:我曾经因为 AOI 的坐标原点设置不一致,导致缺陷位置分析全部偏移。后来强制要求所有设备在导入前做坐标校准,并记录原点信息。

    3.6 小结

    数据采集系统,是良率提升的基石。
    MES 给骨架,SPC 给脉搏,AOI 给细节。三者打通,你才能看到完整的生产画像。

    搭建时记住三点:标准化、自动化、可追溯。
    别急着上高大上的分析算法,先把数据管道修扎实。数据干净了,后面的事就顺了。