4、HSMS连接建立:主动连接(Active)与被动连接(Passive)模式、连接超时参数T5/T6/T7/T8

HSMS(High-Speed SECS Message Services)是建立在TCP/IP之上的SECS/GEM通信层。连接建立是HSMS通信的第一步,也是最容易因网络配置、防火墙规则或参数设置不当而失败的环节。本节将深入剖析主动连接与被动连接两种模式的工作原理,以及四个关键超时参数(T5、T6、T7、T8)对连接稳定性的影响。

4.1 主动连接(Active)与被动连接(Passive)模式

在HSMS协议中,通信双方的角色分为主动连接方(Active)和被动连接方(Passive)。主动方负责发起TCP连接请求,被动方则监听指定端口等待连接。这种角色分配与设备在产线中的物理位置和控制层级密切相关。

关键概念: 主动连接方通常是主机(Host)或上位系统,被动连接方通常是设备(Equipment)。但在某些场景下(如设备主动上报事件),设备也可以配置为主动方。

4.1.1 连接建立流程对比

阶段 主动连接(Active) 被动连接(Passive)
角色定义 发起TCP连接请求的一方 监听端口、等待连接的一方
典型设备 Host、上位机、MES系统 半导体设备、PLC、传感器
端口配置 需要知道被动方的IP和端口 绑定本地端口,等待入站连接
连接发起时机 应用启动或重连策略触发 始终处于监听状态
防火墙影响 出站规则(通常较宽松) 入站规则(通常较严格)
重连责任 主动方负责重连 被动方只需保持监听
调试建议: 在排查连接建立失败时,首先确认哪一方是主动方。如果主动方无法连接,检查主动方的出站防火墙规则和被动方的入站防火墙规则是否放行对应端口(默认HSMS端口为5000)。

4.1.2 连接建立状态机

HSMS连接建立遵循严格的状态机转换。从初始状态到连接建立完成,需要经过以下关键步骤:

  1. 未连接状态(Not Connected): 双方均未建立TCP连接。
  2. TCP连接建立: 主动方发起SYN,被动方回复SYN-ACK,完成三次握手。
  3. HSMS选择(Select)阶段: 主动方发送Select.req消息,被动方回复Select.rsp。
  4. 连接就绪(Connected): 双方进入数据通信状态。
HSMS连接建立状态机(主动连接模式) 未连接 TCP连接中 Select等待 连接就绪 主动发起SYN TCP建立成功 Select.rsp 成功 超时/拒绝 说明:主动方在TCP连接建立后立即发送Select.req,被动方必须在T6超时内回复Select.rsp。 若超时或回复拒绝,连接回退到未连接状态,主动方根据重连策略重新发起。

4.2 连接超时参数:T5、T6、T7、T8

HSMS协议定义了四个关键超时参数,用于控制连接建立、消息确认和连接保活等行为。这些参数的设置直接影响通信的可靠性和故障恢复速度。

4.2.1 超时参数总览

参数 名称 默认值 作用范围 超时后果
T5 连接尝试间隔 10秒 主动连接方 重连延迟增加
T6 消息回复超时 45秒 双方 消息重发或连接断开
T7 连接空闲超时 120秒 双方 发送心跳包
T8 心跳回复超时 5秒 双方 连接断开

4.2.2 各超时参数详解

T5:连接尝试间隔

T5仅适用于主动连接方。当主动方尝试建立TCP连接失败后,必须等待T5时间才能发起下一次连接尝试。T5的典型值为10秒,但可根据网络环境调整。

注意: T5设置过小会导致频繁重连,增加网络和CPU负载;设置过大会延长故障恢复时间。建议在调试阶段使用默认值,稳定后再根据实际网络延迟优化。
T6:消息回复超时

T6是HSMS协议中最关键的超时参数。它定义了发送方在发送需要回复的消息(如Select.req、Linktest.req、Data消息)后,等待回复的最大时间。如果T6超时,发送方认为消息丢失或对方不可达。

  • 默认值: 45秒(SEMI标准建议)
  • 适用场景: Select阶段、Linktest阶段、数据消息交换
  • 超时处理: 发送方重发消息或断开连接
  • 调试要点: 如果频繁出现T6超时,检查网络延迟、防火墙是否丢弃数据包、对方是否过载
T7:连接空闲超时

T7用于检测连接是否处于空闲状态。如果连接在T7时间内没有任何数据交换,主动方应发送Linktest.req心跳消息以验证连接活性。T7的默认值为120秒。

T8:心跳回复超时

T8与T7配合使用。当发送Linktest.req后,如果在T8时间内未收到Linktest.rsp,则认为连接已断开。T8的默认值为5秒。

HSMS超时参数作用时序图 主动方 被动方 T5重连 TCP连接 Select T6超时 空闲 监听中 回复Select 说明:T5控制重连间隔;T6控制消息等待时间;T7/T8控制空闲检测和心跳。 T6超时后,主动方会重发消息或断开连接;T8超时后,连接被视为断开。

4.3 防火墙规则对连接建立的影响

防火墙是HSMS连接建立中最常见的故障点。由于半导体工厂网络通常采用多层防火墙隔离策略,HSMS通信必须穿越这些安全边界。

4.3.1 常见防火墙拦截场景

场景 现象 排查方法
TCP SYN被丢弃 连接超时,无任何响应 使用telnet或nc测试端口可达性
TCP RST被发送 连接立即被拒绝 检查防火墙日志中的拒绝记录
数据包被静默丢弃 连接建立后T6超时 抓包分析是否有数据包丢失
状态检测防火墙拦截 连接建立后一段时间断开 检查防火墙会话超时设置
端口未开放 连接被拒绝(Connection refused) 确认被动方监听端口是否正确

4.3.2 防火墙规则调试步骤

  1. 确认通信方向: 明确主动方和被动方,确定出站和入站规则。
  2. 测试基础连通性: 使用ping测试IP层可达性,使用telnet或nc测试端口可达性。
  3. 抓包分析: 在主动方和被动方同时抓包,对比数据包是否到达对方。
  4. 检查防火墙日志: 查找被拒绝的数据包记录,确认规则ID。
  5. 调整超时参数: 如果网络延迟较大,适当增大T6和T8的值。
  6. 验证状态检测: 确保防火墙会话超时大于T7+T8,避免空闲连接被中断。
实战技巧: 在调试阶段,可以在防火墙上临时放行所有来自测试IP的流量,确认问题是否由防火墙引起。确认后,再逐步收紧规则。

4.4 连接建立常见异常及处理

异常现象 可能原因 排查方向
TCP连接超时 防火墙拦截、IP不可达、端口未监听 检查网络连通性、防火墙规则
Select.rsp超时 T6设置过小、被动方负载过高、网络丢包 增大T6、检查被动方处理能力
连接频繁断开 T7/T8设置不合理、防火墙会话超时 调整T7/T8、检查防火墙会话超时
心跳失败 T8超时、网络不稳定、防火墙丢弃心跳包 增大T8、检查防火墙是否拦截心跳
连接建立后立即断开 Select被拒绝、设备未就绪 检查设备状态、Select.req参数
HSMS连接建立故障排查流程图 连接建立失败 TCP连接超时 Select超时 连接频繁断开 根据异常类型选择对应的排查路径,结合抓包和日志分析定位根因

4.5 最佳实践与参数推荐

  • T5设置: 默认10秒,对于高可靠性要求的场景可缩短至5秒,但需注意避免网络风暴。
  • T6设置: 默认45秒,对于高延迟网络(如跨地域连接)可增大至60-90秒。
  • T7设置: 默认120秒,对于需要快速检测断线的场景可缩短至30-60秒。
  • T8设置: 默认5秒,建议保持默认值,过小容易误判断线,过大会延迟故障发现。
  • 防火墙规则: 放行HSMS端口(默认5000),确保状态检测防火墙的会话超时大于T7+T8。
  • 日志记录: 在主动方和被动方均开启HSMS日志,记录连接建立和超时事件。
核心要点: HSMS连接建立的成功与否,取决于主动/被动模式的正确配置、超时参数的合理设置以及防火墙规则的准确放行。在调试过程中,建议按照“网络层→传输层→应用层”的顺序逐层排查,结合抓包工具(如Wireshark)和防火墙日志,快速定位问题根因。