3. Link Test消息结构:Primary Message格式、Reply Message格式、Message ID与功能码

Link Test 消息是 SECS-I 传输层用于验证物理连接与通信链路完整性的核心控制消息。与设备业务数据不同,Link Test 消息不经过 HSMS 会话层的 Select/Deselect 状态机,而是直接在 TCP 连接上以固定格式交换。理解其消息结构是分析断连故障的基础。

3.1 Primary Message(主消息)格式

Primary Message 由主动发起方(通常是 Host 或 Equipment 的通信模块)发送,用于探测对端是否存活。其格式遵循 SECS-I 的块传输协议,但具有固定的长度与数据内容。

字段 长度(字节) 值/说明
Length 4 固定为 0x0000000A(10 字节)
Device ID 2 发送方设备标识,通常为 0x0000(Host)或设备自身 ID
Control Byte 1 0x01(表示 Link Test Request)
System Bytes 4 发送方生成的唯一事务 ID,用于匹配 Reply
Header Only — 无数据块(Data Block 长度为 0)
关键点:Primary Message 不携带任何业务负载(无 SxFy 流/功能码),仅靠 Control Byte 标识消息类型。Length 固定为 10 字节,这是 SECS-I 块的最小长度。

3.2 Reply Message(回复消息)格式

对端收到 Primary Message 后,必须在 T3 超时(通常 45 秒)内回复 Reply Message。Reply 的格式与 Primary 几乎对称,但 Control Byte 不同。

字段 长度(字节) 值/说明
Length 4 固定为 0x0000000A(10 字节)
Device ID 2 回复方设备标识
Control Byte 1 0x02(表示 Link Test Response)
System Bytes 4 必须与 Primary 中的 System Bytes 完全一致
Header Only — 无数据块
匹配规则:Reply 的 System Bytes 是 Primary 的“回显”。如果 Host 发送 System Bytes = 0x12345678,则 Equipment 回复时必须使用相同的 0x12345678,否则 Host 将丢弃该回复并视为 Link Test 失败。

3.3 Message ID 与功能码(Control Byte)

在 SECS-I 块传输协议中,Message ID 由 Device ID 和 System Bytes 共同构成,用于唯一标识一次事务。而 功能码 在 Link Test 场景中特指 Control Byte 的值。

  • Message ID 组成:Device ID(2 字节)+ System Bytes(4 字节)= 6 字节唯一标识。Host 通过维护 System Bytes 计数器来避免 ID 冲突。
  • 功能码定义:
    • 0x01 — Link Test Request(Primary)
    • 0x02 — Link Test Response(Reply)
    • 0x00 — 数据消息(非 Link Test)
  • 功能码与业务消息的区别:业务消息(如 S1F13)的 Control Byte 为 0x00,且携带 Data Block;Link Test 的 Control Byte 非零且无 Data Block。
常见误解:有些工程师认为 Link Test 消息包含 SxFy 流/功能码(如 S0F0)。实际上,Link Test 是 SECS-I 传输层消息,不经过 SECS-II 会话层,因此没有 SxFy 编码。所有 Link Test 消息的流/功能码字段在协议栈中均被忽略。

3.4 Link Test 消息交换流程(SVG 图)

下图展示了 Host 与 Equipment 之间一次完整的 Link Test 消息交换过程,包含 Primary 发送、Reply 回复以及超时处理路径。

Link Test 消息交换流程 Link Test 消息交换流程 Host(发起方) Equipment(回复方) 发送 Primary Control Byte = 0x01 接收 Primary 检查 System Bytes Primary Message 发送 Reply Control Byte = 0x02 Reply Message 验证 Reply System Bytes 匹配? 匹配成功 链路正常 T3 超时 断连处理 说明: Primary 与 Reply 的 Length 均为 10 字节,无数据块。System Bytes 必须回显匹配,否则视为无效回复。

3.5 消息结构对比总结

属性 Primary Message Reply Message
方向 发起方 → 对端 对端 → 发起方
Control Byte 0x01 0x02
Length 10 字节(固定) 10 字节(固定)
System Bytes 发送方生成(唯一) 回显 Primary 的值
Data Block 无 无
超时处理 等待 T3 超时 无(被动回复)
故障定位要点:当分析断连日志时,首先检查 Control Byte 是否为 0x01/0x02,然后验证 System Bytes 是否匹配。如果发现 Primary 的 System Bytes 与 Reply 不一致,说明对端协议栈实现有误或存在中间设备篡改。如果只有 Primary 没有 Reply,则说明网络路径或对端处理超时。