4. 状态转换条件:各状态之间的合法转换路径、触发条件
SECS/GEM 设备状态机定义了设备从断电到生产运行全生命周期的合法状态序列。每个状态转换必须由明确的触发条件驱动,包括上电、初始化、操作员干预、通信建立与断开等。理解这些转换路径是设计合规设备模型和通过 GEM 功能验证的基础。
核心原则: 状态转换必须遵循 SEMI E30 (GEM) 标准定义的合法路径。任何非法的状态跳转(如从 INIT 直接跳转到 EXECUTING)都会导致 GEM 验证失败。
4.1 状态转换总览图
下图展示了 SECS/GEM 设备状态机的主要状态节点及其合法转换路径。箭头方向表示转换方向,箭头上的标签表示触发条件。
4.2 状态转换路径与触发条件详解
下表列出了所有合法状态转换路径、触发条件及典型场景。这是 GEM 功能验证中必须逐条测试的核心用例。
| 起始状态 | 目标状态 | 触发条件 | 典型场景 | GEM 验证要求 |
|---|---|---|---|---|
| NOT_POWERED | POWER_ON | 设备上电(硬件电源接通) | 设备首次通电或断电后重新上电 | 必须发送 S1F13 (Establish Communications Request) |
| POWER_ON | INIT | 初始化开始(软件启动) | 设备控制器启动、加载固件 | 必须发送 S1F1 (Are You There) 请求 |
| INIT | READY | 初始化成功(自检通过) | 所有子系统自检通过,无故障 | 必须发送 S1F14 (Establish Communications Acknowledge) |
| INIT | NOT_READY | 初始化失败(自检未通过) | 硬件故障、传感器异常、通信失败 | 必须发送 S5F1 (Alarm Report) 报告故障 |
| NOT_READY | READY | 故障恢复 / 操作员干预 | 操作员排除故障后复位设备 | 必须发送 S1F17 (Online) 或 S1F19 (Offline) 通知 |
| READY | NOT_READY | 故障发生 / 操作员干预 | 运行中突发故障或操作员强制离线 | 必须发送 S5F1 (Alarm Report) 或 S1F19 (Offline) |
| READY | EXECUTING | 启动加工(操作员或上位机命令) | 操作员按下启动按钮或 Host 发送 S2F41 | 必须发送 S6F11 (Event Report) 报告加工开始 |
| EXECUTING | READY | 加工完成(正常结束) | 批次加工完成、单片加工完成 | 必须发送 S6F11 (Event Report) 报告加工结束 |
| EXECUTING | PAUSED | 暂停命令(操作员或上位机) | 操作员暂停、Host 发送暂停指令 | 必须发送 S6F11 (Event Report) 报告暂停事件 |
| PAUSED | EXECUTING | 恢复命令(操作员或上位机) | 操作员恢复、Host 发送恢复指令 | 必须发送 S6F11 (Event Report) 报告恢复事件 |
| EXECUTING | ALARM | 报警触发(硬件或软件异常) | 温度超限、压力异常、通信超时 | 必须发送 S5F1 (Alarm Report) 并停止加工 |
| ALARM | NOT_READY | 报警清除(操作员确认) | 操作员确认报警并复位 | 必须发送 S5F2 (Alarm Clear) 通知清除 |
验证技巧: 在 GEM 功能验证中,建议使用“状态转换矩阵”逐条测试。每测试一条转换路径,都需要同时验证:① 状态是否正确跳转;② 对应的 SECS 消息是否按标准发送;③ 消息内容中的状态变量是否更新。
4.3 操作员干预引起的特殊转换
操作员干预是设备状态机中最重要的外部触发源之一。GEM 标准定义了三种操作员干预模式,每种模式对应不同的状态转换行为。
4.3.1 操作员干预模式对比
| 干预模式 | 触发方式 | 状态转换影响 | SECS 消息 | 典型场景 |
|---|---|---|---|---|
| Online (联机) | 操作员通过 HMI 选择联机模式 | NOT_READY → READY | S1F17 (Online) | 设备维护后恢复联机 |
| Offline (脱机) | 操作员通过 HMI 选择脱机模式 | READY → NOT_READY | S1F19 (Offline) | 操作员需要手动干预设备 |
| Local Control (本地控制) | 操作员在设备本地面板操作 | EXECUTING → PAUSED 或 READY | S2F41 (Host Command) 或本地事件 | 操作员暂停加工进行抽检 |
4.3.2 操作员干预状态转换流程
4.4 通信状态与设备状态的关联转换
SECS/GEM 协议中,通信状态(Communication State)与设备控制状态(Device Control State)是相互关联但独立的两组状态机。通信状态的转换会触发设备状态的相应变化。
4.4.1 通信状态定义
| 通信状态 | 描述 | 对应设备状态 | 触发条件 |
|---|---|---|---|
| NOT_COMMUNICATING | 未建立通信连接 | NOT_POWERED 或 POWER_ON | 设备断电或通信链路断开 |
| COMMUNICATING | 通信连接已建立 | INIT / READY / EXECUTING 等 | S1F13/S1F14 握手成功 |
| COMMUNICATING_WITH_ALARM | 通信连接存在但设备有报警 | ALARM | 通信建立后发生报警 |
4.4.2 通信建立与断开时的状态转换
// 通信建立流程(状态转换伪代码)
Event: 设备上电
State: NOT_POWERED -> POWER_ON
Action: 启动通信服务,监听 TCP 端口
Event: Host 发起连接请求
State: POWER_ON -> INIT
Action: 发送 S1F13 (Establish Communications Request)
Event: Host 回复 S1F14 (Establish Communications Acknowledge)
State: INIT -> READY
Action: 设置通信状态为 COMMUNICATING
Action: 发送 S1F1 (Are You There) 确认
// 通信断开流程
Event: 通信超时或链路断开
State: READY/EXECUTING -> NOT_READY
Action: 发送 S5F1 (Alarm Report) 报告通信丢失
Action: 设置通信状态为 NOT_COMMUNICATING
Action: 停止所有加工任务(安全停机)
常见验证失败原因: 许多设备在通信断开后,未能正确将设备状态从 EXECUTING 或 READY 转换到 NOT_READY,导致 Host 端认为设备仍在运行,造成数据不一致。GEM 验证中必须测试通信断开后的状态转换是否合规。
4.5 状态转换验证清单
以下是 GEM 功能验证中必须覆盖的状态转换测试用例清单。建议在验证报告中逐条记录测试结果。
- 上电验证: NOT_POWERED → POWER_ON → INIT → READY(正常路径)
- 初始化失败验证: INIT → NOT_READY(模拟硬件故障)
- 故障恢复验证: NOT_READY → READY(操作员复位)
- 加工启动/完成验证: READY → EXECUTING → READY(完整加工周期)
- 暂停/恢复验证: EXECUTING → PAUSED → EXECUTING(操作员干预)
- 报警触发/清除验证: EXECUTING → ALARM → NOT_READY(异常处理)
- 通信断开验证: 任意状态 → NOT_READY(模拟网络中断)
- 脱机/联机验证: READY ↔ NOT_READY(操作员模式切换)
- 非法转换拒绝验证: 尝试从 INIT 直接跳转到 EXECUTING,设备应拒绝
验证通过标准: 所有合法转换路径必须 100% 通过;非法转换路径必须被设备拒绝并返回错误代码;每次转换必须伴随正确的 SECS 消息发送;状态变量(如 MDLN、SOFTREV、EVENTID)必须在转换后更新。
4.6 状态转换时序图
以下时序图展示了典型加工周期中设备状态与 SECS 消息的对应关系。