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浮点数。
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) | 上报设备状态变化或报警 |
3.4 事务处理模型
SECS-II 采用请求-应答(Request-Response)的事务模型。一次完整的事务由一对消息组成:一个主消息(Primary Message)和一个副消息(Secondary Message)。主消息的功能号是奇数,副消息的功能号是偶数,且副消息的 Stream 和 Function 必须与主消息对应(即 SxFy 请求对应 SxF(y+1) 应答)。
事务生命周期:
- 发起: 主机或设备发送一个主消息(如 S1F1)。
- 等待: 发送方进入等待状态,超时时间由通信层(如 T3 超时)控制。
- 应答: 接收方处理请求后,返回对应的副消息(如 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.6 本章小结
- SECS-II 定义了消息的数据编码(TLV)和语义分类(Stream/Function)。
- 每条消息由 SxFy 唯一标识,奇数功能为请求,偶数功能为应答。
- 事务模型为请求-应答模式,超时或错误会导致事务失败。
- 大数据量消息通过多块传输机制拆分,接收方需按 Block 序号和 E-Bit 重组。