4、SECS-I协议详解:RS-232物理层、块传输协议、多块消息重组、超时与重传机制

SECS-I(SEMI Equipment Communications Standard 1)是SECS/GEM协议栈中最底层的通信协议,定义了半导体设备与主机之间在RS-232串行接口上的物理连接、数据帧格式、块传输规则以及错误恢复机制。本章将深入剖析SECS-I的核心技术细节,为后续理解HSMS(高速消息服务)和GEM功能奠定基础。

学习提示:SECS-I虽然物理层基于传统的RS-232,但其块传输协议和多块消息重组机制的设计思想,至今仍影响着现代工业通信协议。理解SECS-I是掌握整个SECS/GEM协议栈的基石。

4.1 RS-232物理层规范

SECS-I严格规定了RS-232接口的电气特性、连接器定义和信号线功能。在半导体工厂环境中,设备与主机之间的物理连接必须遵循以下标准:

参数 规范值 说明
接口标准 RS-232-C / RS-232-D 点对点串行通信
连接器类型 DB-25(25针)或 DB-9(9针) 推荐使用DB-25,DB-9需适配
信号电平 逻辑1: -3V ~ -15V
逻辑0: +3V ~ +15V
负逻辑,与TTL电平不兼容
传输模式 全双工 可同时发送和接收
最大电缆长度 15米(约50英尺) 超过此长度需使用线路驱动器
波特率 9600 bps(默认)
可选项:19200, 38400, 57600
设备与主机必须协商一致
数据位 7位或8位 通常使用7位ASCII
停止位 1位 固定为1位
奇偶校验 偶校验(Even)或无校验 推荐使用偶校验
关键信号线定义:在DB-25连接器中,SECS-I强制使用以下信号线:
  • TxD(发送数据):引脚2,设备向主机发送数据。
  • RxD(接收数据):引脚3,设备从主机接收数据。
  • GND(信号地):引脚7,公共参考地。
  • RTS(请求发送):引脚4,硬件流控信号(可选)。
  • CTS(清除发送):引脚5,硬件流控信号(可选)。
实际部署中,多数系统仅使用TxD、RxD和GND三线即可实现基本通信。
SECS-I RS-232 物理连接拓扑 半导体设备 (Equipment) DB-25 连接器 主机 (Host) DB-25 连接器 TxD → RxD RxD ← TxD GND — GND ⚠ 注意:RS-232 采用负逻辑,空闲状态为负电压(-3V ~ -15V) 设备与主机之间必须使用交叉线(Null Modem)连接

4.2 块传输协议(Block Transfer Protocol)

SECS-I将上层消息(Message)分割成多个数据块(Block)进行传输。每个块是物理层传输的最小数据单元,具有固定的帧结构。块传输协议的核心目标是确保数据在不可靠的RS-232链路上可靠传输。

4.2.1 数据块帧结构

每个SECS-I数据块由以下字段组成,总长度可变,但最大不超过254字节(含头部):

字段 长度(字节) 描述
Length Byte 1 块长度指示,表示后续数据的总字节数(不含本字节)
Device ID 2 设备标识符,用于区分多设备环境(0~32767)
Message ID 2 消息标识符,用于关联属于同一消息的多个块
Block Number 2 块序号,从0开始递增,用于重组和流控
System Bytes 2 系统字节,用于事务匹配和超时管理
Data 可变(0~244) 实际数据负载,最大244字节
Checksum 2 CRC-16校验和,覆盖整个块(含头部)
重要约束:单个数据块的最大长度为254字节(Length Byte最大值)。如果上层消息超过244字节(254 - 10字节头部),则必须拆分为多个块进行传输。块序号(Block Number)从0开始,最后一个块的Block Number的最高位(Bit 15)必须置1,表示该块是消息的最后一个块。

4.2.2 块传输流程

SECS-I采用停止-等待(Stop-and-Wait)自动重传请求(ARQ)机制。发送方每发送一个块,必须等待接收方返回确认(ACK)或否定确认(NAK)后,才能发送下一个块。具体流程如下:

  1. 发送块:发送方将数据块通过RS-232发送给接收方。
  2. 等待响应:发送方启动超时计时器T3(块传输超时),等待接收方的确认。
  3. 接收确认:接收方校验块的校验和和格式正确性:
    • 如果正确,返回ACK(0x06),发送方继续发送下一个块。
    • 如果错误,返回NAK(0x15),发送方重传当前块。
  4. 超时重传:如果在T3超时内未收到任何响应,发送方重传当前块,最多重试T5次。
  5. 完成传输:当最后一个块被确认后,消息传输完成。
SECS-I 块传输与确认流程 发送方 接收方 发送 Block N 校验 Checksum ACK (0x06) 发送 Block N+1 重传 Block N 重传 Block N NAK (0x15) T3 超时重传 T3 超时 → 自动重传

4.3 多块消息重组(Multi-Block Message Reassembly)

当上层消息长度超过244字节时,SECS-I将其分割为多个数据块进行传输。接收方必须根据块头部信息将这些块重新组装成完整的消息。重组过程涉及以下关键机制:

4.3.1 块头部关键字段

  • Message ID:同一消息的所有块共享相同的Message ID,用于标识块属于哪个消息。
  • Block Number:块序号从0开始递增,接收方按此顺序重组。最后一个块的Block Number最高位(Bit 15)置1,表示消息结束。
  • Device ID:在多设备共享同一物理链路时,用于区分不同设备的消息。

4.3.2 重组算法

接收方维护一个重组缓冲区,按以下步骤处理接收到的块:

  1. 接收块:从物理层接收一个完整的数据块。
  2. 校验:验证校验和、Device ID和Message ID的一致性。
  3. 检查序号:
    • 如果Block Number为0,且该Message ID无正在进行的重组,则创建新的重组会话。
    • 如果Block Number等于期望的下一个序号,则将数据追加到重组缓冲区。
    • 如果Block Number不连续(例如丢失块),则触发错误处理或等待重传。
  4. 检查结束标志:如果当前块的Block Number最高位为1,则消息重组完成,将完整消息提交给上层协议处理。
  5. 超时清理:如果重组过程中超过T6超时(消息重组超时),则丢弃已接收的部分数据,并通知上层消息传输失败。
重组示例:假设一个消息被分割为3个块:
  • Block 0:Block Number = 0x0000,数据长度 = 244字节
  • Block 1:Block Number = 0x0001,数据长度 = 244字节
  • Block 2:Block Number = 0x8002(最高位为1),数据长度 = 50字节
接收方按序号0→1→2顺序重组,最终得到总长度为538字节的完整消息。
多块消息重组过程 Block 0 Block#=0x0000, Len=244 Block 1 Block#=0x0001, Len=244 Block 2 (最后块) Block#=0x8002, Len=50 重组缓冲区 完整消息 = Block0数据(244B) + Block1数据(244B) + Block2数据(50B) 总长度 = 538 字节

4.4 超时与重传机制

SECS-I定义了多个超时计时器,用于处理通信过程中的各种异常情况。这些超时参数是协议可靠性的核心保障,必须根据实际物理链路质量进行合理配置。

4.4.1 超时参数定义

超时名称 符号 默认值 触发条件 动作
块传输超时 T3 10秒 发送块后未收到ACK/NAK 重传当前块,最多T5次
连接超时 T4 60秒 建立物理连接后未收到任何数据 断开连接,报告错误
重传次数 T5 3次 同一块连续重传次数 超过后终止传输,报告错误
消息重组超时 T6 30秒 多块消息重组期间,块间间隔超时 丢弃已接收的部分消息
字符间超时 T8 1秒 同一块内两个字符之间的间隔超时 丢弃当前块,等待下一个块

4.4.2 重传策略

SECS-I的重传机制遵循以下规则:

  • 指数退避:每次重传的等待时间可以递增,避免网络拥塞。例如,第一次重传等待T3,第二次等待2×T3,第三次等待4×T3。
  • 最大重传次数:由T5参数控制,默认3次。超过后,发送方放弃传输,并向上层报告通信失败。
  • 重复块检测:接收方通过Block Number和Message ID检测重复块。如果收到已确认的块,直接丢弃并重新发送ACK。
故障排除要点:在实际测试中,T3超时是最常见的故障点。如果频繁出现T3超时,应检查:
  • RS-232电缆长度是否超过15米,信号衰减是否严重。
  • 波特率是否匹配,数据位/停止位/校验位配置是否一致。
  • 是否存在电磁干扰(EMI),导致数据帧损坏。
  • 接收方缓冲区是否溢出,导致无法及时处理接收到的块。
SECS-I 超时与重传状态机 空闲 等待发送请求 发送块 启动T3计时器 等待ACK T3倒计时 重传 重试计数+1 失败 报告错误 发送请求 块已发送 T3超时 重试≤T5 重试>T5 收到ACK

4.5 测试与故障排除实践

在SECS-I协议测试中,以下工具和方法可以帮助快速定位问题:

4.5.1 常用测试工具

工具类型 推荐工具 用途
串口调试工具 RealTerm, Tera Term, Putty 监控原始RS-232数据流,查看块帧结构
协议分析仪 SECS-I Analyzer, Serial Port Monitor 解析SECS-I块头部,显示块序号、校验和等
逻辑分析仪 Saleae Logic, DSLogic 捕获RS-232信号电平,分析时序和信号完整性
模拟器 SECS-I Simulator, Equipment Simulator 模拟设备或主机行为,测试协议交互