4. HSMS 通信协议:TCP/IP 连接建立、会话建立与断开、HSMS 状态机与心跳机制

HSMS(High-Speed SECS Message Services)是 SEMI E37 标准定义的通信协议,它利用 TCP/IP 作为底层传输层,替代了传统的 RS-232 串口通信。HSMS 提供了更高的数据传输速率和更可靠的连接管理,是现代半导体设备与主机(Host)之间通信的主流方式。本章将深入解析 HSMS 的连接建立、会话管理、状态机转换以及心跳机制。

4.1 HSMS 协议概述与 TCP/IP 连接建立

HSMS 协议建立在 TCP/IP 协议栈之上,它定义了两种主要的连接模式:主动模式(Active Mode)和被动模式(Passive Mode)。在典型的产线部署中,设备(Equipment)通常作为主动方,主机(Host)作为被动方。

关键概念: HSMS 连接建立的核心是 TCP 三次握手。一旦 TCP 连接建立成功,HSMS 协议层才开始进行会话(Session)的建立。

4.1.1 TCP 连接建立流程

HSMS 的 TCP 连接建立遵循标准的 TCP 三次握手流程。以下是设备(主动方)与主机(被动方)建立连接的步骤:

  1. SYN: 设备向主机的指定端口(默认 5000)发送 TCP SYN 报文。
  2. SYN-ACK: 主机收到 SYN 后,回复 SYN-ACK 报文,表示同意建立连接。
  3. ACK: 设备收到 SYN-ACK 后,发送 ACK 报文确认。此时 TCP 连接建立完成。

TCP 连接建立后,底层通信通道准备就绪,但 HSMS 协议层尚未就绪,需要进入会话建立阶段。

工程实践: 在产线部署时,建议将设备的 TCP 重连间隔设置为 5-10 秒,避免因网络抖动导致频繁的重连风暴。

4.1.2 HSMS 连接建立流程图

下图展示了从 TCP 连接到 HSMS 会话建立的完整流程:

HSMS TCP连接与会话建立流程 HSMS TCP连接与会话建立流程 设备 (主动方) 主机 (被动方) ① SYN (Seq=x) ② SYN-ACK (Seq=y, Ack=x+1) ③ ACK (Ack=y+1) TCP 连接建立成功 ④ Select.req ⑤ Select.rsp HSMS 会话建立成功 说明 TCP连接建立后,设备发送 Select.req 消息,主机回复 Select.rsp 确认,完成会话建立。

4.2 HSMS 会话建立与断开

HSMS 会话(Session)是建立在 TCP 连接之上的逻辑通信通道。会话的建立和断开由 HSMS 协议层的消息交换完成。

4.2.1 会话建立:Select.req / Select.rsp

当 TCP 连接建立后,设备(主动方)发送 Select.req 消息请求建立会话。主机收到后回复 Select.rsp 消息,其中包含一个响应代码(HCACK)表示接受或拒绝。

HCACK 代码 含义 说明
0 成功 会话建立成功,可以进行后续通信
1 连接已存在 该设备 ID 已经有一个活跃的会话
2 连接未就绪 主机尚未准备好接受新的会话
3 设备 ID 无效 设备 ID 不在主机允许的范围内
常见问题: 如果设备收到 HCACK=1,表示该设备 ID 已经有一个活跃会话。此时设备应等待当前会话断开后再重新发起 Select.req,而不是强制断开已有连接。

4.2.2 会话断开:Separate.req

会话断开由 Separate.req 消息触发。任何一方(设备或主机)都可以发送 Separate.req 来终止当前会话。收到 Separate.req 后,接收方应停止所有与该会话相关的通信,并释放资源。

会话断开后,TCP 连接可以选择保持或关闭,具体取决于实现。在大多数产线部署中,会话断开后 TCP 连接也会随之关闭。

4.2.3 会话建立与断开状态图

HSMS会话建立与断开状态图 HSMS会话建立与断开状态图 Not Connected TCP连接 Connected Select.req/rsp Selected Separate.req 会话断开 Connected TCP断开 Not Connected 状态转换说明 Not Connected → Connected: TCP连接建立 Connected → Selected: Select.req/rsp 成功 Selected → Connected: Separate.req 或连接异常断开

4.3 HSMS 状态机:Not Connected / Connected / Selected

HSMS 协议定义了一个三状态状态机,用于管理通信连接的生命周期。理解这三个状态及其转换条件是实现可靠通信的基础。

4.3.1 状态定义

状态 描述 允许的操作
Not Connected TCP 连接未建立,无任何通信 发起 TCP 连接(主动方)或等待连接(被动方)
Connected TCP 连接已建立,但 HSMS 会话未建立 发送 Select.req 请求建立会话
Selected TCP 连接已建立,HSMS 会话已建立 发送/接收 SECS 消息(Primary/Secondary)

4.3.2 状态转换条件

  • Not Connected → Connected: TCP 连接建立成功(三次握手完成)。
  • Connected → Selected: 设备发送 Select.req,主机回复 Select.rsp 且 HCACK=0。
  • Selected → Connected: 收到 Separate.req 或发送 Separate.req 成功。
  • Connected → Not Connected: TCP 连接断开(主动关闭或网络异常)。
  • Selected → Not Connected: TCP 连接断开(直接断开,不经过 Connected 状态)。
工程实践: 在 Selected 状态下,如果网络异常导致 TCP 连接断开,状态机会直接跳转到 Not Connected。设备需要实现重连逻辑,重新建立 TCP 连接和 HSMS 会话。

4.3.3 HSMS 状态机详细转换图

HSMS三状态状态机 HSMS 三状态状态机 Not Connected TCP未连接 Connected TCP已连接,会话未建立 Selected 会话已建立 TCP连接 Select.req/rsp Separate.req 会话断开 TCP断开 连接关闭 网络异常/直接断开 状态转换规则 实线:正常流程转换;虚线:异常断开转换 任何状态下 TCP 断开都会回到 Not Connected

4.4 心跳机制:Linktest.req / Linktest.rsp

心跳机制是 HSMS 协议中用于检测连接健康状态的重要功能。通过定期发送 Linktest.req 消息并等待 Linktest.rsp 回复,通信双方可以确认底层 TCP 连接是否仍然有效。

4.4.1 心跳机制工作原理

  • 发送方: 在 Selected 状态下,如果在一定时间内(通常为 10-30 秒)没有发送任何消息,设备或主机应主动发送 Linktest.req 消息。
  • 接收方: 收到 Linktest.req 后,必须立即回复 Linktest.rsp 消息。
  • 超时处理: 如果发送方在超时时间(通常为 5-10 秒)内未收到 Linktest.rsp,则认为连接已断开,状态机跳转到 Not Connected。
工程实践: 建议将心跳间隔设置为 15 秒,超时时间设置为 5 秒。这样可以在 20 秒内检测到连接异常,同时避免过于频繁的心跳消息占用带宽。

4.4.2 心跳机制流程图

HSMS心跳机制流程图 HSMS 心跳机制流程图 设备 (发送方) 主机 (接收方) 定时器到期 (15s) 发送 Linktest.req 回复 Linktest.rsp 收到 Linktest.rsp 重置定时器 超时处理 如果设备在 5 秒内未收到 Linktest.rsp,则判定连接断开,状态机跳转到 Not Connected

4.4.3 心跳参数配置建议

参数 推荐值 说明
心跳间隔 15 秒 两次 Linktest.req 之间的时间间隔
超时时间 5 秒 发送 Linktest.req 后等待 Linktest.rsp 的最大时间
重试次数 3 次 超时后重试 Linktest.req 的次数,超过后断开连接
注意事项: 心跳机制只在 Selected 状态下生效。在 Connected 状态下,由于尚未建立会话,不会发送 Linktest.req。如果 TCP 连接在 Connected 状态下断开,设备需要依赖 TCP 自身的 keepalive 机制或应用层超时来检测。

4.5 本章小结

HSMS 协议通过 TCP/IP 提供可靠的底层通信,并通过三状态状态机(Not Connected / Connected / Selected)管理连接生命周期。会话建立和断开由 Select.req/rsp 和 Separate.req 消息控制,心跳机制(Linktest.req/rsp)确保连接的健康状态。掌握这些核心机制是实现稳定、可靠的半导体设备通信的基础。