1. SECS/GEM 协议概述:HSMS 与 SECS-I 传输机制、Socket 通信基础、GEM 状态机模型
1.1 SECS/GEM 协议栈与分层模型
SECS/GEM(SEMI Equipment Communications Standard / Generic Equipment Model)是半导体制造设备与上位主机(Host)之间进行数据通信与过程控制的核心标准族。协议栈自底向上分为物理层、传输层、消息层与应用层,每一层承担独立的职责。
| 层级 | 标准编号 | 核心职责 | 典型协议/载体 |
|---|---|---|---|
| 应用层 | SEMI E30 (GEM) | 设备模型、状态机、事件通知、远程控制 | GEM 状态机、Collection Events、Alarms |
| 消息层 | SEMI E5 (SECS-II) | 消息编码、数据项格式、功能码(SxFx) | Stream/Function、Item 类型(L/U/A/B) |
| 传输层 | SEMI E37 (HSMS) / E4 (SECS-I) | 连接管理、数据帧封装、重传与确认 | HSMS TCP/IP 或 SECS-I RS-232 |
| 物理层 | RS-232 / TCP/IP | 比特流传输、电气特性 | 串口线 / 以太网卡 |
关键理解: 在调试 Socket 通信异常时,问题通常出在传输层(HSMS 连接握手失败、心跳超时)或消息层(SECS-II 格式错误、长度不匹配)。GEM 状态机异常则属于应用层逻辑问题。
1.2 HSMS 与 SECS-I 传输机制对比
SECS/GEM 支持两种传输机制:HSMS(High-Speed SECS Message Services) 基于 TCP/IP 网络,SECS-I 基于 RS-232 串口。当前 90% 以上的新设备采用 HSMS,但存量设备中仍有大量 SECS-I 接口。
| 特性 | HSMS (E37) | SECS-I (E4) |
|---|---|---|
| 物理介质 | 以太网 (TCP/IP) | RS-232 串口 |
| 连接方式 | 主动连接 / 被动监听 | 点对点直连 |
| 传输速率 | 10/100/1000 Mbps | 9600 ~ 38400 bps |
| 消息长度 | 最大 4GB(理论) | 通常 ≤ 64KB |
| 错误检测 | TCP 校验和 + HSMS 头部校验 | Block Check Character (BCC) |
| 连接管理 | Select / Deselect / Linktest | ENQ / ACK / NAK 握手 |
| 多会话支持 | 支持多设备多连接 | 单点单会话 |
调试提示: HSMS 调试时重点关注 TCP 三次握手是否完成、Select.req 是否被对方 Accept;SECS-I 调试时重点关注波特率、数据位、停止位、奇偶校验是否与设备一致。
1.3 HSMS 连接建立与 Socket 通信基础
HSMS 使用 TCP Socket 作为底层传输通道。一个典型的 HSMS 连接建立过程包含以下步骤:
- TCP 连接建立: 主动方(通常是 Host)向设备 IP:Port 发起 TCP 三次握手。
- HSMS Select 协商: 主动方发送 Select.req 消息,设备回复 Select.rsp 确认连接归属。
- Linktest 心跳: 双方定时发送 Linktest.req 并等待 Linktest.rsp,超时则断开连接。
- SECS-II 消息传输: 在已建立的 HSMS 会话上封装 SECS-II 消息块。
常见异常: 防火墙规则未放行 TCP 端口(默认 5000/5001/9999)、NAT 导致 IP 地址转换错误、Socket 缓冲区溢出导致数据粘包、Linktest 超时时间配置不一致(默认 10s)。
1.4 GEM 状态机模型
GEM(E30)定义了设备必须实现的状态机模型,用于规范设备在不同运行阶段的行为。核心状态机包括:通信状态机、设备控制状态机、处理状态机。其中通信状态机是 Socket 连接调试的直接关联对象。
1.4.1 通信状态机(Communication State Machine)
| 状态 | 描述 | 典型触发条件 | Socket 连接状态 |
|---|---|---|---|
| DISABLED | 通信功能关闭,设备不响应任何 HSMS 请求 | 上电初始化、通信禁用指令 | 无连接 |
| ENABLED | 通信功能开启,等待连接 | 通信启用指令 | TCP LISTEN |
| COMMUNICATING | HSMS 连接已建立,Select 已完成 | Select.req 被 Accept | ESTABLISHED |
调试要点: 当设备处于 DISABLED 状态时,即使 TCP 端口可达,HSMS Select 也会被拒绝。此时应检查设备侧的通信启用标志(通常通过 S1F13/F14 查询)。
1.4.2 设备控制状态机(Equipment Control State Machine)
设备控制状态机定义了设备从初始化到生产运行的整体控制流程,包含以下主要状态:
- INITIALIZING: 设备正在初始化,不接受生产指令。
- ATTEMPT_ONLINE: 设备尝试进入在线模式,等待 Host 确认。
- HOST_CONNECTED: 设备已与 Host 建立通信,可接收远程指令。
- LOCAL: 设备处于本地控制模式,不接受远程指令。
- REMOTE: 设备处于远程控制模式,接受 Host 指令。
1.5 Socket 通信基础与异常分类
在 HSMS 通信中,Socket 是 TCP 连接的编程抽象。理解 Socket 通信的基础模型有助于快速定位网络层异常。
1.5.1 Socket 通信模型
- Server Socket: 设备通常作为 Server,在固定端口上监听连接请求。
- Client Socket: Host 作为 Client,主动向设备发起 TCP 连接。
- 数据收发: 使用 InputStream/OutputStream(Java)或 recv/send(C)进行二进制数据读写。
- 超时控制: 连接超时(connect timeout)、读取超时(read timeout)必须显式设置。
1.5.2 常见 Socket 通信异常
| 异常现象 | 可能原因 | 排查方向 |
|---|---|---|
| TCP 连接超时 | 防火墙拦截、IP 不可达、端口未开放 | ping、telnet、tcpdump |
| 连接被 RST | 设备未启动 HSMS 服务、端口冲突 | 检查设备日志、端口占用 |
| Select 失败 | 设备处于 DISABLED 状态、会话数超限 | S1F13 查询通信状态 |
| Linktest 超时 | 心跳间隔不匹配、网络延迟过高 | 检查双方 Linktest 配置 |
| 数据粘包/半包 | TCP 流式传输未按 HSMS 长度字段解析 | 检查消息长度字段解析逻辑 |
实用命令: 使用
telnet <设备IP> <端口> 测试 TCP 连通性;使用 tcpdump -i eth0 port 5000 -X 抓取 HSMS 原始报文。
1.6 本章小结
- SECS/GEM 协议栈分为物理层、传输层(HSMS/SECS-I)、消息层(SECS-II)、应用层(GEM)。
- HSMS 基于 TCP Socket,连接建立过程包括 TCP 握手、Select 协商、Linktest 心跳。
- GEM 状态机模型中的通信状态机(DISABLED/ENABLED/COMMUNICATING)直接影响 Socket 连接行为。
- 设备控制状态机(INITIALIZING → ATTEMPT_ONLINE → HOST_CONNECTED → LOCAL/REMOTE)定义了设备可操作范围。
- Socket 通信异常排查应遵循“网络层 → 传输层 → 应用层”的逐层递进思路。