3. 设备初始化流程(S1F13/S1F14):建立通信的握手过程、状态机转换

设备初始化是 SECS/GEM 通信建立的第一个关键阶段,其核心是通过 S1F13(建立通信请求)与 S1F14(建立通信确认)这一对标准报文完成握手。该过程不仅验证了物理连接与协议栈的可用性,还驱动设备状态机从 NOT COMMUNICATING 向 COMMUNICATING 转换。T6 定时器在此阶段负责监控 S1F13 的响应超时,其配置直接影响初始化成功率。

3.1 初始化流程的触发条件

设备或主机在以下场景中发起 S1F13 握手:

  • 上电或复位:设备完成自检后主动发起。
  • 通信中断恢复:物理层或链路层恢复后重新建立会话。
  • 主机主动连接:主机软件启动后向设备发送 S1F13。
  • 状态机强制转换:设备从 DISABLED 或 NOT COMMUNICATING 状态尝试进入 COMMUNICATING。
关键前提:在发送 S1F13 之前,TCP/IP 连接(或 RS-232 链路)必须已经建立,且设备处于 NOT COMMUNICATING 状态。若链路未就绪,S1F13 将无法发送,T6 定时器不会启动。

3.2 S1F13/S1F14 报文结构

报文 方向 Stream/Function 主要数据项 作用
S1F13 请求方 → 响应方 S1F13 MDLN(设备型号)、SOFTREV(软件版本) 发起通信建立请求,携带设备标识
S1F14 响应方 → 请求方 S1F14 MDLN、SOFTREV、COMMACK(通信确认码) 确认通信建立,返回设备能力与状态

COMMACK 值说明:

  • 0:通信建立成功,设备进入 COMMUNICATING 状态。
  • 1:通信建立失败,设备拒绝连接(通常因版本不匹配或配置错误)。
  • 2:设备忙,稍后重试。

3.3 握手过程与状态机转换

下图展示了从 NOT COMMUNICATING 到 COMMUNICATING 的完整状态转换路径,以及 T6 定时器在其中的监控位置。

设备初始化流程与状态机转换 S1F13/S1F14 握手与状态机转换 NOT COMMUNICATING 初始状态 等待 S1F14 T6 定时器运行中 COMMUNICATING 通信已建立 超时 / 失败 T6 超时或 COMMACK≠0 发送 S1F13 收到 S1F14 (ACK=0) T6 超时 / NAK 重试或复位 说明: • T6 定时器在发送 S1F13 后启动,等待 S1F14 响应。 • 若 T6 超时,设备应重发 S1F13(最多 N 次)或返回 NOT COMMUNICATING 状态。 • COMMACK=0 是进入 COMMUNICATING 的唯一成功条件。

3.4 握手步骤详解

  1. 步骤 1:发送 S1F13
    • 请求方(主机或设备)构造 S1F13 报文,包含 MDLN 和 SOFTREV。
    • 启动 T6 定时器,等待 S1F14 响应。
    • 状态机保持在 NOT COMMUNICATING,但进入“等待响应”子状态。
  2. 步骤 2:接收与处理 S1F13
    • 响应方解析 MDLN 和 SOFTREV,验证兼容性。
    • 若版本匹配且设备就绪,设置 COMMACK=0;否则设置 COMMACK=1 或 2。
    • 构造 S1F14 报文并发送回请求方。
  3. 步骤 3:接收 S1F14
    • 请求方在 T6 超时前收到 S1F14,停止 T6 定时器。
    • 检查 COMMACK 值:
      • COMMACK=0:状态机转换为 COMMUNICATING,初始化成功。
      • COMMACK≠0:初始化失败,状态机返回 NOT COMMUNICATING,记录错误。
  4. 步骤 4:T6 超时处理
    • 若 T6 定时器到期仍未收到 S1F14,请求方执行超时策略:
      • 重发 S1F13(通常最多 3 次)。
      • 超过重试次数后,状态机保持 NOT COMMUNICATING,上报通信故障。
⚠ T6 超时风险:如果 T6 设置过短(如 < 5 秒),在主机或设备负载较高时,S1F14 可能无法及时返回,导致误判通信失败。建议 T6 初始值设为 10~30 秒,并根据实际网络延迟调整。

3.5 状态机转换总结

当前状态 事件 下一状态 说明
NOT COMMUNICATING 发送 S1F13 NOT COMMUNICATING(等待子状态) T6 启动,等待响应
NOT COMMUNICATING(等待) 收到 S1F14 (ACK=0) COMMUNICATING 初始化成功
NOT COMMUNICATING(等待) T6 超时 NOT COMMUNICATING 重试或报错
NOT COMMUNICATING(等待) 收到 S1F14 (ACK≠0) NOT COMMUNICATING 拒绝连接,记录原因
COMMUNICATING 通信中断或 SxFx 超时 NOT COMMUNICATING 进入重新初始化流程

3.6 初始化流程中的 T6 定时器配置建议

  • 典型值范围:10 秒 ~ 60 秒,取决于网络延迟和设备响应时间。
  • 重试策略:建议最多重试 3 次,每次重试间隔至少 2 秒。
  • 日志记录:每次 T6 超时或 COMMACK≠0 都应记录详细报文,便于故障定位。
  • 与 T3 的区别:T3 用于普通报文响应,T6 专用于 S1F13 初始化握手,两者不可混用。
💡 最佳实践:在设备开发阶段,将 T6 设置为 30 秒并开启详细日志,通过分析 S1F13/S1F14 的往返时间(RTT)来优化 T6 值。生产环境中,T6 应至少为最大 RTT 的 3 倍。

3.7 常见初始化失败场景与排查

现象 可能原因 排查方向
T6 频繁超时 网络延迟高、设备负载大、T6 设置过短 检查网络质量、增加 T6 值、优化设备处理能力
收到 S1F14 但 COMMACK=1 MDLN 或 SOFTREV 不匹配 核对设备型号与软件版本配置
收到 S1F14 但 COMMACK=2 设备忙,无法处理初始化 等待设备空闲后重试,检查设备状态机
S1F13 发送失败 TCP 连接未建立、报文格式错误 检查物理连接、验证报文编码

通过以上握手过程与状态机转换的详细分析,可以清晰地看到 T6 定时器在设备初始化阶段的关键作用。正确配置 T6 并理解其超时行为,是保障 SECS/GEM 通信稳定建立的基础。