3. E5标准详解:SECS-II协议、消息结构、流与功能概念、事务处理模型

3.1 SECS-II协议概述

SECS-II(SEMI E5)是半导体设备通信标准中定义消息内容与格式的核心规范。它建立在SECS-I(E4)或HSMS(E37)提供的传输层之上,规定了设备与主机之间交换的结构化数据的编码规则、消息类型以及交互逻辑。如果说SECS-I/HSMS是“通信管道”,那么SECS-II就是管道中流动的“语言”。

核心定位: SECS-II 不关心数据如何打包成字节流或通过物理线缆传输,它只定义“消息长什么样”以及“消息如何被解释”。

3.2 消息结构:从字节流到结构化数据

SECS-II 消息由一系列数据项(Data Item)组成,每个数据项都遵循一种自描述的TLV(Type-Length-Value)编码格式。这种结构使得接收方无需预先知道消息的完整格式,即可逐项解析数据。

字段 名称 说明 示例(字节)
Type(类型) 格式字节 高4位表示数据类型(如List、Binary、ASCII),低4位表示字节数长度(1/2/4/8字节) 0x41 → ASCII类型,1字节长度
Length(长度) 长度字节 根据Type字段的低4位决定占用字节数,表示Value部分的字节长度 0x05 → Value长度为5字节
Value(值) 数据内容 实际的数据载荷,可以是嵌套的List或其他基本类型 0x48656C6C6F → "Hello"
关键数据类型(Format Code):
  • L(List,0x00):容器类型,可包含任意数量的子数据项。
  • B(Binary,0x20):原始字节数组。
  • A(ASCII,0x40):可打印的ASCII字符串。
  • I1/I2/I4/I8(有符号整数):1/2/4/8字节整数。
  • F4/F8(浮点数):4/8字节IEEE 754浮点数。
SECS-II 消息 TLV 编码结构 完整 SECS-II 消息(嵌套结构) L, 3 (List 包含 3 个子项) A, 5, "MDLN" I4, 4, 12345 L, 2 B, 3 F4, 4 Type=0x41 Type=0x64

3.3 流(Stream)与功能(Function)概念

SECS-II 使用流(Stream)和功能(Function)的二维编号系统来唯一标识每一条消息的语义。这种设计将消息分类与具体操作解耦,使得协议具有极强的可扩展性。

  • 流(Stream):消息的类别编号,范围 0~127。例如:
    • S1:设备状态与控制(如 S1F1 请求设备ID)
    • S2:设备控制与诊断(如 S2F41 发送远程命令)
    • S6:数据收集与事件报告(如 S6F11 发送事件报告)
    • S7:设备参数管理(如 S7F1 请求设备常量列表)
  • 功能(Function):消息的具体操作编号,范围 0~255。通常:
    • 奇数功能(如 F1, F3, F5):请求(Primary)消息,由发起方发送。
    • 偶数功能(如 F2, F4, F6):应答(Secondary)消息,由接收方回复。
命名规范: 一条消息通常写作 S<Stream>F<Function> 格式,例如 S1F1 表示“流1功能1”,即“请求设备ID”消息。其应答消息为 S1F2。
消息ID 方向 描述 典型用途
S1F1 主机 → 设备 请求设备ID(Are You There Request) 通信建立后的首次握手
S1F2 设备 → 主机 返回设备ID(Are You There Data) 确认设备在线并返回标识
S2F41 主机 → 设备 发送远程命令(Remote Command Send) 控制设备执行特定操作
S6F11 设备 → 主机 事件报告发送(Event Report Send) 上报设备状态变化或报警
Stream 与 Function 分类矩阵 Stream 1 设备状态 F1: AreYouThere F3: 状态请求 F13: 时间请求 F17: 在线/离线 ... Stream 2 设备控制 F41: 远程命令 F49: 变量请求 F23: 跟踪数据 F31: 日期/时间 ... Stream 6 数据收集 F11: 事件报告 F15: 数据请求 F19: 数据报告 F13: 注释 ... Stream 7 参数管理 F1: 常量请求 F3: 常量设置 F19: 配方请求 F23: 配方发送 ...

3.4 事务处理模型

SECS-II 采用请求-应答(Request-Response)的事务模型。一次完整的事务由一对消息组成:一个主消息(Primary Message)和一个副消息(Secondary Message)。主消息的功能号是奇数,副消息的功能号是偶数,且副消息的 Stream 和 Function 必须与主消息对应(即 SxFy 请求对应 SxF(y+1) 应答)。

事务生命周期:
  1. 发起: 主机或设备发送一个主消息(如 S1F1)。
  2. 等待: 发送方进入等待状态,超时时间由通信层(如 T3 超时)控制。
  3. 应答: 接收方处理请求后,返回对应的副消息(如 S1F2)。
  4. 完成: 发送方收到副消息,事务结束。如果超时未收到应答,则事务失败。
SECS-II 事务处理模型(请求-应答) 主机 (Host) 设备 (Equipment) S1F1 (请求设备ID) S1F2 (返回设备ID) 事务完成:主机收到 S1F2 后结束等待

3.5 多块消息(Multi-Block Message)

当一条 SECS-II 消息的数据量超过底层传输层(如 SECS-I 的 244 字节块限制)时,必须将消息拆分为多个块(Block)进行传输。SECS-II 通过消息头中的 Block Number 和 End Bit 标志来管理分块与重组。

字段 位置 说明
Block Number 消息头字节 5-6 当前块的序号,从 1 开始递增
End Bit (E-Bit) 消息头字节 4 的 bit 7 1 表示最后一个块,0 表示后续还有块
Device ID 消息头字节 1-2 所有块必须使用相同的 Device ID
注意事项:
  • 接收方必须收集所有块(从 Block 1 到 End Bit=1 的块)后,才能开始解析完整的 SECS-II 消息。
  • 块传输过程中,如果发生超时或顺序错误,整个事务将被视为失败。
  • HSMS 协议通常支持更大的单块大小(如 4KB 或 8KB),但在 SECS-I 环境下,多块传输非常常见。
多块消息传输示例(3 个块) 块 1 / 3 Block=1, E-Bit=0 数据部分 (前 244 字节) 块 2 / 3 Block=2, E-Bit=0 数据部分 (中间 244 字节) 块 3 / 3 Block=3, E-Bit=1 数据部分 (剩余字节) 接收方按 Block 顺序重组,E-Bit=1 时开始解析

3.6 本章小结

  • SECS-II 定义了消息的数据编码(TLV)和语义分类(Stream/Function)。
  • 每条消息由 SxFy 唯一标识,奇数功能为请求,偶数功能为应答。
  • 事务模型为请求-应答模式,超时或错误会导致事务失败。
  • 大数据量消息通过多块传输机制拆分,接收方需按 Block 序号和 E-Bit 重组。