1. HSMS 协议概述

1.1 HSMS 在 SECS/GEM 体系中的位置

SECS/GEM 协议族是半导体制造设备与工厂主机(Host)之间通信的国际标准(SEMI E4/E5/E30/E37)。HSMS(High-Speed SECS Message Services,SEMI E37)位于该体系中的传输层,负责在 TCP/IP 网络上可靠地传输 SECS-II 消息。

体系层级速览: GEM(E30,设备行为模型)→ SECS-II(E5,消息格式与内容)→ HSMS(E37,TCP/IP 传输)或 RS-232(E4,串行传输)。
SECS/GEM 协议栈分层结构 GEM (E30) — 设备行为与场景模型 SECS-II (E5) — 消息格式与内容 传输层 HSMS (E37) — TCP/IP RS-232 (E4) — 串行 HSMS 是当前半导体工厂主流的传输层方案,RS-232 仅用于老旧设备或调试场景

1.2 HSMS vs RS-232 对比

HSMS 与 RS-232 是 SECS/GEM 体系中两种截然不同的物理/传输层实现。理解它们的差异,有助于在连接建立失败时快速定位问题根源。

对比维度 HSMS (E37) RS-232 (E4)
物理层 以太网 (TCP/IP) 串行电缆 (RS-232C)
传输速率 10/100/1000 Mbps 及以上 典型 9600 ~ 38400 bps
最大距离 100 米(交换机级联可扩展) 约 15 米
连接方式 主动连接(设备/Host 均可发起) 固定点对点
消息边界 长度头 + 数据块(4 字节头) 依赖超时或特殊字符
多设备支持 支持(通过 IP 地址和端口) 仅点对点
连接建立 TCP 三次握手 + HSMS 控制消息 物理连接 + 波特率协商
调试复杂度 中等(需检查网络、端口、防火墙) 较低(需检查线缆、串口参数)
调试提示: 如果现场同时存在 HSMS 和 RS-232 设备,务必先确认设备配置的传输层类型。HSMS 连接失败时,TCP 连通性是第一排查点;RS-232 失败时,波特率和线缆定义是第一排查点。

1.3 HSMS 基本通信模型

HSMS 采用客户端-服务器(Client-Server)模型,但角色分配与常规 TCP 应用有所不同:

  • 主动方(Active):发起 TCP 连接请求的一方,通常是设备(Equipment)或主机(Host)。
  • 被动方(Passive):监听 TCP 端口,等待连接的一方。
  • 连接建立后:双方对等通信,不再区分主动/被动。

HSMS 连接的生命周期包含以下阶段:

  1. TCP 连接建立:三次握手,建立底层传输通道。
  2. HSMS 控制消息交换:发送 Select.req / Select.rsp 建立 HSMS 会话。
  3. 数据通信:传输 SECS-II 消息(Data Message)。
  4. 连接断开:发送 Deselect.req / Separate.req 或 TCP 断开。
HSMS 基本通信模型与连接建立流程 主动方 (Active) 设备 或 Host 被动方 (Passive) Host 或 设备 ① TCP 三次握手 ② Select.req ③ Select.rsp (成功) ④ 数据通信 (SECS-II Data Messages) ⑤ Separate.req / TCP 断开 关键点:HSMS 连接建立失败通常发生在步骤 ①(TCP 不通)或步骤 ②/③(Select 协商失败) 调试时应先确认 TCP 连通性,再检查 HSMS 控制消息交互

1.4 HSMS 消息格式

HSMS 在 TCP 流上传输的消息具有固定格式的头部(Header)和可选的正文(Data):

HSMS 消息格式(SEMI E37):
+--------+--------+--------+--------+
| 长度 (Length)    |  S (1) |  F (1) |
+--------+--------+--------+--------+
|  PType  |  SType  |  Session ID  |
+--------+--------+--------+--------+
| 系统字节 (System Bytes)            |
+--------+--------+--------+--------+
| 数据正文 (Data Block,可选)        |
+--------+--------+--------+--------+

字段说明:
- Length: 4 字节,表示后续所有字节的总长度(包括头部自身 10 字节 + 数据正文)
- S/F: 各 1 字节,Stream 和 Function 编号(仅 Data Message 有效)
- PType: 1 字节,协议类型(0x00 表示 HSMS)
- SType: 1 字节,会话类型(0x00 表示 Data Message,非 0 表示控制消息)
- Session ID: 2 字节,设备标识
- System Bytes: 4 字节,消息唯一标识,用于请求-响应匹配
常见陷阱: 许多连接建立失败案例的根因是 HSMS 消息头格式错误,例如 Length 字段计算不正确(未包含头部自身长度)、Session ID 不匹配、System Bytes 重复等。在抓包分析时,务必逐字节验证 HSMS 头部。

1.5 HSMS 控制消息类型

HSMS 定义了 6 种控制消息(SType ≠ 0),用于连接管理和会话控制:

SType 消息名称 方向 用途
0x00 Data Message 双向 传输 SECS-II 数据
0x01 Select.req 主动方 → 被动方 请求建立 HSMS 会话
0x02 Select.rsp 被动方 → 主动方 响应 Select 请求(成功/失败)
0x03 Deselect.req 双向 请求断开 HSMS 会话
0x04 Deselect.rsp 双向 响应 Deselect 请求
0x05 Separate.req 双向 通知对方即将断开连接
0x06 Reject.req 双向 拒绝无效或无法处理的消息
调试要点: 在 HSMS 连接建立失败时,抓包分析应重点关注:
① 是否收到 Select.req?
② 是否回复 Select.rsp?
③ Select.rsp 的返回码是否为 0x0000(成功)?
如果 Select.rsp 返回非 0 值,说明会话建立被拒绝,需检查设备 ID 冲突或配置错误。