3. 配方管理模型:GEM 标准中的配方管理状态机

在 SECS/GEM 协议中,配方(Recipe)是设备执行特定工艺所需的参数集合。GEM 标准定义了一套完整的配方管理状态机(Recipe Management State Machine),用于规范设备在配方上传、下载、删除、校验等操作中的行为。理解该状态机是设计可靠配方流程的基础。

3.1 配方管理状态机的核心状态

GEM 标准将配方管理划分为以下 5 个关键状态,设备在任何时刻只能处于其中一个状态:

状态名称 状态 ID 描述 允许的操作
配方空闲 Recipe Idle 设备未加载任何配方,或配方已卸载 上传、下载、删除配方
配方加载中 Recipe Loading 正在从主机接收配方数据(下载中) 仅接收数据块,拒绝其他请求
配方已加载 Recipe Loaded 配方数据已完整接收,但尚未校验或激活 校验、激活、删除
配方校验中 Recipe Verifying 正在对配方数据进行完整性或语法校验 仅校验过程,拒绝其他请求
配方激活 Recipe Active 配方已通过校验,可用于生产 执行工艺、卸载、替换
设计要点: 配方管理状态机与设备通信状态机(COMM State Machine)相互独立。即使设备处于离线状态,配方管理状态机仍可保持在“配方已加载”或“配方激活”状态,确保配方数据不因通信中断而丢失。

3.2 配方管理状态机转换图

下图展示了配方管理状态机中所有允许的状态转换路径,以及触发转换的关键事件:

配方管理状态机转换图 配方管理状态机转换图 配方空闲 Recipe Idle 配方加载中 Recipe Loading 配方已加载 Recipe Loaded 配方校验中 Recipe Verifying 配方激活 Recipe Active 下载请求 数据接收完成 校验请求 校验通过 卸载配方 删除配方 校验失败 说明: 实线箭头表示正常流程,虚线箭头表示异常或管理操作。所有状态转换均由主机或设备本地事件触发。 设备在“配方加载中”和“配方校验中”状态时,应拒绝除当前操作外的所有配方管理请求。

3.3 状态转换事件与触发条件

每个状态转换都由特定的 GEM 消息或本地事件触发。下表列出了主要转换的事件源:

源状态 目标状态 触发事件 GEM 消息示例
配方空闲 配方加载中 主机发送下载请求 S7F3 (Process Program Send)
配方加载中 配方已加载 所有数据块接收完毕 S7F5 (Process Program Request) 完成
配方已加载 配方校验中 主机或本地发起校验 S7F19 (Process Program Verify)
配方校验中 配方激活 校验通过 S7F20 (Verify Result = 0)
配方校验中 配方已加载 校验失败 S7F20 (Verify Result ≠ 0)
配方激活 配方空闲 卸载配方 S7F17 (Delete Process Program)
配方已加载 配方空闲 删除配方 S7F17 (Delete Process Program)

3.4 配方管理状态机的设计原则

  • 原子性: 每个状态转换应视为原子操作,设备在转换过程中不应响应其他配方管理请求。
  • 可追溯性: 设备应记录每次状态转换的时间、触发源和结果,便于故障排查。
  • 超时保护: 在“配方加载中”和“配方校验中”状态,设备应设置超时定时器。超时未完成则自动回退到“配方空闲”状态,并上报错误。
  • 并发限制: 同一时刻只能有一个配方处于加载或校验流程,避免数据竞争。
工程实践: 在实现配方管理状态机时,建议使用状态模式(State Pattern)将每个状态封装为独立对象。这样当新增状态或修改转换逻辑时,不会影响其他状态的代码,提高系统的可维护性和可测试性。

3.5 配方管理状态机与异常恢复

配方管理状态机天然支持异常恢复场景。当设备在“配方加载中”或“配方校验中”发生通信中断或电源故障时,恢复策略如下:

  1. 通信中断: 设备保持当前状态不变,等待主机重新连接后继续未完成的操作或回退。
  2. 电源故障: 设备重启后,从非易失性存储中读取配方管理状态。若上次处于“配方加载中”,则回退到“配方空闲”;若处于“配方已加载”或“配方激活”,则保持该状态。
  3. 校验失败: 设备自动回退到“配方已加载”状态,并发送错误报告给主机,等待主机决定是重新校验还是删除配方。
注意: 不要在“配方加载中”或“配方校验中”状态时执行设备工艺操作。这可能导致配方数据不完整或校验未通过,进而引发工艺缺陷或设备损坏。始终确保配方进入“配方激活”状态后再用于生产。

3.6 配方管理状态机与主机交互流程

下图展示了配方下载场景下,状态机与主机之间的典型交互序列:

配方下载流程与状态转换 配方下载流程与状态转换 主机 (Host) 设备 (Equipment) 状态: 配方空闲 S7F3 下载请求 状态: 配方加载中 S7F4 数据块 (多帧) 状态: 配方已加载 S7F19 校验请求 状态: 配方校验中 S7F20 校验通过 状态: 配方激活 每个消息交互后,设备内部状态机自动推进到下一状态,确保流程的完整性和可追踪性。

通过严格遵循 GEM 标准中的配方管理状态机,设备开发者可以构建出健壮、可恢复的配方管理系统,有效应对通信异常、数据损坏等生产环境中的常见问题。