状态机基础:有限状态机(FSM)概念与 SECS/GEM 状态模型
各位好,我是老张。今天咱们聊聊状态机。说实话,我刚入行那会儿,觉得状态机就是个理论概念,跟现场调试八竿子打不着。直到有一次在客户现场,设备死活连不上主机,我盯着日志看了三个小时,最后发现是状态机卡在一个中间态没跳出来。嗯,从那以后,我再也不敢小看这几个状态了。
什么是有限状态机?
有限状态机,英文叫 Finite State Machine,简称 FSM。说白了,就是一个系统在任意时刻只能处于有限个状态中的一个。它根据输入事件,从一个状态切换到另一个状态。
你想想看,半导体设备里的机械臂、阀门、加热器,哪个不是按状态跑的?
FSM 三要素:
- 状态(State):系统当前所处的稳定工况
- 事件(Event):触发状态切换的输入信号或消息
- 转移(Transition):从一个状态到另一个状态的路径规则
我习惯把状态机想象成地铁线路图。你只能在一个站台上车,刷卡进站(事件)后,你才能从「站外」状态跳到「站内」状态。你不能凭空出现在轨道上,对吧?
SECS/GEM 中的状态模型
SECS/GEM 协议定义了一套标准的状态模型,用来描述设备与主机之间的通信关系。这套模型分为四个层级:COMM、EQ、PC、EC。每个层级都有自己的状态机和转移规则。
我在现场排查问题时,第一步永远是确认这四个状态分别处于什么位置。状态不对,后面的所有操作都是白费。
COMM 状态机:通信的命门
COMM 状态机管理设备与主机之间的 TCP/IP 连接。它只有两个状态:NOT COMMUNICATING 和 COMMUNICATING。
| 状态 | 含义 | 典型事件 |
|---|---|---|
| NOT COMMUNICATING | 未建立连接,设备独立运行 | 网络断开、主机未启动 |
| COMMUNICATING | 已建立连接,可收发消息 | S1F13/S1F14 握手成功 |
我的经验:COMM 状态卡在 NOT COMMUNICATING 时,90% 是 IP 地址配错了或者端口被防火墙挡住了。别急着查上层协议,先 ping 一下主机 IP。
EQ 状态机:设备的核心状态
EQ 状态机描述设备整体的运行状态。它比 COMM 复杂一些,有四个主要状态:INIT、NOT READY、READY、IDLE。
我记得有一次,设备一直报 NOT READY,操作员重启了好几次都没用。我上去一看,原来是前一个配方没正常结束,状态机卡在 INIT 到 NOT READY 的转移路径上了。清一下内部标志位就好了。
| 状态 | 说明 | 常见原因 |
|---|---|---|
| INIT | 设备上电初始化中 | 刚开机、硬件自检未完成 |
| NOT READY | 设备无法处理物料 | 报警未清除、安全门打开 |
| READY | 设备就绪,可接收任务 | 正常待机状态 |
| IDLE | 空闲,无任务执行 | 批次结束、等待新指令 |
PC 状态机:工艺过程的脉搏
PC 状态机管理工艺配方的执行过程。它包含:IDLE、SETUP、READY、EXECUTING、PAUSED、ABORTING 等状态。
你想想看,一个晶圆正在腔体里做刻蚀,突然 PC 状态跳到 PAUSED,会发生什么?轻则报废一片晶圆,重则损坏腔体部件。所以 PC 状态机的转移条件必须严格校验。
注意:PC 状态机不允许从 EXECUTING 直接跳回 IDLE。必须先经过 ABORTING 或 COMPLETED 状态。我曾经见过一个设备厂商的驱动写错了,直接跳状态,结果主机和设备的工艺记录对不上,查了整整两天。
EC 状态机:设备控制模式
EC 状态机定义设备的控制权限。它有两个主要状态:LOCAL 和 REMOTE。
- LOCAL:操作面板控制,主机只能监控
- REMOTE:主机远程控制,面板操作受限
现场经常遇到的问题是:操作员在 LOCAL 模式下改了参数,主机不知道。等切回 REMOTE 模式时,主机下发配方参数,跟现场参数不一致,直接报警。我的建议是:切换 EC 状态前,先做一次参数同步。
状态机故障定位的通用思路
说了这么多,到底怎么用状态机来定位故障?我总结了一个三步法:
- 读状态:通过 SECS 消息 S1F1/S1F2 读取当前四层状态
- 找差异:对比主机期望的状态和设备实际的状态
- 查转移:找到卡住的状态转移路径,检查触发事件是否满足
核心原则:状态机不会自己出错,出错的一定是触发事件或转移条件。别跟状态机较劲,去查日志里的事件序列。