1. 课程导入与全景认知

在半导体晶圆厂里,一台设备从进厂到量产,真正决定它能否被产线"用起来"的,往往不是机械精度或工艺窗口,而是它能不能和厂务系统说上话。SECS/GEM 就是这套"说话规则":SECS(SEMI Equipment Communications Standard)定义了设备与主机之间的消息格式与传输机制,GEM(Generic Equipment Model)则在 SECS 之上规定了设备应具备的标准行为——状态上报、事件通知、报警管理、配方管理、数据采集、远程命令等。没有 GEM,每台设备都要为不同主机写一套私有协议;有了 GEM,设备与 EAP 之间就有了可复用的标准接口。

要理解这套体系,先要看清它在制造信息链中的位置。设备内部有传感器、执行机构、工艺腔体,它们产生的是物理量;SECS/GEM 把这些物理量翻译成主机能理解的消息;EAP(Equipment Automation Program,设备自动化程序)则站在主机侧,负责把消息变成可执行的业务动作,再向上对接 MES。下面这张图展示了从设备到 MES 的完整信号与数据链路,以及 EAP 在其中的核心职责。

半导体制造信息链:设备 → SECS/GEM → EAP → MES 设备层(Equipment) 工艺腔体 / 传感器 执行机构 / 机械手 本地控制与状态机 物理量:温度、压力、位置 SECS/GEM 接口 SECS-I / HSMS 传输 消息编码(SECS-II) GEM 标准行为模型 S1F1~S10F3 等标准消息 EAP 系统 连接管理与心跳 事件/报警/数据采集 配方管理与远程命令 业务逻辑与状态缓存 MES 工单派工 批次追踪 SPC / 报表 典型数据流示例:设备状态变化如何传到 MES 设备状态变化 如:IDLE → RUN GEM 事件上报 S6F11 / CEID EAP 解析与缓存 更新设备状态模型 MES 接收状态更新 触发派工 / 批次流转 关键点:EAP 不是简单转发,而是要做状态机维护、消息去重、超时重试和业务规则判断。 例如设备上报 S6F11 后,EAP 需确认 CEID 是否已订阅、关联的 RPTID 数据是否完整,再决定是否向 MES 推送。 若 HSMS 连接断开,EAP 应缓存关键事件并在重连后补报,避免 MES 侧状态与设备实际状态不一致。

从图中可以看到,EAP 是整条链路的"翻译官"和"调度员"。它向下要处理 SECS/GEM 的连接建立(HSMS 的 Select 流程)、事件订阅(Define Report / Link Event)、数据采集(S1F3、S6F11 等),向上要对接 MES 的工单、批次、物料和报表接口。一个成熟的 EAP 通常包含连接管理、消息路由、状态机、配方管理、报警管理、数据缓存和日志追踪等模块。实际项目中,EAP 与设备的接口调试往往占据整个集成周期的一半以上,因为不同设备厂商对 GEM 标准的实现程度差异很大——有的只支持最基本的 S1F1 和 S1F13,有的则完整实现了 S2、S5、S6、S7、S10 等全套消息。

本节核心认知:SECS/GEM 是设备与主机之间的标准通信协议,EAP 是主机侧实现自动化控制的软件系统。学习本课程的目标不是背消息号,而是能独立完成一台设备的 EAP 接入:从连接建立、事件订阅、数据采集,到配方下发、远程命令和异常排障。

那么,这门课具体要带大家做什么?我们把 30 个章节分成四个阶段。第一阶段是基础认知与协议入门,包括 SECS/GEM 的体系结构、HSMS 连接机制、SECS-II 消息格式和 GEM 状态模型。第二阶段是 EAP 核心功能开发,重点讲事件与报警处理、数据采集与上报、配方管理、远程命令和日志追踪。第三阶段是实战集成,用一台虚拟设备或真实设备完成从零到一的 EAP 接入,包括连接调试、消息抓包、异常注入和恢复验证。第四阶段是进阶与排障,覆盖多设备并发、性能优化、常见故障树和安全策略。

为了让大家对"实际怎么做"有具体感知,这里给出一个典型的连接建立示例。设备与 EAP 之间采用 HSMS-SS 模式,EAP 作为 Active 端主动发起 TCP 连接,设备作为 Passive 端监听端口。连接建立后,EAP 发送 Select.req(S1F13),设备回复 Select.rsp(S1F14),随后 EAP 发送 S1F1 确认设备在线。下面是一段简化的消息交互日志示例:

EAP  -> Equipment : S1F13  Select.req   (建立通信)
Equipment -> EAP  : S1F14  Select.rsp   (通信已建立)
EAP  -> Equipment : S1F1   AreYouThere  (确认在线)
Equipment -> EAP  : S1F2   OnLineData   (返回设备型号/版本)
EAP  -> Equipment : S2F33  DefineReport (定义报告)
Equipment -> EAP  : S2F34  DRACK         (报告定义确认)
EAP  -> Equipment : S2F35  LinkEvent     (绑定事件与报告)
Equipment -> EAP  : S2F36  LRACK         (绑定确认)
EAP  -> Equipment : S2F37  EnableEvent   (使能事件)
Equipment -> EAP  : S2F38  ERACK         (使能确认)

这段日志里,S2F33 定义报告(Report),S2F35 把事件(CEID)和报告(RPTID)绑定,S2F37 使能事件。只有走完这三步,设备才会在状态变化时主动上报 S6F11。很多初学者调试时发现"设备不报事件",八成是漏了 S2F37 使能,或者 CEID 与 RPTID 的绑定关系写错了。这些细节,课程后续会逐一展开。

学习建议:每学一个消息对(如 S1F1/S1F2、S6F11/S6F12),就动手在模拟器或真实设备上抓一次包,观察消息的 Stream、Function、W-bit 和消息体结构。把"看日志"变成习惯,比死记消息号有效得多。