2、设备状态模型基础:GEM状态机模型的核心概念、状态与事件的定义、状态转换图的作用

在SECS/GEM协议体系中,设备状态模型是连接上位机(Host)与设备行为的核心契约。GEM标准定义了一套通用的状态机模型,用于描述设备从启动到运行、再到停止的完整生命周期。理解这一模型,是进行设备模式切换工程实施的前提。

2.1 核心概念:为什么需要状态机模型?

半导体制造设备通常包含多个物理模块(如传输腔、工艺腔、冷却台),每个模块在不同时刻处于不同工作模式。若缺乏统一的状态描述,上位机将无法准确判断设备当前是否可接收物料、是否正在工艺中、是否发生故障。GEM状态机模型解决了以下三个关键问题:

  • 统一语义:为设备所有可能的行为阶段定义标准名称(如 INIT、ATTEMPT_ONLINE、EQUIPMENT_OFFLINE)。
  • 行为约束:规定在某个状态下,设备允许执行哪些SECS消息(如 S1F13、S2F41),禁止执行哪些操作。
  • 可预测性:通过状态转换图,上位机可预判设备对控制指令的响应路径。
工程要点: 设备供应商与工厂MES系统之间的联调,80%的通信异常源于状态机未正确实现或状态转换条件遗漏。务必在设备出厂前完成状态机一致性测试。

2.2 状态与事件的定义

GEM标准将设备状态划分为三个层级:通信状态、控制状态、处理状态。其中,控制状态是模式切换的核心,它直接决定了设备是否接受远程控制。

2.2.1 控制状态(Control State)

控制状态是设备状态模型中最关键的部分,定义了设备对上位机指令的响应策略。GEM标准定义了以下四种控制状态:

状态名称 状态码 描述 典型行为
OFFLINE 1 设备完全本地控制,不接受任何远程指令 操作员面板完全接管;SECS通信保持但拒绝S2F41
EQUIPMENT_OFFLINE 2 设备处于离线但可被远程请求上线 可接收S1F13请求,但工艺操作仍由本地控制
ATTEMPT_ONLINE 3 设备正在尝试切换到在线模式 执行内部安全检查;若通过则进入ONLINE
ONLINE 4 设备完全受上位机控制 接收S2F41远程指令;自动报告事件

2.2.2 通信状态(Communication State)

通信状态描述设备与上位机之间的连接状态,与控制状态相互独立但存在联动关系:

  • NOT_CONNECTED:物理链路未建立(如网线断开)。
  • CONNECTED:TCP连接已建立,但尚未完成S1F13/S1F14握手。
  • COMMUNICATING:已完成握手,处于正常数据交换状态。

2.2.3 事件(Event)的定义

事件是触发状态转换的驱动因素。GEM标准将事件分为三类:

事件类别 示例 触发条件
外部指令事件 GO_ONLINE (S1F13) 上位机发送请求
内部条件事件 安全门关闭、工艺完成 设备传感器或PLC信号
故障事件 通信超时、硬件异常 设备自检或看门狗触发
设计建议: 在定义设备事件时,建议将每个事件与唯一的CEID(Collection Event ID)绑定。CEID是GEM中上报事件的标准ID,便于上位机进行日志关联和报警处理。

2.3 状态转换图的作用

状态转换图(State Transition Diagram)是状态机模型的图形化表达,在工程实施中具有不可替代的作用:

  • 需求确认:设备供应商与客户通过状态图对齐行为预期,避免文字描述歧义。
  • 代码实现:开发人员可直接将状态图映射为有限状态机(FSM)代码结构。
  • 测试用例设计:每条转换路径对应一个测试用例,确保覆盖率。
  • 故障排查:当设备行为异常时,通过当前状态和触发事件快速定位转换路径是否合法。

2.3.1 控制状态转换图(SVG)

下图展示了GEM标准中控制状态的核心转换路径,包含四个主要状态节点和六条转换边:

GEM 控制状态转换图(核心路径) OFFLINE 状态码: 1 EQUIPMENT_OFFLINE 状态码: 2 ATTEMPT_ONLINE 状态码: 3 ONLINE 状态码: 4 本地操作员请求 操作员强制离线 S1F13 GO_ONLINE 安全检查失败 安全检查通过 S1F15 GO_OFFLINE / 通信丢失 说明: ATTEMPT_ONLINE 是瞬态状态,设备在此状态执行安全检查(如门锁、气压、温度)。 若检查通过则自动进入 ONLINE;否则回退至 EQUIPMENT_OFFLINE。

2.4 状态转换表与工程映射

在工程实现中,状态转换图通常需要辅以状态转换表,以明确每条转换的触发事件、前置条件和后置动作。下表展示了控制状态转换的完整定义:

当前状态 触发事件 前置条件 目标状态 后置动作
OFFLINE 操作员按下“远程允许” 设备无活动报警 EQUIPMENT_OFFLINE 启用SECS远程请求监听
EQUIPMENT_OFFLINE 收到S1F13 通信状态为COMMUNICATING ATTEMPT_ONLINE 启动安全检查定时器
ATTEMPT_ONLINE 安全检查通过 所有工艺腔处于IDLE ONLINE 发送S1F14;启用远程控制
ATTEMPT_ONLINE 安全检查失败 任一条件不满足 EQUIPMENT_OFFLINE 发送S1F14 with ACK6;记录错误码
ONLINE 收到S1F15 无正在执行的工艺 EQUIPMENT_OFFLINE 停止远程控制;释放资源
ONLINE 通信超时 无 EQUIPMENT_OFFLINE 触发报警;进入安全模式
常见工程陷阱: 部分设备在 ONLINE 状态下收到 S1F15 后,直接跳转到 OFFLINE 而非 EQUIPMENT_OFFLINE,这会导致上位机失去对设备的控制权。务必遵循GEM标准:从 ONLINE 只能回到 EQUIPMENT_OFFLINE,不能直接回到 OFFLINE。

2.5 状态机模型的工程落地建议

在设备软件开发中,建议采用以下步骤将GEM状态机模型落地:

  1. 定义状态枚举:在代码中创建 ControlState 枚举,包含 OFFLINE、EQUIPMENT_OFFLINE、ATTEMPT_ONLINE、ONLINE。
  2. 实现状态转换矩阵:使用二维数组或状态模式(State Pattern)管理转换逻辑,避免 if-else 泛滥。
  3. 绑定事件回调:将SECS消息处理函数(如 S1F13 处理函数)与状态转换条件关联。
  4. 添加状态保护:在状态转换入口处校验前置条件,防止非法转换。
  5. 记录状态日志:每次状态转换时输出时间戳、旧状态、新状态、触发事件,便于调试。
// 示例:C++ 状态转换矩阵(伪代码)
ControlState transitionTable[4][4] = {
    // 当前状态: OFFLINE
    { OFFLINE, EQUIPMENT_OFFLINE, INVALID, INVALID },
    // 当前状态: EQUIPMENT_OFFLINE
    { OFFLINE, EQUIPMENT_OFFLINE, ATTEMPT_ONLINE, INVALID },
    // 当前状态: ATTEMPT_ONLINE
    { INVALID, EQUIPMENT_OFFLINE, ATTEMPT_ONLINE, ONLINE },
    // 当前状态: ONLINE
    { INVALID, EQUIPMENT_OFFLINE, INVALID, ONLINE }
};

ControlState getNextState(ControlState current, Event event) {
    int row = static_cast<int>(current);
    int col = static_cast<int>(event);
    ControlState next = transitionTable[row][col];
    if (next == INVALID) {
        // 记录非法转换报警
        logError("Invalid state transition");
        return current; // 保持当前状态
    }
    return next;
}
进阶提示: 对于复杂设备(如簇式工具),建议为每个物理模块独立维护一个状态机实例,并通过全局协调器管理模块间的状态依赖关系。例如,传输腔处于 ONLINE 状态时,工艺腔才能从 IDLE 切换到 PROCESSING。