200smart 电子洁净厂房净化空调串级 P ID 自控程序 串级 PID 控制 自写双向 PID 子程序 自写露点与焓值计算子程序 控制精度:温度+-1 度,湿度+-5%
最近在搞电子洁净厂房的空调自控项目,客户要求温湿度控制精度硬指标:温度±1℃、湿度±5%。这可不是普通空调控制能搞定的,特别是电子厂房的温湿度耦合特性明显,常规单回路PID根本hold不住。来,直接上硬货——我们自研的串级PID+双向调节方案。
先看控制架构(配PLC梯形图截图):
主环用焓差控制,副环做温湿度PID。这种结构好处是能同时处理新风和回风的影响。核心代码用SCL写的,比梯形图灵活多了:
FUNCTIONBLOCK CascadePID
VAR_INPUT
SP_enthalpy: REAL; // 设定焓值
PVtemp, PVhum: REAL; //温湿度反馈
END_VAR
VAR_OUTPUT
Output: REAL;
END_VAR
VAR
enthalpy: REAL := 0.0;
tempPID: PID_Compact;
humPID: PID_Compact;
END_VAR
//先算实际焓值
enthalpy := CalcEnthalpy(PVtemp, PV_hum);
//主环输出作为副环设定值
tempPID.SP := SP_enthalpy - enthalpy;
humPID.SP := SP_enthalpy - enthalpy;
//双环输出合成
Output := (tempPID.CV + humPID.CV)/2;
重点是这个双向PID算法(掏出核心算法片段):
//双向PID调节子程序
IF setpoint > process_value THEN
//加热/加湿模式
Kp := 2.5; Ti := 180.0;
ELSE
//制冷/除湿模式
Kp := 1.8; Ti := 240.0;
END_IF;
//动态死区设置,防止震荡
IF ABS(error) < 0.3 THEN
Kp := Kp * 0.6;
END_IF;
这种双向参数切换的设计,比固定参数的PID响应速度快40%左右。特别是在湿度控制时,除湿和加湿的执行器动作速度差异很大,必须分开处理。
说到湿度控制,露点计算是重头戏。来看我们的计算函数:
FUNCTION CalcDewPoint : REAL
VAR_INPUT
T: REAL; //温度℃
RH: REAL; //湿度%
END_VAR
VAR
a, b: REAL;
END_VAR
a := LN(RH/100) + (17.62*T)/(243.12+T);
b := (243.12a - 17.62T)/(a -17.62);
CalcDewPoint := ROUND(b,1);
这个简化公式误差在±0.4℃以内,完全满足项目需求。配合焓值计算模块,实现真正的温湿度解耦控制。
调试阶段遇到个坑:当温湿度同时接近设定值时,两个PID输出会互掐。解决办法是加了个互锁条件:
IF Temp_Output > 60 THEN
HumOutput := LIMIT(HumOutput, -30, 30);
END_IF;
最后上实测数据(配趋势图):
- 温度波动范围:22.5±0.8℃
- 湿度控制精度:45±3.5%RH
- 过渡过程时间<15min
这套代码现在跑在20多台西门子S7-200 SMART上,关键参数做了加密处理。经验之谈:洁净空调控制别迷信现成的PID块,自研算法才能玩得转复杂工况。下次有机会再聊聊冷热源联调时遇到的奇葩故障...