第四章:削峰填谷控制策略

各位工程师朋友,咱们今天聊点实在的。削峰填谷这个事儿,说白了就是跟电力负荷“打太极”——高峰时让它下来点,低谷时让它上去点。我做了这么多年能源管理,发现很多同行一上来就追求高大上的算法,结果项目落地时处处碰壁。其实啊,控制策略的选择,关键看你的场景和资源。

我个人习惯把控制策略分成三大类:基于规则的、基于优化的、以及混合策略。咱们一个一个拆开讲。

4.1 基于规则的控制策略

这类策略最接地气,也最容易上手。说白了就是“如果……那么……”的逻辑判断。我刚开始做储能项目时,用的就是这类方法。

4.1.1 定时充放策略

这个最简单。比如设定晚上10点到早上6点充电,白天10点到下午4点放电。为什么这么设?因为电价峰谷时段通常就是这样。

核心逻辑:根据历史电价曲线,固定时间窗口执行充放电。

我在项目中遇到过一个问题:某工厂的负荷曲线跟电网峰谷时段不完全重合。他们晚上8点还在加班,结果储能系统按设定时间开始充电,反而增加了高峰期的用电压力。嗯,这里要注意——定时策略只适用于负荷曲线与电价曲线高度匹配的场景

// 伪代码示例:定时充放策略
if (currentTime >= 22:00 && currentTime <= 06:00) {
    startCharging(power = maxPower);
} else if (currentTime >= 10:00 && currentTime <= 16:00) {
    startDischarging(power = maxPower);
} else {
    standby();
}

4.1.2 阈值控制策略

这个比定时策略灵活一些。你设定一个功率阈值,比如“当负荷超过800kW时开始放电,低于400kW时开始充电”。

我曾经在一个商业综合体项目里用过这个策略。效果不错,但有个坑——阈值设得太死板,容易导致系统频繁启停。你想想看,负荷在790kW到810kW之间波动时,储能系统一会儿充一会儿放,设备寿命受影响不说,效率也低。

避坑指南:我曾经因为阈值设置太窄,导致储能系统一天启停30多次。后来加了滞回区间(比如放电阈值800kW,停止放电阈值750kW;充电阈值400kW,停止充电阈值450kW),问题才解决。

// 伪代码示例:带滞回的阈值控制
if (loadPower > 800 && !isDischarging) {
    startDischarging();
} else if (loadPower < 750 && isDischarging) {
    stopDischarging();
}

if (loadPower < 400 && !isCharging) {
    startCharging();
} else if (loadPower > 450 && isCharging) {
    stopCharging();
}

4.2 基于优化的控制策略

规则策略虽然简单,但面对复杂场景时往往力不从心。这时候就需要上优化算法了。说白了,就是让计算机帮你算“什么时候充、什么时候放、充多少、放多少”才能最省钱。

4.2.1 动态规划

动态规划的核心思想是“把大问题拆成小问题”。对于储能调度来说,就是把一天的调度周期拆成若干个时段,每个时段做一次决策。

我记得有一次给一个工业园区做方案,他们装了2MW/8MWh的储能系统。用动态规划算出来的策略,比定时策略节省了约15%的电费。为什么?因为动态规划能考虑到未来几个小时的负荷变化和电价波动。

动态规划的核心公式:

V(t, s) = min{ C(t, a) + V(t+1, s') }

其中t是时段,s是储能荷电状态,a是充放电动作,C是即时成本。

# Python示例:动态规划求解储能调度
def dp_schedule(load_forecast, price_forecast, battery_capacity):
    # 初始化价值函数
    V = [[float('inf')] * (battery_capacity + 1) for _ in range(T+1)]
    V[T][:] = 0
    
    # 逆向递推
    for t in range(T-1, -1, -1):
        for soc in range(battery_capacity + 1):
            for action in actions:
                next_soc = soc + action
                if 0 <= next_soc <= battery_capacity:
                    cost = action * price_forecast[t]
                    V[t][soc] = min(V[t][soc], cost + V[t+1][next_soc])
    
    return V[0][initial_soc]

4.2.2 模型预测控制(MPC)

MPC是我个人比较偏爱的方法。它跟动态规划最大的区别是:MPC会滚动优化,每走一步就重新算一次。

你想想看,动态规划算完一次就定死了,但实际负荷和电价是实时变化的。MPC的好处就是能不断修正策略。我在一个光伏+储能的项目里用了MPC,效果比动态规划又好了5%左右。

实战技巧:MPC的预测时域一般设4-6小时就够了。太长了预测不准,太短了优化效果有限。我一般设5小时,步长15分钟。

# Python示例:MPC滚动优化框架
def mpc_step(current_soc, load_history, price_history):
    # 更新预测模型
    load_pred = predict_load(load_history)
    price_pred = predict_price(price_history)
    
    # 求解优化问题(这里用线性规划)
    result = solve_linear_program(current_soc, load_pred, price_pred)
    
    # 只执行第一个动作
    action = result[0]
    return action

4.3 混合策略设计思路

说实话,在实际项目中,我很少只用一种策略。为什么?因为每种策略都有它的适用场景。

我的习惯是:用规则策略兜底,用优化策略提效。具体来说:

  • 日常运行:用MPC或动态规划做精细调度
  • 紧急情况:用阈值控制做安全保护
  • 固定时段:用定时策略做基础框架

举个例子。我在一个数据中心项目里,设计了这样的混合策略:

  1. 基础层:定时策略,设定凌晨充电、白天放电的基本框架
  2. 优化层:MPC每15分钟滚动优化,调整充放电功率
  3. 保护层:阈值控制,当负荷超过变压器容量时强制放电

这样三层叠加,既保证了安全性,又提升了经济性。最终该项目年节省电费约120万元。

混合策略的核心原则:

  • 规则策略做“保底”,确保系统不越界
  • 优化策略做“提效”,追求最优经济性
  • 各层之间要有优先级,保护层优先级最高

知识体系总览

下面这张图是我自己画的,把本章的核心逻辑串起来了。你一看就明白:

削峰填谷控制策略知识体系 基于规则的控制 基于优化的控制 混合策略 定时充放策略 阈值控制策略 动态规划 模型预测控制(MPC) 规则兜底 + 优化提效 三层叠加设计 核心要素:负荷预测 | 电价曲线 | 储能状态 | 设备约束 选择策略时的考量因素 场景复杂度 → 规则策略 → 优化策略 → 混合策略 数据质量 → 历史数据充足用优化,数据不足用规则

好了,这一章的内容就到这里。控制策略的选择没有标准答案,关键看你的项目场景和数据条件。下一章咱们聊聊具体的工程实现细节,包括硬件选型和通信协议这些实战内容。


公众号:蓝海资料掘金营,微信deep3321