2. 通信中断类型:物理层中断、会话层中断与应用层中断

在 SECS/GEM 通信模型中,异常中断并非单一现象,而是按照 OSI 参考模型的分层结构,发生在不同协议层级。理解中断发生的层次,是制定精准超时与重连策略的前提。本章将中断归纳为三类:物理层中断、会话层中断与应用层中断,并分别剖析其成因、特征与典型处理策略。

2.1 中断分层总览

下表从发生层级、典型场景、检测手段与恢复方式四个维度,对三类中断进行对比:

中断类型 发生层级 典型场景 检测手段 恢复方式
物理层中断 物理介质(网线/串口) 网线被意外拔出、串口松动、交换机断电 链路层状态检测(Link Status)、串口 DCD 信号丢失 物理恢复后自动重连或手动插拔
会话层中断 SECS 会话(T3/T5 超时) 设备响应超时、HSMS 心跳丢失、网络拥堵导致报文延迟 T3 计时器超时、T5 连接响应超时 重发请求、重建 HSMS 连接、重置会话状态
应用层中断 SECS 消息事务(SxF0 异常) 设备回复 SxF0(非法数据)、消息格式错误、功能码不支持 解析回复消息中的 SxF0 代码 根据错误码修正参数或降级处理
分层诊断原则: 排查通信中断时,应遵循“从下至上”的顺序——先确认物理链路是否正常,再检查会话超时,最后分析应用层消息内容。跳过物理层直接分析应用层,往往会导致误判。

2.2 物理层中断(网线/串口断开)

物理层中断是最直观、最底层的通信故障。当网线被意外拔出、串口 DB9 接头松动或交换机端口断电时,通信介质上的电信号或光信号完全消失,上层所有协议均无法工作。

2.2.1 物理层中断特征

  • 检测延迟低: 操作系统或设备驱动可在毫秒级检测到链路断开(如网卡 Link Status 变为 Down)。
  • 影响范围广: 所有基于该物理链路的 SECS 连接同时中断,无法进行任何数据交换。
  • 恢复依赖人工或自动重连: 物理介质恢复后,HSMS 或 RS-232 连接需要重新建立会话。

2.2.2 物理层中断处理策略

  1. 链路状态监控: 在设备端和主机端分别注册链路状态回调,当检测到 Link Down 时立即触发告警。
  2. 自动重连机制: 物理恢复后,HSMS 主动发起 Connect 请求,重新建立 TCP 连接并完成 Select 流程。
  3. 串口 DCD 检测: 对于 RS-232 串口,监控 DCD(Data Carrier Detect)信号,信号丢失即视为物理中断。
工程经验: 在半导体工厂中,网线被 AGV 小车碾压或误拔是物理层中断的最常见原因。建议在设备端使用带锁扣的工业级 RJ45 连接器,并在软件中设置 1~3 秒的去抖滤波,避免因短暂接触不良触发频繁重连。
物理层中断检测与恢复流程 物理层中断检测与恢复流程 物理链路正常 链路断开 触发告警 物理恢复 自动重连 会话恢复 说明:物理层中断检测延迟低,恢复后需经过“自动重连”和“会话恢复”两个阶段才能回到正常通信状态。

2.3 会话层中断(T3/T5 超时)

会话层中断发生在 SECS 消息事务或 HSMS 连接建立阶段,典型表现为 T3 计时器超时(等待回复超时)和 T5 计时器超时(连接建立超时)。这类中断不涉及物理介质损坏,而是由于网络拥堵、设备负载过高或协议栈异常导致响应延迟。

2.3.1 T3 超时与会话层中断

T3 计时器用于控制单个 SECS 消息事务的等待时间。当主机发送一个 Primary Message 后,启动 T3 计时器;若在 T3 时间内未收到对应的 Secondary Message,则判定为 T3 超时,会话层中断发生。

参数 典型值 说明
T3 超时时间 45 秒(SEMI E5 推荐) 等待回复的最大时间,超过即认为事务失败
T5 超时时间 10 秒(HSMS 连接建立) 等待 Connect/Select 回复的最大时间
重试次数 3 次(可配置) T3 超时后允许的最大重发次数

2.3.2 会话层中断处理策略

  • T3 超时处理: 重发 Primary Message(最多 N 次),若仍超时则断开 HSMS 连接并重新建立会话。
  • T5 超时处理: 关闭当前 TCP 连接,等待 T6(连接空闲超时)后重新发起 Connect 请求。
  • 心跳保活: 启用 HSMS 心跳(T3 间隔发送 Select.req 或 Linktest.req),提前发现会话异常。
注意: 频繁的 T3 超时不一定代表网络故障,也可能是设备端处理能力不足或消息队列溢出。在调整 T3 超时值之前,应先排查设备 CPU 负载和消息处理线程状态。
T3/T5 超时处理状态机 T3/T5 超时处理状态机 等待回复 T3 超时 重发消息 重试次数耗尽 断开连接 收到回复 事务完成 说明:T3 超时后进入重发循环,若重试次数耗尽则断开连接;T5 超时处理类似,直接进入断开连接状态。

2.4 应用层中断(SxF0 异常)

应用层中断发生在 SECS 消息事务的回复阶段。当设备收到一条 Primary Message 后,由于数据格式错误、功能码不支持或参数越界等原因,无法正常处理该消息,此时设备会回复一条 SxF0 消息(其中 x 为对应的 Stream 编号),表示“非法数据”或“请求不被接受”。

2.4.1 SxF0 异常分类

SxF0 消息中包含一个 Error Code(错误码),用于指示具体的异常原因。常见的错误码如下:

错误码 含义 典型触发场景
0 非法数据(Data Invalid) 参数值超出允许范围,如 S2F41 中设置的温度值超过上限
1 不支持的功能(Function Not Supported) 设备固件版本不支持该 Stream/Function 组合
2 无法处理(Unable to Process) 设备当前状态不允许执行该操作,如正在执行 Recipe 时收到 S7F5
3 数据过长(Data Too Long) 消息体长度超过设备缓冲区上限

2.4.2 应用层中断处理策略

  • 解析错误码: 收到 SxF0 后,首先提取 Error Code,根据错误码确定异常类型。
  • 参数修正: 对于“非法数据”错误,根据设备规范调整参数后重新发送。
  • 功能降级: 对于“不支持的功能”错误,查询设备支持的 Stream/Function 列表,改用替代方案。
  • 状态检查: 对于“无法处理”错误,先查询设备当前状态(如 S1F13),确认设备就绪后再重试。
最佳实践: 在开发阶段,建议在主机端维护一张“设备能力表”,记录每台设备支持的 Stream/Function 集合、参数范围以及当前状态。当收到 SxF0 时,自动查表并给出修正建议,可大幅减少人工排查时间。
SxF0 异常处理流程 SxF0 异常处理流程 发送 Primary 收到 SxF0 解析 Error Code 查表修正 重新发送 事务成功 说明:SxF0 异常属于应用层协议错误,通过解析 Error Code 并查表修正,可快速恢复事务流程。

2.5 三类中断的关联与综合处理

在实际生产环境中,三类中断可能相互关联或级联发生。例如:

  • 物理层中断 → 会话层中断: 网线断开后,所有正在等待回复的 T3 计时器必然超时,触发会话层中断。
  • 会话层中断 → 应用层中断: 频繁的 T3 超时可能导致设备状态机紊乱,后续消息被回复 SxF0。
  • 应用层中断 → 会话层中断: 若主机连续发送非法消息,设备可能主动断开连接,导致会话层中断。

因此,在实现异常处理逻辑时,建议采用分层隔离与状态机联动的设计:

  1. 物理层独立监控,不依赖上层协议状态。
  2. 会话层维护重试计数器与连接状态,超时后优先尝试重连而非直接报错。
  3. 应用层记录错误码历史,当同一设备连续出现多次 SxF0 时,触发会话层重置。
分层隔离原则: 每一层只处理本层的异常,不越级干预。例如,物理层恢复后,会话层应自动重建连接,而不需要应用层介入;应用层收到 SxF0 时,不应直接关闭 TCP 连接,而应通过错误码引导修正。