1. 什么是 S88?
S88,全称 ISA-88(国际自动化协会标准 88),在国际上对应 IEC 61512,
是专门针对批量生产过程(Batch Process)制定的自动化与控制标准。它不是某一门编程语言,而是一套
建模框架和设计规范——它告诉你批量工厂的控制代码应该如何组织结构,使得不同厂商的 PLC、DCS、
SCADA 以及 MES 系统之间可以互通和复用。
核心思想:将"做什么"(配方 / Recipe)和"怎么做"(设备能力 / Equipment Capability)彻底分离。
S88 主要覆盖以下行业场景:
- 制药(原料药、制剂)
- 精细化工与特种化学品
- 食品与饮料加工
- 生物技术发酵
- 消费品日化
2. 历史与背景
在 S88 出现之前,每家自动化厂商都有自己的批量控制方案——不同项目之间的代码几乎无法复用,配方管理混乱,
操作员培训成本极高。1988 年,ISA 成立了 SP88 委员会,目标是制定一个统一的批量控制模型。
| 年份 | 里程碑 |
| 1995 | ISA-88.01 第一部分发布:模型与术语 |
| 2001 | ISA-88.02 发布:数据结构与语言指南 |
| 2003 | ISA-88.03 发布:通用配方模型 |
| 2006 | ISA-88.04 发布:批量生产记录 |
| 2010-2013 | IEC 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 接口通常包含:
- 目标值(Target Setpoint)—— 如温度目标 80°C
- 限值(High/Low Limits)—— 如温度上限 85°C
- 速率(Ramp Rate)—— 如加热速率 2°C/min
- 时长(Duration)—— 如保温 120 分钟
- 条件(Transition Condition)—— 如"当 pH 达到 7.0 时结束"
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 是中间的翻译官——它读取配方参数,驱动设备执行。