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 数据项的十六进制编码
关键原则: 日志中的每一个字段都不是孤立的。时间戳决定事件顺序,会话ID区分并发连接,SxFy定义消息类型,WBit决定通信模式,Hex体承载具体数据。故障定位时,必须将这五个字段作为一个整体来解读。

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,则表明通信建立失败,应优先检查网络连接或设备状态。
SxFy 消息ID结构解析 Stream (S) 类别:状态/数据/事件 Function (F) 操作:查询/报告/命令 奇偶规则 奇数 → Primary (发起) 偶数 → Secondary (回复) 示例:S1F13 → Stream 1 (设备状态) + Function 13 (建立通信请求)

4.3 WBit:通信模式的判定依据

WBit(Wait Bit) 是SECS消息头中的一个标志位,用于指示发送方是否需要接收方回复。WBit 的取值直接决定了通信是单工还是半双工模式:

WBit 值 日志表示 通信模式 行为描述
1 W 需要回复(半双工) 发送方发送后必须等待接收方回复,期间不能发送其他消息
0 NW 无需回复(单工) 发送方发送后立即释放信道,可继续发送下一条消息
常见故障模式: 当 WBit=1 的消息发出后,如果接收方因异常未回复(如设备死机、网络丢包),发送方会启动超时计时器(通常为 T3 计时器,默认 45 秒)。超时后发送方会重发或报错。在日志中,连续出现相同 SxFy 且 WBit=1 的消息,是典型的“无回复超时”故障特征。

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"
故障定位要点: 当消息体Hex中出现异常的Format Code(如设备发送了0x41但主机期望0x02),或长度字段与实际数据不匹配时,通常表明设备端软件存在编码错误或版本不兼容。此时应对比设备与主机的SECS-II规范版本。

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过滤日志,避免跨会话混淆。

时间戳与会话ID在日志中的作用 时间戳 格式: YYYY-MM-DD HH:MM:SS.mmm 作用: 确定事件先后顺序 会话ID 范围: 0x0000 ~ 0xFFFF 作用: 区分逻辑连接链路 联合分析 按会话ID过滤日志 按时间戳排序重建通信流 故障定位黄金法则:先按会话ID隔离,再按时间戳排序,最后结合SxFy分析 避免将不同链路的消息混在一起分析,否则会导致错误的因果关系判断

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

解析步骤:

  1. 时间戳:2025-03-21 14:23:45.678,记录精确到毫秒。
  2. 会话ID:Session: 5,表示这是第5个逻辑连接上的消息。
  3. 方向:H2E,主机向设备发送。
  4. 消息ID:S1F13,Stream 1 Function 13,即“建立通信请求”(Are You There)。
  5. WBit:W,需要设备回复。
  6. 消息体Hex:01 03 00 00 00 01 41 01 02 00 00 00 02
    • 01 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服务是否正常运行。