1. SECS/GEM 协议概述:半导体工厂自动化标准、HSMS 与 SECS-I 物理层、GEM 核心功能
1.1 半导体工厂自动化的通信基石
在半导体与 FPD(平板显示)制造中,数百台工艺设备(如刻蚀机、光刻机、沉积设备)必须与工厂主机(Host)实时交换数据,以完成配方下发、参数采集、报警上报和批次控制。SECS/GEM 协议族正是为此场景设计的国际标准通信框架,由 SEMI(国际半导体设备与材料协会)制定并维护。
核心定位:SECS/GEM 不是单一协议,而是一套从物理层到应用层的分层标准,确保不同厂商的设备能够以统一语义与工厂自动化系统(MES / EAP)对接。
1.2 协议族分层架构
SECS/GEM 协议族从下至上分为三个层次,每一层解决不同的问题:
| 层次 | 标准编号 | 功能描述 | 典型传输介质 |
|---|---|---|---|
| 物理层 / 传输层 | SECS-I (E4) | 串行 RS-232C 半双工通信,定义帧格式、块传输与超时机制 | RS-232C 电缆(15m以内) |
| 网络层 / 传输层 | HSMS (E37) | 基于 TCP/IP 的以太网通信,替代 SECS-I 的串行链路 | 以太网(100Base-TX / 1GbE) |
| 消息层 / 应用层 | SECS-II (E5) | 定义消息结构、数据项格式(SML)、流(Stream)与功能(Function)编码 | 逻辑消息载体 |
| 设备行为层 | GEM (E30) | 定义设备状态模型、事件通知、变量集合、远程控制等标准化行为 | 基于 SECS-II 消息 |
工程要点:在裸机环境下,通常先实现 SECS-I 或 HSMS 的物理收发,再在其上构建 SECS-II 消息解析器,最后挂载 GEM 状态机。RTOS 移植的核心任务之一就是将物理层中断处理与协议栈任务解耦。
1.3 HSMS 与 SECS-I 物理层对比
选择 HSMS 还是 SECS-I 取决于设备硬件接口与工厂网络架构。下表从嵌入式开发视角对比两者关键差异:
| 对比项 | SECS-I (E4) | HSMS (E37) |
|---|---|---|
| 物理介质 | RS-232C 串行线(DB9/DB25) | 以太网(RJ45) |
| 传输速率 | 9600 / 19200 bps(典型) | 10/100/1000 Mbps |
| 通信模式 | 半双工,主从轮询 | 全双工,TCP 连接 |
| 最大报文长度 | 254 字节(单块) | 无限制(TCP 流分段) |
| 连接管理 | 物理电平检测 | TCP 连接建立/断开 + T5/T6/T7 超时 |
| 典型中断负载 | 每字节中断(UART) | 每包中断(DMA + MAC) |
| RTOS 适配难点 | 字节超时 T1/T2 精确控制 | TCP 粘包拆包 + 多连接状态机 |
1.4 GEM 核心功能模型
GEM(Generic Equipment Model)定义了设备与主机之间标准化的交互行为,是 SECS/GEM 协议栈中与业务逻辑最贴近的一层。嵌入式开发者在移植时,必须实现以下核心功能集合:
- 状态模型(State Model): 设备在 INIT、IDLE、SETUP、PROCESSING 等状态间迁移,主机通过消息查询或触发状态变更。
- 事件通知(Event Notification): 设备主动向主机报告特定事件(如报警产生、配方结束、参数越限),使用 CEID(Collection Event ID)标识。
- 变量集合(Variable Collection): 包括设备常量(EC)、状态变量(SV)、数据变量(DV),主机可读取或订阅。
- 远程控制(Remote Command): 主机发送 S2F41(Remote Command)消息,设备执行启动、停止、暂停等操作。
- 配方管理(Recipe Management): 主机向设备上传/下载工艺配方,设备存储并应用。
- 报警管理(Alarm Management): 设备上报报警 ID、严重等级与描述文本,主机确认清除。
1.5 嵌入式视角:协议栈移植的关键挑战
从裸机到 RTOS 的移植并非简单添加调度器,而是需要重新设计协议栈的任务边界与同步机制。以下是本课程后续章节将重点解决的几个核心问题:
- 中断与任务解耦: 裸机中物理层收发直接在 ISR 中完成;RTOS 下应将数据从 ISR 送入队列,由协议任务处理。
- 超时管理: SECS-I 的 T1(字符超时)、T2(块超时)以及 HSMS 的 T5/T6/T7 需要高精度定时器,RTOS 的软件定时器或硬件定时器任务可满足要求。
- 消息缓冲与流控: 多任务环境下,SECS-II 消息的组装与解析需要线程安全的环形缓冲区或消息队列。
- GEM 状态机并发: 设备状态迁移可能被多个主机命令同时触发,必须用互斥锁保护状态变量。
常见移植误区: 直接将裸机中的全局变量和轮询循环放入 RTOS 任务中,而不做临界区保护,会导致消息错乱、状态不一致甚至死锁。正确的做法是:每个协议层封装为独立任务,层间通过队列传递事件,通过信号量同步状态变更。