2. SECS/GEM 协议基础:SECS-I、HSMS、SECS-II 消息结构概述

SECS/GEM 协议族是半导体设备与工厂主机(Host)之间通信的核心标准。理解其分层结构是进行 DataItem 定义与变量映射的前提。本章将系统梳理 SECS-I、HSMS、SECS-II 的消息结构、传输机制与协议层级关系。

核心认知:SECS/GEM 协议栈遵循 OSI 模型的分层思想。SECS-II 定义消息内容(应用层),SECS-I 或 HSMS 定义消息传输(传输层/物理层)。GEM 则是在此基础上定义设备行为与场景的规范。

2.1 协议分层架构总览

SECS/GEM 协议栈通常分为三层:物理/传输层、消息层和应用行为层。SECS-I 与 HSMS 是两种可选的传输方式,SECS-II 是统一的消息格式标准。

SECS/GEM 协议栈分层架构 GEM (Generic Equipment Model) 设备行为标准、状态机、场景定义、DataItem 映射 SECS-II (SEMI E5) 消息格式、Stream/Function、Item 数据结构、编码规则 传输层(二选一) SECS-I (SEMI E4) — RS-232 串行 HSMS (SEMI E37) — TCP/IP 网络

2.2 SECS-I(SEMI E4):串行传输协议

SECS-I 是早期半导体设备通信的标准传输协议,基于 RS-232C 串行接口。它定义了数据块(Block)的传输格式、握手规则和错误检测机制。

2.2.1 消息块(Block)结构

SECS-I 将 SECS-II 消息分割成多个 Block 进行传输。每个 Block 包含长度、控制信息和数据负载。

字段 长度(字节) 说明
Length 1 Block 总长度(含自身)
Device ID 1 设备标识,0x00 为 Host,0x01 为 Equipment
Control Byte 1 控制位:E-bit(结束标志)、R-bit(重传标志)
Block Number 2 块序号,从 0 开始递增
Data 可变 SECS-II 消息片段(最大 254 字节)
关键点:SECS-I 的 E-bit(End bit)用于标记多块消息的最后一个 Block。接收方通过 E-bit 判断消息是否完整,从而进行重组。

2.2.2 传输流程

  1. 连接建立:通过 RS-232 物理连接,双方协商波特率(通常 9600 bps)。
  2. 消息分割:SECS-II 消息长度超过 254 字节时,被分割为多个 Block。
  3. 块传输:发送方逐块发送,接收方每收到一个 Block 返回 ACK/NAK。
  4. 消息重组:接收方根据 Block Number 和 E-bit 重组完整消息。
  5. 错误重传:超时或 NAK 时,发送方重传对应 Block。
SECS-I 多块消息传输流程 发送方 (Host) 接收方 (EQ) Block 1 (E=0) ACK Block 2 (E=0) ACK Block 3 (E=1) ACK 接收方根据 Block Number 和 E-bit 重组完整消息

2.3 HSMS(SEMI E37):高速网络传输协议

HSMS(High-Speed SECS Message Services)是基于 TCP/IP 的传输协议,逐渐取代了 SECS-I。它提供更高的传输速率、更可靠的连接管理,并支持多会话。

2.3.1 HSMS 消息格式

HSMS 消息包含一个固定长度的头部(Header)和可变长度的数据体(Data)。

字段 长度(字节) 说明
Length 4 消息总长度(不含 Length 字段自身)
Session ID 2 会话标识,用于多会话管理
Header Byte 2 1 控制位:R-bit(回复标志)、S-bit(系统位)
Header Byte 3 1 保留或扩展标志
PType 1 协议类型:0x00 为 SECS-II
SType 1 会话类型:0x00 为 Data Message
System Bytes 4 系统字节,用于消息匹配与超时控制
Data 可变 SECS-II 消息体(可选)

2.3.2 连接状态机

HSMS 定义了严格的状态机来管理 TCP 连接,包括 Not Connected、Connected、Selected 等状态。

  • Not Connected:TCP 连接未建立。
  • Connected:TCP 连接已建立,但未选择会话。
  • Selected:会话已选择,可以传输 SECS-II 消息。
注意:在 HSMS 中,Select.req 和 Select.rsp 消息用于建立会话。只有进入 Selected 状态后,才能进行正常的 SECS-II 数据交换。DataItem 的读取和写入操作必须在 Selected 状态下进行。

2.4 SECS-II(SEMI E5):消息内容与编码

SECS-II 是协议栈的核心,它定义了消息的逻辑结构、数据类型和编码规则。所有 DataItem 的传输最终都封装在 SECS-II 消息中。

2.4.1 Stream 与 Function

每条 SECS-II 消息由 Stream(流)和 Function(功能)唯一标识,格式为 S<n>F<m>。

标识 范围 说明
Stream (S) 0–127 消息类别,如 S1 为设备控制,S6 为数据报告
Function (F) 0–255 具体功能,奇数为主机发往设备,偶数为设备回复
W-bit — 等待位(Wait bit),标记是否需要回复

示例:S1F13(主机请求设备信息)→ S1F14(设备回复信息)。

2.4.2 Item 数据结构

SECS-II 消息体由 Item 组成,Item 是数据的基本单元,支持嵌套结构。

Item 类型 格式码 说明
List 0x00 有序列表,可包含多个子 Item
Binary 0x20 二进制数据(1 字节)
Boolean 0x24 布尔值(TRUE/FALSE)
ASCII 0x40 ASCII 字符串
U2 0x68 无符号 2 字节整数
U4 0x6C 无符号 4 字节整数
F4 0x70 4 字节浮点数
F8 0x74 8 字节浮点数

2.4.3 消息编码示例

以下是一个 S1F13 消息的 SECS-II 编码示例(十六进制):

// S1F13 (Host → Equipment) 请求设备信息
// 消息体为空 List
00 01  // Length = 1 (List 长度)
00     // List Item 格式码,包含 0 个子 Item

// S1F14 (Equipment → Host) 回复设备信息
// 消息体包含 MDLN (ASCII) 和 SOFTREV (ASCII)
00 02  // Length = 2 (List 包含 2 个子 Item)
41 04  // ASCII Item,长度 4
4D 44 4C 4E  // "MDLN"
41 07  // ASCII Item,长度 7
53 4F 46 54 52 45 56  // "SOFTREV"
实践要点:在 DataItem 映射方案中,需要明确每个 DataItem 对应的 SECS-II Item 类型、长度和嵌套层级。例如,一个设备温度值可能映射为 U4 类型,单位 0.1°C。

2.5 三种协议的关系与对比

SECS-I、HSMS、SECS-II 关系对比 SECS-II (E5) 消息内容与编码 SECS-I (E4) RS-232 串行传输 HSMS (E37) TCP/IP 网络传输 SECS-II 消息可封装在 SECS-I 或 HSMS 中传输,GEM 在此基础上定义设备行为

2.6 本章小结

  • SECS-I:基于 RS-232 的串行传输,使用 Block 分割与重组,适用于低速场景。
  • HSMS:基于 TCP/IP 的高速传输,支持多会话和状态机管理,是当前主流选择。
  • SECS-II:定义消息的 Stream/Function 标识和 Item 数据结构,是 DataItem 映射的直接载体。
  • 协议选择:新项目优先选择 HSMS + SECS-II 组合,兼顾性能与可靠性。
下一步:在掌握协议基础后,第 3 章将深入讲解 GEM 标准中的 DataItem 定义规范,以及如何将设备变量映射到 SECS-II 消息中。