4. SECS-I串行通信基础
SECS-I(SEMI E4)是SECS/GEM体系中最早被标准化的传输层协议,它把SECS-II消息通过RS-232串行链路进行点对点传输。理解SECS-I,关键要抓住三层:物理层的电气与连接约束、链路层的块传输与握手时序、以及它与HSMS在工程选型上的分工。本节围绕这三层展开,并给出可直接对照的时序与参数示例。
一、RS-232物理层:连接与电气约束
SECS-I运行在RS-232(EIA-232)异步串行接口上,典型连接为设备(Equipment)与主机(Host)之间的点对点直连,最远距离约15米,速率通常取9600 bps,也可用19200、38400 bps。数据格式为8位数据位、1位停止位、无奇偶校验(8-N-1),这是SECS-I最常见的默认配置。物理层只负责把字节流可靠地送出去,不负责消息边界,边界由块传输协议定义。
RS-232使用负逻辑:逻辑1对应负电压(约-3V至-15V),逻辑0对应正电压(约+3V至+15V)。因此示波器上看到的空闲电平是高负电平,起始位是一个正脉冲。工程上必须使用交叉连接(TX→RX、RX→TX)并共地,硬件流控(RTS/CTS)在SECS-I中通常不使用,流量控制由协议层的握手完成。
二、块传输协议:消息如何被切分与重组
SECS-II消息长度可达数MB,而串行链路一次只能传有限字节,因此SECS-I把消息切成若干“块”(Block)。每个块由10字节块头加数据区组成,块头字段如下:
| 字段 | 长度 | 含义 |
|---|---|---|
| 设备ID | 2字节 | 标识通信对端,通常为0或设备编号 |
| 消息ID | 4字节 | 同一消息的所有块共享,用于重组 |
| 块号 | 2字节 | 从1开始递增,标识块顺序 |
| 系统字节 | 1字节 | bit0=End(最后一块),bit1=Wait(等待确认) |
| 块长度 | 1字节 | 数据区字节数,最大244 |
数据区最大244字节,因此单块总长最大254字节。接收方按消息ID和块号重组,直到收到End位为1的块。若某块丢失或校验失败,接收方不发送确认,发送方超时后重发该块。这就是SECS-I的“停等”式可靠传输。
三、握手时序:T1、T2、T3、T4与RTY
SECS-I用四个定时器约束交互节奏,工程调试中最常看的就是它们:
- T1(块间超时):发送方等待接收方确认的时间,典型10秒。超时则重发当前块。
- T2(接收方处理超时):接收方从收到块到发出确认的最大时间,典型10秒。
- T3(发送方块间间隔):发送方在收到确认后到发送下一块之间的等待,典型45秒。
- T4(接收方块间超时):接收方等待下一块的最大时间,典型45秒。
- RTY(重试次数):单块最大重发次数,典型3次,超过则判定链路故障。
下面这张时序图展示一次“主机发消息、设备回确认”的完整握手过程,包含Wait位与End位的使用:
图中可见:发送方每发一块,必须等接收方ACK后才发下一块;若T1内未收到ACK,则重发当前块并累加RTY。接收方在T2内必须回ACK,否则发送方会误判丢块。T3是发送方收到ACK后到发下一块之间的最小间隔,T4是接收方等待下一块的最大时间。工程上若T3/T4设置过小,容易出现“假丢块”;设置过大则吞吐下降。
四、与HSMS的对比及适用场景
HSMS(SEMI E37)是SECS-I的现代替代方案,运行在TCP/IP之上,支持多会话、高吞吐和长距离。两者核心差异如下:
| 维度 | SECS-I | HSMS |
|---|---|---|
| 物理层 | RS-232点对点 | TCP/IP以太网 |
| 传输单位 | 块(≤254字节) | 消息(长度字段,可达4GB) |
| 握手方式 | 逐块停等ACK | Select/Deselect + 消息级确认 |
| 连接数 | 1对1 | 多会话(可多设备) |
| 典型速率 | 9.6–38.4 kbps | 10/100/1000 Mbps |
| 距离 | ≤15米 | 不限(受网络影响) |
| 适用场景 | 老旧设备、低速率、点对点 | 新设备、高速、多设备组网 |
选型建议:若设备仅支持RS-232且数据量小(如状态上报、简单配方),SECS-I足够;若需要高速传输、多设备并行或远程接入,应优先HSMS。实际产线中常见“SECS-I设备 + 协议转换器 + HSMS主机”的混合架构,转换器负责块与消息的映射。
总结来说,SECS-I是SECS/GEM的串行传输基石,理解RS-232电气约束、块头字段、T1–T4与RTY的配合,以及它与HSMS的取舍,是设备通信调试和协议选型的基本功。