2. 通信基础与物理层:RS-232串口通信原理、TCP/IP网络通信基础、HSMS连接建立与断开流程

在SECS/GEM产线集成中,通信基础与物理层是设备与主机(Host)之间数据交换的基石。本章将深入剖析三种核心通信机制:传统的RS-232串口通信、现代工业以太网TCP/IP通信,以及专为半导体设备设计的高效通信协议HSMS(High-Speed SECS Message Services)。理解这些底层原理,是解决多供应商设备通信适配问题的第一步。

2.1 RS-232串口通信原理

RS-232是早期SECS/GEM设备最常用的物理层接口,尤其在SEMI E4标准中定义的SECS-I协议中占据主导地位。尽管现代设备已逐步转向以太网,但大量存量设备仍依赖RS-232。

2.1.1 电气特性与信号定义

RS-232采用单端信号传输,使用-15V至-3V表示逻辑“1”(Mark),+3V至+15V表示逻辑“0”(Space)。标准DB-9连接器定义了关键信号线:

引脚号 信号名称 缩写 方向(DTE视角) 功能描述
2 发送数据 TD 输出 DTE向DCE发送数据
3 接收数据 RD 输入 DTE从DCE接收数据
5 信号地 GND — 公共参考地
7 请求发送 RTS 输出 DTE请求发送数据
8 清除发送 CTS 输入 DCE允许DTE发送
实战要点:在连接老式SECS-I设备时,务必确认DTE(数据终端设备)与DCE(数据通信设备)的引脚定义。许多设备采用“直连”而非“交叉”线序,错误的接线会导致通信失败。建议使用串口调试工具(如RealTerm)验证TD/RD信号是否正常。

2.1.2 数据帧格式与波特率

RS-232以异步串行方式传输数据,每个字符帧包含:起始位(1位)、数据位(7或8位)、可选的奇偶校验位(None/Odd/Even)、停止位(1或2位)。SECS-I标准通常固定为:9600波特率、8数据位、无校验、1停止位(9600-8-N-1)。

关键参数:波特率决定了物理层传输速率。SECS-I最大支持38400 bps,但实际产线中9600 bps最为常见。若设备与主机波特率不匹配,将导致数据帧错乱,表现为CRC校验错误或消息超时。

2.1.3 RS-232通信流程SVG图

RS-232串口通信数据帧与握手流程 RS-232串口通信数据帧与握手流程 发送端 (DTE) 接收端 (DCE) 数据帧结构 (9600-8-N-1) 起始位(1) | 数据位(8) | 停止位(1) RTS/CTS 硬件握手控制 ⚠ 常见问题 波特率不匹配 → 数据帧错乱 → CRC错误 接线错误(TD/RD交叉) → 无响应或乱码

2.2 TCP/IP网络通信基础

随着以太网在工业环境中的普及,SECS/GEM逐步迁移至TCP/IP网络。SEMI E37标准定义的HSMS协议完全基于TCP/IP,利用其可靠传输、流量控制和多路复用特性,显著提升了通信效率。

2.2.1 TCP/IP协议栈与SECS/GEM映射

SECS/GEM在TCP/IP协议栈中的位置如下:

  • 应用层:SECS-II消息(Stream/Function)与GEM状态机。
  • 会话层:HSMS协议,负责连接管理、消息封装与控制。
  • 传输层:TCP协议,提供面向连接、可靠、有序的字节流服务。
  • 网络层:IP协议,负责路由寻址。
  • 链路层:以太网MAC,处理物理帧。
重要区别:RS-232是点对点物理层,而TCP/IP是网络层协议。在HSMS中,一个主机可以同时管理数百台设备,每个设备通过唯一的IP地址和端口号(通常为5000或5001)进行标识。多供应商设备适配时,必须统一网络参数配置。

2.2.2 TCP连接建立与断开(三次握手与四次挥手)

TCP连接的可靠性建立在状态转换机制上。以下是标准流程:

阶段 方向 报文类型 状态变化(客户端) 状态变化(服务器)
建立连接 客户端 → 服务器 SYN CLOSED → SYN_SENT LISTEN → SYN_RCVD
建立连接 服务器 → 客户端 SYN + ACK SYN_SENT → ESTABLISHED SYN_RCVD → ESTABLISHED
建立连接 客户端 → 服务器 ACK ESTABLISHED ESTABLISHED
断开连接 主动方 → 被动方 FIN ESTABLISHED → FIN_WAIT_1 ESTABLISHED → CLOSE_WAIT
断开连接 被动方 → 主动方 ACK FIN_WAIT_1 → FIN_WAIT_2 CLOSE_WAIT
断开连接 被动方 → 主动方 FIN FIN_WAIT_2 → TIME_WAIT CLOSE_WAIT → LAST_ACK
断开连接 主动方 → 被动方 ACK TIME_WAIT → CLOSED LAST_ACK → CLOSED

2.2.3 TCP三次握手与四次挥手SVG图

TCP三次握手与四次挥手状态转换 TCP三次握手与四次挥手状态转换 客户端 (Host) 服务器 (Equipment) 三次握手 (Three-Way Handshake) ① SYN (seq=x) ② SYN + ACK (seq=y, ack=x+1) ③ ACK (seq=x+1, ack=y+1) 四次挥手 (Four-Way Wavehand) ① FIN (seq=u) ② ACK (ack=u+1) ③ FIN (seq=v) ④ ACK (ack=v+1) TIME_WAIT状态持续2MSL(约2分钟),确保被动方收到最后一个ACK

2.3 HSMS连接建立与断开流程

HSMS(High-Speed SECS Message Services)是SECS/GEM在TCP/IP上的会话层协议。它定义了设备与主机之间如何建立、维护和终止逻辑连接。HSMS连接状态机是设备适配的核心。

2.3.1 HSMS连接状态机

HSMS定义了三种基本连接状态:

  • NOT CONNECTED:未建立TCP连接,设备处于待机或初始化状态。
  • CONNECTED:TCP连接已建立,但尚未完成HSMS握手。
  • SELECTED:HSMS握手成功,可以传输SECS-II消息。
适配要点:多供应商设备在SELECTED状态下的行为可能不同。例如,某些设备在SELECTED后立即发送S1F13(Establish Communications Request),而另一些则等待主机主动发起。适配层必须兼容这两种模式。

2.3.2 HSMS连接建立流程(Select Procedure)

HSMS连接建立遵循“Select”过程,由设备或主机发起:

  1. TCP连接建立:设备(或主机)作为客户端,向对端发起TCP三次握手。
  2. 发送Select.req:连接建立后,发起方发送HSMS Select请求消息(消息类型=1)。
  3. 接收Select.rsp:接收方处理请求,返回Select响应(消息类型=2),包含通信能力协商结果。
  4. 进入SELECTED状态:若响应成功(HSMS Select Status=0),双方进入SELECTED状态,开始SECS-II消息交换。

2.3.3 HSMS连接断开流程(Deselect / Separate Procedure)

HSMS提供两种断开方式:

过程 触发条件 消息类型 状态变化 适用场景
Deselect 应用层主动要求断开 Deselect.req (类型=3) / Deselect.rsp (类型=4) SELECTED → CONNECTED 正常通信结束,保留TCP连接
Separate 异常或强制断开 Separate.req (类型=9) SELECTED → NOT CONNECTED 设备离线、网络故障、协议错误
关键差异:Deselect仅退出SELECTED状态,TCP连接仍保持,可快速重新Select;Separate则直接关闭TCP连接,需要重新建立TCP连接才能通信。在产线集成中,建议优先使用Deselect进行正常断开,避免频繁的TCP重连开销。

2.3.4 HSMS连接建立与断开完整流程SVG图

HSMS连接建立与断开完整流程 HSMS连接建立与断开完整流程 NOT CONNECTED CONNECTED SELECTED TCP三次握手 Select过程 断开流程 Deselect过程 → CONNECTED Separate过程 → NOT CONNECTED HSMS消息序列(Select过程) 发起方 接收方 Select.req (类型=1) Select.rsp (类型=2, 状态=0) Select.rsp状态码:0=成功,1=已选择,2=资源不足,3=无效设备ID Deselect.rsp状态码:0=成功,1=未选择

2.4 多供应商设备通信适配实战要点

在产线集成中,不同供应商的设备可能采用不同的物理层和协议版本。以下是适配层必须处理的常见问题:

  • 物理层兼容性:部分设备仍使用RS-232,而新设备使用TCP/IP。适配层需要同时支持两种物理层,并在初始化时自动检测。
  • HSMS版本差异:SEMI E37标准有多个版本(如E37.1、E37.2),不同版本对消息头和超时处理有细微差异。适配层应实现版本协商。
  • 连接保活机制:TCP Keep-Alive和HSMS Link Test(消息类型=5)用于检测连接状态。建议适配层定期发送Link Test.req,超时未响应则触发Separate。
  • 设备ID管理:HSMS消息头中的设备ID(Device ID)用于区分多台设备。适配层必须确保ID唯一且与主机配置一致。
最佳实践:建议在适配层实现一个“通信抽象层”,将RS-232和TCP/IP的差异封装在底层驱动中,上层统一使用HSMS会话管理。这样,当设备从串口升级为以太网时,只需更换驱动,无需修改业务逻辑。

2.5 本章小结