2. HSMS 通信建立:连接模式、定时器与状态机

HSMS(High-Speed SECS Message Services)是 SECS/GEM 标准中基于 TCP/IP 的通信层。在设备自动化测试中,HSMS 连接的建立与维护是消息事务能够正常进行的前提。本章将深入剖析 HSMS 的主动/被动连接模式、关键定时器(T3/T5/T6/T8)的配置策略,以及通信状态机的三个核心状态:Not Connected、Connected 和 Selected。

2.1 HSMS 主动连接与被动连接模式

HSMS 定义了两种连接建立模式,分别对应设备端(Equipment)与主机端(Host)在 TCP 连接中的角色。在测试工程中,正确选择并配置连接模式是通信会话成功的第一步。

特性 主动连接模式(Active) 被动连接模式(Passive)
发起方 设备(Equipment)主动向主机发起 TCP 连接 主机(Host)主动向设备发起 TCP 连接
监听方 主机处于监听状态(Listen) 设备处于监听状态(Listen)
典型场景 设备上电后自动连接主机 主机集中管理多个设备,由主机调度连接
IP/端口配置 设备需配置主机的 IP 和端口 设备需配置自身的监听端口
测试关注点 设备端重连机制、T5 定时器 主机端连接请求频率、T8 定时器
测试工程提示: 在实验室环境中,建议先使用被动模式进行调试,因为主机端可以精确控制连接建立的时机,便于观察设备端的响应行为。生产环境中,主动模式更为常见,设备需具备健壮的重连逻辑。

连接建立流程对比

以下 SVG 图展示了两种模式下 TCP 连接建立的时序差异:

HSMS 主动连接 vs 被动连接模式 主动连接模式 设备 (Active) 主机 (Passive) TCP Connect TCP Accept --- 链路建立 --- 发送 Select.req 回复 Select.rsp 状态: Selected 被动连接模式 主机 (Active) 设备 (Passive) TCP Connect TCP Accept --- 链路建立 --- 发送 Select.req 回复 Select.rsp 状态: Selected

2.2 T3 / T5 / T6 / T8 定时器配置

HSMS 协议定义了多个定时器来管理通信会话的可靠性。在测试工程中,定时器配置不当是导致通信异常中断的常见原因。以下是四个核心定时器的详细说明:

定时器 默认值 作用范围 超时后果 测试建议
T3 45 s Reply Timeout(回复超时) 重发消息或断开连接 根据设备处理能力调整,通常 30-120 s
T5 10 s Connect Separation(连接间隔) 忽略连接请求 主动模式下设备重连间隔,建议 5-30 s
T6 5 s Transaction Timeout(事务超时) 中止当前事务 用于控制单条消息事务的等待时间
T8 5 s Control Transaction Timeout(控制事务超时) 断开连接 用于 Select/Linktest 等控制消息
常见陷阱: T3 和 T6 容易混淆。T3 是等待单条回复消息的超时,而 T6 是等待整个事务完成的超时。在测试中,如果设备处理复杂指令耗时较长,应优先增大 T6 而非 T3,否则可能导致消息重发与事务混乱。

定时器交互时序图

以下 SVG 图展示了 T3 和 T6 在一条 S2F17 消息事务中的超时监控点:

T3 / T6 定时器在消息事务中的监控位置 时间 主机发送 S2F17 设备处理中 设备回复 S2F18 T3 回复超时监控 (默认 45s) T6 事务超时监控 (默认 5s)

2.3 HSMS 通信状态机

HSMS 通信状态机定义了设备与主机之间 TCP 连接和逻辑会话的完整生命周期。理解状态转换是诊断通信故障的基础。状态机包含三个主要状态:Not Connected、Connected 和 Selected。

状态定义与转换条件

当前状态 触发事件 下一状态 说明
Not Connected TCP 连接建立成功 Connected 物理链路已通,但未建立逻辑会话
Connected 收到或发送 Select.req Connected(等待中) 进入选择协商过程
Connected 收到有效的 Select.rsp(成功) Selected 逻辑会话建立,可进行数据交换
Connected 收到 Select.rsp(失败)或 T8 超时 Connected 选择失败,可重试
Selected TCP 连接断开 Not Connected 物理链路中断,状态重置
Selected 收到 Deselect.req / Linktest 失败 Connected 逻辑会话解除,物理链路保留
Connected TCP 连接断开 Not Connected 物理链路中断

状态机转换图

以下 SVG 图完整展示了 HSMS 通信状态机的三个状态及关键转换路径:

HSMS 通信状态机(Not Connected / Connected / Selected) Not Connected TCP 未连接 Connected TCP 已连接,未选择 Selected 逻辑会话已建立 TCP 连接建立 Select 成功 Deselect / Linktest 失败 TCP 断开 TCP 断开 说明:Connected 状态是通信的“中间态”,大部分通信故障(如 Select 失败、T8 超时)发生在此状态。

2.4 测试工程案例:连接建立故障排查

案例场景: 某半导体设备在产线上频繁出现“通信中断”报警,日志显示设备反复在 Connected 和 Not Connected 状态之间切换,无法稳定进入 Selected 状态。

排查步骤

  1. 检查 T5 定时器: 发现设备主动重连间隔设置为 3 秒,小于主机端的 T8 定时器(5 秒),导致主机尚未完成 Select 响应,设备又发起了新的连接请求。
  2. 调整 T5 值: 将 T5 从 3 秒增大至 10 秒,确保主机有足够时间处理 Select 事务。
  3. 验证 T8 配置: 确认主机端 T8 定时器设置为 8 秒,与设备端 T5 形成合理的时间窗口。
  4. 观察状态机日志: 修改后,设备稳定进入 Selected 状态,通信中断告警消除。
经验法则: 在配置 HSMS 定时器时,应遵循 T5 > T8 的原则,避免设备重连速度超过主机处理控制事务的能力。同时,T3 应大于设备处理单条消息的最大耗时,T6 应大于整个事务的预期耗时。

定时器配置示例(设备端)

# HSMS 设备端定时器配置示例 (config.ini)
[HSMS]
T3 = 60          # 回复超时,单位秒
T5 = 10          # 连接间隔,单位秒
T6 = 30          # 事务超时,单位秒
T8 = 5           # 控制事务超时,单位秒
connect_mode = ACTIVE   # 主动连接模式
host_ip = 192.168.1.100
host_port = 5000
device_id = 1

通过本章的学习,测试工程师应能够独立配置 HSMS 连接参数,理解状态机转换逻辑,并能够快速定位因定时器或连接模式配置不当导致的通信故障。