给制药厂做了套洁净车间恒温恒湿自动控制系统——PID串级控制在HVAC上的实战

今年春天接了个项目——给一家生物制药公司的D级洁净车间做空调自控系统改造。说实话,接之前我以为就是个恒温恒湿的PID调节,以前做过不少。真正干起来才发现,制药车间的HVAC和普通厂房的空调完全不是一回事。

这篇文章就把这个项目的经历、踩过的坑、以及最后调出来的参数分享出来,给要做类似项目的兄弟们参考。

项目背景

客户的车间是D级洁净区(十万级),主要生产口服固体制剂。车间面积大概500平米,分了配料间、制粒间、压片间、包衣间、内包间、外包间六个功能间。每个房间的温湿度要求不一样,但最严格的是制粒间和包衣间——温度要求22±2℃,相对湿度要求45%±5%。

原来的控制系统是一个老的温控器+继电器逻辑,精度根本达不到。客户投诉成品引湿性不合格,稳定性数据不好看,追溯下来发现是生产过程中温湿度波动太大了。

系统架构

我选的是西门子S7-1200 CPU 1214C作为主控制器,扩展了一个SM1231 8路模拟量输入模块和一个SM1232 4路模拟量输出模块。

传感器这块:每个功能间装了一个温湿度变送器(4-20mA输出,温度精度±0.3℃,湿度精度±2%RH)。送风总管上装了温度传感器和风压传感器。每个房间的送风支管上装了电动调节阀(0-10V控制)。

执行机构:空调机组的风机是变频控制(0-10V给变频器),加热段用可控硅调功器控制电加热,加湿段用比例积分式电动蒸汽调节阀控制加湿量,表冷段用电动二通阀控制冷冻水流量。

HMI用的是威纶通MT8071iP,7寸屏,放在车间入口的传递窗旁边。

方案选择——为什么用串级PID

一开始我想得简单:每个房间一个独立的PID回路,设定温度22℃,PID输出直接控制送风支管调节阀。这样行不行?理论上行,但实际上有个致命问题——各房间之间会打架。

举个例子:制粒间温度高了,PID把送风调节阀开大,冷风进多了。但空调机组的送风温度是固定的12℃,制粒间多要了冷风,隔壁压片间的风量就不够了。反过来压片间温度高了也要开阀,两个房间抢风量,系统震荡,谁都稳不住。

所以我最后用了串级PID的方案:

主回路(温度PID):每个房间的温度变送器作为过程值,设定温度22℃,PID输出的是一个0-100%的”冷量需求”信号。

副回路(风量PID):每个房间的送风总管上装了一个风量传感器(通过风压差和阀位换算),副回路的设定值来自主回路的输出,副回路控制电动调节阀的开度。

总送风温度控制:空调机组层面的总PID,根据所有房间的综合冷量需求,控制表冷器的冷冻水调节阀和加热段。这样送风总管温度稳定在12℃±0.5℃,各房间自己调风量微调。

翻译成人话就是——中央空调先把风温度做准,各房间自己决定要多少风来达到自己的温度。互不干扰。

PID参数整定——最折腾的环节

参数整定花了我整整两天时间。一开始按经验给了一组参数:P=3.5,I=0.02,D=0。结果一跑起来,温度在21℃到24℃之间来回震荡,周期大概8分钟。典型的P偏大积分偏慢的表现。

后来用了试凑法,反复调了几轮:

温度主回路最终参数:P=1.8,I=0.015,D=0(比例减小了,积分稍微放慢了一点,微分没用,因为温度大惯性系统微分容易放大噪声)。

风量副回路最终参数:P=1.2,I=0.05,D=0(副回路响应要快,所以比例不大,积分相对快一点)。

调完后的效果:温度稳定在22℃±0.5℃,湿度稳定在45%±3%。客户验收的时候专门拿了一个带记录功能的温湿度计放了48小时,看了数据很满意。

踩的几个坑

坑1:传感器安装位置。第一次试运行,有两个房间的温湿度波动特别大。查了半天,发现是温湿度变送器装在了送风口正下方。空调一吹,传感器直接检测到冷风,温度当然往下掉,然后PID又把阀关小,关了又热……来回折腾。后来把传感器移到回风口位置,问题解决。

坑2:湿度控制滞后。蒸汽加湿有个特性——从阀门动作到湿度变化,滞后至少在3-5分钟。一开始我湿度PID参数设得太激进,结果湿度在38%到55%之间大幅震荡。后来把湿度回路的积分时间从0.02一下子放慢到0.008,让系统”等等看”,效果马上好了。

坑3:换班时段。客户说每天两次换班,车间门要打开5-10分钟,人员进出频繁,温湿度会波动。后来我在程序里加了一个”换班模式”——检测到车间人员进出信号后,自动将PID进入一个快速恢复状态,P值临时放大到2.5,等温度回到设定值附近再切回正常参数。这样换班结束后5分钟内温湿度就恢复正常了。

程序里一个小细节

在TIA Portal里写了个手动/自动无扰切换功能。手动模式下,操作员可以直接设调节阀开度。切回自动时,PID的积分初始值设为当前手动输出值,不重新从0开始积分。这样切换瞬间阀位不会突变。代码很简单:

在OB30(循环中断,我设的500ms)里执行PID,每次运行前判断模式。如果从手动切到自动,把PID的积分项输出预置为当前手动阀位值对应的百分比。这样切换瞬间输出值不变,就无扰了。

这一点看起来小,但操作员实际用起来体验差别很大。没做无扰之前,一按自动按钮,风阀”咔”一声关小或开大,车间操作工还以为设备坏了。

说点实在的

整个项目从设计到调试完花了三周时间。设备成本大概两万出头(PLC、模块、HMI、传感器、线缆、柜体),人工我收了八千。对客户来说,解决了温湿度波动导致的产品质量问题,一个批次的废品损失都不止这个数。

现在运行了两个月了,客户反馈非常好。空调运行比以前节能了不少——因为PID控制比原来的继电器通断控制平滑多了,压缩机、加热器不会频繁启停。据客户电工粗略统计,电费比去年同期降了约12%。

搞工控的兄弟们如果遇到类似项目,建议先搞清楚洁净车间的GMP规范要求——温度22±2℃,湿度45±15%(不同级别不一样),换气次数、压差梯度这些都是硬指标。先理清楚工艺要求再动手,比干到一半再改方案痛快得多。

上一篇 消防联动切非把我车间PLC电全断了——一次消防测试引发的停产事故
下一篇 AI帮我自动验证PLC程序,87个测试用例找出3个隐藏bug——现场调试时间省了一半