2. SECS/GEM 协议栈:SECS-I、SECS-II、HSMS 协议层次关系与通信模型

SECS/GEM 协议栈并非单一协议,而是由 SECS-I、SECS-II 和 HSMS 三个核心层次构成的标准化通信体系。理解这三层的职责划分、数据封装关系以及通信模型,是掌握设备模式切换与链路恢复机制的基础。

2.1 协议栈三层架构总览

SECS/GEM 协议栈遵循 OSI 模型的分层思想,将半导体设备通信任务分解为物理传输、消息格式化与语义控制三个独立层次。下表总结了各层在协议栈中的位置与核心职责:

协议层 对应 OSI 层 核心职责 典型载体/标准
HSMS 传输层 / 会话层 TCP/IP 连接管理、消息分帧、链路状态监测与恢复 TCP/IP 网络 (Ethernet)
SECS-II 表示层 / 应用层 消息类型定义、数据项格式 (SML)、功能函数 (Stream/Function) 消息内容标准 (E5)
SECS-I 数据链路层 块传输协议、RTS/CTS 握手、块序列控制与重传 RS-232C 串行接口 (E4)
关键认知: 在现代 300mm 晶圆厂中,HSMS 已全面取代 SECS-I 的 RS-232 物理层,但 SECS-I 的块传输逻辑(如块号、重传机制)仍被 HSMS 继承并简化。SECS-II 作为“通用语言”贯穿始终。

2.2 协议层次关系与数据封装

当主机(Host)向设备(Equipment)发送一条“请求设备状态”消息时,数据在协议栈中自上而下逐层封装。下图展示了完整的封装流程与各层头部信息:

SECS/GEM 协议栈数据封装流程 SECS-II 消息体 (S1F1, L, 数据项) Stream=1, Function=1, W bit=0, 数据项: <L> HSMS 帧 (Header + SECS-II 消息体) Session ID=10, PType=0, SType=0, System Bytes=0x1234 TCP/IP 报文 (TCP Header + HSMS 帧) 源端口=5000, 目标端口=5000, 序列号=N, 确认号=M 物理层 (Ethernet / RS-232) 封装方向:发送端自上而下,接收端自下而上解封装 SECS-II 消息体作为 HSMS 帧的 Payload,HSMS 帧作为 TCP 报文的数据段
封装要点:
  • SECS-II 只关心消息的语义(如 S1F1 表示“请求设备状态”),不关心如何传输。
  • HSMS 在 SECS-II 消息前添加 10 字节的帧头(Message Header),用于标识会话、消息类型和系统字节。
  • TCP/IP 将整个 HSMS 帧视为应用层数据,添加 TCP 头部后交给网络层。

2.3 SECS-I:块传输协议(传统串行层)

SECS-I(SEMI E4)定义了点对点串行通信的块传输机制。虽然现代工厂已较少直接使用 RS-232C 硬件,但其块传输逻辑(Block Transfer Protocol)对理解 HSMS 的“消息分块”概念仍有帮助。

2.3.1 SECS-I 核心机制

  • 块 (Block): 每个消息被分割为多个 256 字节的块,最后一块可小于 256 字节。
  • RTS/CTS 握手: 发送方发出 RTS(请求发送),接收方回复 CTS(允许发送)后,才开始传输块数据。
  • 块号 (Block Number): 每个块携带 1 字节的块号(0-127),用于接收方重组消息和检测丢块。
  • 重传机制: 接收方通过 ENQ/ACK/NAK 协议确认每个块的接收,超时或 NAK 触发重传。
注意: SECS-I 的 RTS/CTS 握手与硬件流控(RS-232 的 RTS/CTS 引脚)名称相同但含义不同。SECS-I 的 RTS/CTS 是消息级的软件握手,而非引脚电平控制。

2.4 SECS-II:消息标准化层

SECS-II(SEMI E5)定义了设备与主机之间交换消息的语法和语义。它是 GEM 标准的基础,所有设备行为(如状态上报、报警、数据收集)都通过 SECS-II 消息实现。

2.4.1 消息结构:Stream 与 Function

每条 SECS-II 消息由 Stream (流) 和 Function (功能) 唯一标识,格式为 S<n>F<m>。例如 S1F1 表示 Stream 1、Function 1。

Stream 编号 功能分类 典型消息示例
1 设备状态与控制 S1F1 (请求状态), S1F13 (建立通信请求)
2 设备控制与诊断 S2F17 (日期时间请求), S2F41 (远程命令)
5 报警管理 S5F1 (报警上报), S5F3 (报警使能)
6 数据收集 S6F11 (事件上报), S6F15 (数据收集请求)
7 配方管理 S7F1 (配方请求), S7F19 (配方下载)

2.4.2 数据项格式 (SML)

SECS-II 使用 SML (SECS Message Language) 表示数据项。基本格式为 <数据类型 值>,支持嵌套列表 <L>。

// 示例:S1F1 请求设备状态(无数据项)
S1F1 W

// 示例:S1F2 响应设备状态(包含列表数据)
S1F2 
<L
  <A "MDLN">      // 设备型号
  <A "SOFTREV">   // 软件版本
>
实践提示: 在调试设备通信时,使用 Wireshark 抓包并配合 SECS-II 解析器,可以直观看到 Stream/Function 和数据项内容。这是排查模式切换失败或链路恢复异常的首选方法。

2.5 HSMS:高速消息服务层

HSMS(SEMI E37)是基于 TCP/IP 的通信协议,是当前半导体工厂自动化的事实标准。它取代了 SECS-I 的串行物理层,同时保留了 SECS-II 的消息语义。

2.5.1 HSMS 帧结构

HSMS 帧由 10 字节的消息头 和 可变长度的消息体(即 SECS-II 消息)组成。

偏移 (字节) 字段 长度 (字节) 说明
0-1 Session ID 2 设备会话标识,通常为设备 ID
2 Header Byte 2 1 保留位 / 控制位
3 PType 1 协议类型 (0=SECS-II)
4 SType 1 会话类型 (0=数据消息, 1=选择, 2=分离, 9=链路测试)
5-7 System Bytes 3 系统字节,用于消息配对与超时检测
8-9 Length 2 消息体长度 (字节数)
10+ Message Body 可变 SECS-II 消息内容

2.5.2 HSMS 通信模型:主动连接与被动连接

HSMS 定义了两种连接角色:

  • 主动实体 (Active Entity): 发起 TCP 连接的一方,通常是主机(Host)。
  • 被动实体 (Passive Entity): 监听 TCP 连接请求的一方,通常是设备(Equipment)。

下图展示了 HSMS 连接建立与链路测试的典型流程:

HSMS 连接建立与链路测试流程 主机 (Active) 设备 (Passive) ① TCP SYN → ← ② TCP SYN-ACK ③ TCP ACK → ④ HSMS Select.req → ← ⑤ HSMS Select.rsp (成功) ⑥ HSMS Linktest.req → ← ⑦ HSMS Linktest.rsp 链路测试 (Linktest) 是 HSMS 保活机制的核心 设备或主机在空闲时定期发送 Linktest.req,若超时未收到响应则判定链路断开并触发恢复流程

2.5.3 HSMS 状态机

HSMS 定义了 5 种连接状态,设备与主机在通信过程中在这 5 种状态之间迁移:

状态 描述 典型触发条件
Not Connected 未建立 TCP 连接 设备启动、连接断开、连接失败
Connected TCP 连接已建立,但未完成 HSMS 选择 TCP 三次握手完成
Selected HSMS 选择完成,可交换 SECS-II 数据消息 Select.req / Select.rsp 成功
Link Test 正在执行链路测试 Linktest.req 发送后等待响应
Not Selected TCP 连接存在,但 HSMS 会话已分离 Deselect.req / Deselect.rsp 或通信错误
链路恢复关键点: 当 HSMS 检测到链路超时(Linktest 无响应)或收到 TCP RST 时,状态机从 Selected 回退到 Not Connected。设备应用层(GEM)必须监听此状态变化,触发 通信状态 (COMM) 从 ENABLED 切换到 DISABLED,并启动重连计时器。

2.6 三层协议协同工作模型

在实际运行中,SECS-I(或 HSMS)、SECS-II 和 GEM 标准协同工作,形成完整的通信模型。下图展示了从物理层到应用层的完整调用关系:

SECS/GEM 三层协议协同工作模型 GEM 应用层 (设备行为控制) 状态机、报警、数据收集、配方管理、远程命令 SECS-II 消息层 (语义格式化) S1F1, S2F41, S5F1, S6F11 ... HSMS / SECS-I 传输层 (分帧与传输) HSMS: TCP/IP 帧封装 | SECS-I: 块传输 + RTS/CTS 物理层 (Ethernet / RS-232) GEM 标准不直接操作 TCP 或串口,而是通过 SECS-II 消息与传输层交互
学习建议: 在后续章节学习设备模式切换(如 ONLINE → OFFLINE)时,请时刻思考:这个切换命令在 SECS-II 层是哪个 Stream/Function?在 HSMS 层如何封装传输?链路断开时 GEM 状态机如何响应?这种分层思维是诊断通信故障的核心能力。