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 连接建立过程包含以下步骤:

  1. TCP 连接建立: 主动方(通常是 Host)向设备 IP:Port 发起 TCP 三次握手。
  2. HSMS Select 协商: 主动方发送 Select.req 消息,设备回复 Select.rsp 确认连接归属。
  3. Linktest 心跳: 双方定时发送 Linktest.req 并等待 Linktest.rsp,超时则断开连接。
  4. SECS-II 消息传输: 在已建立的 HSMS 会话上封装 SECS-II 消息块。
常见异常: 防火墙规则未放行 TCP 端口(默认 5000/5001/9999)、NAT 导致 IP 地址转换错误、Socket 缓冲区溢出导致数据粘包、Linktest 超时时间配置不一致(默认 10s)。
HSMS 连接建立与 Socket 通信流程 Host (主动方) Equipment (被动方) ① TCP 三次握手 ② HSMS Select.req / Select.rsp ③ Linktest.req / Linktest.rsp (定时) ④ SECS-II 消息传输 (SxFx) ⚠ 防火墙规则必须放通 TCP 端口(默认 5000/5001/9999) Linktest 超时时间需双方一致,否则导致连接频繁断开

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 指令。
GEM 设备控制状态机(简化) INITIALIZING ATTEMPT_ONLINE HOST_CONNECTED LOCAL REMOTE S1F13/F14 用于查询和设置设备控制状态 REMOTE 状态下 Host 可发送 S2F41 远程指令;LOCAL 状态下设备仅接受本地操作

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 通信异常排查应遵循“网络层 → 传输层 → 应用层”的逐层递进思路。