2. SECS/GEM协议基础:SECS-I、SECS-II、HSMS协议栈与GEM标准概述

在晶圆厂MES与设备集成工程中,SECS/GEM协议族是事实上的通信标准。它并非单一协议,而是一套分层、可扩展的协议栈。理解其分层架构、消息格式以及GEM标准定义的行为模型,是进行接口开发与调试的前提。

工程视角: 在MES对接项目中,90%的通信问题源于对协议栈分层职责的混淆。例如,将HSMS的TCP连接断开误判为SECS-II消息格式错误。明确每一层的边界,能大幅提升排错效率。

2.1 SECS/GEM协议栈分层模型

SECS/GEM协议栈遵循OSI模型的分层思想,但在实际工业应用中,主要关注以下四层:

OSI层 协议层 核心职责 典型标准
应用层 GEM (Generic Equipment Model) 定义设备行为模型、状态机、标准场景(如远程控制、报警管理、配方管理) SEMI E30
表示层 SECS-II (SECS Message Content) 定义消息的数据结构、格式(Item/List)、数据类型(如U4, A, F8) SEMI E5
会话层/传输层 HSMS (High-Speed SECS Message Services) 定义基于TCP/IP的会话管理、连接建立/断开、消息传输 SEMI E37
物理层/数据链路层 SECS-I (SECS-I Interface) 定义基于RS-232的物理连接、块传输、字节流控制 SEMI E4
关键点: 现代晶圆厂几乎全部采用HSMS替代SECS-I作为传输层。HSMS基于TCP/IP,支持高速、长距离通信,而SECS-I仅用于老旧设备或特殊场景。但SECS-II和GEM的语义在两种传输层上完全一致。
SECS/GEM 协议栈分层架构 SECS/GEM 协议栈分层架构 GEM (SEMI E30) - 设备行为模型 应用层:定义状态机、场景、标准消息流 SECS-II (SEMI E5) - 消息内容与格式 表示层:Item/List 嵌套结构,数据类型编码 HSMS (SEMI E37) - 高速消息服务 传输层:TCP/IP 会话管理、消息封装与传输 SECS-I (SEMI E4) - 物理接口 物理层/数据链路层:RS-232 串行通信、块传输 说明:上层协议(GEM/SECS-II)完全独立于下层传输方式(HSMS或SECS-I),实现语义与传输解耦。

2.2 SECS-I:物理层与数据链路层

SECS-I 是协议栈中最底层的标准,定义了设备与主机之间的物理连接和字节流传输机制。虽然现代工厂已较少直接使用,但其设计思想影响了HSMS的块传输机制。

  • 物理层: 采用RS-232C串行接口,点对点连接,传输速率通常为9600 bps ~ 38400 bps。
  • 数据链路层: 定义了一种“块(Block)”传输协议。每个消息被分割成多个数据块,每个块包含块头(Block Header)和数据区。
  • 流控制: 使用ENQ/ACK/NAK握手信号进行流控,确保数据完整传输。
工程避坑: SECS-I 的RS-232通信距离通常限制在15米以内,且抗干扰能力弱。在MES对接项目中,如果设备仅支持SECS-I,强烈建议通过协议转换器(SECS-I to HSMS Gateway)接入工厂网络,而不是直接拉长串口线。

2.3 HSMS:高速消息服务

HSMS 是当前晶圆厂主流的传输层协议,它基于TCP/IP,提供了比SECS-I更高的吞吐量和更灵活的连接管理。

2.3.1 HSMS 会话状态机

HSMS 定义了严格的连接建立与断开流程,确保通信双方状态一致。核心状态包括:

状态 描述 典型触发事件
NOT CONNECTED TCP连接未建立 初始状态;连接断开后进入此状态
CONNECTED TCP连接已建立,但尚未进行HSMS握手 TCP三次握手成功
SELECTED HSMS会话已建立,可以传输SECS-II消息 Select.req / Select.rsp 握手成功
NOT SELECTED TCP连接存在,但HSMS会话未建立或已断开 Select.rsp 失败;Deselect 操作
HSMS 会话状态机 HSMS 会话状态机 NOT CONNECTED CONNECTED SELECTED NOT SELECTED TCP 连接 Select.req/rsp Deselect / 超时 重新 Select TCP 断开

2.3.2 HSMS 消息格式

HSMS 在TCP流上传输的消息具有固定头部格式,用于标识消息长度、会话ID、消息类型等关键信息。

HSMS 消息头部 (10 bytes):
+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+
|  Length(4)      |  Device ID(2)  |  Stream(1) |  Function(1) |  PType(1) |  SType(1) |
+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+
- Length: 消息体(SECS-II数据)的字节长度,不包含头部。
- Device ID: 设备标识符,用于多设备场景。
- Stream/Function: 标识SECS-II消息类型(如 S1F13, S2F41)。
- PType: 协议类型,通常为0(SECS-II)。
- SType: 会话类型,0表示数据消息,其他值表示控制消息(如Select.req)。

2.4 SECS-II:消息内容与数据结构

SECS-II 定义了消息的语义和语法。它使用一种自描述的嵌套结构——Item/List——来组织数据。

2.4.1 数据类型

类型码 数据类型 描述 字节长度
0x00 List 包含多个子Item的容器 可变
0x10 Binary 二进制数据 可变
0x20 Boolean 布尔值 1
0x30 ASCII ASCII字符串 可变
0x40 U1 / U2 / U4 / U8 无符号整数(1/2/4/8字节) 1/2/4/8
0x50 I1 / I2 / I4 / I8 有符号整数 1/2/4/8
0x60 F4 / F8 浮点数(4/8字节) 4/8

2.4.2 消息结构示例:S1F13 (Establish Communications Request)

S1F13 是GEM标准中用于建立通信的典型消息。其SECS-II结构如下:

S1F13 (Establish Communications Request)
<L[2]
  <A "MDLN">   // 设备型号
  <A "REV">    // 软件版本
>

对应的字节编码(十六进制)示意:

// 假设 MDLN = "ABC123", REV = "1.0"
// 编码后字节流(简化):
01 02 00 02  // List, 2字节长度, 包含2个Item
41 06 41 42 43 31 32 33  // ASCII Item, 6字节, "ABC123"
41 03 31 2E 30           // ASCII Item, 3字节, "1.0"
开发提示: 在Python中,可以使用 secsgem 或 pysecs 库来构建和解析SECS-II消息,无需手动处理字节编码。例如:SecsMessage(stream=1, function=13, data=[('MDLN', 'ABC123'), ('REV', '1.0')])。

2.5 GEM:通用设备模型

GEM (SEMI E30) 是SECS/GEM协议栈的应用层标准。它定义了设备在工厂环境中的标准行为模型,使得不同厂商的设备能够以统一的方式与MES交互。

2.5.1 GEM 核心能力

  • 状态管理: 定义设备状态模型(如 INIT, IDLE, PROCESSING, ALARM),并规定状态转换规则。
  • 远程控制: 支持MES远程启动、停止、暂停设备处理。
  • 报警管理: 设备主动上报报警(Alarm),MES可查询报警列表。
  • 配方管理: 支持MES下载、上传、选择配方(Recipe)。
  • 数据收集: 支持Trace(周期性数据采集)和Event(事件触发数据上报)。
  • 物料跟踪: 支持晶圆盒(Cassette)或晶圆(Wafer)级别的物料跟踪。

2.5.2 GEM 标准消息流示例:设备初始化

设备上电后,与MES建立通信的典型流程:

  1. TCP连接建立: 设备作为Client,主动连接MES Host的HSMS端口。
  2. HSMS Select: 设备发送 Select.req,MES回复 Select.rsp,建立HSMS会话。
  3. SECS-II 通信建立: 设备发送 S1F13 (Establish Communications Request),MES回复 S1F14 (Establish Communications Acknowledge)。
  4. 设备属性上报: 设备发送 S1F1 (Are You There Request),MES回复 S1F2 (On Line Data)。
  5. 进入在线模式: 设备进入ON-LINE状态,准备接收MES指令。
GEM 设备初始化流程 GEM 设备初始化流程 设备 (Equipment) MES Host 1. TCP Connect 2. Select.req Select.rsp 3. S1F13 S1F14 4. S1F1 S1F2 5. ON-LINE 状态 说明:S1F13/S1F14 是GEM标准中建立通信的必选消息对。

2.6 协议栈集成要点总结

层次 开发关注点 常见问题
HSMS TCP连接管理、心跳机制、会话状态机 连接超时、Select握手失败、心跳丢失导致断连
SECS-II Item/List嵌套结构、数据类型编码、消息长度计算 数据类型不匹配、List嵌套层级错误、长度字段溢出
GEM 状态机实现、标准场景(S1F13/S1F14等)、事件上报 状态转换不符合GEM规范、漏报必选事件、配方管理流程不完整
工程建议: 在MES对接项目中,建议先使用SECS/GEM模拟器(如SECS Simulator、Equipment Simulator)验证协议栈各层的连通性,再接入真实设备。这能有效隔离设备端与MES端的问题,缩短调试周期。