4、SECS-I物理层与数据链路:RS-232串口通信、报文格式、块传输、校验与重传机制

SECS-I(SEMI Equipment Communications Standard 1)是SEMI标准E4所定义的物理层与数据链路层协议,它规定了SECS-II消息在设备与主机之间传输时所依赖的电气接口、帧格式、传输控制与错误恢复机制。在半导体工厂自动化集成中,SECS-I是连接设备端与Host端的第一道“物理桥梁”,其稳定性直接决定了上层SECS-II消息能否可靠送达。本章将围绕RS-232串口通信的工程配置、SECS-I报文块(Block)的字节级结构、块传输的状态机、校验算法以及重传与超时机制展开深入讲解,并结合实际设备联机调试中的典型故障案例进行复盘。

SECS-I 物理层与数据链路层核心机制 RS-232 物理层 • 点对点全双工连接 • 信号线:TXD / RXD / GND • 波特率:9600 / 19200 / 38400 • 数据位:7/8 bit,偶校验/无校验 • 流控:硬件RTS/CTS 或 软件XON/XOFF • 最大线缆长度:15m@9600bps • 电平:-3V~-15V(逻辑1),+3V~+15V(逻辑0) 数据链路层(SECS-I 帧) • 块(Block)为传输基本单位 • 块头(Header):10字节固定长度 • 块体(Text):最多244字节 • 长度字节(Length):2字节 • 块号(Block#):2字节,0~32767 • 设备ID(Device ID):7bit • 控制位:R-bit / W-bit / E-bit 传输控制与可靠性 • 校验和(Checksum):2字节 • 超时机制:T1~T4 • 重传:连续3次无ACK则断开 • 多块消息:Block#递增 • 单块消息:Block#=0x8000 • 流控窗口:最多32767块 • 错误恢复:Link Test / Reject SECS-I 报文块(Block)字节结构 Length (2B) Dev ID R bit W bit E bit Stream (1B) Function (1B) Block# (2B) Text (0~244B) Sum (2B) 0-1 2 3 4 5 6 7 8-9 10~253 254-255 • 总块长 = 2(Length) + 10(Header) + Text长度 + 2(Checksum) ≤ 258 字节 • 校验和 = 对Length之后所有字节(Header + Text)累加后取低16位 • 多块消息:Block#从0开始递增,最后一块置E-bit=1;单块消息:Block#=0x8000 • 接收方校验Checksum通过后,回复ACK/NAK块(Block#=0x8001)

4.1 RS-232串口通信的工程配置与信号特性

SECS-I在物理层几乎全部采用RS-232标准(EIA-232),这是因为半导体设备通常位于洁净室环境中,设备与Host之间的通信距离较短(一般不超过15米),且RS-232实现简单、成本低廉、技术成熟。RS-232采用单端信号传输,使用负逻辑电平:逻辑1对应-3V至-15V,逻辑0对应+3V至+15V。这种电平标准与TTL电平不兼容,因此设备端和Host端通常需要经过电平转换芯片(如MAX232、SP3232)与PC的UART控制器连接。

在实际工程配置中,需要重点关注以下参数:波特率(Baud Rate)通常设置为9600、19200或38400bps,SEMI E4标准推荐默认9600bps,但现代设备普遍支持更高速度;数据位通常为7位或8位,配合偶校验(Even Parity)或无校验;停止位固定为1位。流控方式可选择硬件流控(RTS/CTS)或软件流控(XON/XOFF),但在SECS-I应用中,由于报文块本身具有长度字段和超时重传机制,多数集成商选择关闭流控以简化接线。

经验提示:在设备联机调试时,建议先用串口调试助手(如SecureCRT、RealTerm)验证物理链路是否通畅。发送一个ASCII字符"0x05"(ENQ),观察设备是否返回应答。若完全无响应,优先检查TXD/RXD是否交叉连接、波特率是否匹配、地线是否共地。

4.1.1 核心原理:RS-232信号与时序

RS-232的异步串行通信以字符(通常为10位或11位)为传输单位,包括起始位(1位)、数据位(7/8位)、校验位(可选)和停止位(1位)。发送端在空闲状态保持高电平(-12V),发送时先拉低电平产生起始位,随后按低位先出的顺序发送数据位。接收端通过检测起始位的下降沿来同步时钟,并以波特率的16倍或64倍过采样来恢复数据。

在SECS-I应用中,RS-232的DCE/DTE角色定义需要特别注意:设备(Equipment)通常作为DTE(Data Terminal Equipment),Host(主机)也常被配置为DTE,因此两者之间需要使用交叉线(Null Modem)连接,即TXD对RXD、RXD对TXD、GND对GND。若使用直通线,则必须有一端被配置为DCE模式,否则通信完全不通。

4.1.2 操作流程:串口参数配置与验证

  1. 确认设备端串口参数:查阅设备手册或通过设备面板菜单查看当前波特率、数据位、校验位设置。
  2. 配置Host端串口参数:在SECS/GEM通信软件(如SECSComm、Equipment Connectivity Manager)中设置与设备端完全一致的参数。
  3. 使用串口调试工具发送测试字符:发送"0x05"(ENQ)或"0x00",观察设备是否有响应。
  4. 若通信异常,使用示波器或逻辑分析仪测量TXD/RXD引脚电平,确认信号幅度是否在±3V~±15V范围内。
  5. 检查线缆长度和屏蔽:超过15米时建议降低波特率或改用RS-422/RS-485。

4.1.3 案例拆解:某CVD设备联机时串口无响应

背景与约束:某半导体工厂新购入一台CVD薄膜沉积设备,需与MES Host进行SECS/GEM联机。设备供应商提供的默认串口参数为9600、8、N、1,Host端使用工业PC的COM1口。

初始现象:Host发送ENQ后,设备无任何响应,串口调试助手显示发送成功但接收区为空。

分析判断过程:首先检查线缆连接,发现使用的是直通串口线,而设备端和Host端均为DTE角色,导致TXD对TXD、RXD对RXD,信号无法到达对方。其次,用万用表测量TXD引脚电压,发现Host发送时TXD有-9V电平跳变,说明Host发送正常;但设备端TXD始终为-9V空闲电平,说明设备未发送任何数据。

实际操作步骤:更换为交叉串口线(2-3交叉,3-2交叉,5-5直连),重新上电后Host发送ENQ,设备立即返回ACK(0x06)。随后进行SECS-I Link Test(S1F1),设备正常响应S1F2。

结果对比:更换交叉线后通信恢复正常,后续SECS-II消息交互全部成功。

复盘经验:RS-232连接前必须确认DTE/DCE角色,交叉线是设备与Host直连的默认选择。建议在项目启动前制作标准的Null Modem线缆,并在线缆两端贴标签注明"TXD/RXD交叉"。

4.1.4 常见误区与总结

  • 误区1:认为RS-232支持热插拔。实际上带电插拔串口可能损坏接口芯片,应先关闭设备电源再插拔。
  • 误区2:忽略共地问题。RS-232是单端信号,收发双方必须共地,否则地电位差可能导致误码。
  • 误区3:盲目提高波特率。长线缆或高干扰环境下,38400bps可能比9600bps更容易出错,需根据现场EMI情况选择。

4.2 SECS-I报文格式与块结构

SECS-I的数据链路层以块(Block)为基本传输单位。一个完整的SECS-I块由长度字节、块头(Header)、块体(Text)和校验和(Checksum)四部分组成。块头固定为10字节,包含设备ID、控制位、Stream/Function编码、块号等关键信息。块体承载SECS-II消息的实际数据,最大长度为244字节。因此,单个块的最大总长度为2 + 10 + 244 + 2 = 258字节。

4.2.1 核心原理:块头各字段详解

字节偏移字段名称位数说明
0-1Length16块总长度(含Length自身),即10 + Text长度 + 2
2Device ID7设备ID,0~126,127保留
3R-bit1保留位,固定为0
3W-bit1等待位,1表示需要回复
4E-bit1结束位,1表示多块消息的最后一块
5Stream8消息流编号,0~255
6Function8功能编号,0~255
7-8Block#16块号,0~32767;单块消息为0x8000
9Text可变SECS-II数据,最多244字节
10~253Checksum16校验和,对Length之后所有字节累加取低16位

W-bit(Wait bit)是SECS-I中一个关键控制位:当W-bit=1时,接收方必须回复一个ACK或NAK块;当W-bit=0时,接收方无需回复。对于多块消息,发送方在每一块中设置W-bit=1,直到最后一块(E-bit=1)发送完毕,接收方才回复整体确认。这种机制减少了握手次数,提高了传输效率。

4.2.2 判断方法:单块与多块消息的识别

判断一个SECS-I消息是单块还是多块,主要依据Block#字段:若Block#=0x8000,则为单块消息;若Block#在0~32767范围内,则为多块消息的一部分。多块消息的块号从0开始递增,最后一块的E-bit置1。接收方通过块号连续性判断是否收到完整消息,若发现块号跳变或缺失,则丢弃整个消息并请求重传。

4.2.3 案例拆解:S1F1消息的块结构分析

以最常见的S1F1(Are You There)消息为例,其SECS-II数据为空(无System Bytes以外的内容)。假设设备ID为5,W-bit=1,单块发送,则块结构如下:

字节0-1: 0x00 0x0E  (Length = 14,即10字节Header + 2字节Text + 2字节Checksum)
字节2:   0x05       (Device ID = 5)
字节3:   0x40       (R=0, W=1, E=0)
字节4:   0x00       (保留)
字节5:   0x01       (Stream = 1)
字节6:   0x01       (Function = 1)
字节7-8: 0x80 0x00  (Block# = 0x8000,单块)
字节9-10: 0x00 0x00 (Text为空,但SECS-II消息实际包含System Bytes,此处简化)
字节11-12: 0xXX 0xXX (Checksum,对字节2~10累加取低16位)

实际SECS-II消息中,S1F1的Text部分包含4字节的System Bytes,因此Length应为16。上述示例仅用于说明块结构。

4.2.4 常见误区与总结

  • 误区1:将Length字段理解为Text长度。实际上Length是整个块的总长度,包括Header和Checksum。
  • 误区2:忽略W-bit的作用。若发送方设置W-bit=0,接收方不会回复ACK,发送方若等待回复将导致超时。
  • 误区3:多块消息的块号从1开始。标准规定从0开始,最后一块E-bit=1。

4.3 块传输机制与校验重传

SECS-I的块传输采用停止-等待(Stop-and-Wait)与滑动窗口相结合的机制。对于单块消息,发送方发送后等待ACK/NAK;对于多块消息,发送方连续发送所有块(每块W-bit=1),接收方在收到最后一块(E-bit=1)后统一回复ACK/NAK。若接收方发现某一块校验失败或块号不连续,则回复NAK,发送方需从错误块开始重传。

4.3.1 核心原理:校验和算法与超时参数

校验和的计算方法为:从Device ID字节开始,到Text最后一个字节为止,将所有字节的二进制值累加,取累加和的低16位作为Checksum。接收方按同样方法计算,若结果与接收到的Checksum不一致,则判定该块损坏。

SECS-I定义了四个超时参数:T1(块间超时,默认10秒)、T2(ACK超时,默认15秒)、T3(Reply超时,默认45秒)、T4(Inter-block超时,默认45秒)。T1用于多块消息中相邻块之间的最大间隔;T2用于发送方等待ACK/NAK的最大时间;T3用于SECS-II层等待Reply消息的时间;T4用于接收方等待下一个块的时间。

风险提示:T1和T2设置过短会导致正常通信被误判为超时,触发不必要的重传;设置过长则会在链路故障时延迟错误发现。建议T1=10s、T2=15s作为初始值,根据实际网络延迟调整。

4.3.2 操作流程:重传与错误恢复

  1. 发送方发送块后启动T2定时器。
  2. 若T2超时未收到ACK/NAK,发送方重传同一块,重传次数计数器加1。
  3. 连续重传3次仍无响应,发送方判定链路故障,断开连接并报告错误。
  4. 若收到NAK,发送方从NAK指示的块号开始重传。
  5. 接收方若发现块号不连续,发送NAK并丢弃当前块。

4.3.3 案例拆解:多块消息传输中的块丢失恢复

背景与约束:某刻蚀设备需要向Host上传一份包含5000个数据点的配方参数,SECS-II消息总长度为1200字节,需拆分为5个块(每块最多244字节Text)。

初始现象:Host接收时发现第3块(Block#=2)的Checksum校验失败,回复NAK。

分析判断过程:设备端收到NAK后,从Block#=2开始重传第3、4、5块。Host重新接收后校验全部通过,回复ACK。

实际操作步骤:设备端记录重传次数为1,Host端日志显示"Block#2 Checksum Error, Retransmission Requested"。重传后消息完整接收,SECS-II层正常解析。

结果对比:整个传输过程耗时2.3秒,其中重传增加了0.8秒,但消息最终完整送达,未影响生产。

复盘经验:多块传输中,单块损坏并不罕见,尤其在长线缆或高干扰环境。建议在Host端日志中记录每个块的接收时间和校验结果,便于事后分析链路质量。

4.3.4 常见误区与总结

  • 误区1:认为重传是发送方主动发起的。实际上重传必须由接收方通过NAK触发,或发送方因超时自动重传。
  • 误区2:忽略T4超时。T4用于接收方等待下一个块,若T4超时,接收方应丢弃已收到的部分块并释放资源。
  • 误区3:将SECS-I重传与TCP/IP重传混淆。SECS-I是应用层协议,其重传机制独立于底层网络,即使底层是TCP/IP,SECS-I仍按自身规则进行块级重传。
核心要点回顾:SECS-I物理层依赖RS-232的可靠点对点连接,数据链路层通过10字节块头、2字节校验和以及T1~T4超时机制,确保SECS-II消息在不可靠的串口链路上仍能可靠传输。理解块结构、校验算法和重传流程,是进行SECS/GEM联机调试和故障排查的基础。