2. 通信模型与状态机:设备端与主机端模型、通信状态机(DISABLE/ENABLE/COMMUNICATING)

在 SECS/GEM 协议体系中,通信模型定义了设备(Equipment)与主机(Host)之间的逻辑角色与交互边界,而通信状态机则管理着连接的生命周期。理解这两层结构,是正确配置超时参数与设计重传策略的前提。

2.1 设备端与主机端模型

SECS/GEM 采用典型的主从(Master/Slave)与对等(Peer-to-Peer)混合模型。物理层上,主机通常作为 TCP 客户端主动发起连接,设备作为 TCP 服务器监听;但在消息层,双方均可主动发送 Primary Message,另一方回复 Secondary Message。

角色 TCP 连接行为 消息发起能力 典型部署
主机(Host) 主动连接设备(Client) 可发送 Primary Message(如 S2F41) MES、EAP、RMS 服务器
设备(Equipment) 被动等待连接(Server) 可发送 Primary Message(如 S6F11) 工艺机台、检测设备、自动化物料搬运系统
关键理解: 主机负责连接建立与心跳维持(T3 超时),设备负责回复确认(T4 超时)。这种分工决定了超时参数必须在两端分别配置,不能混用。

设备端模型通常包含以下核心组件:

  • 通信接口层(HSMS/SECS-I): 处理 TCP 连接、数据帧封装与校验。
  • 消息解析层: 将字节流还原为 SECS-II 消息,校验 Stream/Function 合法性。
  • 状态管理层: 维护通信状态机(DISABLE/ENABLE/COMMUNICATING),控制消息收发许可。
  • GEM 功能层: 处理 GEM 规定的状态模型(如 Equipment State Model、Control State Model)。
设备端与主机端通信模型架构 主机(Host) MES / EAP / RMS 应用层 GEM 功能层(状态管理) SECS-II 消息解析层 HSMS 通信接口(TCP Client) 设备(Equipment) 工艺控制 / 数据采集应用层 GEM 功能层(状态模型) SECS-II 消息解析层 HSMS 通信接口(TCP Server) TCP 连接(主动发起) Primary / Secondary 消息

2.2 通信状态机(Communication State Model)

GEM 标准定义了通信状态机(Communication State Model),用于管理设备与主机之间的连接状态。该状态机包含三个主要状态:DISABLED、ENABLED、COMMUNICATING。每个状态决定了设备是否允许发送/接收 SECS 消息。

状态 含义 消息收发能力 典型触发条件
DISABLED 通信功能完全关闭 禁止收发任何 SECS 消息 设备初始化、配置错误、人为禁用
ENABLED 通信功能已启用,但未建立连接 可监听端口,等待连接;不主动发送数据消息 设备上电完成、网络就绪
COMMUNICATING 与主机建立正常通信 可自由收发 Primary/Secondary 消息 TCP 连接建立 + S1F13/S1F14 握手成功
状态转换核心规则:
  • DISABLED → ENABLED:设备应用层调用通信启用接口(如 S1F13 发送许可)。
  • ENABLED → COMMUNICATING:TCP 连接建立,且完成 GEM 通信建立握手(S1F13/S1F14)。
  • COMMUNICATING → ENABLED:TCP 连接断开(如 T3 超时、网络中断、主机主动关闭)。
  • ENABLED → DISABLED:设备应用层调用通信禁用接口(如维护模式、故障安全)。
通信状态机(Communication State Model) DISABLED 通信关闭 ENABLED 等待连接 COMMUNICATING 正常通信 启用通信 TCP + 握手 连接断开 / 超时 禁用通信 状态转换触发条件 启用通信 → S1F13 发送许可 | 握手成功 → S1F14 收到 | 连接断开 → T3/T4 超时或 TCP RST

2.3 状态机与超时参数的关联

通信状态机的每个状态转换点,都与特定的超时参数紧密绑定。错误的超时配置可能导致状态机卡死或频繁震荡。

状态转换 关联超时 超时后果 优化建议
ENABLED → COMMUNICATING T3(Reply Timeout) S1F13 未收到 S1F14,连接建立失败 设置 T3 ≥ 45s,考虑网络延迟
COMMUNICATING → ENABLED T3 / T4 / T5 消息重传耗尽,连接被关闭 根据消息优先级调整重传次数
ENABLED → DISABLED 无直接超时 应用层主动触发,不受超时控制 确保禁用前完成未处理消息
常见陷阱: 部分设备在 ENABLED 状态下仍会尝试发送心跳消息(S1F1),如果主机未及时回复,T3 超时可能导致设备误判为连接故障,自动回退到 DISABLED 状态。此时应检查主机端的 T3 配置是否与设备端一致。

2.4 状态机在重传优化中的角色

重传策略不能脱离状态机单独设计。以下是基于状态机的重传优化原则:

  • COMMUNICATING 状态下: 重传次数应有限(通常 3~5 次),每次重传间隔递增(如 1s、2s、4s),避免网络拥塞。
  • ENABLED 状态下: 不应发起重传,因为连接尚未建立。此时应等待主机主动连接或设备发起连接请求。
  • 状态转换期间: 正在转换的消息应缓存,待状态稳定后再发送,避免消息丢失。
基于状态机的重传策略决策流程 消息发送请求 当前通信状态? DISABLED:丢弃消息 ENABLED:缓存等待 COMMUNICATING:发送+重传

2.5 实践建议:状态机日志与监控

在调试超时与重传问题时,建议在设备端和主机端同时记录以下状态机事件:

  • 状态转换时间戳(DISABLED → ENABLED → COMMUNICATING)
  • 每次状态转换的原因(如:S1F13 超时、TCP 断开、应用层禁用)
  • 当前状态下的消息队列长度(用于判断是否发生消息积压)
调试技巧: 使用 Wireshark 抓取 HSMS 数据包,结合状态机日志,可以快速定位是超时参数设置不当,还是网络链路本身存在丢包或延迟抖动。