2. 通信链路异常分类
在 SECS/GEM 通信中,链路异常可划分为四个层次:物理层、网络层、协议层和应用层。每一层的异常表现、检测手段和恢复策略均不相同。理解这些分类是设计容错机制的基础。
2.1 物理层断开
物理层断开指通信介质(如 RS-232 串口线、以太网电缆、光纤)的物理连接中断。在半导体设备环境中,常见的物理层异常包括:
- 电缆脱落或损坏:设备移动或维护时误拔插头,导致连接器松动。
- 端口故障:设备端或主机端的串口/网口硬件损坏。
- 信号衰减:长距离传输或电磁干扰导致信号质量下降。
物理层断开通常表现为通信完全中断,软件层面无法恢复,需要人工介入检查硬件连接。
工程提示:在设备端部署“心跳检测”机制,当连续 N 次心跳无响应时,触发物理层告警并记录日志,便于运维人员快速定位故障点。
2.2 网络超时
网络超时发生在 TCP/IP 协议栈层面,常见于网络拥塞、路由故障或对端主机负载过高。SECS/GEM 通信中,网络超时主要分为:
| 超时类型 | 典型阈值 | 触发条件 | 影响范围 |
|---|---|---|---|
| TCP 连接超时 | 10–30 秒 | SYN 包未收到 SYN-ACK | 整个连接无法建立 |
| TCP 重传超时 (RTO) | 动态(初始 1 秒) | 数据包未收到 ACK | 单个报文丢失 |
| HSMS 链路测试超时 | 5–10 秒 | Link Test 请求无响应 | HSMS 会话断开 |
| 应用层响应超时 | 30–120 秒 | SxFx 请求未收到 Reply | 单个事务失败 |
2.3 协议层错误
协议层错误指 SECS 报文在格式、长度、校验和或消息头字段上不符合规范。这类错误通常由软件缺陷、内存损坏或版本不兼容引起。常见的协议层错误包括:
- 消息头长度错误:Device ID、Stream/Function 编码超出范围。
- 校验和 (Checksum) 不匹配:HSMS 报文尾部校验和与内容不符。
- 消息体格式异常:SML 格式解析失败,Item 类型或长度错误。
- 会话 ID 冲突:同一连接中出现重复的 Session ID。
协议层容错策略:在协议栈中实现“格式验证 + 校验和检查 + 异常报文丢弃”三级过滤。对于校验和错误,直接丢弃报文并触发重传;对于格式错误,记录完整报文快照用于离线分析。
2.4 应用层异常
应用层异常是 SECS/GEM 通信中最复杂的一类,涉及事务状态机、超时管理和业务逻辑冲突。典型场景包括:
| 异常类型 | 示例 | 影响 |
|---|---|---|
| SxFx 超时 | S2F17 请求后 45 秒未收到 S2F18 | 事务挂起,占用系统资源 |
| 事务 ID 冲突 | 两个请求使用相同的 System Bytes | 响应无法匹配,导致逻辑混乱 |
| 状态机异常 | 在 DISABLED 状态下收到 S1F1 | 协议栈拒绝处理 |
| 数据长度超限 | Report 数据超过 64KB 限制 | 报文被截断或丢弃 |
2.5 异常分类对比总结
下表从检测方式、恢复手段和影响范围三个维度对比四类异常:
| 异常层次 | 检测方式 | 恢复手段 | 影响范围 |
|---|---|---|---|
| 物理层断开 | 硬件检测 / 心跳丢失 | 人工插拔 / 更换线缆 | 全局通信中断 |
| 网络超时 | TCP 超时 / HSMS Link Test | 自动重连 / 指数退避 | 单连接或会话 |
| 协议层错误 | 校验和 / 格式验证 | 丢弃报文 / 请求重传 | 单个报文 |
| 应用层异常 | 事务超时 / 状态机检查 | 事务重试 / 资源清理 | 单个事务 |
设计注意:容错机制应分层设计,下层异常(如物理层断开)会向上传递为上层异常(如网络超时)。在实现时,建议在应用层统一捕获异常并记录上下文,避免多层重复处理导致资源浪费。