2. SECS-I物理层与传输:RS-232C串行通信标准、SECS-I报文格式、块传输协议与校验机制
SECS-I(SEMI Equipment Communications Standard 1)是SECS/GEM协议栈中最底层的物理与数据链路层标准。它定义了设备与主机之间如何通过物理介质进行原始比特流的传输,以及如何将上层(SECS-II)的消息封装成数据块进行可靠传递。本章将深入剖析其物理层标准、报文帧格式、块传输协议以及关键的校验机制。
2.1 RS-232C串行通信标准
SECS-I最初且最广泛使用的物理层标准是RS-232C。它定义了连接器、信号电平、引脚定义和传输速率等电气与机械特性。
2.1.1 关键电气特性
| 参数 | 规格 | 说明 |
|---|---|---|
| 信号电平(逻辑0) | +3V ~ +15V | 表示“空格”(Space)或“ON”状态 |
| 信号电平(逻辑1) | -3V ~ -15V | 表示“传号”(Mark)或“OFF”状态 |
| 传输模式 | 全双工 | 可同时发送和接收数据 |
| 最大电缆长度 | 约15米(50英尺) | 受限于电容负载,实际应用中常使用短距离 |
| 最大数据速率 | 通常为9600 bps或19200 bps | SEMI标准中常见,但可支持更高速率 |
2.1.2 连接器与引脚定义
SECS-I标准规定使用DB-25连接器,但在实际半导体设备中,DB-9连接器也极为常见。以下是关键的信号引脚定义:
- 引脚2 (TXD):发送数据(Transmit Data)
- 引脚3 (RXD):接收数据(Receive Data)
- 引脚7 (GND):信号地(Signal Ground)
- 引脚4 (RTS):请求发送(Request to Send)
- 引脚5 (CTS):清除发送(Clear to Send)
- 引脚6 (DSR):数据设备就绪(Data Set Ready)
- 引脚20 (DTR):数据终端就绪(Data Terminal Ready)
2.1.3 RS-232C通信链路示意图
下图展示了SECS-I设备(如半导体工艺设备)与主机(Host)之间通过RS-232C建立的全双工点对点连接。
2.2 SECS-I报文格式
SECS-I定义了在RS-232C链路上传输的基本数据单元——报文(Message)。一个完整的SECS-I报文由多个数据块(Block)组成,每个数据块都有严格的帧结构。
2.2.1 数据块(Block)帧结构
每个数据块是SECS-I传输的最小独立单元,其帧格式如下:
| 字段 | 长度(字节) | 描述 |
|---|---|---|
| 长度字节(Length Byte) | 1 | 表示该数据块中后续数据的总长度(包括设备ID、控制字节等,但不包括长度字节本身和校验和) |
| 设备ID(Device ID) | 1 | 标识目标设备或主机,用于多设备总线拓扑(较少用) |
| 控制字节(Control Byte) | 1 | 包含块号、是否最后一块、是否需要回复等控制信息 |
| 数据域(Data Field) | 0~244 | 承载SECS-II消息内容,最大长度为244字节 |
| 校验和(Checksum) | 2 | 对整个数据块(从长度字节到数据域末尾)进行CRC-16校验 |
2.2.2 控制字节详解
控制字节是SECS-I协议的核心,它按位定义了数据块的属性:
- Bit 7 (R-bit):请求位。置1表示发送方请求接收方回复一个确认块。
- Bit 6 (E-bit):结束位。置1表示当前数据块是该报文的最后一个块。
- Bit 5-0 (Block Number):块号。取值范围0~63,用于标识数据块在报文中的顺序。
2.3 块传输协议与校验机制
SECS-I的块传输协议是一种基于停止-等待(Stop-and-Wait)的可靠传输机制。它通过确认和重传来保证数据块的无差错传递。
2.3.1 块传输流程
- 发送数据块:发送方发送一个数据块,并启动超时计时器(T3)。
- 等待确认:发送方等待接收方返回一个确认块(ACK或NAK)。
- 接收确认:
- 如果收到ACK(确认正确),发送方发送下一个数据块。
- 如果收到NAK(确认错误)或超时,发送方重传当前数据块。
- 重复:重复上述步骤,直到整个报文的所有数据块都被成功确认。
2.3.2 确认块(ACK/NAK)格式
确认块是一种特殊的数据块,其长度固定为4个字节:
- 长度字节:固定为0x02(表示后续有2个字节)。
- 设备ID:与原始数据块相同。
- 控制字节:包含被确认数据块的块号,以及ACK/NAK标志。
- 校验和:2字节CRC-16。
2.3.3 CRC-16校验机制
SECS-I使用CRC-16(Cyclic Redundancy Check)算法来检测传输错误。其生成多项式为:
G(x) = x^16 + x^15 + x^2 + 1
校验和的计算覆盖整个数据块(从长度字节到数据域末尾)。接收方计算收到的数据块的CRC值,并与数据块末尾的2字节校验和进行比较。如果一致,则认为数据块无差错;否则,发送NAK请求重传。
2.3.4 块传输协议流程图
下图展示了SECS-I块传输协议的完整交互过程,包括正常传输和错误重传场景。
2.4 超时与重传策略
SECS-I定义了多个超时定时器来保证协议的健壮性:
| 定时器 | 默认值 | 触发条件 | 动作 |
|---|---|---|---|
| T3 | 45秒 | 发送数据块后等待ACK/NAK | 重传数据块,最多重试次数由系统配置决定 |
| T4 | 45秒 | 接收方等待下一个数据块 | 如果报文未结束(E-bit=0),则丢弃已接收的部分报文 |
| T5 | 10秒 | 连接建立后等待对方就绪 | 断开连接并报告错误 |
2.5 本章小结
SECS-I作为SECS/GEM协议栈的基石,通过RS-232C物理层实现了设备与主机之间的点对点串行通信。其精心设计的报文帧结构、停止-等待块传输协议以及CRC-16校验机制,共同保证了在工业噪声环境下数据传输的可靠性和完整性。理解SECS-I的这些底层机制,对于后续学习SECS-II消息编码和GEM状态机至关重要。