2. Link Test 机制原理

Link Test(连接测试)是 SECS/GEM 协议中用于检测通信链路是否仍然存活的核心机制。在半导体设备自动化系统中,物理连接(如 TCP/IP 套接字)可能因网络故障、设备重启或中间设备异常而中断,而应用层往往无法立即感知。Link Test 通过周期性的心跳包和定时器超时判断,确保通信双方能够及时检测到连接丢失,从而触发重连或报警流程。

核心观点: Link Test 不是可选的“附加功能”,而是 SECS/GEM 连接可靠性的最后一道防线。没有 Link Test,断连检测可能延迟数分钟甚至数小时,导致生产数据丢失或设备控制失控。

2.1 Link Test 的目的

Link Test 机制主要解决以下三个问题:

  • 检测静默断连: 当 TCP 连接在操作系统层面尚未关闭(例如网线松动、交换机断电),但实际数据已无法传输时,Link Test 通过心跳包主动探测链路可用性。
  • 区分空闲与故障: 在长时间无业务消息交互的场景下,Link Test 帮助区分“设备正常但无数据”与“设备已离线”两种状态。
  • 触发恢复流程: 一旦检测到连接失效,主机或设备可以立即启动重连逻辑,减少业务中断时间。
工程经验: 在 300mm 晶圆厂的自动化物料搬运系统(AMHS)中,Link Test 超时通常配置为 10-30 秒。过短的超时会导致误报,过长的超时则无法满足生产节拍要求。

2.2 心跳包(Heartbeat)机制

心跳包是 Link Test 的具体实现载体。在 SECS/GEM 中,心跳包通过 Link Test Request (LTR) 和 Link Test Response (LTRR) 两条消息完成。

心跳交互流程如下:

  1. 发起方(通常是主机或设备)发送 Link Test Request 消息。
  2. 接收方收到后,立即回复 Link Test Response 消息。
  3. 如果发起方在 T6 定时器 超时前未收到响应,则判定连接丢失。
注意: 心跳包不携带业务数据,其消息体为空或仅包含固定头部。不要将心跳包与业务消息的确认机制(如 T3 超时)混淆。
心跳包交互流程 主机 (Host) 设备 (Equipment) Link Test Request (LTR) Link Test Response (LTRR) T6 定时器 (等待响应) T6 超时 → 判定连接丢失 触发重连或报警

2.3 T3 / T5 / T6 / T7 / T8 定时器简介

SECS/GEM 协议定义了一组定时器,用于控制不同场景下的超时行为。与 Link Test 直接相关的定时器包括 T6,而 T3、T5、T7、T8 则在连接管理和消息确认中发挥辅助作用。

定时器 默认值 作用范围 与 Link Test 的关系
T3 45 秒 Reply Message 等待超时 用于业务消息的响应等待,与心跳无关。若 T3 频繁超时,可能间接反映链路质量下降。
T5 10 秒 Connect 建立超时 控制 TCP 连接建立阶段的最大等待时间。连接建立后,Link Test 才开始工作。
T6 5 秒 Link Test 响应超时 Link Test 的核心定时器。 发送 LTR 后,若 T6 内未收到 LTRR,则判定连接断开。
T7 10 秒 Connect 确认超时 用于连接建立后的确认阶段,与 Link Test 无直接关系。
T8 5 秒 Network 断开检测 用于检测网络层断开,通常与 TCP Keep-Alive 配合使用。T8 超时后,协议栈会主动关闭连接。
配置建议: 在高速设备(如晶圆检测机)中,建议将 T6 设置为 3-5 秒,心跳间隔设置为 T6 值的 2-3 倍(即 6-15 秒)。这样既能快速检测断连,又不会因网络抖动导致误判。
SECS/GEM 定时器关系图 Link Test 机制 T3 (Reply) 间接影响 T5 (Connect) 连接建立前提 T6 (Link Test) 核心定时器 T7 (Connect Ack) 间接影响 T8 (Network) 网络断开检测 T6 是 Link Test 的直接控制定时器 其他定时器影响连接生命周期,但不直接参与心跳检测

2.4 定时器配置与工程考量

在实际工程中,定时器的配置需要根据网络环境、设备性能和业务要求进行权衡。以下是一些关键考量:

  • 网络延迟与抖动: 在工厂局域网(通常延迟 < 1ms)中,T6 可设置为 3-5 秒。若通过 VPN 或跨地域连接,建议适当增大 T6 至 10-15 秒。
  • 心跳间隔: 心跳间隔通常为 T6 值的 2-3 倍。例如 T6=5s 时,心跳间隔设为 10-15s。间隔过短会增加网络和 CPU 负载,间隔过长则延迟断连检测。
  • T3 与 T6 的配合: 如果业务消息频繁(如每秒多条),T3 超时可能先于 T6 触发。此时应优先排查业务层问题,而非链路问题。
  • T8 与 TCP Keep-Alive: T8 通常与操作系统 TCP Keep-Alive 配合使用。建议将 TCP Keep-Alive 时间设置为 T8 值的 1.5-2 倍,避免双重超时冲突。
最佳实践: 在设备端和主机端分别记录 Link Test 超时日志。当 T6 超时发生时,日志应包含时间戳、本地 IP、对端 IP 和重试次数。这些数据是排查网络故障的第一手资料。
定时器配置决策流程 开始配置 Link Test 网络环境? 局域网 / 广域网 局域网 T6=3~5s, 间隔=10~15s 广域网/VPN T6=10~15s, 间隔=20~30s 验证:模拟断连测试 确认 T6 超时后触发重连

2.5 常见问题与避坑

避坑 1: 不要将 T6 与 T3 混淆。T3 用于业务消息的响应等待,T6 仅用于心跳响应。如果业务消息响应慢,应调整 T3 而非 T6。
避坑 2: 心跳间隔不要小于 T6 值。例如 T6=5s,心跳间隔设为 3s,会导致前一个心跳尚未超时,下一个心跳已发出,造成消息队列堆积和误判。
避坑 3: 在双机热备场景中,主备切换期间可能产生短暂的心跳丢失。建议在切换完成后,主动发送一次 Link Test Request 以快速恢复链路状态,而不是等待下一个心跳周期。