4. 状态迁移总览:GEM状态机六大状态之间的完整迁移路径图与触发条件
GEM(Generic Equipment Model)状态机是SECS/GEM通信协议的核心控制模型,定义了设备从初始化到正常运行、再到异常恢复的完整生命周期。理解六大状态之间的迁移路径与触发条件,是掌握设备模式切换与链路恢复的基础。
核心要点: GEM状态机包含6个正式状态,状态迁移由特定事件(如通信建立、控制超时、远程命令)触发。迁移路径分为“正常流程”与“异常恢复”两类。
4.1 GEM状态机六大状态定义
下表列出了GEM状态机的六个核心状态及其简要描述:
| 状态编号 | 状态名称 | 英文缩写 | 简要描述 |
|---|---|---|---|
| 1 | 未初始化 | NOT_INIT | 设备上电或复位后,尚未完成初始化配置 |
| 2 | 初始化中 | INIT | 设备正在执行自检、参数加载等初始化流程 |
| 3 | 通信建立 | COMM_EST | 物理链路已建立,但尚未完成GEM会话协商 |
| 4 | 等待控制 | WAIT_CTRL | 等待主机(Host)发送控制命令或确认 |
| 5 | 本地控制 | LOCAL | 设备处于本地操作模式,可接受本地面板操作 |
| 6 | 远程控制 | REMOTE | 设备处于远程控制模式,由主机全面管理 |
提示: 在实际工程中,LOCAL 和 REMOTE 是设备运行时的两个主要工作状态,其他状态多为过渡或异常恢复状态。
4.2 完整状态迁移路径图
下图展示了GEM状态机六大状态之间的所有合法迁移路径,箭头方向表示状态转移方向,标注了触发条件。
观察: 图中 本地控制 与 远程控制 之间存在双向迁移路径,这是设备模式切换的核心操作。而所有工作状态(LOCAL/REMOTE)均可因链路异常直接回退到 通信建立 状态。
4.3 状态迁移触发条件详解
下表按迁移路径分类,详细列出每个迁移的触发条件、相关SECS消息及典型场景:
| 起始状态 | 目标状态 | 触发条件 | 相关SECS消息 | 典型场景 |
|---|---|---|---|---|
| NOT_INIT | INIT | 设备上电或硬件复位完成 | —(内部事件) | 设备开机启动 |
| INIT | COMM_EST | 初始化成功,物理链路就绪 | S1F13 (Establish Communication Request) | 设备自检通过 |
| COMM_EST | WAIT_CTRL | 完成S1F13/S1F14握手协商 | S1F14 (Establish Communication Confirm) | TCP/IP连接建立后 |
| WAIT_CTRL | LOCAL | 主机发送S2F37(允许本地控制) | S2F37 (Enable Local Control) | 主机授权本地操作 |
| WAIT_CTRL | REMOTE | 主机发送S2F41(远程控制命令) | S2F41 (Remote Control Command) | 主机直接接管设备 |
| LOCAL | REMOTE | 主机发送S2F41,设备切换至远程 | S2F41 | 主机要求远程操作 |
| REMOTE | LOCAL | 主机发送S2F37,或操作员本地切换 | S2F37 / 本地面板操作 | 操作员介入维护 |
| LOCAL / REMOTE | COMM_EST | 通信链路断开、超时或S1F12(通信恢复) | S1F12 (Communication Recovery) | 网络中断后重连 |
| 任何状态 | NOT_INIT | 设备断电、硬件复位或严重故障 | —(硬件事件) | 设备重启 |
注意: 从 LOCAL 或 REMOTE 直接跳转到 COMM_EST 是GEM状态机中最重要的异常恢复路径。设备不会自动回到 WAIT_CTRL,而是必须重新完成通信协商,这体现了GEM对链路完整性的严格要求。
4.4 状态迁移的三种触发类型
根据触发来源,所有状态迁移可分为以下三类:
- 内部事件触发: 设备自身状态变化引起,如初始化完成、硬件复位、自检失败等。这类迁移通常不需要主机参与。
- 主机命令触发: 由Host发送SECS消息驱动,如S2F37(本地控制使能)、S2F41(远程控制命令)。这是模式切换的主要方式。
- 链路事件触发: 由通信链路状态变化引起,如TCP连接断开、超时、链路恢复。这类迁移会强制设备回到通信建立状态,确保数据一致性。
工程建议: 在实现GEM状态机时,建议将 链路事件触发 的迁移逻辑放在通信层处理,与业务逻辑解耦。当检测到链路断开时,设备应主动将状态回退到 COMM_EST,并缓存当前工作模式,待链路恢复后由主机决定是否恢复原模式。
4.5 状态迁移的约束规则
GEM标准对状态迁移施加了以下约束,违反这些规则可能导致协议错误:
- 禁止跳跃迁移: 不允许从 NOT_INIT 直接跳转到 REMOTE,必须经过 INIT → COMM_EST → WAIT_CTRL 的完整路径。
- 单向迁移限制: 从 COMM_EST 只能迁移到 WAIT_CTRL,不能直接迁移到 LOCAL 或 REMOTE。
- 异常回退优先级: 当链路异常时,无论当前处于 LOCAL 还是 REMOTE,都必须优先回退到 COMM_EST,而不是 WAIT_CTRL。
- 状态保持: 在 WAIT_CTRL 状态下,设备应保持当前配置,等待主机明确指令,不能自动进入 LOCAL 或 REMOTE。
记忆口诀: “初始化→通信→等待→控制,异常回退到通信,断电复位回初始。” 这四句话概括了GEM状态机的核心迁移逻辑。
4.6 状态迁移与设备模式切换的关系
设备模式切换(本地模式 ↔ 远程模式)本质上是GEM状态机中 LOCAL 与 REMOTE 之间的双向迁移。理解状态迁移总览有助于:
- 明确模式切换的合法时机(只能在 WAIT_CTRL、LOCAL、REMOTE 之间进行)。
- 识别异常场景下的模式恢复策略(链路断开后,模式信息丢失,需主机重新指定)。
- 设计健壮的状态管理代码,避免非法迁移导致的协议错误。