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的数据帧中进行传输。
SECS/GEM 协议栈分层模型 GEM (E30/E37) - 应用层 SECS-II (E5) - 表示层 SECS-I (E4) - 数据链路层 RS-232 - 物理层 E4规范(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的所有字节

帧结构示意图:

SECS-I 数据块帧结构 Length DevID Block# System Data (0~244 bytes) CRC 1 byte 1 byte 2 bytes 2 bytes 0~244 bytes 2 bytes 总帧长 = 1 + 1 + 2 + 2 + DataLen + 2 = 8 + DataLen 字节

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 多块传输流程

多块消息传输流程 Host Equipment Block 0 (B#=0, E-bit=0) ACK (Block 0 确认) Block 1 (B#=1, E-bit=0) ACK (Block 1 确认) ...... Last Block (B#=N, E-bit=1) ACK (最后一块确认) 每个数据块必须单独确认,接收方收到后发送ACK(确认)或NAK(拒绝) 发送方在收到前一块的ACK后才能发送下一块

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的通信会话管理遵循以下步骤:

  1. 物理连接建立: 通过RS-232电缆连接主机与设备。
  2. 在线协商: 设备发送ONLINE消息(通过SECS-II),主机响应后进入在线状态。
  3. 数据交换: 按照块传输协议进行消息收发。
  4. 断开连接: 发送OFFLINE消息或物理断开连接。
SECS-I 通信状态机 DISABLED ENABLED COMMUNICATING 物理连接 ONLINE协商 断开/OFFLINE 通信失败/超时 只有处于COMMUNICATING状态时,才能进行SECS-II消息的收发 任何超时或校验错误都会导致状态回退到DISABLED

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的最后一个数据块。