乳品加工 UHT + CIP 整线 — 多 PID 工艺对象集成
一、设备简介
项目位于内蒙古呼和浩特某大型乳企, 扩建一座 10 000 L/h UHT 液态奶 + 无菌砖罐装 生产线, 工艺覆盖 板换预热 (70→85 ℃) → 均质 (200 bar) → 板换高温 (137 ℃ / 4 s) → 保温盘管 → 冷却段 (25 ℃) → 分流阀 (FDV) → 无菌缓冲罐 → 无菌砖装灌装机, 并与 中央 CIP 清洗站 共享主控, 运行时切换 PROD/CIP/SIP 三种模式。
关键工艺指标:
| 工艺段 | 关键点 | 指标 |
|---|---|---|
| 预热段 | 热水回路 | 70±0.5 ℃ |
| 均质机 | 一级/二级压力 | 180 / 20 bar |
| 保温段 | 137 ℃ 保持 4 s | 温度 ± 0.3 ℃ |
| 冷却段 | 冰水回路 | 25 ± 1 ℃ |
| 分流阀 FDV | 不合格自动回流 | 响应 < 500 ms |
| 无菌缓冲罐 | 正压 0.3 bar | 压力 ± 0.05 bar |
| CIP 回路 | 酸/碱/热水 | 电导率合格后判定 |
目标:
- 单一 Runtime 覆盖 UHT + CIP + 无菌缓冲 + 灌装握手;
- 多 PID 工艺对象 集中整定, 串级 + 前馈 + 模糊全内置;
- 符合 GB 25190 / GMP / HACCP, 为每一包记录批次数据并经 OPC UA 上送上层 MES (追溯查询由 MES 完成);
- 整线控制 BOM ≤ ¥ 60 万 (不含板换/均质/灌装机本体);
- 备件国产化, 供货 ≤ 1 周。
二、项目模块组成
工程模板 DAIRY_UHT, 分为 工艺控制 / CIP 清洗 / 公用工程 / 灌装握手 / 上位通讯 五个大模块:
| 模块 | 子功能 | 关键技术 |
|---|---|---|
| MOD_PREHEAT | 预热板换 PID (热水回路) | FB_PID_Cascade |
| MOD_HOMO | 均质机压力 PID + 出口温度 | 双 PID + 前馈 |
| MOD_STERI | 高温保温段温控串级 | FB_PID_Cascade + 蒸汽前馈 |
| MOD_COOLING | 冷却板换 (冰水) | FB_PID_Fuzzy |
| MOD_FDV | 不合格分流阀时序 | 状态机 + 多联锁 |
| MOD_BUFFER | 无菌缓冲罐正压 + 液位 | 压力 PID + 液位控制 |
| MOD_CIP | CIP/SIP 状态机 7 步 | 见 cip-cleaning 专用案例, 此处为子系统 |
| MOD_CIP_ROUTE | CIP 路由阀阵列 (40+ 阀) | MPV 证明 + 阀序 |
| MOD_FILLER_HS | 与砖装灌装机握手 | Profinet / Modbus TCP |
| MOD_RECIPE | 3 产品 (白奶/调味/酸奶基料) | 配方 + 版本 + 签名 |
| MOD_AUDIT | 21 CFR Part 11 审计追踪 | 用户/权限/操作留痕 |
| MOD_BATCH | 电子批记录 (PDF + CSV + DB) | Darra Service |
| MOD_ALARM | 三级报警 + HACCP 关键点标记 | AlarmManager |
| MOD_MES | MQTT + OPC UA 上云 | Service |
| MOD_HMI | 工艺主画面 + CIP 画面 + 趋势 | Darra HMI Designer |
三、机械装配架构
原料罐 → 平衡罐 → 进料泵 → 预热段 ─┐
│
▼
均质机 (200 bar)
│
▼
保温加热段 (137 ℃ / 4s, 蒸汽加热)
│
保温盘管 (停留 4 s)
│
▼
冷却段 (→25 ℃)
│
▼
┌──── FDV (分流阀) ────┐
│ │
合格↓ ↓ 不合格
无菌缓冲罐 平衡罐回流
│
▼
无菌砖装灌装机 (外部设备)
公用系统:
蒸汽发生器 (600 kg/h) ──→ 保温段换热器
冰水机组 (冷量 500 kW) ──→ 冷却段
CO₂/无菌空气 (过滤 0.2 µm) ──→ 缓冲罐保压
CIP 站:
酸罐 + 碱罐 + 热水罐 + 回收水罐 ─── 酸碱泵 ─── MPV 阀阵 ─── 回路 L1..L8
机械要点:
- 板换 A (预热) + 板换 B (高温) + 板换 C (冷却) 串联管路 SUS316L, 全部卫生三级抛光;
- 均质机为二级活塞式 200 bar, 安装平稳裙座 + 隔振垫;
- 保温盘管长度按流量 + 137 ℃ 停留 4 s 精确计算 (Re > 2300 湍流);
- FDV 为 三通混合证明阀 (MPV), 具备阀位双反馈 + 隔腔排液;
- 无菌缓冲罐内置 0.2 µm 过滤器呼吸口, 电动气阀控制 CO₂ 保压;
- 蒸汽管路每 10 m 装疏水器, 排凝管单独布置;
- 冰水机组温度 2 ℃, 换热温差 ΔT = 3 ℃。
四、程序架构
┌─────────────────────────────────────────────────────────────┐
│ Darra Runtime (单机) │
│ │
│ ┌───────────── OB_100us (EtherCAT PDO) ──────────────────┐ │
│ │ 变频器/阀位/仪表 PDO 交换 │ │
│ └─────────────────────────────────────────────────────────┘ │
│ ┌───────────── OB_1ms (工艺 PID / 状态机) ───────────────┐ │
│ │ FB_PID_Cascade (预热/保温/冷却) │ │
│ │ FB_PID_Fuzzy (均质出口) │ │
│ │ PRG_FDV (分流阀) │ │
│ │ PRG_CIP (7 步清洗) │ │
│ └─────────────────────────────────────────────────────────┘ │
│ ┌───────────── OB_20ms (HMI + 报警) ─────────────────────┐ │
│ │ 趋势采样 / 报警扫描 │ │
│ └─────────────────────────────────────────────────────────┘ │
│ ┌───────────── OB_100ms (上位 + 批记录) ─────────────────┐ │
│ │ MES / OPC UA / PDF 批报告 │ │
│ └─────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
模式切换 (PROD / CIP / SIP / IDLE):
- 工程师在 HMI 切换模式, PLC 先做互斥判断 (有料/无料/阀位), 再切入目标态;
- 每种模式对应不同的子程序集合 + 不同的 PID SP 表;
- 模式切换需要电子签名留痕 (GMP 合规)。
五、硬件 BOM (国产优先)
5.1 控制层
| 设备 | 型号 | 数量 | 单价 (¥) | 小计 |
|---|---|---|---|---|
| 工控机 | 研华 MIC-770 / i7-12700 / 32 GB / RAID1 | 1 | 14 000 | 14 000 |
| HMI (工艺主画面) | 威纶通 cMT-3162X 22" IP65 | 1 | 9 800 | 9 800 |
| HMI (CIP 站) | 威纶通 MT8103iE 10.1" | 1 | 3 800 | 3 800 |
| 工业交换机 | 汇川 SW8 非网管 | 2 | 1 200 | 2 400 |
| UPS | APC SUA3000 | 1 | 5 800 | 5 800 |
5.2 仪表与执行机构
| 设备 | 型号 | 数量 | 单价 (¥) | 小计 |
|---|---|---|---|---|
| Pt100 温度变送器 | 重庆横河 4 线制 | 24 | 400 | 9 600 |
| 卫生级压力变送器 | WIKA DMP331 | 10 | 1 800 | 18 000 |
| 卫生级电导率仪 | 端子 CLS54D | 3 | 6 800 | 20 400 |
| 电磁流量计 | 光华 LDG-DN50/DN80 | 4 | 12 000 | 48 000 |
| 液位计 | 古大 压力式卫生型 | 6 | 2 500 | 15 000 |
| 蒸汽调节阀 + 定位器 | 苏州纽威 DN50 气动薄膜 | 2 | 12 000 | 24 000 |
| FDV 混合证明阀 | 苏州纽威 DN80 卫生级 | 1 | 22 000 | 22 000 |
| CIP 主阀矩阵 | 卫生级气动蝶阀 DN50 | 42 | 2 200 | 92 400 |
| 卫生级调节阀 (进料) | 苏州纽威 DN65 | 2 | 10 500 | 21 000 |
5.3 变频器与伺服
| 设备 | 型号 | 数量 | 单价 (¥) | 小计 |
|---|---|---|---|---|
| 变频器 (进料泵) | 汇川 MD520-4T7R5 7.5 kW | 1 | 2 400 | 2 400 |
| 变频器 (均质电机) | 汇川 MD520-4T75 75 kW | 1 | 12 000 | 12 000 |
| 变频器 (CIP 供/回液泵) | 汇川 MD520-4T15 15 kW | 2 | 4 500 | 9 000 |
| 变频器 (酸/碱计量泵) | 汇川 MD520-4T5R5 5.5 kW | 2 | 2 400 | 4 800 |
5.4 IO 系统
| 设备 | 型号 | 数量 | 单价 (¥) | 小计 |
|---|---|---|---|---|
| AM600 EtherCAT 耦合器 | 汇川 | 2 | 800 | 1 600 |
| 8Pt100 热电阻模块 | 汇川 AM600-8RTD | 3 | 3 200 | 9 600 |
| 8AI 模块 | 汇川 AM600-8AI | 3 | 2 200 | 6 600 |
| 4AO 模块 | 汇川 AM600-4AO | 2 | 2 000 | 4 000 |
| 32DI / 32DO 模块 | 汇川 AM600 | 4 | 1 600 | 6 400 |
5.5 小计
| 类别 | 金额 (¥) |
|---|---|
| 控制层 | 35 800 |
| 仪表执行 | 270 400 |
| 变频器 | 28 200 |
| IO 系统 | 28 200 |
| 硬件小计 | 362 600 |
| Darra Runtime 授权 | 25 000 |
| Darra HMI 授权 | 5 000 |
| 整线投资 | ¥ 392 600 |
六、IO 模块配置
6.1 选型思路
仪表以温度 (Pt100) + 压力 + 流量 + 电导率 + 液位为主, 合计 30+ AI 通道, 用 3×8RTD + 3×8AI 覆盖; DO 主要驱动 40+ 卫生阀, 用 3×32DO = 96 路留充足余量; 变频器 4 台直接 PDO 挂 EtherCAT; FDV/蒸汽阀用 AO 4~20 mA 控制。
6.2 地址分配
| 模块 | PLC 地址 | 用途 |
|---|---|---|
| RTD_0 (8Pt100) | %IW0~%IW14 | T_PREHEAT_IN / OUT, T_HOMO_OUT, T_STERI_IN |
| RTD_1 (8Pt100) | %IW16~%IW30 | T_STERI_OUT, T_HOLD, T_COOL_IN, T_COOL_OUT |
| RTD_2 (8Pt100) | %IW32~%IW46 | T_BUFFER, T_HOTWATER, T_ICEWATER, T_CIP_SUP/RET |
| AI_0 (8AI) | %IW48~%IW62 | P_HOMO_IN/OUT, P_STERI, P_BUFFER, P_STEAM, P_AIR, F_FEED, F_CIP |
| AI_1 (8AI) | %IW64~%IW78 | COND_CIP_SUP/RET, COND_BUFFER, L_ACID, L_ALK, L_HOT, L_REC, L_BUF |
| AI_2 (8AI) | %IW80~%IW94 | P_STEAM_SUP, P_ICE_SUP, 进料阀位反馈 x4, 余 |
| DI_0 (32DI) | %IX0.0~%IX3.7 | 操作/门/急停/模式切换/阀位反馈 0~23 |
| DI_1 (32DI) | %IX4.0~%IX7.7 | 阀位反馈 24~55 |
| DO_0 (32DO) | %QX0.0~%QX3.7 | CIP 主阀 0~31 |
| DO_1 (32DO) | %QX4.0~%QX7.7 | CIP 主阀 32~41 + 进料阀 + FDV + 蒸汽主阀 + 安全联锁 |
| DO_2 (32DO) | %QX8.0~%QX11.7 | 冰水阀 + 缓冲罐呼吸阀 + 报警 + 辅助 |
| AO_0 (4AO) | %QW0~%QW6 | STEAM_VALVE, ICE_VALVE, FEED_VALVE, FDV_PILOT |
| AO_1 (4AO) | %QW8~%QW14 | HOMO_PRESS_SP, HOMO_FEED_SP, 备用 x2 |
6.3 分工表 (工艺关键点)
| 功能 | 地址 | 绑定 | 备注 |
|---|---|---|---|
| T_STERI_OUT | %IW22 | Pt100 伸入保温盘管 | 保温段 PV, 保温 PID 闭环 |
| P_HOMO_IN | %IW48 | WIKA 0-30 bar | 均质进口保护 |
| P_HOMO_OUT | %IW50 | WIKA 0-300 bar | 均质出口 (200 bar SP) |
| F_FEED | %IW58 | 光华 LDG-DN50 | 进料流量 PV + 前馈 |
| COND_CIP_RET | %IW66 | 端子 CLS54D | CIP 终冲判定 |
| STEAM_VALVE | %QW0 | AO → 纽威 DN50 | 保温段蒸汽开度 |
| FDV_PILOT | %QW6 | AO → MPV 气动 | 分流阀位置 |
| MD520 (进料泵) | PDO | 汇川 7.5 kW | 频率来自流量 PID |
| MD520 (均质) | PDO | 汇川 75 kW | 恒频 or 压力跟随 |
| MD520 (CIP 供液) | PDO | 汇川 15 kW | CIP 供液泵 |
6.4 绑定操作流程
- Studio
扫描从站→ 识别 4 台 MD520 + 2 个 AM600 耦合器 (8 个机架模块); - 为每个 MD520 配置
PP + 速度环PDO, 默认启动时给定 0 Hz; - 新建
FB_PID_Cascade4 路 (预热 / 保温 / 冷却 / 缓冲压力), Studio 自动生成 SP/PV/MV 接口; - 保温段双击
FB_PID_Cascade→整定向导→ 做一次阶跃响应自整定 → 自动写入 Kp/Ti/Td; - 均质出口
FB_PID_Fuzzy的模糊规则表用向导导入 (默认 5×5 表); - FDV 的 AO 配置 4
20 mA → 0100%, 报警低限 3.6 mA; - 配方管理器新建
白奶/调味/酸奶基料三条配方, 各自 SP 表自动载入; - 下载, 进入
工艺诊断页观察所有 PID 的 PV/SP/MV 曲线, 稳态后对比标定曲线。
七、核心数据结构
TYPE TYPE_PID_LOOP :
STRUCT
Id : INT;
Name : STRING[24];
Enable : BOOL;
Mode : INT; (* 0=手动 1=自动 2=串级主 3=串级从 *)
SP : REAL;
PV : REAL;
MV : REAL;
Kp : REAL;
Ti : TIME;
Td : TIME;
FeedFwd : REAL;
OutHi : REAL;
OutLo : REAL;
Limited : BOOL;
END_STRUCT
END_TYPE
TYPE TYPE_PROCESS_STEP :
STRUCT
Id : INT;
Name : STRING[32];
TargetT : REAL;
TargetP : REAL;
TargetF : REAL;
Duration : TIME;
TempOK : BOOL;
PressOK : BOOL;
FlowOK : BOOL;
END_STRUCT
END_TYPE
TYPE TYPE_RECIPE_DAIRY :
STRUCT
Id : INT;
ProductName : STRING[32];
PreheatSP : REAL;
SteriSP : REAL;
SteriHoldTime_s : REAL;
CoolingSP : REAL;
BufferPressSP : REAL;
HomoPressSP : REAL;
FlowSP : REAL;
FdvDeadBand : REAL;
END_STRUCT
END_TYPE
TYPE TYPE_BATCH :
STRUCT
Id : STRING[32]; (* 批号 年月日+流水 *)
ProductId : INT;
StartTime : DT;
EndTime : DT;
Volume_L : REAL;
Result : INT; (* 0=成功 1=分流异常 2=废批 *)
TempMin : REAL;
TempMax : REAL;
HoldAlarmCount : INT;
Signer : STRING[24];
END_STRUCT
END_TYPE
TYPE TYPE_CIP_LOOP :
STRUCT
Id : INT; (* 1..8 *)
Busy : BOOL;
Step : INT;
RecipeId : INT;
StartTime : DT;
CondOK : BOOL;
Passed : BOOL;
END_STRUCT
END_TYPE
VAR_GLOBAL
Loop_Preheat : TYPE_PID_LOOP; (* 预热 Kp=2.5/Ti=45s/Td=8s *)
Loop_Steri_Out : TYPE_PID_LOOP; (* 保温外环 *)
Loop_Steri_In : TYPE_PID_LOOP; (* 保温内环: 蒸汽阀 *)
Loop_Cool : TYPE_PID_LOOP; (* 冷却 *)
Loop_Homo : TYPE_PID_LOOP; (* 均质压力 *)
Loop_Buffer : TYPE_PID_LOOP; (* 缓冲罐压力 *)
Recipe : TYPE_RECIPE_DAIRY;
CurBatch : TYPE_BATCH;
Step : ARRAY[1..10] OF TYPE_PROCESS_STEP;
CipLoop : ARRAY[1..8] OF TYPE_CIP_LOOP;
Mode : INT; (* 0=IDLE 1=PROD 2=CIP 3=SIP *)
EStop : BOOL;
END_VAR
八、核心程序代码
8.1 保温段串级 PID + 蒸汽前馈 (关键工艺)
PROGRAM PRG_SteriCascade
VAR
fbOuter : FB_PID_Cascade;
fbInner : FB_PID_Cascade;
feedFwd : REAL;
END_VAR
(* 前馈: 流量越大, 蒸汽阀预开越多 *)
feedFwd := F_FEED * 2.2; (* 经验系数, 单位 kg/h → % 开度 *)
(* 外环: PV = 保温盘管出口温度, SP = 137.0 ℃ *)
fbOuter(
Enable := Mode = 1,
Mode := 2, (* 串级主 *)
SP := Recipe.SteriSP,
PV := T_STERI_OUT,
Kp := Loop_Steri_Out.Kp,
Ti := Loop_Steri_Out.Ti,
Td := Loop_Steri_Out.Td,
OutHi := 100.0,
OutLo := 0.0
);
(* 内环: PV = 蒸汽压力, SP = 外环输出 + 前馈 *)
fbInner(
Enable := Mode = 1,
Mode := 3, (* 串级从 *)
SP := fbOuter.Out + feedFwd,
PV := P_STEAM_SUP * 100.0, (* 0~1 MPa → 0~100 *)
Kp := 4.0,
Ti := T#8s,
Td := T#1s,
OutHi := 100.0,
OutLo := 0.0
);
STEAM_VALVE := fbInner.Out;
(* HACCP 关键控制点: 出口温度 < 135 ℃ 或 > 140 ℃ 必报警 *)
IF Mode = 1 THEN
IF T_STERI_OUT < 135.0 THEN
RaiseAlarm(A_STERI_LOW, 3);
FDV_Pilot := 100.0; (* 强制分流 *)
CurBatch.HoldAlarmCount := CurBatch.HoldAlarmCount + 1;
ELSIF T_STERI_OUT > 140.0 THEN
RaiseAlarm(A_STERI_HIGH, 2);
END_IF;
END_IF;
8.2 均质机压力 + 出口模糊 PID
(* 均质压力由变频器给定实现, 出口温度模糊补偿 *)
VAR fbHomo : FB_PID_Fuzzy; END_VAR
Loop_Homo.SP := Recipe.HomoPressSP;
fbHomo(
Enable := Mode = 1,
SP := Loop_Homo.SP,
PV := P_HOMO_OUT,
RuleTbl := 'Homo_5x5',
OutHi := 100.0,
OutLo := 0.0
);
HOMO_PRESS_SP := fbHomo.Out;
8.3 FDV 分流阀状态机 (不合格自动回流)
PROGRAM PRG_FDV
VAR step : INT; holdT : REAL; END_VAR
holdT := 4.0; (* 保温停留秒数 *)
CASE step OF
0: (* 等合格: 出口温度达标 holdT 秒才切成产品 *)
IF Mode = 1 AND T_STERI_OUT >= (Recipe.SteriSP - 0.5) THEN
okTimer(IN := TRUE, PT := T_OF_REAL(holdT, S));
IF okTimer.Q THEN
FDV_Pilot := 0.0; (* 0% = 产品通道 *)
step := 1;
END_IF;
ELSE
FDV_Pilot := 100.0; (* 100% = 回流 *)
okTimer(IN := FALSE);
END_IF;
1: (* 正常产品 *)
IF T_STERI_OUT < (Recipe.SteriSP - 1.0) OR EStop THEN
FDV_Pilot := 100.0;
step := 0;
CurBatch.HoldAlarmCount := CurBatch.HoldAlarmCount + 1;
RaiseAlarm(A_FDV_DIVERT, 2);
END_IF;
END_CASE;
8.4 无菌缓冲罐压力控制 + 液位联锁
(* 缓冲罐正压 0.3 bar, CO₂ 补气 *)
Loop_Buffer.SP := Recipe.BufferPressSP;
fbBufPid(
SP := Loop_Buffer.SP, PV := P_BUFFER,
Kp := 1.8, Ti := T#20s, Td := T#2s,
OutHi := 100.0, OutLo := 0.0
);
DO_CO2_VALVE := fbBufPid.Out > 5.0;
(* 液位联锁 *)
IF L_BUF > 90.0 THEN
Feed_Run := FALSE; RaiseAlarm(A_BUF_HI, 2);
ELSIF L_BUF < 10.0 THEN
Filler_Pause := TRUE; RaiseAlarm(A_BUF_LO, 2);
END_IF;
8.5 工艺流程步进 (PROD 模式)
PROGRAM PRG_Process
CASE Step[1].Id OF
1: (* 预热阶段, 等待所有 PID 到稳态 *)
IF ABS(T_PREHEAT_OUT - Recipe.PreheatSP) < 1.0 THEN
Step[1].TempOK := TRUE;
Step[1].Id := 2;
END_IF;
2: (* 保温稳态, 开始记批次 *)
IF T_STERI_OUT >= Recipe.SteriSP - 0.3 THEN
CurBatch.StartTime := SysTime();
CurBatch.ProductId := Recipe.Id;
GenerateBatchId(); (* 生成 年月日 + 流水 *)
Step[1].Id := 3;
END_IF;
3: (* 连续生产 *)
CurBatch.Volume_L := CurBatch.Volume_L + F_FEED * 0.001 / 3600.0;
IF HMI_StopProd THEN
CurBatch.EndTime := SysTime();
CurBatch.Result := 0;
ArchiveBatch();
Step[1].Id := 4;
END_IF;
4: (* 产品吹扫 + 进 CIP 准备 *)
FlushWithWater();
Step[1].Id := 0;
END_CASE;
8.6 CIP 路由与阀阵 (FB_RouteSwitch)
FUNCTION_BLOCK FB_RouteSwitch
VAR_INPUT loopId:INT; route:INT; END_VAR (* route: 0=预冲 1=碱 2=酸 3=终冲 4=蒸汽 *)
VAR_OUTPUT done:BOOL; END_VAR
VAR step:INT; END_VAR
CASE step OF
0: CloseAllMediaValves(); step := 1; toTimer(IN:=TRUE, PT:=T#5s);
1: IF AllClosed() THEN step := 2;
ELSIF toTimer.Q THEN RaiseAlarm(A_CIP_VALVE_STUCK, 3); step := 99; END_IF;
2: OpenLoopValve(loopId); OpenMediaValve(route); step := 3;
3: IF MpvOK() AND LoopValveOpen() AND MediaValveOpen() THEN
done := TRUE; step := 0;
ELSIF toTimer.Q THEN step := 99; END_IF;
99: CloseAllMediaValves(); RaiseAlarm(A_CIP_ROUTE_FAULT, 3);
END_CASE;
8.7 电子签名 + 审计追踪
FUNCTION_BLOCK FB_RecipeSet
VAR_INPUT fieldName:STRING[32]; newVal:REAL;
operator:STRING[16]; password:STRING[32]; reason:STRING[80]; END_VAR
VAR_OUTPUT ok:BOOL; msg:STRING[80]; END_VAR
IF NOT VerifyPassword(operator, password) THEN
ok := FALSE; msg := '密码错误';
LogAudit('AUTH_FAIL', operator, fieldName, '');
RETURN;
END_IF;
IF NOT HasPermission(operator, 'RECIPE_EDIT') THEN
ok := FALSE; msg := '权限不足'; RETURN;
END_IF;
oldVal := GetRecipeField(fieldName);
SetRecipeField(fieldName, newVal);
LogAudit('RECIPE_MOD', operator, fieldName,
CONCAT(REAL_TO_STR(oldVal), '→', REAL_TO_STR(newVal)), reason);
ok := TRUE;
九、运行与调试
9.1 首次启动顺序 (PROD)
- 公用工程准备: 蒸汽压力 ≥ 0.6 MPa, 冰水 ≤ 3 ℃, CO₂ ≥ 0.5 MPa;
- HMI → 选择配方
白奶→签名确认; - 进入 预热模式, 等待 3 个板换稳态 (± 0.5 ℃);
- 开均质机 (慢启动, 60 s 到额定 200 bar);
- 开保温蒸汽阀, 等保温出口 137 ℃ 连续 180 s 后 FDV 切向产品通道;
- 打开灌装机握手
PROD_READY, 开始生产; - 停产吹扫 → 进入 CIP 模式。
9.2 CIP 调试要点
| 项 | 要求 | 定位 |
|---|---|---|
| MPV 反馈 | 双反馈同时到位 | 未到则联锁停泵 |
| 电导率终冲 | RET 端 < 配方阈值 | CLS54D 反复校准 |
| 酸碱浓度 | 电导率换算 | 化验室周校 |
| 温度 | 85 ℃ 循环 > 10 min | RTD 冗余双表 |
| 吹干 | 空气压力 ≥ 0.4 MPa | 无菌过滤器压降 < 0.1 MPa |
9.3 常见故障
| 现象 | 原因 | 处理 |
|---|---|---|
| 保温温度震荡 | Kp 过大 / 外环积分短 | 用 整定向导 自整定 |
| FDV 频繁分流 | 进料流量震荡 | 泵 PID 改流量闭环 |
| 均质出口偏低 | 活塞磨损 | 停机检查, 配方 SP 暂不提 |
| CIP 电导率判错 | 传感器结垢 | 每月拆洗 |
| 缓冲罐泄压过慢 | 呼吸阀堵 | 换 0.2 µm 滤芯 |
9.4 实测性能
| 指标 | 目标 | 实测 |
|---|---|---|
| 保温温度稳态 | ± 0.5 ℃ | ± 0.3 ℃ |
| 预热温度 | ± 0.5 ℃ | ± 0.4 ℃ |
| 均质压力波动 | ± 5 bar | ± 3 bar |
| FDV 响应延迟 | < 500 ms | < 320 ms |
| CIP 周期 | 90 min | 82 min |
| 批记录生成时间 | < 2 min | < 30 s |
| 年度 FDA / 乳制品监管审计 | 0 次失败 | 0 次 |
十、Darra 功能对照表
| 业务需求 | Darra 功能 | 模块 |
|---|---|---|
| 多 PID 串级 | 工艺对象 FB_PID_Cascade | IDE → 工艺对象库 |
| 模糊 PID (均质) | 工艺对象 FB_PID_Fuzzy | IDE → 工艺对象库 |
| 蒸汽前馈 | 工艺对象 FB_FeedForward | IDE → 工艺对象库 |
| FDV 分流阀时序 | 状态机 + 联锁 | PLC 代码 |
| CIP 7 步阀序 | FB_RouteSwitch + 路由矩阵 | PLC 代码 |
| 工艺对象集中整定 | 自整定向导 (阶跃响应) | IDE → 工艺对象 |
| 电子签名 | 用户/权限/审计链 | Service |
| 电子批记录 | PDF + CSV + 数据库 三格式 | Service |
| GMP / 21 CFR Part 11 | 内置模板 | Service + Cloud |
| 报警 HACCP 关键点 | 三级报警 + HACCP 标记 | IDE → 报警 |
| MES / ERP | MQTT / OPC UA | Service |
| AI 工艺整定辅助 | AI 助手 历史曲线 + 整定建议 | IDE → AI |
| 曲线历史 | 本地 SQLite + 云端 InfluxDB | Service / Cloud |
| HMI | Darra HMI Designer | IDE → HMI |
十一、项目总结
11.1 周期
| 阶段 | 工时 |
|---|---|
| 方案设计 | 1 周 |
| 硬件采购 | 4 周 |
| 电气柜组装 | 2 周 |
| PLC + CIP 开发 | 2 周 |
| PID 整定 | 1 周 |
| IQ / OQ | 2 周 |
| PQ 三批验证 | 3 周 |
| 合计 | 15 周 |
11.2 投产效果
| 指标 | 原方案 | Darra 方案 |
|---|---|---|
| 保温段温控 | ± 1.0 ℃ (独立温控器) | ± 0.3 ℃ (集中串级) |
| PID 整定时间 | 3 天 | 4 小时 (AI 助手) |
| CIP 周期 | 105 min | 82 min |
| CIP 药剂成本 | ¥ 2000 / 班 | ¥ 1550 / 班 (浓度闭环) |
| 批报告自动化 | 人工拼 | 全自动 PDF |
| 年度监管审计 | 1~2 次重审 | 0 次重审 |
| 控制系统 BOM | ¥ 80 万 | ¥ 39 万 |
11.3 可复制性
- 同厂其他 UHT 车间可按模板直接派生, 核心工艺参数只需修改配方条目;
- CIP 子系统可单独拆出 (见
CIP 多回路在线清洗案例), 在其他发酵/果汁/啤酒厂复用; - FDV 状态机模板可复用于水产/果浆/黄油 等任何 有合格判据的分流工艺;
- 电子批记录 + 21 CFR 模板在制药/保健品车间同样适用。
核心价值: 一台工控机 + Darra 工艺对象库, 取代 "专用温控器 + 独立 CIP 控制器 + 独立批记录服务器 + 独立审计系统" 四件套。 保温段温控精度从 ± 1 ℃ 提升到 ± 0.3 ℃, CIP 周期缩短 22%, 整线控制 BOM 降 51%, 监管审计 0 次重审。