SECSGEM协议工程实践:从入门到产线部署 - 第2节

2.1 物理传输层:HSMS 与 SECS-I 的对比

SECS/GEM 协议族在物理传输层定义了两种标准:SECS-I(RS-232 串口)和 HSMS(TCP/IP 以太网)。现代产线几乎全部采用 HSMS,但理解 SECS-I 有助于掌握协议设计的历史背景与边界场景。

2.1.1 SECS-I:串行时代的基石

SECS-I 定义在 SEMI E4 标准中,使用 RS-232C 串行接口,波特率通常为 9600 bps。其核心特点包括:

  • 物理层:点对点串行连接,距离受限(通常 < 15 米)。
  • 数据帧:每个消息块(Block)包含长度、控制字节、数据内容和校验和。
  • 多块消息:大消息需拆分为多个 Block,通过控制字节中的块序号(Block Number)重组。
  • 流控:依赖 RTS/CTS 硬件握手或 XON/XOFF 软件流控。
工程提示:SECS-I 的波特率上限为 38400 bps,实际产线常用 9600 bps。对于大数据量(如配方文件),传输延迟可达数秒,因此现代新产线已不再部署 SECS-I。

2.1.2 HSMS:以太网时代的标准

HSMS(High-Speed SECS Message Services)定义在 SEMI E37 标准中,基于 TCP/IP 协议栈。它取代 SECS-I 成为主流,主要优势如下:

特性 SECS-I (E4) HSMS (E37)
物理介质 RS-232C 串口 以太网 (TCP/IP)
传输速率 9600 ~ 38400 bps 10/100/1000 Mbps
连接拓扑 点对点 点对点 / 星型 / 多路
消息分块 硬件分块(Block) TCP 流自动重组
连接管理 物理线缆通断 Select / Deselect / Linktest
最大消息长度 受限于块序号(最多 32767 块) 受限于 TCP 缓冲区(通常 4 MB+)
标准编号 SEMI E4 SEMI E37
选型建议:新建产线或设备升级时,优先选择 HSMS。仅在维护 2000 年以前的旧设备时,才需保留 SECS-I 支持。

2.1.3 HSMS 连接状态机

HSMS 定义了明确的连接状态,用于管理 TCP 连接的生命周期。下图展示了 HSMS 的核心状态转换:

HSMS 连接状态机 NOT CONNECTED TCP 未建立 CONNECTED TCP 已建立 SELECTED 可收发数据 TCP 连接建立 Select.req 成功 Deselect / 超时 TCP 断开 关键说明 1. NOT CONNECTED → CONNECTED:由主动方发起 TCP 连接。 2. CONNECTED → SELECTED:通过 Select.req / Select.rsp 握手。 3. 只有 SELECTED 状态才能收发 SECS-II 消息。

2.2 消息类型:Primary 与 Secondary

SECS/GEM 协议中,所有消息分为两类:Primary Message(主消息)和 Secondary Message(副消息)。这是理解事务(Transaction)的基础。

2.2.1 定义与角色

  • Primary Message:由通信一方主动发送,用于发起一个操作请求。例如:设备向主机发送“数据收集请求”。
  • Secondary Message:作为对 Primary Message 的响应,由接收方回复。例如:主机回复“数据收集确认”。
常见误解:并非所有从设备发出的消息都是 Primary。设备也可以发送 Secondary 消息来回复主机的 Primary 请求。判断依据是“谁先发起”,而非“谁发送”。

2.2.2 消息头中的标识

在 SECS-II 消息头中,通过 W-bit(Wait-bit)来区分消息类型:

W-bit 值 消息类型 含义
1 Primary 发送方期望收到回复(Secondary)
0 Secondary 作为对 Primary 的回复,不再期望进一步回复

示例:主机发送 S1F1(Are You There)时,W-bit = 1,表示这是 Primary;设备回复 S1F2(Are You There Data)时,W-bit = 0,表示这是 Secondary。

2.3 事务(Transaction)与消息 ID

事务是 SECS/GEM 协议中最重要的概念之一,它确保请求与响应能够正确配对。

2.3.1 事务的定义

一个 Transaction(事务)由一对 Primary 和 Secondary 消息组成。Primary 发起事务,Secondary 结束事务。事务通过 Message ID(消息 ID)进行关联。

事务(Transaction)生命周期 主机 (Host) 发送 Primary 设备 (Equipment) 回复 Secondary S1F1 (W=1, ID=5) S1F2 (W=0, ID=5) 事务规则 Primary 和 Secondary 必须使用相同的 Message ID(本例中 ID=5)才能配对。

2.3.2 消息 ID(Message ID)

消息 ID 是事务的唯一标识符,位于 SECS-II 消息头的第 5-6 字节(System Bytes)。其核心规则如下:

  • 范围:0 ~ 65535(16 位无符号整数)。
  • 唯一性:在同一通信方向上,同一时刻不能有两个未完成的事务使用相同的 Message ID。
  • 循环使用:ID 用尽后从 0 重新开始,但必须确保旧事务已关闭。
  • 配对规则:Secondary 消息必须复制 Primary 消息的 Message ID。
工程实现要点:在编写 HSMS 驱动时,需要维护一个“未完成事务表”(Pending Transaction Table),记录所有已发送但未收到回复的 Primary 消息及其 Message ID。收到 Secondary 时,通过 Message ID 查找对应的 Primary,完成事务匹配。

2.3.3 多事务并发

HSMS 支持多个事务同时进行,只要它们的 Message ID 不同。例如:

时间 方向 消息 Message ID 事务状态
T1 主机 → 设备 S1F1 (Primary) 10 等待回复
T2 主机 → 设备 S2F17 (Primary) 11 等待回复
T3 设备 → 主机 S1F2 (Secondary) 10 事务 10 完成
T4 设备 → 主机 S2F18 (Secondary) 11 事务 11 完成

这种并发机制使得主机可以在等待设备回复的同时,继续发送其他请求,大幅提升通信效率。

2.4 本章小结

  • HSMS vs SECS-I:HSMS 基于 TCP/IP,速率高、连接管理灵活,是现代产线首选;SECS-I 仅用于遗留系统。
  • Primary / Secondary:Primary 发起请求(W-bit=1),Secondary 回复响应(W-bit=0)。
  • Transaction:由一对 Primary + Secondary 组成,通过 Message ID 关联。
  • Message ID:16 位唯一标识,用于事务匹配和并发管理。
下章预告:第 3 章将深入 SECS-II 消息结构,讲解 Stream、Function、数据项(SML 语法)以及如何构建标准消息。