4、HSMS连接建立过程:主动连接与被动连接、Select/Connect流程、连接超时处理

HSMS(High-Speed SECS Message Services)作为SECS/GEM通信的TCP/IP传输层,其连接建立过程是链路保活与异常恢复的基础。本章深入剖析HSMS连接建立的完整机制,包括主动/被动连接角色、Select/Connect握手流程以及关键的超时处理策略。

4.1 主动连接与被动连接角色模型

在HSMS通信中,两个实体分别承担主动连接方(Active Entity)和被动连接方(Passive Entity)的角色。角色分配决定了谁发起TCP连接请求,谁监听等待连接。

角色 职责 典型设备 连接行为
主动连接方(Active) 主动发起TCP连接请求,发送Select.req Host(上位机) 调用connect(),等待被动方Accept
被动连接方(Passive) 监听端口,接受连接,响应Select.req Equipment(设备) 调用listen(),accept()后等待Select
工程实践提示:在半导体工厂自动化中,通常Host作为主动方,Equipment作为被动方。但HSMS标准允许角色互换,具体由双方配置决定。建议在系统设计阶段明确角色分配,避免双方同时主动连接导致端口冲突。
HSMS主动连接与被动连接角色模型 主动连接方 Active Entity • 发起TCP连接 • 发送Select.req • 典型:Host 被动连接方 Passive Entity • 监听端口 • 响应Select.req • 典型:Equipment TCP连接请求 Select.req → Select.rsp 角色由配置决定,双方不可同时为主动方,否则连接建立失败

4.2 Select/Connect流程详解

HSMS连接建立的核心在于Select流程,它发生在TCP三次握手之后,用于在已建立的TCP连接上协商HSMS会话。完整的连接建立分为两个阶段:

4.2.1 阶段一:TCP连接建立(Connect)

  1. 主动方调用 connect() 向被动方的监听端口发起TCP连接请求。
  2. 被动方通过 accept() 接受连接,完成TCP三次握手。
  3. 此时TCP连接已建立,但HSMS会话尚未激活,双方处于未选择(Not Selected)状态。

4.2.2 阶段二:HSMS Select握手

Select流程使用HSMS控制消息完成会话协商,具体步骤如下:

步骤 方向 消息类型 说明
1 主动方 → 被动方 Select.req 请求将连接设置为活动会话
2 被动方 → 主动方 Select.rsp 响应Select请求,携带状态码
3 — 通信建立 Select.rsp状态为0x0000表示成功
Select.rsp状态码:
  • 0x0000 — 成功(Success),连接进入Selected状态
  • 0x0001 — 连接已存在(Already Selected),拒绝新Select
  • 0x0002 — 连接未就绪(Not Ready),暂时无法处理
  • 0x0003 — 拒绝(Refused),因配置或资源原因拒绝
HSMS Select/Connect 完整流程 主动连接方 Active Entity 被动连接方 Passive Entity ① TCP三次握手 ② Select.req ③ Select.rsp (0x0000) ④ 通信建立 (Selected状态) Select.rsp状态码为0x0000时,连接进入Selected状态,方可进行数据通信

4.3 连接超时处理机制

HSMS定义了多个超时定时器来保障连接建立的可靠性。其中与连接建立直接相关的超时包括:

超时名称 符号 默认值 触发条件 超时后行为
连接响应超时 T3 45秒 发送Select.req后未收到Select.rsp 关闭TCP连接,重试或报错
连接建立超时 T5 10秒 TCP connect() 未完成 重试连接,累计失败次数
连接间隔超时 T6 5秒 连续两次连接尝试的最小间隔 防止连接风暴

4.3.1 超时处理策略

  • T3超时处理:主动方在发送Select.req后启动T3定时器。若超时未收到Select.rsp,主动方应关闭TCP连接并记录错误。建议重试3次后上报通信故障。
  • T5超时处理:TCP连接建立阶段,若connect()在T5时间内未完成,主动方应取消连接尝试,等待T6间隔后重试。
  • T6间隔控制:两次连接尝试之间必须至少间隔T6时间,避免频繁连接请求导致网络拥塞或对端过载。
常见陷阱:部分实现将T3和T5混淆,导致Select.req超时后立即重连而不等待T6间隔,可能触发对端连接拒绝或资源泄漏。务必区分T3(应用层响应超时)和T5(传输层连接超时)的适用场景。
HSMS连接建立超时处理状态机 IDLE 初始状态 CONNECTING TCP连接中 SELECTING 等待Select.rsp SELECTED 通信建立 ERROR 超时/失败 发起连接 TCP已连接 Select.rsp成功 T3超时 T5超时 T6间隔后重试

4.4 连接建立异常场景与处理

在实际工程中,连接建立可能遇到多种异常情况,需要针对性地设计处理逻辑:

异常场景 可能原因 推荐处理方式
TCP连接被拒绝 被动方未启动、端口错误、防火墙拦截 等待T6间隔后重试,累计失败次数,超过阈值则告警
Select.req无响应 被动方协议栈异常、网络丢包 T3超时后关闭连接,重试连接流程
Select.rsp返回拒绝 连接已存在、资源不足 记录错误原因,等待T6后重试或切换备用连接
双方同时主动连接 配置错误,双方均为Active 检测到重复连接后,一方主动关闭,按优先级决定保留
最佳实践:建议在连接建立模块中实现指数退避重试策略。首次失败后等待T6(5秒),第二次等待2×T6,第三次等待4×T6,最大不超过60秒。同时记录重试次数和失败原因,便于运维排查。

4.5 连接建立参数配置建议

以下参数配置基于SEMI E37.1标准及工程实践经验,适用于大多数半导体设备通信场景:

参数 推荐值 说明
T3(连接响应超时) 45秒 标准默认值,网络延迟较大时可适当增加至60秒
T5(连接建立超时) 10秒 TCP连接超时,局域网环境可缩短至5秒
T6(连接间隔) 5秒 防止连接风暴,不可小于1秒
最大重试次数 3~5次 超过后上报通信故障,进入维护状态
监听端口 5000~5009 SEMI标准推荐端口范围,需与对端一致

正确理解和实现HSMS连接建立机制,是构建可靠SECS/GEM通信链路的第一步。在实际部署中,建议通过日志记录每次连接建立的全过程,包括TCP握手时间、Select.req/rsp交互时间以及超时事件,以便在链路异常时快速定位问题。