S88 编程规范详解

ISA-88 / IEC 61512 — 批量过程控制的国际标准

1. 什么是 S88?

S88,全称 ISA-88(国际自动化协会标准 88),在国际上对应 IEC 61512, 是专门针对批量生产过程(Batch Process)制定的自动化与控制标准。它不是某一门编程语言,而是一套 建模框架和设计规范——它告诉你批量工厂的控制代码应该如何组织结构,使得不同厂商的 PLC、DCS、 SCADA 以及 MES 系统之间可以互通复用

核心思想:将"做什么"(配方 / Recipe)和"怎么做"(设备能力 / Equipment Capability)彻底分离。

S88 主要覆盖以下行业场景:

2. 历史与背景

在 S88 出现之前,每家自动化厂商都有自己的批量控制方案——不同项目之间的代码几乎无法复用,配方管理混乱, 操作员培训成本极高。1988 年,ISA 成立了 SP88 委员会,目标是制定一个统一的批量控制模型。

年份里程碑
1995ISA-88.01 第一部分发布:模型与术语
2001ISA-88.02 发布:数据结构与语言指南
2003ISA-88.03 发布:通用配方模型
2006ISA-88.04 发布:批量生产记录
2010-2013IEC 61512 系列同步更新(Part 1-4)
2020+ISA-88 更新,加入模块化与 MOM(制造运营管理)对接

3. S88 核心模型总览

S88 定义了大核心模型,它们各自描述批量过程的不同维度:

┌──────────────────────────────────────────────────────┐ │ S88 三模型总览 │ ├───────────────┬─────────────────┬────────────────────┤ │ 物理模型 │ 程序控制模型 │ 过程模型 │ │ Physical │ Procedural │ Process │ │ Model │ Control Model │ Model │ ├───────────────┼─────────────────┼────────────────────┤ │ 描述设备层级 │ 描述操作步骤层级 │ 描述物料与反应 │ │ 厂房 → 单元 │ 程序 → 阶段 │ 过程 → 操作 │ │ → 设备模块 │ │ │ └───────────────┴─────────────────┴────────────────────┘

这三个模型的关系是:程序控制模型(做什么步骤)通过配方映射到 物理模型(在什么设备上执行),而过程模型则描述了化学/物理变化本身。

4. 物理模型(Physical Model)

物理模型描述了工厂设备的层级结构。从上到下共分为 7 层(实践中最关注中间 4 层):

┌─────────────────────────────────────────────┐ │ Enterprise (企业) │ ← ERP 层 │ ┌──────────────────────────────────┐ │ │ │ Site (工厂/厂区) │ │ │ │ ┌───────────────────────────┐ │ │ │ │ │ Area (区域) │ │ │ │ │ │ ┌─────────────────────┐ │ │ │ │ │ │ │ Process Cell │ │ │ │ ← S88 的核心起点 │ │ │ │ (过程单元组) │ │ │ │ │ │ │ │ ┌───────────────┐ │ │ │ │ │ │ │ │ │ Unit (单元) │ │ │ │ │ ← 批量生产的基本容器 │ │ │ │ │ ┌─────────┐ │ │ │ │ │ │ │ │ │ │ │Equipment│ │ │ │ │ │ ← 设备模块 │ │ │ │ │ │ Module │ │ │ │ │ │ │ │ │ │ │ │ ┌─────┐ │ │ │ │ │ │ │ │ │ │ │ │ │Ctrl │ │ │ │ │ │ │ ← 控制模块 (I/O 点) │ │ │ │ │ │ │Mod │ │ │ │ │ │ │ │ │ │ │ │ │ └─────┘ │ │ │ │ │ │ │ │ │ │ │ └─────────┘ │ │ │ │ │ │ │ │ │ └───────────────┘ │ │ │ │ │ │ │ └─────────────────────┘ │ │ │ │ │ └───────────────────────────┘ │ │ │ └──────────────────────────────────┘ │ └─────────────────────────────────────────────┘

4.1 关键层级解释

层级英文说明示例
过程单元组Process Cell 一个或多个单元的集合,它们共享资源(如 CIP 站、公用工程) 反应工段、后处理工段
单元 ★Unit 批量生产的最小独立容器——一个批次在一个单元内完成核心操作。这是 S88 编程中最重要的层级 反应釜、结晶罐、混合罐
设备模块Equipment Module 单元内可独立控制的子设备组,可执行有限的功能 搅拌系统、温控回路、加料泵组
控制模块Control Module 最小的控制实体,直接对应 I/O 点或单个执行器/传感器 调节阀、开关阀、温度变送器
S88 设计黄金法则:在你的 PLC/DCS 程序中,每个 Unit 对应一个独立的控制程序实例。 不同 Unit 之间不应直接耦合——它们通过配方管理器和仲裁逻辑协调。

5. 程序控制模型(Procedural Control Model)

如果说物理模型回答"在什么设备上做",那么程序控制模型回答"按什么步骤做"。 它也分为多个层级,从高到低依次为:

┌──────────────────────────────────┐ │ Procedure (程序) │ ← 一个完整批次的顶层步骤序列 │ ┌────────────────────────────┐ │ │ │ Unit Procedure │ │ ← 在一个 Unit 内执行的完整操作 │ │ (单元程序) │ │ │ │ ┌──────────────────────┐ │ │ │ │ │ Operation │ │ │ ← 一个独立的加工阶段 │ │ │ (操作) │ │ │ │ │ │ ┌────────────────┐ │ │ │ │ │ │ │ Phase │ │ │ │ ← 最小的可执行步骤 │ │ │ │ (阶段) │ │ │ │ │ │ │ └────────────────┘ │ │ │ │ │ └──────────────────────┘ │ │ │ └────────────────────────────┘ │ └──────────────────────────────────┘

5.1 各级别详解

层级英文定义示例
阶段 ★Phase 最小的程序控制单元。一个 Phase 完成一项单一的、与设备无关的过程任务。它发出命令给设备模块或控制模块 加热、冷却、搅拌、加料、排料、压力调节
操作Operation 一组有序的 Phase 序列,代表一个完整的加工逻辑片段 "反应操作" = [加料 → 加热 → 保温 → 冷却]
单元程序Unit Procedure 在一个 Unit 内执行的完整一组操作,通常对应一个配方单元 "反应釜单元程序" = [备料操作 → 反应操作 → 出料操作]
程序Procedure 整个批次的顶层蓝图,可能跨多个 Unit "产品 X 主程序" = [反应釜单元程序 → 结晶单元程序 → 离心单元程序]
Phase 是 S88 编程的核心组件。在 PLC/DCS 中,每个 Phase 通常实现为一个独立的功能块(FB)或类, 拥有标准的状态机(见第 9 节)和参数接口。Phase 的设计好坏直接决定了整个系统的可复用性。

6. 过程模型(Process Model)

过程模型描述的是物料在加工中的变化,从化工/工艺工程师的视角看待批次。它分为四个层次:

Process (过程) ├── Process Stage (过程阶段) e.g. "合成" │ ├── Process Operation (过程操作) e.g. "反应" │ │ ├── Process Action (过程动作) e.g. "加热至 80°C" │ │ └── Process Action e.g. "保温 2 小时" │ └── Process Operation e.g. "出料" └── Process Stage (过程阶段) e.g. "纯化" └── ...
层级英文说明
过程Process从原材料到最终产品的全过程
过程阶段Process Stage过程的子集,通常对应显著的物理/化学变化阶段
过程操作Process Operation一个阶段内的一次主要加工活动
过程动作Process Action最小的过程描述单元

过程模型映射到程序控制模型:一个 Process Action 通常由 一个 Phase 实现,一个 Process Operation 对应一个Operation。 这种映射关系是配方设计的核心。

7. 配方(Recipe)详解

配方是 S88 最闪亮的概念——它将"做什么"(工艺知识)从"怎么做"(设备控制代码)中 彻底分离。S88 定义了四种配方类型:

类型英文范围负责人
通用配方General Recipe企业级,描述基本工艺路线,不含设备信息工艺研发
工厂配方Site Recipe工厂级,在通用配方基础上加入厂区特定的工艺约束工厂工艺工程师
主配方 ★Master Recipe设备级,绑定到具体的 Process Cell 或 Unit 类型。这是自动化系统的直接输入自动化工程师
控制配方Control Recipe批次级,在 Master Recipe 基础上填入具体批次号、数量、设备实例MES / Batch Executive

7.1 Master Recipe 的结构

一个 Master Recipe 包含以下核心部分:

Master Recipe ├── Header (头信息) │ ├── Recipe ID "RCP_MIX_001" │ ├── Product Name "乳剂 A" │ └── Version 1.2 ├── Formula (配方参数/公式) │ ├── Parameter Set 加热温度: 80°C, 搅拌转速: 150 rpm │ ├── Input Materials 物料 A: 200 kg, 物料 B: 50 kg │ └── Resource List 需要 CIP 站、氮气 ├── Equipment Requirements (设备需求) │ ├── Unit Class 反应釜-不锈钢-5m³ │ └── Capabilities 需要温控(-10~150°C)、搅拌、pH 探头 └── Procedure (程序结构) ├── UnitProcedure: 反应阶段 │ ├── Operation: 准备 │ │ ├── Phase: CHECK_READY 检查设备就绪 │ │ ├── Phase: CHARGE_A 加入 A 料 │ │ └── Phase: CHARGE_B 加入 B 料 │ └── Operation: 反应 │ ├── Phase: HEAT 加热至 80°C │ ├── Phase: AGITATE 搅拌 (150 rpm) │ └── Phase: HOLD 保温 120 分钟 └── UnitProcedure: 出料阶段 └── ...

7.2 配方参数化

S88 的精髓在于参数化。同一个 Phase(比如 HEAT)通过不同的参数值 可以适应无数产品。Phase 接口通常包含:

8. 设备实体与控制模块

8.1 Equipment Module(设备模块)

设备模块是有状态的、可执行有限功能的实体。它通常会暴露一组 Equipment Phase(设备阶段)供 Unit 的 Phase 调用。典型设计:

Equipment Module: EM_Agitator (搅拌系统) ├── States: IDLE, RUNNING, STOPPED, FAULTED ├── Modes: AUTO, MANUAL, LOCAL ├── Equipment Phases: │ ├── EM_START (启动搅拌) │ ├── EM_STOP (停止搅拌) │ └── EM_SET_SPEED(设定转速) └── Interfaces to Control Modules: ├── CM_Motor (马达启停) ├── CM_VFD (变频器转速给定) └── CM_Speed_Sensor (转速反馈)

8.2 Control Module(控制模块)

控制模块是最底层的实体,直接映射到 I/O。典型设计模式:

Control Module: CM_OnOff_Valve (开关阀) ├── States: OPEN, CLOSED, TRAVELING, FAULTED ├── Commands: OPEN_CMD, CLOSE_CMD ├── Feedback: OPEN_LS, CLOSED_LS ├── Alarms: FAIL_TO_OPEN, FAIL_TO_CLOSE, DISCREPANCY └── Timers: OPEN_TIMEOUT, CLOSE_TIMEOUT Control Module: CM_Analog_Input (模拟量输入) ├── Value: REAL (工程值) ├── Raw: INT (原始 ADC 值) ├── Scaling: EU_MIN, EU_MAX, RAW_MIN, RAW_MAX ├── Alarms: HH, H, L, LL, RATE_OF_CHANGE, DEVIATION └── Clamping & Filtering

9. 状态机与模式

S88 定义了标准的状态机,Phase、Equipment Module 和 Control Module 都遵循同一套 状态转换逻辑。这是实现互操作性的基石。

9.1 Phase 标准状态机

┌──────────┐ ┌──────→│ IDLE │←──────────┐ │ └────┬─────┘ │ │ │ Start │ Reset (from any) │ ┌────▼─────┐ │ │ │ RUNNING │ │ │ └──┬───┬───┘ │ │ Hold │ │ Complete │ │ ┌───────┘ └───────┐ │ │ │ │ │ │ ▼ ▼ │ │ ┌─────────┐ ┌───────────┐ │ │ │ HELDING │ │ COMPLETING│ │ │ └────┬─────┘ └─────┬─────┘ │ │ │ Restart │ │ │ ┌────▼─────┐ │ │ │ │RESTARTING│ ┌────▼─────┐ │ │ └──────────┘ │ COMPLETE │ │ │ └──────────┘ │ │ Stop/Abort (from Running/Holding/Restarting) │ ┌───▼───┐ │ │ │STOPPING│ │ │ └───┬───┘ │ │ │ │ │ ┌────▼─────┐ ┌───────┴──┐ │ │ STOPPED │ │ ABORTING │ │ └──────────┘ └────┬─────┘ │ │ │ ┌────▼─────┐ │ │ ABORTED │ │ └──────────┘ └────────────────────────────────┘

9.2 关键状态说明

状态含义典型动作
IDLE空闲,等待启动命令参数校验通过后接受 Start
RUNNING正常执行中执行 Phase 核心逻辑
HOLDING暂停中(安全过渡)进入安全状态,如停止加料、停止加热
HELD已暂停,等待恢复维持安全状态,等待 Restart 或 Stop
RESTARTING从暂停恢复中重新建立运行条件
COMPLETING正常完成收尾中关闭阀门、停止相关设备
COMPLETE正常完成过渡到 IDLE,报告结果
STOPPING/STOPPED人工停止有序关闭
ABORTING/ABORTED异常中止紧急关闭(如联锁触发)

9.3 模式(Mode)

除了状态机,S88 还定义了操作模式,确保安全权限分层:

模式含义
AUTO自动模式 —— 由配方/程序控制,正常生产用
SEMI-AUTO半自动 —— 每一步需操作员确认
MANUAL手动模式 —— 操作员直接控制设备,绕过程序

10. S88 编程实践与设计模式

10.1 Phase 的标准接口

每个 Phase 都应该遵循统一的接口模式(以 Siemens S88 Type 或 Rockwell Phase Manager 为例):

FUNCTION_BLOCK "Phase_Heat" // ── 控制接口 ── VAR_INPUT CMD : S88_Command; // Start / Hold / Restart / Stop / Abort / Reset MODE : S88_Mode; // AUTO / SEMI_AUTO / MANUAL END_VAR // ── 配方参数 ── VAR_INPUT SP_Temp : REAL; // 温度目标值 (°C) RampRate : REAL; // 升温速率 (°C/min) HOLD_Time : TIME; // 保温时间 (ms) HiLimit : REAL; // 温度上限 (°C) END_VAR // ── 设备接口 ── VAR_IN_OUT EM_TempCtrl : EM_Temperature; // 温控设备模块 EM_Agitator : EM_Agitator; // 搅拌设备模块 END_VAR // ── 状态输出 ── VAR_OUTPUT Status : S88_State; // IDLE/RUNNING/HELD/COMPLETE/... ElapsedTime : TIME; // 已运行时间 PV_Temp : REAL; // 当前温度(过程值) END_VAR

10.2 串行与并行协调

S88 支持 Phase 的串行和并行执行:

// ── 串行模式:Operation 内的 Phase 依次执行 ── Operation "升温反应": [PHASE_HEAT] → [PHASE_AGITATE] → [PHASE_HOLD] 完成 完成 完成 // ── 并行模式:多个 Phase 同时运行 ── Parallel Fork: ├── [PHASE_HEAT] (同时控制温度) ├── [PHASE_AGITATE] (同时控制搅拌) └── [PHASE_DOSE] (同时滴加物料) Parallel Join → 全部完成才进入下一步

10.3 异常处理与传播

S88 定义了清晰的异常传播链:

Control Module 故障 ↓ 向上传播 Equipment Module 故障 ↓ 向上传播 Phase → 自动进入 HOLDING / ABORTING ↓ 向上传播 Operation / Unit Procedure → 决定继续 / 暂停子单元 / 中止整个批次 ↓ 通过配方逻辑 整个 Procedure → 异常处理策略(重试 / 跳过 / 中止)

10.4 设备分配与仲裁(Arbitration)

多个 Unit Procedure 可能同时请求同一个共享设备(如 CIP 站、公用工程管道)。 S88 通过资源管理(Resource Manager)进行仲裁:

Resource Manager ├── Resource: CIP_Skid_1 │ ├── 当前持有者: Unit_Reactor_2 │ └── 等待队列: [Unit_Reactor_1, Unit_Reactor_3] ├── 分配策略: FIFO / Priority / FIFO+Priority ├── 死锁检测: 超时检测 + 手动释放 └── 状态: ALLOCATED / FREE / MAINTENANCE

11. 常见误区与注意事项

误区为什么是问题正确做法
把 Phase 写成硬编码特定产品逻辑 失去复用性——每新增一个产品就要重写 Phase Phase 只接收参数,逻辑通用。产品差异通过 Master Recipe 的参数体现
Unit 之间直接交叉引用变量 破坏模块化——一个 Unit 的修改会影响其他 Unit Unit 间通过 Resource Manager 或 Batch Executive 协调
Phase 状态机实现不完整 无法安全暂停/恢复,生产灵活性丧失 严格实现全部 S88 状态转换(至少 IDLE/RUNNING/HOLDING/HELD/COMPLETE/ABORTED)
控制模块中混入序列逻辑 底层 I/O 模块变得复杂且难以测试 Control Module 只做 I/O 映射和基本报警;序列逻辑放在 Phase 层
忽略配方版本管理 生产时使用了过时或错误的配方参数 所有 Master Recipe 必须版本控制,变更走审批流程
在 Phase 中直接读写 I/O Phase 与硬件强耦合,换一个 PLC 平台就要重写 Phase 只通过 Equipment Module / Control Module 接口操作设备

12. S88 的价值与总结

12.1 核心价值

价值点说明
⚡ 复用性Phase 和设备模块一次编写,全厂复用。新产品只需要新的配方,不需要新代码
🔄 互操作性统一的状态机和接口使不同供应商的设备和系统可以协作
📋 合规性制药行业 (FDA 21 CFR Part 11) 和 GMP 天然亲和 S88 的批次记录模型
🧩 模块化设备模块和控制模块可以独立测试,减少调试时间和风险
📊 可追溯性完整的电子批记录 (EBR) —— 哪个批次、什么时间、哪个设备、什么参数
👥 团队协作工艺工程师写配方,自动化工程师写 Phase——职责清晰

12.2 总结

S88 不是一门编程语言,而是一套思维框架。它强制你把批量控制问题拆解为 三个正交的维度——设备(物理模型)、步骤(程序控制模型)、 物料变化(过程模型)——然后用配方将它们松耦合地组合在一起。

在实践中,主流 DCS/PLC 平台(Siemens SIMATIC BATCH、Rockwell FactoryTalk Batch / Phase Manager、ABB 800xA Batch、Emerson DeltaV Batch)都内建了对 S88 的支持。 即使不使用商业 Batch Executive,理解 S88 也能让你写出更清晰、更可维护的批量控制代码。

一句话记住 S88:
设备做"能做"(Capability),配方说"要做"(Recipe),Phase 是中间的翻译官——它读取配方参数,驱动设备执行。