状态机、SFC、Interlock、Handshake 和顺序控制本身并没有问题。
它们可以定义系统有哪些状态、状态之间如何迁移,以及满足什么条件后执行 Transition。
但在复杂自动化系统中,还有一个容易被分散到程序各处的问题:
这一次具体的状态迁移,在当前时刻、当前对象和当前系统状态下,是否真的应该发生?
1. 有些异常,本来在进入目标状态前就已经存在
例如一个自动化单元准备从等待阶段进入搬送阶段。
程序可能规定:
WAIT
→ TRANSFER
→ COMPLETE
但在真正进入 TRANSFER 之前,现场实际上还可能存在:
- 下游已经不能接收;
- 识别结果已经超时;
- 上位许可已经撤销;
- 返回路径正在切换;
- 某个必要状态没有刷新;
- 当前条件处于允许与禁止之间的边界。
如果这些问题没有在迁移入口被充分处理,系统可能先进入目标状态,随后才发现无法继续。
于是程序开始出现:
TRANSFER
→ Wait
→ Timeout
→ Retry
→ Abort
→ Rollback
→ Reset
这些逻辑并不一定都是错误的。
问题在于:
其中一部分,本来可以在进入
TRANSFER之前就被识别。
2. 迁移后的 Recovery 并不都具有相同性质
制造现场不可能取消 Recovery。
设备已经开始动作以后,可能突然发生急停、执行器故障、传感器失效或其他新的运行异常。
这种情况下,Abort、Safe State、Recovery、Reset 都是必要的。
但还有另一类情况:
目标状态尚未进入时,阻止该迁移所需要的信息实际上已经存在,只是没有在同一个迁移入口被组织起来进行判定。
这类问题如果仍然先进入目标状态,再依靠 Timeout、Retry、Abort、Rollback 或人工恢复进行处理,称为:
可避免的迁移后补偿(Avoidable Post-entry Compensation)。
因此,需要区分:
必要的运行中恢复 ≠ 可避免的迁移后补偿
前者是运行过程中新的异常造成的。
后者则可能来自状态迁移入口判定不足。
3. PCN 把判定位置向前移动
TPCA / PCN 并不替代状态机。
状态机仍然负责描述:
Current State → Target State
PCN 关注的是两者之间真正执行迁移之前的入口:
Current State
↓
Transition Request
↓
PCN
↓
Target State
PCN 在目标状态进入前读取与本次迁移有关的多源状态,将其组织为条件状态、许可状态和执行链状态,并进一步判断结构完整性、动态时序有效性和控制边界。
最终结果也不只是:
True / False
而可以进入不同控制路径:
Allow
Wait
Recheck
Return
Coordinate
Degrade
Manual Confirm
Prohibit
Safety Lock
因此,原本可能在进入目标状态以后才通过 Timeout 或 Rollback 暴露的问题,可以在迁移入口提前被识别和分流。
4. 重点不是减少所有 Recovery
PCN 的目标不是让自动化程序“不再需要 Recovery”。
真正不可预测的运行异常仍然必须由既有设备控制、安全控制和恢复逻辑处理。
PCN 试图减少的是另一部分复杂度:
已经可以在目标状态进入前识别,却仍然被推迟到进入以后处理的问题。
因此可以把两种控制思路简单区分为:
迁移后补偿:
进入目标状态
→ 发现无法继续
→ Timeout / Retry / Abort / Rollback
→ Recovery
和:
迁移前判定:
准备进入目标状态
→ PCN 前置判定
→ Allow / Wait / Return / Degrade / Prohibit
→ 再决定是否进入
二者合理的关系是:
能够前置判断的问题,在迁移前处理;只有真正发生在执行过程中的新异常,才留给运行中 Recovery。
5. 从“状态迁移条件”到“状态迁移入口”
复杂自动化程序中,真正值得进一步显式化的,不只是 Transition Condition。
还包括:
一次具体状态迁移请求本身。
同一个:
State A → State B
可以在不同时间、不同工件、不同任务、不同许可状态和不同下游条件下重复发生。
因此,状态图上的同一条 Transition,并不意味着每一次实际迁移都具有相同的工程条件。
PCN 的作用,就是把每一次具体的 Target State Entry 作为一个独立工程判定对象。
这也是从“迁移后恢复”向“迁移前判定”移动的核心:
不是取消状态机,也不是取消异常恢复,而是在真正进入目标状态之前,把原本分散在程序、设备和系统中的判断集中到明确的状态迁移入口。
这样,Recovery 可以更多地用于处理真正发生在运行过程中的异常,而不是不断补偿那些本来可以在进入之前发现的问题。
本文讨论的是 TPCA / PCN 与状态机、SFC 和异常恢复逻辑之间的工程边界,不代表所有 Timeout、Retry、Rollback 或 Recovery 都属于冗余逻辑。
具体能够减少多少迁移后补偿、程序分支和人工恢复,需要通过同一自动化对象在传统实现与 PCN 前置判定实现之间进行对比验证。
文档信息
题目:“从迁移后恢复到迁移前判定”
文档类型:技术札记
版本:Public Note Version 1.0
首次发布日期:2026-08-19
作者:全野南政 / Nansei Zenno