1. SECS/GEM 协议概述
1.1 协议起源与标准化历程
SECS/GEM 协议诞生于 20 世纪 80 年代,由 SEMI(国际半导体设备与材料协会)主导制定,旨在解决半导体制造设备与上位主机(Host)之间的通信标准化问题。在协议出现之前,不同设备厂商使用私有通信协议,导致工厂自动化系统集成成本高昂、维护困难。
关键里程碑:
- 1980 年 — SEMI 成立通信标准工作组,启动 SECS-I(SEMI Equipment Communications Standard)制定。
- 1982 年 — SECS-I 正式发布(SEMI E4),定义基于 RS-232 串口的点对点通信。
- 1990 年 — GEM(Generic Equipment Model)标准发布(SEMI E30),统一设备行为模型与状态机。
- 1995 年 — HSMS(High-Speed SECS Message Services)标准发布(SEMI E37),支持 TCP/IP 网络通信。
- 2000 年后 — 协议持续演进,增加安全扩展、XML 数据描述等特性。
行业共识:SECS/GEM 是半导体工厂自动化的事实标准,全球超过 95% 的 300mm 晶圆厂强制要求设备支持该协议。
1.2 在半导体制造中的作用
SECS/GEM 在半导体制造中扮演着“设备与工厂系统之间的通用语言”角色。它使不同厂商的设备能够以统一的方式与 MES(制造执行系统)、EAP(设备自动化程序)、RMS(配方管理系统)等上位系统交互。
SECS/GEM 在制造中的具体作用包括:
- 设备控制 — 远程启动/停止工艺、加载配方、切换运行模式。
- 状态监控 — 实时上报设备状态(运行中、待机、报警、离线等)。
- 数据收集 — 按事件或周期采集工艺参数(温度、压力、流量等)。
- 报警管理 — 设备异常时主动上报报警代码与描述。
- 物料追踪 — 晶圆盒(FOUP/Cassette)的进出站、批次绑定。
1.3 HSMS 与 SECS-I 对比
SECS-I 和 HSMS 是 SECS/GEM 协议栈中定义物理层与传输层的两个标准。SECS-I 基于 RS-232 串口通信,而 HSMS 基于 TCP/IP 网络通信。下表从多个维度进行对比:
| 对比维度 | SECS-I(SEMI E4) | HSMS(SEMI E37) |
|---|---|---|
| 物理层 | RS-232 串口(点对点) | TCP/IP 网络(以太网) |
| 传输速率 | 9.6 kbps ~ 115.2 kbps | 10/100/1000 Mbps(取决于网络) |
| 最大距离 | 约 15 米(无中继) | 局域网内无限制(跨交换机/路由器) |
| 连接拓扑 | 1 对 1(设备 ↔ 主机) | 1 对 N(多设备 ↔ 多主机) |
| 消息帧格式 | 长度字节 + 消息头 + 数据块 | 消息长度(4 字节)+ 消息头(10 字节)+ 数据块 |
| 可靠性 | 硬件流控 + 校验和 | TCP 协议保证可靠传输 |
| 并发连接 | 不支持 | 支持多会话(多连接) |
| 适用场景 | 老旧设备、低速控制 | 现代工厂、高速数据采集 |
迁移注意事项:虽然 HSMS 已成为主流,但部分 200mm 及以下晶圆厂仍在使用 SECS-I。在协议升级或设备替换时,需注意消息层(SECS-II)兼容性不变,仅传输层切换。
1.4 协议栈分层结构
SECS/GEM 协议栈采用分层设计,各层职责清晰:
课程聚焦:本课程重点讨论传输层(HSMS/SECS-I)的超时参数设置与重传优化策略,这是保障通信稳定性和实时性的关键环节。
1.5 典型通信流程示例
以下是一个典型的 SECS/GEM 通信流程(设备 → 主机建立连接 → 发送数据):
- 连接建立 — 设备(Equipment)作为客户端,向主机(Host)发起 TCP 连接(HSMS 模式)。
- 选择(Select) — 设备发送 Select.req 消息,主机回复 Select.rsp,确认通信会话。
- 数据交换 — 设备发送 S1F1(Are You There?),主机回复 S1F2(On-Line Data)。
- 状态上报 — 设备主动发送 S6F11(Event Report),主机回复 S6F12 确认。
- 连接断开 — 设备或主机发送 Deselect.req / Separate.req,关闭连接。
// HSMS 消息帧结构示例(十六进制)
// 消息长度(4字节) + 消息头(10字节) + 数据块
00 00 00 0E // 消息长度 = 14 字节(消息头 10 + 数据 4)
00 00 00 01 // 会话 ID = 1
00 00 00 01 // 消息头字节2-3:Stream=1, Function=1
00 00 00 00 // 消息头字节4-5:W-bit=0, 事务ID=0
00 00 00 00 // 消息头字节6-9:系统字节(System Bytes)
01 01 00 00 // 数据块:S1F1 的简单数据内容