2. SECS/GEM 通信模型:设备端与主机端的角色定义与通信流程

在 SECS/GEM 协议体系中,通信双方被严格定义为两个角色:设备端(Equipment)与主机端(Host)。理解这两个角色的职责边界、连接建立方式以及消息交互流程,是进行通信调试与抓包分析的基础。本章将围绕角色定义、通信模型与典型流程展开,并辅以结构图与表格,帮助您建立清晰的通信全景认知。

2.1 角色定义与职责边界

SECS/GEM 采用主从(Master/Slave)与对等(Peer-to-Peer)混合模型。在物理连接层面,Host 通常作为 TCP 客户端主动发起连接,Equipment 作为 TCP 服务器被动监听;但在消息交互层面,双方是对等的,均可主动发送 Primary Message。

角色 典型设备 TCP 角色 主要职责 GEM 能力要求
Host(主机端) MES、EAP、RMS Client(主动连接) 配方下发、作业调度、状态监控、报警管理、数据收集 无需 GEM 认证,但需实现 SECS-II 消息编解码
Equipment(设备端) 刻蚀机、沉积设备、检测设备 Server(被动监听) 执行工艺、上报状态、响应查询、发送报警/事件 必须通过 GEM 认证,实现 State Model、Collection Event、Alarm 等
调试要点:抓包时,若看到 Host 发送 Linktest.req 而 Equipment 无响应,通常不是 Equipment 离线,而是 TCP 连接已断开但 Host 未感知。此时应检查 Equipment 端的 TCP Keep-Alive 或 S7F0 心跳配置。

2.2 通信模型分层架构

SECS/GEM 协议栈分为三层,从下至上依次为:TCP/IP 传输层、SECS-I 消息层、SECS-II 会话层。GEM 则在 SECS-II 之上定义了设备行为标准。

SECS/GEM 协议栈分层模型 TCP/IP 传输层 物理连接、端口号(默认 5000/5001)、数据包分片与重组 SECS-I 消息层 消息头(Device ID、Stream/Function、Wbit、System Bytes)、块传输 SECS-II 会话层 Item 数据格式(L/U/A/B/BO/F/I8)、消息编解码、事务管理 GEM 设备行为层 状态模型(State Model)、事件通知(CEID)、报警(ALID)、远程命令(RCMD) 物理 消息 会话 行为 调试工具需支持从 TCP 原始字节到 SECS-II Item 的逐层解析,否则无法定位编解码错误
选型提示:选择调试工具时,务必确认其支持 SECS-I 块传输重组与 SECS-II Item 树形展示。仅显示 HEX 的工具无法满足 GEM 级调试需求。

2.3 通信流程:从连接到会话

一次完整的 SECS/GEM 通信会话包含以下阶段:

  1. TCP 连接建立:Host 主动向 Equipment 的 IP:Port 发起 TCP 三次握手。
  2. 通信初始化(S1F13/S1F14):Host 发送 S1F13(通信建立请求),Equipment 回复 S1F14 携带设备信息。
  3. 设备状态查询(S1F1/S1F2):Host 发送 S1F1 查询设备是否在线,Equipment 回复 S1F2。
  4. GEM 能力协商(S1F17/S1F18):Host 发送 S1F17 请求 GEM 能力列表,Equipment 回复 S1F18。
  5. 正常业务交互:配方管理、报警上报、事件通知、数据收集等。
  6. 通信断开:Host 发送 S1F15(通信关闭请求),Equipment 回复 S1F16,随后 TCP 连接关闭。
SECS/GEM 通信流程时序图 Host Equipment TCP SYN TCP SYN+ACK TCP ACK S1F13 (通信建立请求) S1F14 (设备信息回复) S1F1 (在线查询) S1F2 (在线确认) S1F17 (GEM 能力请求) S1F18 (能力列表回复) 正常业务交互(配方、报警、事件、数据收集) S1F15 (通信关闭请求) S1F16 (关闭确认)
常见调试陷阱:部分 Equipment 在收到 S1F13 后不会立即回复 S1F14,而是先发送 S1F0(Linktest)确认链路。若调试工具未正确处理 S1F0,会导致后续消息解析错位。抓包时应关注 System Bytes 是否匹配。

2.4 消息事务与 Wbit 机制

SECS/GEM 的每次消息交互构成一个事务(Transaction)。Primary Message 的 Header 中 Wbit(Wait Bit) 决定是否需要回复:

Wbit 值 含义 典型场景 调试关注点
Wbit = 1 需要回复(Reply Expected) S1F13、S1F1、S1F17 若超时未收到 Secondary Message,需检查网络或设备状态
Wbit = 0 无需回复(No Reply) S6F11(事件通知)、S5F1(报警上报) Equipment 主动上报时 Wbit=0,Host 不应回复,否则造成协议错误
抓包验证方法:在 Wireshark 或 SECS 调试工具中,过滤 secsii.wbit == 1 可快速定位所有需要回复的消息。若发现 Primary 的 Wbit=1 但后续无对应 Secondary,即为异常事务。

2.5 设备端状态模型(GEM State Model)

GEM 定义了 Equipment 的三种主要状态:NOT COMMUNICATING、COMMUNICATING、WAIT CMD。状态转换由 Host 的指令或设备内部事件触发。

GEM 设备状态模型(简化) NOT COMMUNICATING TCP 未连接 / 离线 COMMUNICATING 正常通信 / 可接收指令 WAIT CMD 等待 Host 指令 S1F13 S1F15 S2F41 S2F42 TCP 断开
调试技巧:当 Equipment 处于 WAIT CMD 状态时,Host 必须发送 S2F41(RCMD)才能触发设备执行动作。若抓包发现 Equipment 频繁进入 WAIT CMD 但无后续指令,应检查 Host 的远程命令发送逻辑。

2.6 通信流程中的关键消息清单

以下表格列出了调试过程中最常关注的 SECS-II 消息,建议调试工具支持对这些消息的快速过滤与高亮:

Stream/Function 方向 Wbit 描述 调试优先级
S1F13 / S1F14 Host → Equip / Equip → Host 1 通信建立与设备信息交换 ⭐⭐⭐⭐⭐
S1F1 / S1F2 Host → Equip / Equip → Host 1 在线查询与确认 ⭐⭐⭐⭐
S1F17 / S1F18 Host → Equip / Equip → Host 1 GEM 能力协商 ⭐⭐⭐⭐
S2F41 / S2F42 Host → Equip / Equip → Host 1 远程命令(RCMD)执行 ⭐⭐⭐⭐⭐
S5F1 / S5F2 Equip → Host / Host → Equip 0 / 1 报警上报与确认 ⭐⭐⭐⭐
S6F11 / S6F12 Equip → Host / Host → Equip 0 / 1 事件通知(Collection Event) ⭐⭐⭐⭐⭐
S7F19 / S7F20 Host → Equip / Equip → Host 1 配方下载与确认 ⭐⭐⭐⭐
避坑提醒:部分老旧 Equipment 在收到 S1F13 后回复的 S1F14 中 MDLN(Model Number) 字段可能包含不可见字符或空格,导致 Host 端解析失败。抓包时应检查该字段的原始 HEX 值,而非仅看 ASCII 显示。

2.7 小结