2. E4标准详解

E4标准(SECS-I)定义了SEMI设备与主机之间通过RS-232串行接口进行点对点通信的物理层与数据链路层规范。它是SECS/GEM协议栈中最底层的传输载体,负责将上层(E5/SECS-II)的消息块可靠地从一个节点传递到另一个节点。

2.1 SECS-I协议栈定位与RS-232物理层

SECS-I位于OSI模型的物理层与数据链路层。它直接依赖RS-232C接口标准,规定了电气特性、连接器类型(通常为DB-25)以及信号线的定义。

关键物理参数:
  • 传输模式:全双工,点对点。
  • 波特率:标准支持 9600 bps,实际应用中常见 19200、38400 甚至更高。
  • 数据位:7 位或 8 位(通常为 8 位)。
  • 停止位:1 位。
  • 奇偶校验:无(None)、奇校验(Odd)或偶校验(Even),通常为无校验。
  • 流控制:硬件流控制(RTS/CTS)或软件流控制(XON/XOFF),SECS-I 标准推荐使用硬件流控制。
SECS-I 协议栈定位与 RS-232 物理连接 SECS-I 协议栈定位与 RS-232 物理连接 GEM (E30) SECS-II (E5) SECS-I (E4) RS-232 物理层 设备 (Equipment) DB-25 连接器 主机 (Host) DB-25 连接器 RS-232 电缆 说明:SECS-I 直接运行在 RS-232 之上,负责将 SECS-II 消息帧编码为字节流,并通过串行电缆传输。

2.2 数据块格式(Block Format)

SECS-I 将上层消息分割成固定大小的数据块(Block)进行传输。每个数据块是传输的基本单元,其格式严格定义,确保接收方能正确解析。

字段 长度(字节) 描述
长度字节(Length Byte) 1 表示该数据块中数据部分的字节数(不包含长度字节本身)。有效范围:1-254(0 和 255 为保留值)。
控制字节(Control Byte) 1 包含块类型、重传标志、是否最后一块等控制信息。
设备ID(Device ID) 1 标识目标设备或源设备。在点对点连接中通常为 0。
块号(Block Number) 1 当前消息中数据块的序号,从 0 开始递增。
系统字节(System Bytes) 2 用于消息匹配和确认,由发送方生成,接收方在确认中回显。
数据部分(Data) 0-254 实际承载的 SECS-II 消息内容(或部分内容)。
格式要点:数据块的总长度 = 1(长度字节)+ 1(控制字节)+ 1(设备ID)+ 1(块号)+ 2(系统字节)+ N(数据部分)。N 由长度字节指定,最大为 254 字节。
SECS-I 数据块格式结构 SECS-I 数据块格式结构 长度 (1B) 控制 (1B) 设备ID (1B) 块号 (1B) 系统字节 (2B) 数据部分 (0-254B) 说明:数据块头部固定为 6 字节(长度+控制+设备ID+块号+系统字节),数据部分长度由长度字节指定。

2.3 块传输协议(Block Transfer Protocol, B2)

B2 协议是 SECS-I 的核心传输机制,它定义了如何将一个完整的 SECS-II 消息(可能被分割成多个数据块)从发送方可靠地传输到接收方。B2 协议使用停止-等待(Stop-and-Wait)的自动重传请求(ARQ)机制。

2.3.1 多块消息传输流程

  1. 发送方将消息分割成多个数据块,并为每个块分配递增的块号(0, 1, 2, ...)。
  2. 发送方发送第一个数据块(块号=0),并启动超时计时器(T3)。
  3. 接收方收到数据块后,检查其完整性(通过长度字节和校验机制)。如果正确,发送一个确认块(ACK);如果错误,发送一个否定确认块(NAK)。
  4. 发送方收到 ACK 后,发送下一个数据块(块号+1);收到 NAK 或超时,则重传当前数据块。
  5. 当发送方发送最后一个数据块时,在控制字节中设置“最后一块”标志(E-bit)。
  6. 接收方收到最后一块并确认后,整个消息传输完成。
超时与重传:发送方在发送每个数据块后必须等待 ACK/NAK。如果在 T3 超时(通常为 1-10 秒,可配置)内未收到响应,发送方将重传该数据块。重传次数有限制(通常为 3-5 次),超过限制则报告通信错误。
B2 块传输协议流程(多块消息) B2 块传输协议流程(多块消息) 发送方 (Host/Equip) 接收方 (Equip/Host) 块 0 (非最后) ACK 0 块 1 (非最后) ACK 1 块 2 (最后一块, E-bit=1) ACK 2 块 3 (发送后超时) 重传块 3 (T3 超时后) ACK 3 说明:每个数据块必须等待 ACK 后才能发送下一个。最后一块通过 E-bit 标识,接收方收到后完成消息重组。

2.4 消息确认机制(Message Acknowledge)

SECS-I 的确认机制分为两个层级:块确认(Block Acknowledge)和消息确认(Message Acknowledge)。

2.4.1 块确认(Block Acknowledge)

这是 B2 协议的一部分,针对每个数据块进行确认。接收方在收到数据块后,立即发送一个确认块(ACK)或否定确认块(NAK)。确认块本身也是一个特殊格式的数据块,其控制字节中的类型字段标识为确认类型。

2.4.2 消息确认(Message Acknowledge)

当接收方成功收到一个完整消息的所有数据块后,它需要发送一个消息确认(Message Acknowledge, MACK)给发送方。MACK 是一个独立的 SECS-II 消息,其内容包含原始消息的系统字节,用于匹配请求和响应。

确认机制对比:
确认类型 层级 触发条件 响应内容
块确认 (ACK/NAK) 数据链路层 (SECS-I) 收到单个数据块后 确认块(特殊格式的数据块)
消息确认 (MACK) 会话层 (SECS-II) 收到完整消息的所有块后 SECS-II 消息(包含系统字节)

2.4.3 控制字节详解

控制字节是数据块格式中的关键字段,它决定了数据块的性质和行为。其位定义如下:

位 (Bit) 7 6 5 4 3 2 1 0
含义 R (重传标志) E (最后一块标志) 类型 (Type) 保留 (Reserved)
  • R-bit (Bit 7): 重传标志。如果为 1,表示该数据块是之前发送过的数据块的重传。
  • E-bit (Bit 6): 最后一块标志。如果为 1,表示该数据块是当前消息的最后一个数据块。
  • Type (Bits 5-4): 数据块类型。
    • 00: 数据块(Data Block)
    • 01: 确认块(Acknowledge Block, ACK)
    • 10: 否定确认块(Negative Acknowledge Block, NAK)
    • 11: 保留(Reserved)
实践建议:在实现 SECS-I 驱动时,务必正确处理 T3 超时和重传逻辑。同时,注意区分块确认和消息确认:块确认保证数据块传输的可靠性,消息确认保证整个消息的语义完整性。两者缺一不可。
控制字节位结构 控制字节位结构 R Bit 7 E Bit 6 T1 Bit 5 T0 Bit 4 Res Bit 3 Res Bit 2 Res Bit 1 Res Bit 0 类型 (T1,T0): 00=数据块, 01=ACK, 10=NAK, 11=保留。R=1 表示重传,E=1 表示最后一块。