1. 课程导入

在流程工业、制药、食品饮料、精细化工以及半导体制造等领域,生产往往不是以“单件”为单位,而是以批次(Batch)为单位组织。一个批次可能是一釜反应、一罐发酵、一批混合或一轮清洗。批次控制的核心任务,是在正确的时间、以正确的顺序、把正确的物料和参数施加到设备上,并保证整个过程可追溯、可复现、可恢复。与连续控制不同,批次控制天然带有离散状态和顺序逻辑:它关心“现在处于哪一步”“下一步该做什么”“异常时如何回到安全状态”。这正是本课程要解决的核心问题。

一、什么是批次控制:从“配方”到“状态机”

批次控制通常遵循 ISA-88(IEC 61512)标准的分层模型:企业—现场—过程单元—设备模块—控制模块。其中,配方(Recipe)描述“做什么”,设备(Equipment)描述“用什么做”,批次执行(Batch Execution)描述“怎么按顺序做”。一个批次从创建到完成,会经历空闲、就绪、运行、暂停、保持、中止、完成等状态。控制系统的本质,就是一台被工程化约束的状态机。

理解批次控制,需要抓住三个关键词:顺序、状态、恢复。顺序决定步骤推进;状态决定当前允许的动作;恢复决定异常后能否安全继续或优雅终止。很多现场事故并非因为控制算法复杂,而是因为状态迁移条件不严谨、异常分支未覆盖、恢复策略缺失。

核心认知:批次控制不是“把连续PID换成开关阀”,而是以状态和顺序为中心的控制范式。状态管理做得好,异常恢复才有基础;状态管理混乱,任何恢复策略都只是补丁。

二、课程整体框架与学习路径

本课程共30章,围绕“概念—建模—实现—异常—恢复—复盘”的主线展开。整体可分为五个阶段:

  • 基础认知(第1—5章):批次控制概念、ISA-88模型、状态机基础、配方与设备模型、状态迁移条件。
  • 状态管理(第6—12章):状态定义、状态表设计、步序控制、并行分支、同步与互锁、保持与暂停、状态持久化。
  • 异常处理(第13—20章):异常分类、报警分级、故障检测、超时与偏差、异常分支设计、安全状态、人工干预。
  • 恢复策略(第21—27章):断点续行、回退、重试、废弃重做、批次追溯、数据一致性、恢复验证。
  • 综合实战(第28—30章):典型案例复盘、常见误区、工程落地清单与持续改进。

学习路径建议:先建立状态机思维,再掌握状态表与迁移条件,最后进入异常与恢复。不要跳过状态建模直接写恢复逻辑,否则会在复杂分支中迷失。

批次控制状态管理与异常恢复 · 课程框架 基础认知 ISA-88 · 状态机 配方 · 设备模型 状态管理 状态表 · 步序 互锁 · 持久化 异常处理 报警 · 超时 安全状态 · 干预 恢复策略 断点续行 · 回退 追溯 · 验证 批次执行状态迁移主线 空闲 就绪 运行 保持 暂停 完成 恢复/继续 异常恢复决策要点 异常检测 超时/偏差/报警 状态判定 可续/可回退/终止 恢复执行 续行/重试/重做 追溯验证 记录/审计/确认

三、核心原理:状态、迁移与恢复三要素

批次控制的状态管理可以抽象为三元组:状态集合 S、迁移条件 T、动作 A。当系统处于状态 s 时,只有满足迁移条件 t,才允许执行动作 a 并进入下一状态 s'。异常恢复的本质,是在迁移条件不满足或动作失败时,决定是重试、回退、跳过还是终止。

下面是一段简化的状态迁移伪代码,用于说明“状态—条件—动作”的绑定关系:

state = IDLE
while batch_running:
    if state == IDLE and recipe_loaded:
        state = READY
    elif state == READY and start_cmd:
        state = RUNNING
        execute_step(1)
    elif state == RUNNING and step_done:
        if next_step_exists:
            execute_step(next_step)
        else:
            state = COMPLETE
    elif state == RUNNING and fault_detected:
        state = HOLD
        save_context()
    elif state == HOLD and recover_cmd == "resume":
        state = RUNNING
        restore_context()
    elif state == HOLD and recover_cmd == "abort":
        state = ABORTED
        safe_shutdown()

这段代码虽然简化,但揭示了关键点:保存上下文和恢复上下文是异常恢复的核心动作。没有上下文持久化,恢复就无从谈起。

四、典型场景:反应釜批次异常恢复

假设某反应釜批次包含“投料—升温—保温—冷却—出料”五个步骤。在保温阶段,温度传感器出现短时跳变,触发偏差报警。此时系统进入 HOLD 状态,关闭加热,保持搅拌,记录当前步骤、已保温时间、温度曲线和阀门状态。操作员确认传感器正常后,选择“继续”,系统从保温步骤的断点恢复,而不是从投料重新开始。若确认物料已异常,则选择“终止”,系统执行安全冷却和废气处理,并将批次标记为“废弃”。

工程提示:恢复策略必须在设计阶段就与工艺工程师共同确定。哪些步骤可续、哪些必须回退、哪些只能终止,不能由程序员单独决定。

五、常见误区与复盘清单

误区后果改进方向
只画正常流程,不画异常分支异常时无状态可去,系统卡死每个步骤都定义异常出口
状态迁移条件过于宽松误触发、跳步、重复执行条件加互锁与确认
恢复时未保存上下文无法断点续行,只能重做持久化步骤号、计时、参数
报警与状态脱节操作员不知道当前处于什么状态报警绑定状态与步骤
恢复后未做一致性校验数据与现场不一致,追溯失效恢复前校验设备与配方

复盘重点:每一次异常恢复后,都应记录“异常原因—当前状态—恢复动作—结果—是否可复现”。这些记录是优化状态表和恢复策略的第一手材料。