4、常见日志格式解析:标准SECS消息日志格式(SxFy, WBit, 消息体Hex)、时间戳、会话ID解析
在SECS/GEM故障定位中,日志是还原通信现场的唯一物理证据。然而,原始日志通常以紧凑的十六进制流和简写标识符呈现,直接阅读难度极高。本章将系统解析标准SECS消息日志的三大核心要素:消息ID(SxFy)、WBit 与 消息体Hex,以及时间戳和会话ID的解析方法。
4.1 标准SECS消息日志结构总览
一条完整的SECS消息日志通常由以下字段按固定顺序组成,不同厂商(如应用材料、东京电子、KLA)的日志格式虽有差异,但核心信息高度一致:
| 字段 | 示例 | 说明 |
|---|---|---|
| 时间戳 | 2025-03-21 14:23:45.678 |
精确到毫秒,用于时序分析 |
| 会话ID | Session: 5 或 Link: 0x01 |
标识设备与主机之间的逻辑连接 |
| 方向 | H2E 或 E2H |
Host→Equipment 或 Equipment→Host |
| 消息ID | S1F13 |
Stream 与 Function 编号 |
| WBit | W 或 NW |
是否需要回复(Wait Bit) |
| 消息体Hex | 01 03 00 00 00 01 41 01 02 00 00 00 02 |
SECS-II 数据项的十六进制编码 |
4.2 消息ID:SxFy 的编码规则与语义
SxFy 是SECS消息的唯一标识符,其中 S 代表 Stream(流),F 代表 Function(功能)。Stream 定义消息的类别(如设备状态、材料处理、数据收集),Function 定义具体的操作。
- Stream 0:保留用于错误处理和通信控制。
- Stream 1:设备状态与控制(如 S1F13 建立通信请求)。
- Stream 2:设备数据与诊断(如 S2F41 主机命令发送)。
- Stream 6:数据收集与事件通知(如 S6F11 事件报告发送)。
- Stream 7:材料管理(如 S7F19 晶圆盒信息查询)。
Function 编号的奇偶性具有特殊含义:
- 奇数 Function:通常为 Primary Message(主消息),由发送方主动发起。
- 偶数 Function:通常为 Secondary Message(回复消息),是对奇数 Function 的应答。
S1F13(奇数)后紧跟 S1F14(偶数),说明这是一次成功的通信握手。如果只有 S1F13 而没有对应的 S1F14,则表明通信建立失败,应优先检查网络连接或设备状态。
4.3 WBit:通信模式的判定依据
WBit(Wait Bit) 是SECS消息头中的一个标志位,用于指示发送方是否需要接收方回复。WBit 的取值直接决定了通信是单工还是半双工模式:
| WBit 值 | 日志表示 | 通信模式 | 行为描述 |
|---|---|---|---|
| 1 | W |
需要回复(半双工) | 发送方发送后必须等待接收方回复,期间不能发送其他消息 |
| 0 | NW |
无需回复(单工) | 发送方发送后立即释放信道,可继续发送下一条消息 |
4.4 消息体Hex:SECS-II 数据项的逐层解码
消息体Hex是SECS消息的“数据载荷”,采用SECS-II标准编码。每个数据项由 Format Code(格式码)、Length(长度) 和 Value(值) 三部分组成。
常见的Format Code包括:
- 0x41 (A):ASCII 字符串,用于设备ID、操作员ID等文本信息。
- 0x01 (B):布尔值,通常用于状态标志。
- 0x02 (U1/U2/U4):无符号整数,用于计数器、时间值等。
- 0x03 (I1/I2/I4):有符号整数,用于温度、压力等可正可负的物理量。
- 0x04 (F4/F8):浮点数,用于高精度测量值。
- 0x10 (L):列表,用于组合多个数据项。
解码示例:
原始Hex: 41 05 48 45 4C 4C 4F
解码步骤:
1. 0x41 → Format Code 'A' (ASCII)
2. 0x05 → Length = 5 字节
3. 0x48 0x45 0x4C 0x4C 0x4F → ASCII 值: 'H' 'E' 'L' 'L' 'O'
结果: "HELLO"
4.5 时间戳与会话ID:时序与连接的唯一标识
时间戳 是故障定位的“时间轴”。标准日志通常采用 YYYY-MM-DD HH:MM:SS.mmm 格式,精确到毫秒。在分析多个设备或主机日志时,必须确保所有系统的时间同步(如使用NTP),否则毫秒级的偏差会导致时序分析完全错误。
会话ID 用于区分设备与主机之间的多个逻辑连接。在SECS-I(RS-232)中,会话ID通常固定为0x01;在HSMS(TCP/IP)中,会话ID由连接建立时协商确定,范围0x0000~0xFFFF。同一设备的不同会话ID对应不同的通信链路,故障定位时需按会话ID过滤日志,避免跨会话混淆。
4.6 综合日志解析实战案例
以下是一条来自HSMS连接的真实日志片段,我们将逐字段解析:
2025-03-21 14:23:45.678 | Session: 5 | H2E | S1F13 | W | 01 03 00 00 00 01 41 01 02 00 00 00 02
解析步骤:
- 时间戳:
2025-03-21 14:23:45.678,记录精确到毫秒。 - 会话ID:
Session: 5,表示这是第5个逻辑连接上的消息。 - 方向:
H2E,主机向设备发送。 - 消息ID:
S1F13,Stream 1 Function 13,即“建立通信请求”(Are You There)。 - WBit:
W,需要设备回复。 - 消息体Hex:
01 03 00 00 00 01 41 01 02 00 00 00 0201 03 00 00 00 01→ 列表(L),长度为1,包含1个数据项。41 01 02→ ASCII字符串,长度为1,值为0x02(STX字符,表示设备ID)。00 00 00 02→ 无符号整数(U4),值为2,表示设备ID为2。
S1F14(建立通信确认)且时间戳超过45秒,则判定为“T3超时——设备无响应”。此时应检查设备网络连通性、设备是否处于Online状态、以及设备端的SECS/GEM服务是否正常运行。