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 状态。
2.2 主动模式与被动模式
HSMS 定义了两种连接角色:主动方(Active)和被动方(Passive)。这两种角色决定了连接建立时的行为,以及 T5 定时器在重试过程中的作用方。
| 特性 | 主动方(Active) | 被动方(Passive) |
|---|---|---|
| 连接发起 | 主动发起 TCP 连接请求(connect) | 监听端口,等待连接请求(listen/accept) |
| 端口配置 | 配置目标 IP 和端口 | 配置本地监听端口 |
| T5 定时器作用 | 控制连接重试间隔 | 通常不直接使用 T5(等待连接) |
| 典型设备 | Host 主机 | Equipment 设备 |
| 连接恢复 | 主动重试连接 | 被动等待重连 |
实践要点: 在半导体设备自动化中,Equipment 通常配置为被动方,监听一个固定端口(如 5000、5001)。Host 作为主动方,负责发起连接并在连接断开后根据 T5 定时器配置进行重试。这种设计简化了设备端的网络配置,将重试逻辑集中在 Host 端。
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 状态转换流程
- Disconnected → Connected:TCP 三次握手成功,底层 TCP 连接建立。
- Connected → Selected:主动方发送
Select.req控制消息,被动方回复Select.rsp且状态为0x00(成功)。 - Selected → Connected:发送
Deselect.req或收到Separate.req,取消选择。 - Connected/Selected → Disconnected:TCP 连接断开(主动关闭、网络故障、超时等)。
重要提示: T5 定时器仅在 Disconnected 状态下生效。当连接处于 Disconnected 状态时,主动方根据 T5 定时器的配置周期性地尝试重新建立 TCP 连接。如果 T5 配置不当(如间隔过短),可能导致频繁的连接重试,浪费网络资源并可能触发设备端的连接速率限制。
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 秒),则会导致设备长时间离线,影响生产效率。