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-I 块传输重组与 SECS-II Item 树形展示。仅显示 HEX 的工具无法满足 GEM 级调试需求。
2.3 通信流程:从连接到会话
一次完整的 SECS/GEM 通信会话包含以下阶段:
- TCP 连接建立:Host 主动向 Equipment 的 IP:Port 发起 TCP 三次握手。
- 通信初始化(S1F13/S1F14):Host 发送
S1F13(通信建立请求),Equipment 回复S1F14携带设备信息。 - 设备状态查询(S1F1/S1F2):Host 发送
S1F1查询设备是否在线,Equipment 回复S1F2。 - GEM 能力协商(S1F17/S1F18):Host 发送
S1F17请求 GEM 能力列表,Equipment 回复S1F18。 - 正常业务交互:配方管理、报警上报、事件通知、数据收集等。
- 通信断开:Host 发送
S1F15(通信关闭请求),Equipment 回复S1F16,随后 TCP 连接关闭。
常见调试陷阱:部分 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 的指令或设备内部事件触发。
调试技巧:当 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 显示。