2. HSMS 连接建立基础:TCP/IP 连接、主动/被动模式、连接状态机

HSMS(High-Speed SECS Message Services)是 SEMI E37 标准定义的基于 TCP/IP 的通信协议。与传统的 RS-232 串口 SECS-I 不同,HSMS 利用现代以太网基础设施,提供更高的吞吐量和更灵活的连接拓扑。理解 HSMS 连接建立的基础,是掌握 T5 定时器配置及其对重试行为影响的前提。

2.1 TCP/IP 连接基础

HSMS 完全依赖 TCP/IP 协议栈提供可靠的、面向连接的字节流传输。TCP 的三次握手、流量控制、拥塞避免和重传机制,为 SECS 消息提供了底层保障。在 HSMS 中,TCP 连接是承载所有 SECS 消息(包括控制消息和数据消息)的物理通道。

关键概念: HSMS 不定义自己的传输层可靠性机制,而是完全信任 TCP。这意味着 TCP 连接的建立与断开,直接决定了 HSMS 会话的可用性。T5 定时器正是在 TCP 连接层面进行重试控制。

TCP 连接建立过程(三次握手)与 HSMS 的关系:

  • SYN:主动方发送 SYN 报文,请求建立连接。
  • SYN-ACK:被动方回复 SYN-ACK,确认请求并告知自己的初始序列号。
  • ACK:主动方发送 ACK,完成三次握手,TCP 连接进入 Established 状态。

一旦 TCP 连接建立,HSMS 协议层便开始在 TCP 连接之上进行控制消息的交换,以进入 Connected 和 Selected 状态。

TCP三次握手与HSMS连接建立 TCP 三次握手与 HSMS 连接建立 主动方 (Host) 被动方 (Equipment) ① SYN (seq=x) ② SYN-ACK (seq=y, ack=x+1) ③ ACK (ack=y+1) TCP Established TCP Established HSMS Connected HSMS Connected TCP 连接是 HSMS 的基础

2.2 主动模式与被动模式

HSMS 定义了两种连接角色:主动方(Active)和被动方(Passive)。这两种角色决定了连接建立时的行为,以及 T5 定时器在重试过程中的作用方。

特性 主动方(Active) 被动方(Passive)
连接发起 主动发起 TCP 连接请求(connect) 监听端口,等待连接请求(listen/accept)
端口配置 配置目标 IP 和端口 配置本地监听端口
T5 定时器作用 控制连接重试间隔 通常不直接使用 T5(等待连接)
典型设备 Host 主机 Equipment 设备
连接恢复 主动重试连接 被动等待重连
实践要点: 在半导体设备自动化中,Equipment 通常配置为被动方,监听一个固定端口(如 5000、5001)。Host 作为主动方,负责发起连接并在连接断开后根据 T5 定时器配置进行重试。这种设计简化了设备端的网络配置,将重试逻辑集中在 Host 端。
HSMS 主动/被动模式架构 HSMS 主动/被动模式架构 主动方 (Active) Host 主机 发起 connect() 配置目标 IP:Port 被动方 (Passive) Equipment 设备 listen() / accept() 配置本地监听端口 TCP 连接请求 T5 定时器:控制主动方重试间隔

2.3 连接状态机:Disconnected / Connected / Selected

HSMS 连接状态机定义了三个核心状态,以及状态之间的转换规则。理解状态机是诊断连接问题和配置 T5 定时器的基础。

2.3.1 三种核心状态

状态 描述 TCP 连接状态 可发送消息
Disconnected 未建立 TCP 连接,或连接已断开 CLOSED / LISTEN 无(仅可发起连接)
Connected TCP 连接已建立,但未完成 HSMS 选择 ESTABLISHED 仅控制消息(Select.req/rsp, Deselect.req/rsp, Linktest.req/rsp, Separate.req)
Selected TCP 连接已建立,且 HSMS 选择已完成 ESTABLISHED 所有 SECS 消息(包括数据消息)

2.3.2 状态转换流程

  1. Disconnected → Connected:TCP 三次握手成功,底层 TCP 连接建立。
  2. Connected → Selected:主动方发送 Select.req 控制消息,被动方回复 Select.rsp 且状态为 0x00(成功)。
  3. Selected → Connected:发送 Deselect.req 或收到 Separate.req,取消选择。
  4. Connected/Selected → Disconnected:TCP 连接断开(主动关闭、网络故障、超时等)。
重要提示: T5 定时器仅在 Disconnected 状态下生效。当连接处于 Disconnected 状态时,主动方根据 T5 定时器的配置周期性地尝试重新建立 TCP 连接。如果 T5 配置不当(如间隔过短),可能导致频繁的连接重试,浪费网络资源并可能触发设备端的连接速率限制。
HSMS 连接状态机 HSMS 连接状态机 Disconnected TCP 未连接 Connected TCP 已连接,未选择 Selected TCP 已连接,已选择 TCP 连接建立 Select.req/rsp 成功 Deselect / Separate TCP 断开 T5 定时器作用区域:Disconnected 状态 当连接处于 Disconnected 状态时,主动方根据 T5 定时器配置周期性地尝试重新建立 TCP 连接 状态转换关键点 只有 Selected 状态才能传输 SECS 数据消息

2.4 连接建立过程中的关键控制消息

在 Connected 和 Selected 状态之间转换时,HSMS 使用以下控制消息:

消息名称 方向 用途 消息长度
Select.req 主动方 → 被动方 请求建立 HSMS 选择 10 字节
Select.rsp 被动方 → 主动方 响应选择请求(成功/失败) 10 字节
Deselect.req 任意方 → 对方 请求取消 HSMS 选择 10 字节
Deselect.rsp 对方 → 请求方 响应取消选择请求 10 字节
Linktest.req 任意方 → 对方 测试连接是否存活 10 字节
Linktest.rsp 对方 → 请求方 响应连接测试 10 字节
Separate.req 任意方 → 对方 通知对方即将断开连接 10 字节
调试技巧: 在排查 HSMS 连接问题时,可以通过网络抓包工具(如 Wireshark)观察这些控制消息的交换。如果看到 Select.req 发送后没有收到 Select.rsp,或者收到状态码非 0x00 的响应,说明连接建立失败,此时应检查 T5 定时器配置以及设备端的连接状态。

2.5 连接建立时序示例

以下是一个完整的 HSMS 连接建立时序,展示了从 Disconnected 到 Selected 的完整过程:

1. [Disconnected] 主动方发起 TCP 三次握手
   Host:    SYN (seq=1000)
   Device:  SYN-ACK (seq=2000, ack=1001)
   Host:    ACK (ack=2001)
   -- TCP 连接建立,进入 Connected 状态 --

2. [Connected] 主动方发送 Select.req
   Host:    Select.req (Device ID=0, Session ID=0)
   Device:  Select.rsp (Status=0x00, 成功)
   -- 进入 Selected 状态 --

3. [Selected] 开始传输 SECS 数据消息
   Host:    Primary Message (S1F1, S5F1, etc.)
   Device:  Secondary Message (S1F2, S5F2, etc.)

4. [Selected] 连接断开(网络故障或主动关闭)
   -- 回到 Disconnected 状态 --

5. [Disconnected] T5 定时器启动,等待重试间隔
   -- 等待 T5 时间后,重新尝试步骤 1 --
T5 定时器与状态机的关系: 在步骤 5 中,T5 定时器决定了从 Disconnected 状态重新发起连接尝试的等待时间。如果 T5 设置过短(如 1 秒),在设备端尚未恢复时,主动方会频繁发起 TCP 连接请求,导致网络拥塞和设备端资源浪费。如果 T5 设置过长(如 60 秒),则会导致设备长时间离线,影响生产效率。