第四章:削峰填谷控制策略
各位工程师朋友,咱们今天聊点实在的。削峰填谷这个事儿,说白了就是跟电力负荷“打太极”——高峰时让它下来点,低谷时让它上去点。我做了这么多年能源管理,发现很多同行一上来就追求高大上的算法,结果项目落地时处处碰壁。其实啊,控制策略的选择,关键看你的场景和资源。
我个人习惯把控制策略分成三大类:基于规则的、基于优化的、以及混合策略。咱们一个一个拆开讲。
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或动态规划做精细调度
- 紧急情况:用阈值控制做安全保护
- 固定时段:用定时策略做基础框架
举个例子。我在一个数据中心项目里,设计了这样的混合策略:
- 基础层:定时策略,设定凌晨充电、白天放电的基本框架
- 优化层:MPC每15分钟滚动优化,调整充放电功率
- 保护层:阈值控制,当负荷超过变压器容量时强制放电
这样三层叠加,既保证了安全性,又提升了经济性。最终该项目年节省电费约120万元。
混合策略的核心原则:
- 规则策略做“保底”,确保系统不越界
- 优化策略做“提效”,追求最优经济性
- 各层之间要有优先级,保护层优先级最高
知识体系总览
下面这张图是我自己画的,把本章的核心逻辑串起来了。你一看就明白:
好了,这一章的内容就到这里。控制策略的选择没有标准答案,关键看你的项目场景和数据条件。下一章咱们聊聊具体的工程实现细节,包括硬件选型和通信协议这些实战内容。
公众号:蓝海资料掘金营,微信deep3321