2. SECS/GEM协议体系精讲

SECS/GEM并不是单一协议,而是一套分层协作的通信标准族。设备与主机之间能否稳定交换数据,取决于每一层是否各司其职:物理与链路层负责“怎么把字节可靠送过去”,消息层负责“这些字节代表什么含义”,行为层负责“什么时候允许发、收到后如何响应”。理解这套分层关系,是后续做数据采集、Trace监控和过程追溯的基础。

四层协议栈与各自职责

从下往上看,SECS-I(E4)与HSMS(E37)是两种可选的传输层实现。SECS-I基于RS-232串口,采用点对点连接,通过块(Block)方式传输,每个块最大244字节数据,用握手信号保证可靠;HSMS基于TCP/IP,支持多会话、长连接和更高吞吐,是现代工厂的主流选择。两者之上是SECS-II(E5),它定义了消息的语义结构:每条消息由Stream和Function编号标识,例如S1F1是“Are You There”请求,S1F2是应答。再往上是GEM(E30),它规定了设备必须支持哪些SECS-II消息、状态模型如何运转、报警与事件如何上报。最上层则是具体设备根据工艺需求扩展的定制消息。

SECS/GEM 四层协议栈与消息流向 主机 Host 应用层 MES / EAP GEM 行为层 E30 SECS-II 消息层 E5 传输层 SECS-I / HSMS 设备 Equipment 设备应用 工艺控制 GEM 行为层 E30 SECS-II 消息层 E5 传输层 SECS-I / HSMS 物理链路:RS-232 或 TCP/IP SECS-II 消息(Stream/Function + 数据项) GEM 事件 / 报警 / 状态上报 SECS-I/HSMS 负责可靠传输 → SECS-II 定义消息语义 → GEM 规定行为规则与状态模型

消息结构:从Stream/Function到数据项

一条SECS-II消息由消息头(Header)和消息体(Body)组成。消息头包含设备ID、Stream、Function、W-Bit(等待位)、系统字节等字段。W-Bit是理解事务机制的关键:当W-Bit=1时,表示发送方期待对方回复一条对应的F+1消息;W-Bit=0则表示单向通知,不需要回复。例如主机发S1F1(W=1),设备必须回S1F2;设备主动发S6F11事件报告(W=0),主机无需回复。

消息体由数据项(Data Item)树形嵌套构成。每个数据项有格式码和长度,常见格式包括:L(列表)、A(ASCII字符串)、U1/U2/U4(无符号整数)、I1/I2/I4(有符号整数)、F4/F8(浮点数)、B(二进制)。例如一条S1F2应答可能包含:<L[2] <A "EQP01"> <A "1.2.3">>,表示设备名和软件版本。实际调试时,用SECS-II消息解析工具抓包,逐层展开L列表,就能定位到具体数据项的值。

GEM状态模型:设备行为的骨架

GEM定义了设备必须维护的状态机,最核心的是通信状态和控制状态。通信状态包括:Disabled(禁止通信)、Enabled(允许通信)。控制状态包括:Offline(离线)、Online Local(在线本地)、Online Remote(在线远程)。设备上电后通常处于Disabled+Offline,主机通过S1F1建立通信后,发S1F17请求进入Online Remote,设备回S1F18确认。只有进入Online Remote,主机才能远程下发配方、启动加工、采集Trace。

状态迁移不是随意的,必须遵循GEM规定的触发条件。例如从Online Remote切到Online Local,需要操作员在设备面板上手动切换,或主机发S1F15请求离线。理解这些状态边界,能避免“为什么命令发不下去”这类问题——很多时候不是消息格式错,而是设备当前状态不允许执行该操作。

事务与超时机制:T3、T5、T6、T7、T8

SECS/GEM用一组定时器保证通信可靠性。最常用的是:

  • T3:等待回复超时。主机发出W=1的消息后,启动T3(典型值45秒),若超时未收到回复,判定为通信故障,通常触发重连或报警。
  • T5:连接分离超时。HSMS中,若TCP连接断开后T5时间内未重连成功,则进入通信失败状态。
  • T6:控制事务超时。用于Online/Offline切换等控制消息,防止状态卡死。
  • T7:Not Selected状态超时。HSMS连接建立后,若T7内未完成Select流程,则断开连接。
  • T8:网络字符间超时。接收方在T8内未收到完整消息,判定为帧错误。

实际工程中,T3设置过短会导致误判超时,过长则故障响应慢。建议根据设备响应时间统计,取P99响应时间的1.5~2倍作为T3值。例如某设备S1F1平均响应200ms,P99为800ms,则T3可设1.5秒。调试时可在日志中记录每条消息的发送时间戳和回复时间戳,计算实际RTT,再反推合理的超时参数。

设备通信场景映射

把协议知识落到具体场景,才能看出各层的配合。以“主机采集设备温度Trace”为例:主机先发S1F3(请求状态变量),设备回S1F4携带温度值;若需持续监控,主机发S2F33定义报告规则,再发S2F35链接事件,设备在温度变化时主动发S6F11事件报告。整个过程涉及SECS-II消息构造、GEM事件机制、HSMS连接维持和T3超时保护。再如“远程下发配方”:主机发S7F1询问配方是否存在,设备回S7F2;主机发S7F3下发配方体,设备回S7F4确认;最后主机发S7F5请求校验,设备回S7F6。每一步都依赖W-Bit和T3保证事务完整性。

调试建议:先用SECS模拟器(如Hercules配合SECS驱动,或专用GEM模拟软件)建立HSMS连接,手动发送S1F1,观察设备是否回S1F2。若超时,检查T3设置、TCP端口(默认5000)、设备ID是否匹配。确认基础通信后,再逐步测试S1F3、S2F33等消息,每步记录日志,形成自己的消息交互清单。

关键参数速查

参数/消息含义典型值/示例
S1F1 / S1F2Are You There 请求/应答建立通信第一步
S1F13 / S1F14Establish Communications确认在线
S1F17 / S1F18Request Online / 确认进入Remote
S6F11Event Report SendW=0,设备主动上报
T3回复超时45s(可调,建议1.5~2倍P99 RTT)
T5连接分离超时10s
T7Not Selected超时10s
T8字符间超时5s

掌握这四层协议、消息结构、状态模型和超时机制后,面对设备通信问题就能按层排查:先看物理连接和HSMS Select是否成功,再看SECS-II消息格式是否正确,最后检查GEM状态是否允许该操作。这套分层思维,是后续Trace监控和过程追溯工程中定位问题的基本方法。