3. SECS/GEM协议族关系
很多初学者会把“SECS/GEM”当成一个单独协议来理解,实际上它是一组 SEMI 标准的集合。设备端要真正实现“可被工厂主机接入、可被远程监控、可被自动派工”,往往需要同时满足多个标准,每个标准负责通信链路、消息语义、状态模型或场景行为中的某一段。理解 E4、E5、E30、E37 等标准之间的层次关系,是拆解设备端通信功能的第一步。
一、协议族的层次模型:从链路到语义再到行为
可以把 SECS/GEM 协议族看成一个四层结构。最底层是物理与链路层,由 SEMI E4(SECS-I)和 SEMI E37(HSMS)承担;往上是消息编码与语义层,由 SEMI E5(SECS-II)定义;再往上是设备行为与状态模型层,由 SEMI E30(GEM)定义;最上层是特定场景的附加规范,例如 E37 的高性能传输、E5 的扩展消息、E30 的状态机与报警管理等。它们的关系不是并列,而是“下层提供通道,上层提供含义”。
二、各标准的功能分工与关键参数
E4(SECS-I)是早期基于 RS-232 串行链路的传输标准,定义了波特率、字符格式、块传输、握手与重试机制。它的典型参数包括波特率 9600/19200/38400、块大小、T1 到 T4 超时等。E37(HSMS)则是为 TCP/IP 网络设计的传输标准,使用端口号(常见 5000)、连接模式(主动/被动)、心跳与选择超时。E5(SECS-II)定义了消息的流(Stream)和功能(Function),例如 S1F1 是“Are You There”,S1F13 是“Establish Communications”,S6F11 是“Event Report”。E30(GEM)则把这些消息组织成设备行为,例如状态机、报警、事件、变量采集和远程命令。
| 标准 | 层次 | 核心职责 | 典型对象/参数 |
|---|---|---|---|
| SEMI E4 | 链路层 | 串行链路传输、块握手、超时重试 | RS-232、波特率、T1~T4 |
| SEMI E37 | 链路层 | TCP/IP 传输、连接管理、心跳 | 端口 5000、Active/Passive、T5~T8 |
| SEMI E5 | 消息层 | 消息结构、数据项、流/功能码 | S1F1、S1F13、S6F11、L/A/B格式 |
| SEMI E30 | 行为层 | 设备状态模型、报警、事件、远程命令 | 状态机、CEID、RPTID、VID |
三、方法流程:设备端如何按层次实现
设备端实现时,通常按“自下而上”的顺序推进。第一步,选择链路:如果设备支持网口,优先用 E37/HSMS;如果是老设备串口,则用 E4/SECS-I。第二步,实现 E5 消息编解码:把主机发来的字节流解析成 Stream/Function 和数据项,并把设备回复编码成标准格式。第三步,实现 E30 行为:建立设备状态机,定义事件、报警、变量和报告,并处理远程命令。第四步,联调验证:用主机模拟器发送 S1F1、S1F13、S6F11 等消息,检查设备是否正确响应。
设备端实现顺序示例:
1. 链路层:HSMS 被动模式监听 5000 端口
2. 消息层:解析 S1F13 -> 回复 S1F14
3. 行为层:定义 CEID=1001(报警触发)
4. 上报:S6F11 携带 RPTID=2001,VID=3001
5. 验证:主机收到事件报告并确认 S6F12
四、案例场景:一条报警从设备到主机
假设设备发生“腔体温度过高”报警。设备端 E30 层检测到报警条件成立,生成 CEID=1001 的事件;E5 层把该事件编码为 S6F11 消息,携带报告 ID 和变量值;E37 层通过 TCP 连接把消息发送给主机;主机收到后回复 S6F12 确认。如果链路中断,E37 的心跳超时会触发重连,E4 场景下则由 T1~T4 超时控制重试。整个过程体现了“E30 决定发什么,E5 决定怎么编码,E37/E4 决定怎么送达”。
五、常见误区与复盘
- 误区一:只实现 E5 就算支持 SECS/GEM。 实际上没有 E30 的状态模型和事件定义,主机无法做自动化控制。
- 误区二:把 E37 当成 E30 的替代。 E37 只是传输方式,不定义设备行为。
- 误区三:忽略 E4 与 E37 的共存。 部分设备同时支持串口和网口,需要明确主用链路和切换策略。
- 复盘要点: 先画层次图,再逐层核对消息日志,能快速定位是链路、编码还是行为配置问题。