3、数据采集层设计:设备数据采集(SECS/GEM协议)、传感器数据采集、手动录入接口设计

数据采集层是Fab良率监控系统的“神经末梢”,负责将物理世界的设备状态、工艺参数与传感器读数,转化为可被上层系统理解与处理的数字信号。本章聚焦于三种核心采集路径:半导体设备SECS/GEM协议对接、环境与工艺传感器数据采集,以及人工检验与手动录入接口的设计原则与实现要点。

设计原则:数据采集层必须满足“三高一低”——高可用(99.99%)、高实时(秒级响应)、高一致性(无丢包)、低侵入(不影响设备正常运行)。

3.1 设备数据采集:SECS/GEM协议深度解析

半导体制造设备(如光刻机、刻蚀机、薄膜沉积设备)普遍支持SECS(SEMI Equipment Communications Standard)与GEM(Generic Equipment Model)协议。SECS定义通信传输层,GEM定义设备行为模型与数据项标准。

3.1.1 协议栈与通信模型

层级 协议/标准 功能描述 典型实现
物理层 RS-232 / TCP/IP 串行或网络连接,波特率/端口配置 串口服务器 / 以太网卡
传输层 SECS-I / HSMS 数据块封装、重传、流控制 HSMS主动/被动模式
消息层 SECS-II 消息类型定义(Primary/Secondary) S1F13, S2F41, S6F11等
应用层 GEM (E30/E37/E39) 设备状态模型、报警、数据收集计划 CEID, VID, Collection Event
关键概念:GEM模型中的Collection Event(CE)是数据采集的核心触发器。当设备发生特定事件(如“晶圆开始刻蚀”、“腔体压力变化”),设备主动上报一组预定义的Variable ID(VID)数据,无需主机轮询。

3.1.2 SECS/GEM数据采集架构

下图展示了从设备端到数据采集中间件的完整数据流,包含连接管理、消息解析与数据持久化三个核心模块。

SECS/GEM数据采集架构图 SECS/GEM 数据采集架构 刻蚀机 GEM 主机模式 光刻机 GEM 从机模式 薄膜沉积 HSMS 主动连接 SECS/GEM 数据采集中间件 连接池管理 消息解析器 (SECS-II) CE/VID 映射 时序数据库 InfluxDB / TimescaleDB 消息队列 Kafka / RabbitMQ 说明:设备通过HSMS或RS-232连接中间件,中间件解析SECS-II消息后,将数据同时写入时序数据库(历史查询)和消息队列(实时消费)。

3.1.3 关键接口实现示例

以下是一个简化的SECS/GEM数据采集器核心代码片段,展示如何建立HSMS连接并订阅Collection Event:

// Java SECS/GEM 采集器核心逻辑
public class SecsGemCollector {
    private final String deviceIp = "192.168.1.100";
    private final int devicePort = 5000;
    private final int deviceId = 1;
    
    private GemSession session;
    private final Map<Integer, List<Integer>> ceVidMap = new HashMap<>();
    
    public void connect() {
        // 1. 创建HSMS主动连接
        HsmsSettings settings = new HsmsSettings(deviceIp, devicePort, deviceId);
        session = GemConnectionFactory.createActiveSession(settings);
        session.addMessageListener(this::onMessage);
        
        // 2. 发送S1F13建立通信
        session.send(SecsMessage.of(1, 13));
        
        // 3. 订阅Collection Event (CEID=101, VIDs=[1001,1002,1003])
        subscribeCe(101, Arrays.asList(1001, 1002, 1003));
    }
    
    private void onMessage(SecsMessage msg) {
        if (msg.getStream() == 6 && msg.getFunction() == 11) {
            // S6F11: 事件报告数据
            int ceid = msg.getData().getInt(0);
            List<Object> values = msg.getData().getList(1);
            // 将数据推送到Kafka
            kafkaProducer.send(new ProducerRecord<>("fab-equipment-data", 
                new EquipmentData(deviceId, ceid, values, System.currentTimeMillis())));
        }
    }
}

3.2 传感器数据采集:环境与工艺参数

除设备自身数据外,Fab内还部署大量环境传感器(温度、湿度、微粒子)与工艺传感器(气体流量、压力、RF功率)。这些传感器通常通过Modbus RTU/TCP、OPC UA或4-20mA模拟量接入数据采集层。

3.2.1 传感器类型与采集方式对比

传感器类型 通信协议 采集频率 数据精度 典型部署位置
温湿度传感器 Modbus RTU 1 Hz ±0.3°C / ±2%RH 光刻区、黄光区
微粒子计数器 Ethernet/IP 0.1 Hz 0.1 μm 粒径 洁净室回风口
质量流量控制器 DeviceNet 10 Hz ±1% F.S. 气体分配箱
RF功率传感器 模拟量 4-20mA 100 Hz ±0.5% 刻蚀腔体匹配网络

3.2.2 传感器数据采集架构

传感器数据采集采用“边缘网关+集中采集”的混合架构,边缘网关负责协议转换与数据预处理,集中采集服务负责数据汇聚与分发。

传感器数据采集架构图 传感器数据采集架构 温湿度 Modbus RTU 微粒子 Ethernet/IP MFC DeviceNet RF功率 4-20mA 边缘采集网关(协议转换 + 数据预处理) Modbus Master OPC UA Client 模拟量采集卡 数据缓存 集中采集服务 数据校验/去重/聚合 数据分发 Kafka / MQTT Broker 说明:边缘网关负责协议转换与数据缓存,即使网络中断也能本地存储30分钟数据;集中采集服务进行数据校验与聚合后,通过消息队列分发。

3.2.3 边缘网关数据预处理策略

  • 数据校验:检查传感器值是否在合理范围内(如温度-40~150°C),超出范围标记为异常并触发告警。
  • 去重与滤波:对同一传感器连续采集的重复值进行去重;对模拟量信号使用滑动平均滤波(窗口大小=5)。
  • 时间戳对齐:所有传感器数据统一使用网关本地NTP同步时间戳,确保多传感器数据在时间轴上对齐。
  • 断点续传:网关本地SQLite缓存未发送数据,网络恢复后按时间顺序补传。

3.3 手动录入接口设计

并非所有数据都能自动采集。目检结果、工程师手动测量值、设备维护记录等仍需人工录入。手动录入接口的设计直接影响数据质量与用户体验。

3.3.1 录入场景与数据模型

录入场景 数据内容 录入频率 数据量级
晶圆目检结果 缺陷类型、位置坐标、严重等级 每批次 10~100条/批次
设备PM记录 更换部件、维修时间、操作员 按需 1~5条/次
工艺参数手动测量 膜厚、线宽、电阻率 每批次抽检 5~20条/批次
异常事件描述 异常类型、影响范围、处理措施 事件驱动 1条/事件

3.3.2 接口设计原则

  • 结构化表单:使用下拉选择、日期选择器、数值输入框等控件,减少自由文本输入,降低数据解析难度。
  • 实时校验:前端对必填项、数值范围、格式(如日期格式)进行即时校验,后端二次校验。
  • 模板化录入:支持创建录入模板(如“刻蚀机PM模板”),一键加载常用字段与默认值。
  • 审计追踪:记录每次录入的操作员、时间戳、修改历史,确保数据可追溯。

3.3.3 手动录入接口API设计示例

以下是一个RESTful API设计示例,用于提交晶圆目检结果:

// POST /api/v1/inspection/defects
// 请求体
{
  "lotId": "LOT-2024-001",
  "waferId": "W-001",
  "operator": "ZHANG_SAN",
  "inspectionTime": "2024-03-15T14:30:00+08:00",
  "defects": [
    {
      "defectType": "PARTICLE",
      "xCoord": 12.5,
      "yCoord": 45.3,
      "size": 0.5,
      "severity": "MAJOR",
      "description": "金属颗粒污染"
    },
    {
      "defectType": "SCRATCH",
      "xCoord": 78.1,
      "yCoord": 23.9,
      "size": 2.1,
      "severity": "CRITICAL",
      "description": "划伤长度2.1μm"
    }
  ]
}

// 响应体
{
  "code": 200,
  "message": "success",
  "data": {
    "inspectionId": "INS-20240315-001",
    "defectCount": 2,
    "createdAt": "2024-03-15T14:30:05+08:00"
  }
}

3.3.4 手动录入与自动采集的数据融合

手动录入数据最终需要与自动采集的设备/传感器数据融合,形成完整的批次追溯链。融合策略如下:

手动录入与自动采集数据融合流程 数据融合流程 自动采集数据 设备/SECS-GEM / 传感器 手动录入数据 目检/PM/手动测量 数据融合服务 批次ID + 时间窗口关联 完整批次追溯数据 说明:融合服务以批次ID为主键,结合时间窗口(±5分钟)将自动采集的设备参数与手动录入的检验结果关联,形成完整的批次数据包。
注意事项:手动录入数据存在人为误差风险。建议对关键字段(如缺陷坐标、严重等级)设置二次确认机制;对数值型字段设置合理范围校验;定期对录入数据进行一致性抽查(如与自动测量设备对比)。

3.4 数据采集层整体架构总结

三种采集路径在系统中协同工作,形成完整的数据采集层。下表总结了各路径的特点与适用场景:

采集路径 数据源 协议/方式 实时性 数据量 可靠性要求
设备数据采集 半导体设备 SECS/GEM (HSMS) 高(秒级) 大(每设备每秒数百点) 极高(不允许丢包)
传感器数据采集 环境/工艺传感器 Modbus/OPC UA/模拟量 中(秒~分钟级) 中(每传感器每秒1~10点) 高(允许短暂中断)
手动录入 人工检验/记录 Web表单/API 低(分钟~小时级) 小(每批次数十条) 中(需审计追踪)