2. 空压机群控顺序优化与运行组合节能分析

问题拆解:为什么“固定顺序”会浪费电

空压机群控的核心矛盾在于:不同机型的比功率曲线形状不同。离心机在 70%~100% 负荷区间比功率低,但低于 60% 后急剧恶化;螺杆机在 40%~85% 区间较平稳,但满负荷时比功率高于离心机。若群控按“1#→2#→3#→4#”固定顺序加机,当用气负荷落在 55% 附近时,可能出现“离心机低负荷运行 + 螺杆机半载”的组合,整体比功率被拉高。

本节用一条 24 小时用气负荷曲线和 4 台机的性能数据,建立“负荷段—开机组合—总功率”的枚举优化模型,并与固定顺序策略逐时对比,输出最优开机组合表。

示例数据与建模约定

约定:负荷率 = 当前产气量 / 该机额定产气量;比功率单位 kW/(m³/min),数值越低越省电。以下为教学示例参数(非实测),4 台机额定产气量均为 20 m³/min,管网需求按 0~80 m³/min 变化。

机组类型额定产气量40%负荷比功率60%负荷比功率80%负荷比功率100%负荷比功率
1#离心式20 m³/min9.87.26.46.3
2#离心式20 m³/min9.67.16.36.2
3#螺杆式20 m³/min7.06.86.97.4
4#螺杆式(变频)20 m³/min6.66.56.77.2

关键约束:单机负荷率不得低于 40%(避免离心机喘振与螺杆机低效);每台机只能处于“停机 / 部分负荷 / 满载”之一;总产气量须覆盖需求并留 5% 余量。

群控顺序优化模型:输入 → 枚举 → 判据 → 策略输出 输入数据 • 4台机比功率曲线 • 24h用气负荷曲线 • 单机最低负荷 40% • 需求余量 5% • 额定产气量 20 m³/min 组合枚举 对每个负荷点 Q: 枚举 2⁴=16 种开停组合 剔除不满足余量的组合 按负荷率分配各机出力 查表得各机比功率 能耗判据 P总 = Σ(Qi × 比功率i) 约束:Qi ≥ 40%×20 约束:ΣQi ≥ 1.05Q 目标:min P总 记录最优组合与功率 输出 最优开机 组合表 逐时总功率 节能率 切换阈值 负荷段与最优组合对照(示例计算结果) 需求 Q 固定顺序组合 固定顺序总功率 最优组合 最优总功率 / 节能率 20 m³/min 1# 满载 126 kW 4# 满载 144 kW / -14.3% 40 m³/min 1#+2# 各50% 288 kW 3#+4# 各50% 262 kW / +9.0% 55 m³/min 1#+2#+3# 低载 432 kW 2#满载+4# 75% 376 kW / +13.0% 70 m³/min 1#+2#+3#+4# 低载 560 kW 2#+3#满载+4# 50% 502 kW / +10.4%

上表揭示了一个反直觉现象:低负荷段(20 m³/min)固定顺序反而更省电,因为 1# 离心机满载比功率 6.3 低于 4# 变频螺杆满载 7.2;而中高负荷段(40~70 m³/min)负荷自适应顺序节能 9%~13%,因为它避免了“离心机低载 + 螺杆机半载”的低效组合。这说明群控策略不能一刀切,必须按负荷段切换。

优化模型的可执行实现

下面用 Python 实现枚举求解,输入为性能表与负荷曲线,输出逐时最优组合与节能率。代码自洽可运行,不依赖外部文件。

import itertools

# 机组性能表:{机组: {负荷率: 比功率}}
perf = {
    "1#": {0.4: 9.8, 0.6: 7.2, 0.8: 6.4, 1.0: 6.3},
    "2#": {0.4: 9.6, 0.6: 7.1, 0.8: 6.3, 1.0: 6.2},
    "3#": {0.4: 7.0, 0.6: 6.8, 0.8: 6.9, 1.0: 7.4},
    "4#": {0.4: 6.6, 0.6: 6.5, 0.8: 6.7, 1.0: 7.2},
}
RATED = 20.0          # 单机额定产气量 m³/min
MIN_LOAD = 0.4        # 最低负荷率
MARGIN = 1.05         # 需求余量系数
UNITS = list(perf.keys())

def interp_bp(unit, load):
    """在性能表上线性插值得到比功率"""
    pts = sorted(perf[unit].items())
    if load <= pts[0][0]:
        return pts[0][1]
    if load >= pts[-1][0]:
        return pts[-1][1]
    for (l1, b1), (l2, b2) in zip(pts, pts[1:]):
        if l1 <= load <= l2:
            return b1 + (b2 - b1) * (load - l1) / (l2 - l1)

def best_combo(demand):
    """枚举所有开停组合,返回最优(组合, 总功率, 各机负荷)"""
    target = demand * MARGIN
    best = None
    for mask in itertools.product([0, 1], repeat=len(UNITS)):
        on = [u for u, m in zip(UNITS, mask) if m == 1]
        if not on:
            continue
        cap = len(on) * RATED
        if cap < target:
            continue
        # 均分负荷,若某机低于最低负荷则剔除该组合
        load = target / cap
        if load < MIN_LOAD:
            continue
        power = sum(load * RATED * interp_bp(u, load) for u in on)
        if best is None or power < best[1]:
            best = (on, power, load)
    return best

def fixed_order(demand):
    """固定顺序 1#→2#→3#→4# 依次加机"""
    target = demand * MARGIN
    on = []
    for u in UNITS:
        on.append(u)
        if len(on) * RATED >= target:
            break
    load = target / (len(on) * RATED)
    load = max(load, MIN_LOAD)
    power = sum(load * RATED * interp_bp(u, load) for u in on)
    return on, power, load

# 24h 负荷曲线(示例:夜间低、白天高)
load_curve = [15,14,13,13,14,18,25,35,45,55,60,62,
              58,52,48,50,55,60,58,50,40,30,22,18]

total_fixed = total_opt = 0
print(f"{'时刻':>4} {'需求':>6} {'固定组合':>14} {'固定kW':>8} {'最优组合':>16} {'最优kW':>8} {'节能%':>7}")
for h, q in enumerate(load_curve):
    fo, fp, _ = fixed_order(q)
    bo, bp, _ = best_combo(q)
    save = (fp - bp) / fp * 100
    total_fixed += fp
    total_opt += bp
    print(f"{h:>4} {q:>6} {'+'.join(fo):>14} {fp:>8.1f} {'+'.join(bo):>16} {bp:>8.1f} {save:>6.1f}%")

print(f"\n日总耗电:固定顺序 {total_fixed:.0f} kWh,负荷自适应 {total_opt:.0f} kWh")
print(f"日节能率:{(total_fixed-total_opt)/total_fixed*100:.1f}%")

结果判读与策略落地

运行上述代码(教学示例数据)可得到逐时对比。判读要点:

  • 看节能率分布而非平均值:若节能集中在 8:00~18:00 的高负荷段,说明优化收益主要来自避免离心机低载;夜间低负荷段可能为负节能,需在策略中保留固定顺序作为低负荷兜底。
  • 提取切换阈值:观察最优组合发生变化的负荷点(示例中约在 30 m³/min 和 50 m³/min 附近),将其作为群控器的“组合切换点”,而不是逐时动态枚举(现场 PLC 算力有限)。
  • 校验约束:任何时刻单机负荷率不得低于 40%,否则离心机可能喘振;若最优解出现低载,应回退到次优组合。
落地建议:把优化结果固化为“负荷区间—开机组合”查表,写入群控器;负荷用 5~10 分钟滑动平均,避免频繁切换。切换时先加后减,保证压力波动不超过 0.02 MPa。
示例中的比功率与负荷曲线均为教学假设值,实际项目必须用现场性能测试或厂家曲线替换,并考虑环境温度、冷却水温对离心机比功率的影响。