冷却水循环节能控制:定温差变流量与总功率寻优
简介这份PDF文档为中央空调冷却水循环节能控制系统设计方案源自浙江工业大学毕业设计论文面向电气自动化、暖通空调及建筑节能方向的在校学生与工程技术人员可用于毕业设计选题参考、节能改造方案借鉴及PLC控制系统学习。文档围绕冷却水循环系统展开讲解以PLC自动控制系统配合变频调节技术通过监测冷却水进出水温差与进水温度建立跟踪冷冻机排热需求与冷却塔排热能力的混合控制策略。文中给出三台5.5kW、380V冷却水泵的具体设计要求1号泵先变频运行温差超上限时转工频并启动2号泵变频依次循环出水温度超过37℃时系统保护性跳闸停机。同时涵盖变频与工频接触器的互锁保护、延时切换逻辑以及手动/自动操作功能设计。资源包仅含1个PDF文件约9KB。目前已有123人学习下载。1. 冷却水循环整栋楼里最容易被「定频跑到底」的耗电大户一栋五万平米的写字楼冷却水系统配三台 45kW 水泵工频全开。实测供回水温差只有 2.1℃而设计温差是 5℃。这意味着实际水流量比需要的多了一倍以上冗余的流量既没让冷机多省电又把泵的功耗白白堆了上去。反直觉的结论在这里很多人默认冷却水温度压得越低越节能实际上在 35~40℃ 的冷凝温度区间里冷凝温度每降 1℃离心机 COP 只提升 2%~3%而把流量翻倍让水泵多跑的那部分功率经常比冷机省下的还多。节能控制真正的目标不是「让水温更低」而是让冷机、冷却水泵、冷却塔风机三者的总功率落到最低点。这套方案适合楼宇自控工程师、暖通运维负责人和做节能改造的集成商。下文从冷凝温度与 COP 的定量关系出发讲清定温差变流量、冷凝器逼近度控制和总功率寻优三种策略的适用边界再落到 PLC 选点、Modbus 采集、PID 整定与节能量核算能直接照着搭一套出来。2. 冷凝温度、温差与流量冷却水节能的定量边界冷却水系统的控制变量只有两个流量和温度。流量靠变频泵调温度靠冷却塔风机的风量调。两者都往下压会省冷机的电但都会多耗水泵或风机的电中间存在一个明确的最优点。找这个点之前先把三条定量关系算清楚。2.1 冷凝温度每降 1℃ 到底省多少电制冷循环里冷凝温度升高直接抬高压缩机压比单位制冷量的耗功随之上升。工程上常用的近似是离心机与螺杆机在额定工况附近冷凝温度每降低 1℃COP 提升约 2%~3%同时制冷量还有小幅增加。这个系数不是常数冷凝温度越低边际收益越小。要把它落到冷却水供水温度上需要串起三个温度关系冷凝温度 冷却水回水温度 冷凝器接近温度回水温度 供水温度 供回水温差冷凝器接近温度正常在 1~2℃冷凝器脏堵时会明显变大。冷凝温度 ℃相对 COP冷机输入功率相对值对应冷却水供水温度参考 ℃36.51.060.943037.51.030.973138.51.001.003239.50.971.033340.50.941.0634表中供水温度按供回水温差 5℃、冷凝器接近温度 1.5℃ 折算。常规设计的冷却水 32/37℃ 恰好落在冷凝温度 38.5℃ 附近也就是表里的基准点。低于这个点继续降温冷机的收益开始变缓而冷却塔风机要多做的功却在加速上涨。提示这张表只反映冷机侧收益。判断某个供水温度设定值是否真的节能必须把水泵和风机的功率一起加进来算总账。2.2 定温差变流量的三条硬约束定温差变流量是最稳妥的一档策略保持供回水温差恒定常见 5℃部分项目取 4℃ 或 6℃流量随冷负荷线性变化。负荷降到 60% 时流量降到 60%水泵功率按流量的 2.5~2.8 次方下降节电效果非常直接。但它有三条不能越过的约束。第一是最小流量约束。冷凝器管内流速低于某个值后污垢热阻上升、传热系数下降局部还可能产生气蚀。多数厂家要求冷却水流量不低于额定的 50%部分机型要求 60%。这个下限是硬联锁不能只靠软件判断。第二是最小流量下的高压保护。流量降过头冷凝压力和排气温度都会往上走一旦触发冷机高压报警停机整个系统反而更难运行。控制逻辑里必须把冷机的高压预警信号接进来做提前干预。第三是多台机组并联时的流量分配。三台机组共用一条供回水总管关掉一台泵以后离泵最远的那台冷凝器往往分到的流量最少。下限要按「最不利机组」的流量来定而不是按总管总流量。注意定温差控制不改变冷却水温度设定值它只把多余流量砍掉。想要温度侧也省出来需要再叠加上一节的供水温度寻优。2.3 冷却塔逼近度与湿球温度节能的物理天花板冷却水供水温度的下限由两个量决定室外湿球温度和冷却塔逼近度。逼近度是冷却塔出水温度与湿球温度之差常规逆流塔设计值 3~5℃通过加大风量、增加填料面积可以压到 2~3℃代价是风机功率按风量的高次方上涨。所以冷却水供水温度存在一条物理红线供水温度 ≥ 湿球温度 最小逼近度。控制的设定值一旦低于这条线风机只会满频空跑水温却降不下来纯属浪费。实操中我一般会用湿球温度做前馈把供水温度设定值的下限动态地顶到「湿球 3℃」以上。把冷机、水泵、风机三者的功率写在一起用一段小脚本扫一遍供水温度设定值最优点就出来了。下面这段代码里的系数都是示例值实际项目要用设备样本曲线或现场实测数据回归替换。# 冷却水供水温度设定值 - 冷机 水泵 冷却塔风机 总功率估算 # 系数为示例值实际项目请用设备样本曲线或实测数据回归替换 Q_LOAD 1200.0 # 当前冷负荷 kW W_PUMP_R 45.0 # 冷却水泵额定总功率 kW W_FAN_R 22.0 # 冷却塔风机额定总功率 kW COP_R 5.6 # 额定工况 COP对应冷凝温度 38.5℃ T_COND_R 38.5 # 额定冷凝温度 ℃ APP_COND 1.5 # 冷凝器接近温度冷凝温度 - 冷却水回水温度 ℃ DT_SET 5.0 # 定温差控制的温差设定 ℃ T_WB 28.0 # 室外湿球温度 ℃ APP_MIN 3.0 # 冷却塔允许的最小逼近度 ℃ APP_R 4.0 # 额定逼近度用于折算风机功率 ℃ def total_power(t_sup): app t_sup - T_WB # 当前逼近度 if app APP_MIN: # 触到物理下限判为不可行 return None t_cond t_sup DT_SET APP_COND # 由供水温度推冷凝温度 cop COP_R * (1 0.025 * (T_COND_R - t_cond)) p_chiller Q_LOAD / cop # 冷机输入功率 # 风机逼近度每压小一档风量要涨功率按逼近度反比的平方估算 p_fan W_FAN_R * (APP_R / app) ** 2.0 # 水泵定温差下流量由负荷决定此处负荷不变按额定取值 p_pump W_PUMP_R return p_chiller, p_pump, p_fan for t in range(29, 37): r total_power(float(t)) if r is None: print(f供水 {t}℃低于湿球{APP_MIN}℃不可行) continue print(f供水 {t}℃ 冷机 {r[0]:6.1f} 水泵 {r[1]:5.1f} f风机 {r[2]:5.1f} 合计 {sum(r):6.1f} kW)跑出来的曲线很有意思供水温度从 32℃ 降到 31℃冷机省下约 5kW风机却要多花 17kW合计反而多了 12kW而从 32℃ 抬到 33℃冷机多花 5.5kW风机省下 8kW合计下降约 2.5kW。最优点落在 33℃ 附近比常规设计值高 1℃。这说明「冷机最省」和「系统最省」不是一回事控制目标必须定义在总功率上。3. 冷却水循环控制系统的硬件配置与选点算法再好测点选错、信号接线不当控制回路照样跑不起来。冷却水侧的特点是温度信号弱、温差小、环境潮湿测点布置和信号质量决定了整套系统能保住多少理论节能收益。3.1 温度、流量、压差传感器的选型与安装位置温度是这套系统的核心被控量也是误差最难控制的一环。冷却水供回水温差只有 5℃ 左右如果两支传感器各自有 0.3℃ 的绝对误差温差测量就会有 12% 的相对误差控制回路直接失真。常见做法是选 Pt1000 三线制 A 级铂电阻配 PLC 的 RTD 专用模块而不是走变送器再进模拟量模块。同时供回水两支必须同批采购、同长度、同插入深度安装前做配对校准。测点规格精度量程安装位置信号类型冷却水供水温度Pt1000 三线 A 级±0.15℃0~50℃冷凝器入口总管上游直管段 ≥5DRTD冷却水回水温度Pt1000 三线 A 级±0.15℃0~50℃冷凝器出口汇管下游直管段 ≥3DRTD冷却水流量电磁流量计 0.5 级±0.5%按管径选回水总管前 5D 后 3D4~20mA冷凝器压差差压变送器±1%0~200kPa冷凝器进出水接管4~20mA室外湿球温度温湿度一体±0.3℃-20~60℃冷却塔进风侧背阴处离地 1.5m4~20mA温度传感器插入深度不小于管径的三分之一加装保护套管并填充导热油否则会出现明显的动态滞后。流量计装在回水侧而不是供水侧因为回水温度高、溶解气体少气泡干扰更小。湿球温度传感器不要贴在冷却塔出风侧那里的空气接近饱和测出来的是塔内状态而不是环境状态。3.2 PLC I/O 点表与变频器硬接线以西门子 S7-1200 加一块 RTD 模块为例冷却水系统的 I/O 点通常在三四十点左右。数字量用于状态反馈和连锁模拟量用于温度和频率。下面的点表是一套典型配置的节选。位号描述类型信号地址CWP1_RUN1# 冷却水泵运行反馈DI干接点I0.0CWP1_FLT1# 冷却水泵综合故障DI干接点I0.1CWP1_LOC1# 冷却水泵就地/远程DI干接点I0.2CWP1_CMD1# 冷却水泵启停指令DO继电器Q0.0CWP1_AO1# 冷却水泵频率给定AO4~20mAQW96CWP1_AI1# 冷却水泵频率反馈AI4~20mAIW64T_SUP冷却水供水温度AIPt1000IW66T_RET冷却水回水温度AIPt1000IW68F_CW冷却水瞬时流量AI4~20mAIW70CTF1_CMD1# 冷却塔风机启停DO继电器Q0.1接线上有两个容易踩坑的地方。频率给定统一用 4~20mA 而不是 0~10V长距离传输抗干扰能力差一个量级模拟量电缆屏蔽层必须单端接地接在 PLC 侧。启停指令和频率给定要分开走线不能指望通讯链路来停泵——通讯中断时泵停不下来是现场最不愿见到的情况。3.3 Modbus RTU 采集冷机与变频器运行数据控制算法需要冷机的实际输入功率和冷凝压力这些数据一般通过冷机自带的网关或变频器通讯口取。常见做法是 PLC 做主站变频器和冷机网关做从站走 RS-485 半双工19200bps、8 位数据、无校验、1 位停止位轮询周期 1 秒。调试阶段先用命令行工具确认从站通不通比在 PLC 里反复下载程序快得多# 从站号 3 的变频器读 4 个保持寄存器频率反馈、输出电流、母线电压、运行状态 # 参数含义以 mbpoll -h 输出为准不同版本略有差异 mbpoll -m rtu -b 19200 -P none -d 8 -s 1 -a 3 -t 4 -r 0 -c 4 /dev/ttyUSB0确认通了以后用脚本批量轮询多个从站把数据落到本地库里做趋势分析from pymodbus.client import ModbusSerialClient # 变频器常用寄存器0x0000 频率反馈(0.01Hz)、0x0001 输出电流(0.1A)、0x0002 母线电压(1V) # 不同 pymodbus 版本的关键字参数为 unit 或 slave按实际安装版本调整 client ModbusSerialClient( port/dev/ttyUSB0, baudrate19200, bytesize8, parityN, stopbits1, timeout0.5, ) client.connect() for unit in (1, 2, 3): rr client.read_holding_registers(address0, count3, slaveunit) if rr.isError(): # 单个从站掉线只记录日志不能因此让整个控制回路停机 print(f站号 {unit} 无响应本轮跳过) continue freq, cur, vdc rr.registers print(f站号 {unit} 频率 {freq / 100:.2f} Hz f电流 {cur / 10:.1f} A 母线 {vdc} V) client.close()寄存器地址的偏移方式各家变频器不同有的从 0 开始有的从 1 开始读回来的数明显不对时优先怀疑这一点。轮询失败的处理方式也很关键单台从站超时只记日志并保留上一次有效值不能让通讯故障直接把泵停掉那样冷机瞬间就没了冷却水。4. 控制算法落地从定温差 PID 到总功率寻优控制策略分三层从下往上分别是执行层的变频调节、回路层的温差与温度 PID、优化层的设定值寻优。三层各管各的不要混在一段逻辑里写否则一调参数全部乱套。4.1 定温差 PID 回路的整定与参数表冷却水侧的 PID 有两个回路水泵回路控供回水温差风机回路控供水温度。水泵回路是典型的慢过程——泵的频率变化几秒内就改变了流量但冷凝器和管路的热容会让温差在几分钟后才稳定下来。所以整定时比例增益要小、积分时间要长。反向作用必须接对温差小于设定值时应该降频而不是升频。输出范围一般限制在 25~50Hz 之间下限就是最小流量对应的频率上限就是工频。输出变化率再加一个 3Hz/s 的斜率限制避免频率突变引起水锤。回路被控量输出对象比例增益积分时间微分时间输出范围死区冷却水定温差供回水温差水泵频率0.25 Hz/℃180 s025~50 Hz±0.3℃冷却塔出水温度供水温度风机频率1.5 Hz/℃90 s00~50 Hz±0.5℃冷凝器压差保护进出水压差水泵频率上限只做限幅——动态上限—风机的积分时间比水泵短一半因为冷却塔的热惯性小、响应快。微分项一般不加冷却水温度信号本身的噪声不小加了微分之后频率会一直抖。下面是一个带抗积分饱和和输出限速的 PID 实现可以直接改成 PLC 里的功能块class PID: def __init__(self, kp, ti, out_min, out_max, deadband0.0, rate_limit3.0, reverseTrue): self.kp, self.ti kp, ti self.out_min, self.out_max out_min, out_max self.deadband deadband # 误差死区抑制频率抖动 self.rate_limit rate_limit # 输出变化率上限 Hz/s self.reverse reverse # True 表示被控量偏小则降输出 self.integral 0.0 self.last_out out_min def compute(self, sp, pv, ts): err sp - pv if abs(err) self.deadband: # 落在死区里冻结积分输出保持不变 return self.last_out p_term self.kp * err if self.ti 0: self.integral self.kp / self.ti * err * ts raw p_term self.integral if self.reverse: raw -raw # 反作用温差小 - 降频 out self.last_out raw * 0 # 占位见下方增量限速处理 out self.last_out (raw - self.last_out) * min(1.0, ts) out max(self.out_min, min(self.out_max, out)) # 抗积分饱和输出顶到边界且误差还在往里推时回退积分项 if (out self.out_max and err * (1 if self.reverse else -1) 0) or \ (out self.out_min and err * (1 if self.reverse else -1) 0): self.integral - self.kp / self.ti * err * ts # 输出限速每秒最多变化 rate_limit Hz delta out - self.last_out limit self.rate_limit * ts out self.last_out max(-limit, min(limit, delta)) self.last_out out return out参数含义上kp决定温差偏差 1℃ 对应输出多少 Hzti越大积分越慢deadband是唯一能压住频率来回抖的手段rate_limit保护管道和止回阀。抗积分饱和那一段不能省否则系统长时间偏离设定值后一旦回到调节区输出会猛地冲到上限。4.2 冷凝器逼近度判定与总功率爬山寻优定温差控制只解决流量冗余温度侧的节能要靠设定值寻优。这里有个比读冷机内部数据更省事的判据冷凝器接近温度。用冷机通讯口读到的冷凝压力换算出冷凝温度减去冷却水回水温度正常值在 1~2℃。这个值高于 2.5℃说明冷凝器换热管有水垢或流量不足此时应该先安排清洗而不是继续降频低于 1℃说明流量明显过剩水泵可以继续降频。它比单纯看温差更能反映冷凝器的真实工作状态。至于供水温度设定值的最优点工况每天都在变没法用一条固定曲线覆盖。实际项目里常用低速爬山法每 10~15 分钟对设定值做一次 0.5℃ 的小扰动总功率降了就沿同方向继续升了就反向。步长小、周期长是为了让系统先稳定下来再测功率。T_SET_MIN, T_SET_MAX 26.0, 34.0 # 设定值硬限幅 STEP 0.5 # 每次扰动幅度 ℃ T_SET 32.0 # 初始设定值 direction -1 # 先尝试降温方向 t_wb 28.0 # 由传感器实时更新 def measure_total_power(): 读冷机 水泵 风机的实时有功功率之和单位 kW。 实际项目走 Modbus / OPC UA 采集这里返回上一次采样均值。 return read_power_from_plc() def optimize(t_set, direction, last_power): # 湿球温度前馈设定值必须高于「湿球 3℃」否则风机白跑 lower max(T_SET_MIN, t_wb 3.0) t_new t_set direction * STEP if not (lower t_new T_SET_MAX): return t_set, -direction, last_power # 触边界就掉头 write_setpoint_to_plc(t_new) wait_stable(minutes12) # 等系统稳定再采样 power measure_total_power() if last_power is None or power last_power - 1.0: return t_new, direction, power # 有改善继续同方向 return t_set, -direction, power # 无改善回退并反向寻优的边界条件比算法本身更重要。上边界不能超过冷机能接受的最高冷却水温度一般 34℃ 左右看机型下边界由湿球温度加最小逼近度决定中间还要受冷凝器接近温度约束。任何一次扰动都必须让冷机的高压、排气温度和电流保持在安全范围内一旦逼近报警值就立刻放弃本次寻优并锁定当前设定值。4.3 泵组加减机与冷却塔风机的联动逻辑单台泵变频只在负荷变化不大的场景成立多台泵并联时还要处理加减机。判据是频率而非温差因为频率已经包含了温差信息。加载条件是频率升到 48Hz 以上并持续 10 分钟减载条件是频率降到 30Hz 以下并持续 15 分钟减载后 5 分钟内禁止再加这是防振荡的最基本设置。动作触发条件持续时间附加约束加泵运行泵频率 ≥ 48Hz10 min备用泵无故障、已轮换到期减泵运行泵频率 ≤ 30Hz15 min减后仍满足最小流量加冷却塔风机供水温度高于设定值 1℃8 min优先于加泵动作停冷却塔风机供水温度低于设定值 -1℃湿球 12℃20 min保留一台防冻循环水泵轮换累计运行 168 h—在低负荷时段切换联动顺序上我一般让冷却塔风机先动、水泵后动。因为风机的调节范围大、响应快而且冷却水温度本身主要由冷却塔决定先把温度压住再考虑流量。反过来先加泵流量上去了温差反而缩小控制回路会被带偏。冬季工况要单独写一段逻辑。湿球温度低于 12℃ 时冷却塔可以只靠自然通风把水温降到设定值以下风机可以全停只保留一台做防冻循环。此时供水温度设定值的下限也要相应放开到 20℃ 左右否则风机一停温度就超限逻辑会反复启停。5. 能耗基线、节能量核验与三个高频坑5.1 能耗基线要按湿球温度和负荷率归一化改造前后各跑一周然后比总电费这种做法在行业里几乎没人认因为两周的天气和负荷不可能一样。能做数的做法是建回归模型用改造前 3~6 个月的历史数据把单位冷量能耗表示成湿球温度和负荷率的函数再用改造后落在同一工况区间的数据代入对比。-- 按湿球温度 1℃、负荷率 10% 分箱统计改造前的单位冷量能耗基线 SELECT FLOOR(t_wb) AS wb_bin, -- 湿球温度分箱 FLOOR(load_rate * 10) / 10 AS load_bin, -- 负荷率分箱 COUNT(*) AS samples, AVG(kw_total) AS avg_kw, AVG(kw_total / cooling_load_rt) AS kw_per_rt -- 单位冷量能耗 FROM chiller_hourly WHERE ts 2024-05-01 AND ts 2024-10-01 AND t_wb BETWEEN 20 AND 30 -- 只保留有代表性的夏季工况 AND cooling_load_rt 0 GROUP BY FLOOR(t_wb), FLOOR(load_rate * 10) / 10 HAVING COUNT(*) 30 -- 样本太少的箱子不参与对比 ORDER BY wb_bin, load_bin;分箱粒度取 1℃ 和 10%是为了保证每个箱子里有足够的样本量。改造后用同样的分箱方式统计逐箱对比再按各箱的冷量占比加权才是可信的节能量。逐箱对比还能看出节能到底来自哪里低负荷率区间省得多说明变流量起了作用高湿球温度区间省得多说明冷却塔侧优化有效。5.2 现场最容易踩的三个坑第一个是温差测不准。供回水两支 Pt1000 没有配对各自偏差 0.3℃温差 2℃ 时相对误差就有 15%控制回路会把泵的转速算错一大截。解决办法是安装前做冰水浴配对把偏差记录进 PLC 做补偿成本几乎为零。第二个是最小流量保护只做在软件里。变频降频到 25Hz冷凝器流速不足运行一两周后高压报警。流量下限和压差下限必须做成硬联锁直接切进变频器的多段速端子或急停回路不能只靠程序判断。第三个是水泵 PID 和风机 PID 抢同一个被控量。两个回路都盯着回水温度一个降频一个升频频率就会低频振荡。处理方式是明确主从风机回路快、水泵回路慢两者积分时间拉开 2 倍以上并给风机回路加更宽的死区。5.3 一次现场实测的交替对比法如果项目周期紧、历史数据不全可以用交替对比法快速拿到一个有说服力的数字。做法是在同一天里把系统在「定频运行」和「优化运行」之间来回切按 ABAB 顺序取四组数据每组跑满 40 分钟中间留 10 分钟过渡期丢弃不采。测量点只取三个冷机输入功率、冷却水泵输入功率、冷却塔风机输入功率用同一台带电能质量分析的三相功率表1 秒采样取每组的 15 分钟滑动平均。四组数据两两配对求差值再平均天气漂移在正反两个方向上相互抵消剩下的就是控制策略本身的贡献。这个方法测出来的节电率通常比全年回归法保守 3~5 个百分点但胜在当场就能出结果甲方站在配电室门口就能看到数。本文还有配套的精品资源点击获取