ISA-88 / IEC 61512 — 批次过程控制的国际标准详解
S88(正式名称为 ISA-88 或 ANSI/ISA-88)是由国际自动化学会(ISA)制定的批次控制标准。 该标准的国际对应版本为 IEC 61512。S88 定义了批次制造过程中的术语、模型和数据结构, 旨在提供一套统一的框架来设计、实施和管理批次控制系统。
| 部分 | 编号 | 内容 |
|---|---|---|
| 第1部分 | ISA-88.01 | 模型与术语(Models and Terminology) |
| 第2部分 | ISA-88.02 | 数据结构与配方管理语言指南 |
| 第3部分 | ISA-88.03 | 通用与站点配方模型 |
| 第4部分 | ISA-88.04 | 批次生产记录 |
| 第5部分 | ISA-88.05 | 实施模型与术语 |
| 年份 | 事件 |
|---|---|
| 1988 | ISA SP88 委员会成立,开始制定批次控制标准 |
| 1995 | ISA-88.01 正式发布(模型与术语) |
| 1997 | IEC 采纳为 IEC 61512-1 |
| 2001 | ISA-88.02 发布(数据结构与语言指南) |
| 2003 | ISA-88.03 发布(通用与站点配方) |
| 2006 | ISA-88.04 发布(批次生产记录) |
| 2010 | ISA-88.01 修订版发布 |
| 2012 | ISA-88.05 发布(实施模型) |
物理模型定义了批次制造设施中的设备层次结构。它描述了实际物理设备的组织方式, 从整个企业层面一直细化到最底层的控制模块。
最高层级,代表整个企业组织。一个企业可包含多个生产工厂。
物理上或逻辑上独立的生产设施,通常对应一个工厂。
工厂内的一个生产区域,通常包含一组相关的过程单元。
能够独立完成一个批次生产的最小设备集合。过程单元包含完成一个或多个批次所需的所有单元、设备模块和控制模块。 这是批次控制的关键边界。
过程单元中能执行主要加工活动的设备集合。例如:反应釜、混合罐、发酵罐等。 一个单元在同一时刻只能处理一个批次(或批次的一部分)。
能够执行有限数量特定加工活动的设备组合。设备模块可以是 Unit 的一部分,也可以独立存在。 例如:加热系统、搅拌系统、进料系统等。
物理模型的最底层,通常对应单个设备或一组紧密相关的设备。 例如:一个调节阀及其反馈、一个电机及其变频器、一个温度传感器等。
过程模型(也称程序模型)定义了批次生产中执行动作的层次结构。 它描述了"如何做"——即控制设备执行生产任务的逻辑步骤。
最高层级的过程控制实体,定义了完成一个批次所需的全部策略。 一个 Procedure 由有序的 Unit Procedure 组成,可能涉及多个 Unit 之间的协调。
在一个特定 Unit 上执行的连续加工步骤的集合。 一个 Unit Procedure 由一个或多个 Operation 按照定义的顺序组成。
在一个 Unit 上执行的一组相关的 Phase 的有序集合,通常代表一个独立的加工阶段。 例如:"充填操作"、"加热操作"、"反应操作"等。
过程模型中最小的可编程控制元素。Phase 是面向设备的最小独立控制动作, 直接操作设备模块和控制模块来完成具体任务。
| 过程模型层级 | 对应物理模型层级 | 说明 |
|---|---|---|
| Procedure | Process Cell | 整个批次流程,可能跨多个 Unit |
| Unit Procedure | Unit | 在一个 Unit 上的连续操作 |
| Operation | Unit | Unit 上的一个主要加工步骤 |
| Phase | Unit / Equipment Module | 最小控制动作,操作设备模块 |
工艺模型描述的是生产一个产品所需的化学或物理变化过程, 独立于具体设备和控制方式。它回答"要发生什么"的问题。
| 对比维度 | 工艺模型(Process Model) | 过程模型(Procedural Model) |
|---|---|---|
| 关注点 | 化学/物理变化 | 控制逻辑和步骤 |
| 是否依赖设备 | 否,独立于设备 | 是,绑定到物理设备 |
| 描述内容 | "要发生什么变化" | "如何控制设备来实现变化" |
| 示例 | "将物料加热至80°C" | "打开蒸汽阀,PID控制至80°C" |
配方是 S88 中连接工艺需求与设备控制的桥梁。S88 定义了四种配方类型, 从通用到具体逐步细化。
| 配方类型 | 英文名 | 范围 | 说明 |
|---|---|---|---|
| 通用配方 | General Recipe | 企业级 | 独立于设备,定义产品生产的通用需求 |
| 站点配方 | Site Recipe | 工厂级 | 针对特定工厂条件调整的配方 |
| 主配方 | Master Recipe | 过程单元级 | 针对特定过程单元的详细生产配方 |
| 控制配方 | Control Recipe | 批次级 | 为一个具体批次生成的配方实例 |
S88 定义了一套标准的状态机模型,用于描述批次控制实体(特别是 Phase)的执行状态和状态转换。 这是 S88 编程中最核心的实现机制。
| 状态 | 英文 | 类型 | 说明 |
|---|---|---|---|
| 空闲 | Idle | 静止态 | 初始状态,等待启动命令 |
| 运行中 | Running | 执行态 | 正在执行主要功能 |
| 完成 | Complete | 静止态 | 正常执行完毕 |
| 暂停中 | Pausing | 过渡态 | 正在执行暂停逻辑 |
| 已暂停 | Paused | 静止态 | 暂停完成,等待恢复 |
| 保持中 | Holding | 过渡态 | 正在执行保持逻辑(异常导致) |
| 已保持 | Held | 静止态 | 保持完成,等待重启 |
| 重启中 | Restarting | 过渡态 | 从保持状态恢复 |
| 停止中 | Stopping | 过渡态 | 正在执行正常停止逻辑 |
| 已停止 | Stopped | 静止态 | 正常停止完毕 |
| 中止中 | Aborting | 过渡态 | 正在执行紧急中止逻辑 |
| 已中止 | Aborted | 静止态 | 紧急中止完毕 |
| 命令 | 英文 | 触发条件 | 状态转换 |
|---|---|---|---|
| 启动 | Start | 操作员或上级程序 | Idle → Running |
| 暂停 | Pause | 操作员 | Running → Pausing → Paused |
| 恢复 | Resume | 操作员 | Paused → Running |
| 保持 | Hold | 异常条件或操作员 | Running → Holding → Held |
| 重启 | Restart | 操作员(异常排除后) | Held → Restarting → Running |
| 停止 | Stop | 操作员或正常结束 | Any → Stopping → Stopped |
| 中止 | Abort | 紧急条件 | Any → Aborting → Aborted |
| 复位 | Reset | 操作员 | Complete/Stopped/Aborted → Idle |
Phase 是 S88 编程的最小可执行单元,其编程质量直接决定整个系统的可靠性和可维护性。
| 异常级别 | 处理方式 | 示例 |
|---|---|---|
| 警告 | 记录日志,继续运行 | 参数接近上限 |
| 轻微故障 | 触发 Hold,等待人工处理 | 传感器读数异常 |
| 严重故障 | 触发 Stop,安全停止 | 设备故障 |
| 紧急情况 | 触发 Abort,立即安全动作 | 安全相关故障 |
统一的命名规范是 S88 系统可维护性的基础。以下是推荐的命名策略:
| 层级 | 命名格式 | 示例 |
|---|---|---|
| Process Cell | PC_[名称] |
PC_Mixing, PC_Reactor |
| Unit | [区域][类型][编号] |
MX101, RX201 |
| Equipment Module | EM_[功能]_[编号] |
EM_Agitator_01, EM_Heater_01 |
| Control Module | CM_[类型]_[编号] |
CM_Valve_101, CM_Motor_201 |
| 层级 | 命名格式 | 示例 |
|---|---|---|
| Procedure | PROC_[产品/工艺] |
PROC_ProductA |
| Unit Procedure | UP_[功能描述] |
UP_Mixing, UP_Reaction |
| Operation | OP_[动作描述] |
OP_Charge, OP_Heat |
| Phase | PH_[动作] |
PH_Add, PH_Agitate, PH_Transfer |
| 参数类型 | 前缀 | 示例 |
|---|---|---|
| 设定值(Setpoint) | SP_ |
SP_Temperature, SP_FlowRate |
| 实际值(Process Value) | PV_ |
PV_Temperature, PV_Level |
| 报告值(Report) | RPT_ |
RPT_ActualAmount, RPT_Duration |
| 配置参数 | CFG_ |
CFG_Timeout, CFG_MaxRetry |
模块间通信应遵循以下原则:
// Phase: PH_Add(加料阶段)
// 输入参数: SP_TargetAmount, SP_FlowRate, CFG_Timeout
// 输出报告: RPT_ActualAmount, RPT_Duration
CASE CurrentState OF
STATE_IDLE:
// 等待 Start 命令
IF CMD_Start THEN
Initialize();
CurrentState := STATE_RUNNING;
END_IF;
STATE_RUNNING:
// 执行主逻辑
OpenValve(SP_FlowRate);
IF PV_Amount >= SP_TargetAmount THEN
CloseValve();
RPT_ActualAmount := PV_Amount;
CurrentState := STATE_COMPLETE;
END_IF;
// 超时检查
IF ElapsedTime > CFG_Timeout THEN
CurrentState := STATE_HOLDING;
END_IF;
STATE_HOLDING:
// 保护动作:关闭阀门
CloseValve();
CurrentState := STATE_HELD;
STATE_HELD:
// 等待操作员处理
IF CMD_Restart THEN
CurrentState := STATE_RESTARTING;
END_IF;
STATE_RESTARTING:
// 恢复逻辑
ResetTimers();
CurrentState := STATE_RUNNING;
STATE_STOPPING:
// 正常停止
CloseValve();
RPT_ActualAmount := PV_Amount;
CurrentState := STATE_STOPPED;
STATE_ABORTING:
// 紧急停止
CloseValve();
EmergencyActions();
CurrentState := STATE_ABORTED;
STATE_COMPLETE, STATE_STOPPED, STATE_ABORTED:
IF CMD_Reset THEN
ResetAll();
CurrentState := STATE_IDLE;
END_IF;
END_CASE;
// 全局命令监测(优先级高于状态逻辑)
IF CMD_Stop THEN CurrentState := STATE_STOPPING; END_IF;
IF CMD_Abort THEN CurrentState := STATE_ABORTING; END_IF;
IF CMD_Hold AND CurrentState = STATE_RUNNING THEN CurrentState := STATE_HOLDING; END_IF;
IF CMD_Pause AND CurrentState = STATE_RUNNING THEN CurrentState := STATE_PAUSING; END_IF;
| 平台 | 厂商 | S88 支持特性 |
|---|---|---|
| DeltaV Batch | Emerson | 原生 S88 支持,内建状态机和配方管理 |
| FactoryTalk Batch | Rockwell | PhaseManager, 配方编辑器 |
| WinCC / PCS 7 BATCH | Siemens | ISA-88 配方管理, SFC 编程 |
| Wonderware InBatch | AVEVA | 批次执行引擎,配方管理 |
| Ignition | Inductive Automation | SFC 模块,可自定义 S88 框架 |
| 行业 | 典型应用 |
|---|---|
| 制药 | 原料药合成、制剂生产、生物制品 |
| 食品饮料 | 配料混合、发酵、灌装 |
| 精细化工 | 反应釜控制、配方生产 |
| 日化 | 洗涤剂、化妆品配料生产 |
| 半导体 | 晶圆清洗、化学处理 |
| 生物技术 | 细胞培养、发酵、纯化 |