2. E4规范详解:SECS-I协议定义、RS-232物理层特性、数据帧格式、块传输协议、消息确认机制
E4规范(SEMI E4)是SECS/GEM协议栈中最底层的通信规范,定义了SECS-I协议。它规定了在RS-232串行链路上进行点对点通信的物理层特性、数据帧格式、块传输协议以及消息确认机制。理解E4规范是掌握整个SECS/GEM协议体系的基础。
2.1 SECS-I协议概述与协议栈定位
SECS-I(SEMI Equipment Communications Standard 1)是面向字节的、基于RS-232的通信协议。它位于OSI模型的物理层和数据链路层,负责在主机(Host)与设备(Equipment)之间建立可靠的物理连接和数据帧传输。
协议栈定位: SECS-I(E4)位于最底层,向上为SECS-II(E5)提供透明的、可靠的数据传输服务。SECS-II消息被封装在SECS-I的数据帧中进行传输。
2.2 RS-232物理层特性
SECS-I强制使用RS-232-C标准进行物理连接。以下是关键的物理层参数:
| 参数 | 规范值 | 说明 |
|---|---|---|
| 电气标准 | RS-232-C | 单端信号,-3V ~ -15V 表示逻辑1,+3V ~ +15V 表示逻辑0 |
| 连接器 | DB-25 或 DB-9 | 推荐使用DB-25,但DB-9也广泛使用 |
| 传输模式 | 全双工 | 可同时发送和接收数据 |
| 通信方式 | 点对点 | 仅支持一台主机与一台设备直接连接 |
| 波特率 | 9600 bps(默认) | 可协商为 19200、38400 等,但9600是最低要求 |
| 数据位 | 7位 | ASCII字符传输,第8位用于奇偶校验 |
| 停止位 | 1位 | 固定为1位停止位 |
| 奇偶校验 | 偶校验(Even) | 确保数据字节中1的个数为偶数 |
| 最大距离 | 15米(约50英尺) | RS-232标准限制,超过需使用线路驱动器 |
实践要点: 在实际部署中,如果设备与主机距离超过15米,通常需要转换为RS-422/RS-485或使用串口转以太网设备。但SECS-I协议本身不感知这些转换,只要底层能提供可靠的字节流即可。
2.3 数据帧格式(Block Format)
SECS-I将上层(SECS-II)的消息分割成多个数据块(Block)进行传输。每个数据块是一个固定格式的帧,称为数据块帧(Block Frame)。帧结构如下:
| 字段 | 长度(字节) | 描述 |
|---|---|---|
| Length Byte | 1 | 表示从Device ID开始到Checksum之前的总字节数(即后续所有字段的总长度) |
| Device ID | 1 | 设备ID,低7位有效,最高位为控制位(0=数据块,1=控制块) |
| Block Number | 2 | 块编号,高字节在前(Big-Endian),范围0~65535 |
| System Bytes | 2 | 系统字节,用于消息匹配和确认 |
| Data | 0~244 | 数据负载,最大244字节(SECS-II消息片段) |
| Checksum | 2 | CRC-16校验和,覆盖从Device ID到Data的所有字节 |
帧结构示意图:
2.4 块传输协议(Block Transfer Protocol)
当SECS-II消息长度超过244字节时,SECS-I会将其分割成多个数据块进行传输。块传输协议定义了多块消息的组装与确认规则。
2.4.1 块编号规则
- 单块消息: Block Number = 0x7FFF(32767),表示这是唯一的数据块。
- 多块消息: 第一块编号为0,后续块递增(0, 1, 2, ...),最后一块的Block Number最高位(bit 15)置1,表示消息结束。
2.4.2 多块传输流程
2.5 消息确认机制
SECS-I使用两种类型的确认机制来保证数据传输的可靠性:
2.5.1 确认类型
| 确认类型 | 控制块标识 | 描述 |
|---|---|---|
| ACK(确认) | Device ID 最高位 = 1 | 表示数据块已正确接收,校验通过 |
| NAK(拒绝) | Device ID 最高位 = 1 | 表示数据块接收失败,需要重传 |
2.5.2 控制块格式
当Device ID的最高位(bit 7)为1时,该帧为控制块。控制块用于传输确认信息,其数据字段格式如下:
| 字段 | 长度(字节) | 描述 |
|---|---|---|
| Control Code | 1 | 0x00 = ACK, 0x01 = NAK |
| Block Number | 2 | 被确认/拒绝的数据块的块编号 |
| System Bytes | 2 | 与被确认数据块相同的System Bytes |
2.5.3 超时与重传机制
SECS-I定义了三个关键超时参数,用于控制重传行为:
| 超时参数 | 默认值 | 描述 |
|---|---|---|
| T1 | 1.0 秒 | 字符间超时(Inter-character timeout),接收方等待下一个字符的最大时间 |
| T2 | 10.0 秒 | 块间超时(Inter-block timeout),发送方等待ACK的最大时间 |
| T3 | 45.0 秒 | 消息间超时(Inter-message timeout),等待完整消息的最大时间 |
重要提示: 超时参数必须在通信建立时协商一致。如果T2超时,发送方将重传当前数据块,最多重试3次。超过重试次数后,通信将被视为中断,需要重新建立连接。
2.6 通信建立与断开流程
SECS-I的通信会话管理遵循以下步骤:
- 物理连接建立: 通过RS-232电缆连接主机与设备。
- 在线协商: 设备发送ONLINE消息(通过SECS-II),主机响应后进入在线状态。
- 数据交换: 按照块传输协议进行消息收发。
- 断开连接: 发送OFFLINE消息或物理断开连接。
2.7 本章小结
E4规范(SECS-I)是SECS/GEM协议栈的基石,它通过RS-232物理层和严谨的数据帧格式,为上层协议提供了可靠的字节流传输服务。关键要点包括:
- 物理层: RS-232,9600波特率,7位数据位,偶校验,1位停止位。
- 数据帧: 固定8字节头部 + 可变数据负载(最大244字节)+ 2字节CRC校验。
- 块传输: 支持多块消息分割传输,每块独立确认,保证消息完整性。
- 确认机制: ACK/NAK控制块配合T1/T2/T3超时,实现可靠传输。
- 状态管理: DISABLED → ENABLED → COMMUNICATING 三态转换。
开发建议: 在实现SECS-I驱动时,务必严格处理超时和重传逻辑。建议使用状态机模式管理通信状态,并确保CRC校验算法(CRC-16-IBM)的正确性。对于多块消息,接收方需要维护块重组缓冲区,直到收到E-bit置1的最后一个数据块。