1. HSMS 协议概述

1.1 HSMS 在 SECS/GEM 协议栈中的位置

SECS/GEM 协议族采用分层架构,HSMS(High-Speed SECS Message Services)位于传输层,替代传统的 RS-232 物理连接,为上层 SECS-II 消息提供基于 TCP/IP 的可靠传输通道。下图展示了 HSMS 在完整协议栈中的定位:

SECS/GEM 协议栈分层架构 GEM 应用层(设备行为模型、状态机、事件通知) SECS-II 消息层(SxFx 流/功能、数据项格式) HSMS 传输层(TCP/IP 封装、连接管理、消息分帧) TCP/IP 网络层(Socket、端口、IP 路由) 以太网物理层(IEEE 802.3、网卡、网线) 应用 表示 传输 网络 物理 HSMS 职责 • 建立/断开 TCP 连接 • 消息分帧与重组 • 心跳保活(Linktest) • 连接状态机管理 • 超时重传控制 • 多会话支持 • 数据完整性校验
关键理解:HSMS 是 SECS/GEM 协议栈中承上启下的核心层。它屏蔽了底层 TCP/IP 的复杂性,向上层 SECS-II 提供统一的“连接-发送-接收-断开”接口,同时负责连接状态管理和重连逻辑,是设备自动化通信的“骨架”。

1.2 HSMS vs RS-232:核心差异对比

传统 SECS-I 基于 RS-232 串口通信,而 HSMS 基于以太网 TCP/IP。两者在物理介质、传输速率、连接模型和可靠性方面存在本质差异:

对比维度 HSMS(以太网) RS-232(串口)
物理介质 双绞线/光纤,距离可达 100m+ 串口线,距离通常 ≤ 15m
传输速率 100 Mbps / 1 Gbps 及以上 9.6 kbps ~ 115.2 kbps
连接模型 主动/被动双端模型,支持多会话 主从模式,点对点单会话
消息分帧 4 字节长度头 + 10 字节消息头 + 数据体 块传输(Block),需握手确认
错误检测 TCP 校验和 + 应用层校验 奇偶校验 / CRC
重连机制 内置状态机,支持自动重连 需应用层自行实现
并发支持 支持多设备同时连接 仅支持 1 对 1
部署成本 需交换机/路由器,布线规范 线缆成本低,但速率受限
迁移趋势:当前新建半导体工厂已全面采用 HSMS 替代 RS-232。HSMS 不仅解决了速率瓶颈,更重要的是支持 TCP 重连和连接状态监控,为高可用自动化系统奠定了基础。但 RS-232 在老旧设备改造场景中仍有存量市场。

1.3 HSMS 通信模型

HSMS 定义了两种通信角色:主动端(Active)和被动端(Passive)。两者通过 TCP 连接建立会话,并遵循严格的状态机转换规则。

1.3.1 主动端与被动端角色定义

  • 主动端(Active Entity):发起 TCP 连接请求的一方。通常是上位机(Host)或设备端(Equipment),取决于配置。主动端负责监听连接状态,并在断开后发起重连。
  • 被动端(Passive Entity):监听 TCP 端口,等待连接请求的一方。被动端不主动发起连接,但可以拒绝或接受连接请求。

一个 HSMS 会话中,主动端和被动端通过 连接 ID(Session ID / Device ID) 进行标识。同一 TCP 连接上可承载多个逻辑会话。

1.3.2 HSMS 连接状态机

HSMS 定义了 5 种连接状态,状态转换由控制消息和超时事件驱动:

HSMS 连接状态机(简化视图) NOT CONNECTED CONNECTED SELECTED RETRY LINK TEST TCP 连接建立 S1F13/S1F14 协商 心跳超时 Linktest 响应 超时断开 断开/异常 断开 重连计时 重连尝试
状态机要点:
  • NOT CONNECTED:初始状态,无 TCP 连接。主动端在此状态启动重连计时器。
  • CONNECTED:TCP 连接已建立,但尚未完成 SECS 会话协商(S1F13/S1F14)。
  • SELECTED:会话协商成功,可传输 SECS-II 数据消息。这是正常通信状态。
  • LINK TEST:心跳检测状态,定期发送 Linktest 消息验证连接活性。
  • RETRY:重连等待状态,按配置的间隔和次数尝试重新建立 TCP 连接。

1.3.3 HSMS 消息格式

HSMS 消息采用 长度头 + 消息头 + 数据体 的定界格式,确保 TCP 流中消息边界的正确识别:

HSMS 消息帧结构(总长度 = 4 + 10 + DataLength):

字节偏移  0-3:   消息长度(4 字节,大端序,表示消息头+数据体的总字节数)
字节偏移  4-13:  消息头(10 字节,固定长度)
                  - Session ID(2 字节):设备标识
                  - Header Byte 2(1 字节):消息类型/流号
                  - Header Byte 3(1 字节):功能号
                  - P/B 位 + 保留位(1 字节)
                  - System Bytes(4 字节):系统事务 ID
字节偏移 14+:    数据体(可变长度,SECS-II 数据项)

示例:S1F13(建立通信请求)的 HSMS 帧:
00 00 00 0A  (长度 = 10,无数据体)
00 01        (Session ID = 1)
01           (流号 = 1)
0D           (功能号 = 13)
00           (P/B = 0)
00 00 00 01  (System ID = 1)
工程提示:HSMS 消息头中的 System Bytes 是事务关联的关键字段。发送方为每条消息分配唯一 System ID,接收方在响应消息中回传相同 ID,用于请求-响应匹配。在重连场景中,System ID 的连续性管理直接影响通信可靠性。

1.3.4 HSMS 控制消息与数据消息

HSMS 定义了 6 种控制消息,用于连接管理和心跳检测:

消息类型 代码 方向 用途
Select.req 0x01 主动端 → 被动端 请求建立 SECS 会话
Select.rsp 0x02 被动端 → 主动端 响应会话建立请求(成功/失败)
Deselect.req 0x03 任一端 请求断开 SECS 会话
Deselect.rsp 0x04 对端 响应会话断开请求
Linktest.req 0x05 任一端 心跳检测请求
Linktest.rsp 0x06 对端 心跳检测响应

数据消息(SECS-II 消息)通过 HSMS 传输时,消息头中的 流号(Stream) 和 功能号(Function) 标识具体消息类型,例如 S1F13(建立通信请求)、S6F11(事件报告)等。

通信模型总结:HSMS 采用“TCP 连接 + 会话协商 + 状态机管理”的三层通信模型。主动端/被动端角色清晰,状态机确保连接建立、心跳维持、异常断开和重连的完整生命周期管理。理解这一模型是后续重连策略调优的基础。