1. SECS/GEM 协议概述:半导体设备自动化协议族
SECS/GEM 是半导体制造领域实现设备自动化与工厂主机(Host)通信的事实标准协议族。它由 SEMI(国际半导体设备与材料协会)制定,覆盖从物理连接、数据传输到设备行为建模的完整层次。理解 SECS/GEM 的分层架构,是后续进行数据抓包与 SML 解析的基础。
核心认知:SECS/GEM 并非单一协议,而是一组相互依赖的协议栈。抓包时看到的 TCP 报文、SECS-II 消息块、GEM 状态机,分别对应不同层次。
1.1 协议族全景:四个核心成员
SECS/GEM 协议族由四个主要标准组成,它们从下至上构成完整的通信栈:
| 标准 | 全称 | 层次定位 | 核心职责 |
|---|---|---|---|
| SECS-I | SEMI E4 | 物理层 / 链路层 | RS-232 串行通信,定义帧格式、校验、重传 |
| HSMS | SEMI E37 | 传输层 | TCP/IP 网络通信,替代 SECS-I 的串行链路 |
| SECS-II | SEMI E5 | 消息层 / 表示层 | 定义消息结构、数据类型(SML)、流/功能码 |
| GEM | SEMI E30 | 应用层 / 行为层 | 定义设备状态模型、事件报告、远程控制场景 |
实战提示:在 Wireshark 抓包中,HSMS 表现为 TCP 连接上的数据包;SECS-II 是 TCP 负载中的结构化二进制块;GEM 行为则体现在消息的流/功能码组合与状态转换中。
1.2 分层架构与依赖关系
SECS/GEM 采用严格的分层模型,上层依赖下层提供的服务。这种分层设计使得物理传输方式的变化(如从串口升级到以太网)不会影响上层的消息语义和设备行为。
常见误解:很多人将 HSMS 与 SECS-II 混为一谈。抓包时,HSMS 负责 TCP 连接的建立与维持(如 T3 超时、心跳),而 SECS-II 消息是 HSMS 报文中的负载(Data Message)。两者在 Wireshark 中属于不同的解析层级。
1.3 各协议层详细说明
1.3.1 SECS-I (E4) — 串行通信基石
- 物理介质:RS-232 串行线缆,点对点连接。
- 帧格式:长度字节 + 控制字节 + 数据块 + 校验和。
- 特点:半双工、波特率通常为 9600/19200 bps、适用于短距离。
- 现状:老旧设备仍在使用,新设备已全面转向 HSMS。
1.3.2 HSMS (E37) — 以太网传输标准
- 传输层:基于 TCP/IP,默认端口 5000(主动模式)或 5001(被动模式)。
- 报文类型:Data Message(携带 SECS-II 数据)、Select/Deselect/Reject(连接管理)、Linktest(心跳)。
- 关键超时:T3(Reply Timeout)、T5(Connect Timeout)、T6(Control Timeout)、T7(Linktest Interval)。
- 抓包特征:HSMS 报文前 4 字节为长度(Length),后跟 10 字节 HSMS 头部。
1.3.3 SECS-II (E5) — 消息语义定义
- 消息结构:Stream(流) + Function(功能码),例如 S1F1、S2F41。
- 数据类型:L(List)、B(Boolean)、A(ASCII)、I1/I2/I4/I8(整数)、F4/F8(浮点)、U1/U2/U4/U8(无符号整数)等。
- SML 表示:SECS Message Language,人类可读的文本格式,用于描述 SECS-II 消息内容。
- 抓包特征:Wireshark 解析 SECS-II 时,会显示 Stream/Function、Direction(Host→EQ 或 EQ→Host)、以及 Item 树。
1.3.4 GEM (E30) — 设备行为建模
- 状态模型:定义设备从 INIT → NOT READY → READY → EXECUTING 等状态转换。
- 场景集合:包括设备通信建立、远程控制、参数上传、报警管理、事件通知、配方管理。
- 必备功能:GEM 规定了设备必须支持的最小功能集(如 S1F13/F14 通信建立、S2F41 远程命令)。
- 实战意义:GEM 合规性测试是设备验收的关键环节,抓包分析可验证设备是否按标准响应。
1.4 协议栈数据封装关系
当一条 GEM 事件消息从设备发送到主机时,数据在协议栈中的封装过程如下:
- GEM 层:决定发送“事件报告”(例如 S6F11),构造 SECS-II 消息内容。
- SECS-II 层:将消息编码为二进制 Item 树(L, A, I4 等),加上 Stream/Function 头部。
- HSMS 层:将 SECS-II 二进制块作为 Data Message 的负载,添加 10 字节 HSMS 头部(Session ID, Message ID, 控制位等),再在前面加上 4 字节长度。
- TCP/IP 层:将 HSMS 报文作为 TCP 负载发送。
抓包视角:在 Wireshark 中,你首先看到的是 TCP 报文。展开 TCP 负载后,可以看到 4 字节长度字段,接着是 10 字节 HSMS 头部。HSMS 头部中的 S/F 字段指向 SECS-II 的 Stream 和 Function。再往下展开,才是具体的 SECS-II Item 数据。理解这个封装层次,是正确解析 SML 的前提。
1.5 协议族版本与兼容性
| 标准 | 最新版本 | 向后兼容 | 备注 |
|---|---|---|---|
| SECS-I (E4) | E4-1-2020 | 是 | 仍用于部分 legacy 设备 |
| HSMS (E37) | E37-1-2021 | 是 | 主流传输方式,支持高速通信 |
| SECS-II (E5) | E5-1-2022 | 是 | 数据类型和消息结构基本稳定 |
| GEM (E30) | E30-1-2023 | 是 | 新增了部分场景定义,核心模型不变 |
实战建议:虽然版本在更新,但 SECS/GEM 的核心机制(如 S1F13/F14 通信建立、S6F11 事件报告)自 1990 年代以来几乎没有变化。抓包分析时,掌握 SML 语法和常见流/功能码,即可应对绝大多数场景。
1.6 本章小结
- SECS/GEM 协议族由 SECS-I / HSMS(传输层)、SECS-II(消息层)、GEM(应用层)组成。
- HSMS 基于 TCP/IP,是当前主流的传输方式;SECS-I 用于串行通信。
- SECS-II 定义消息的流/功能码和 SML 数据类型,是抓包解析的核心对象。
- GEM 定义设备行为模型,是设备自动化的“业务逻辑”。
- 理解分层封装关系,是正确使用 Wireshark 进行 SECS/GEM 抓包分析的第一步。