4. HSMS 协议详解:会话建立、选择/分离、链路测试、数据消息传输、超时机制
HSMS(High-Speed SECS Message Services)是 SECS/GEM 协议族中基于 TCP/IP 的传输层实现。与依赖 RS-232 串口的 SECS-I 不同,HSMS 利用标准以太网基础设施,提供更高的吞吐量和更灵活的拓扑结构。本章将深入剖析 HSMS 的会话生命周期、核心控制消息、数据消息传输机制以及关键的定时器超时策略。
4.1 HSMS 协议栈与连接模型
HSMS 位于 OSI 模型的传输层(TCP)之上,会话层之下。它定义了两种逻辑角色:主动方(Active) 和 被动方(Passive)。主动方负责发起 TCP 连接,被动方则监听并接受连接。这种角色分配是 HSMS 会话建立的基础。
4.2 会话建立与选择/分离机制
HSMS 会话的建立并非仅靠 TCP 连接完成。TCP 连接建立后,双方需要通过 选择(Select) 和 分离(Deselect) 控制消息来确立和释放逻辑会话关系。
4.2.1 选择(Select)流程
Select 流程用于在已建立的 TCP 连接上确立一个逻辑会话。只有成功完成 Select 后,双方才能开始传输数据消息。
- 主动方发送 Select.req: 主动方(通常是 Host)向被动方发送 Select.request 消息,请求建立会话。
- 被动方处理并回复 Select.rsp: 被动方(设备)检查自身状态,如果可以接受会话,则回复 Select.response,其中包含响应代码(0 表示成功)。
- 会话建立: 主动方收到成功的 Select.rsp 后,会话进入“已选择(Selected)”状态,双方可以开始数据通信。
4.2.2 分离(Deselect)流程
Deselect 用于正常终止一个已建立的 HSMS 会话,但通常不关闭 TCP 连接。分离后,双方回到“未选择(Not Selected)”状态,可以重新进行 Select。
- Deselect.req: 任一方均可发送 Deselect.request 消息。
- Deselect.rsp: 接收方回复 Deselect.response,确认分离。
- 状态转换: 会话状态从“Selected”变为“Not Selected”。
4.3 链路测试(Link Test)机制
HSMS 使用 Link Test 消息来检测 TCP 连接的健康状态,防止因网络故障导致“死连接”(Half-Open Connection)。Link Test 是 HSMS 保持连接活跃性的核心机制。
| 消息类型 | 方向 | 功能描述 | 触发条件 |
|---|---|---|---|
| Linktest.req | 任一方 → 对方 | 发送链路测试请求,探测连接是否存活 | T3 定时器超时(无数据消息时) |
| Linktest.rsp | 对方 → 发起方 | 回复链路测试响应,确认连接正常 | 收到 Linktest.req 后立即回复 |
4.4 数据消息传输
在会话处于 Selected 状态后,双方可以通过 HSMS 传输 SECS-II 数据消息。HSMS 定义了两种数据消息类型:Data Message 和 Reply Message。
- Data Message: 用于传输 SECS-II 流/功能(SxFy)消息。消息头中的 W-bit(Wait-bit)指示是否需要回复。
- Reply Message: 当 W-bit = 1 时,接收方必须回复一条 Reply Message。Reply Message 的消息 ID 必须与对应的 Data Message 匹配。
4.5 超时机制(Timers)
HSMS 协议定义了多个定时器来保证通信的可靠性和健壮性。这些定时器是 HSMS 实现中必须正确配置的关键参数。
| 定时器 | 默认值 | 用途 | 超时处理 |
|---|---|---|---|
| T1 | 1.0 秒 | 等待单个消息字符的间隔时间(SECS-I 兼容) | 重传或断开连接 |
| T2 | 10.0 秒 | 等待完整消息到达的时间 | 丢弃不完整消息 |
| T3 | 45.0 秒 | 等待 Reply Message 的超时时间 | 重发 Data Message 或报告错误 |
| T4 | 45.0 秒 | 等待 Select.rsp 或 Deselect.rsp 的超时时间 | 重发 Select/Deselect 请求 |
| T5 | 10.0 秒 | 等待 Linktest.rsp 的超时时间 | 关闭 TCP 连接并重连 |
| T6 | 5.0 秒 | 等待控制消息(如 Separate)的响应超时 | 断开连接 |
| T7 | 10.0 秒 | 等待 TCP 连接建立完成的超时时间 | 重试连接 |
| T8 | 5.0 秒 | 等待网络数据包到达的间隔时间 | 触发 Link Test |
4.6 总结与最佳实践
HSMS 协议是 SECS/GEM 通信的基石,理解其会话管理、链路测试、数据消息传输和超时机制对于实现稳定可靠的产线集成至关重要。
- 会话管理: 始终确保在 Select 成功后传输数据,Deselect 后不要发送数据消息。
- 链路测试: 合理配置 T3 和 T5 定时器,避免因网络抖动导致不必要的连接断开。
- 数据消息: 注意 W-bit 的使用,确保 Reply Message 的消息 ID 与 Data Message 匹配。
- 超时配置: 根据实际网络环境和设备性能调整定时器参数,避免使用默认值一刀切。