1. 虚拟电厂与多时间尺度调度概述
虚拟电厂(Virtual Power Plant, VPP)作为分布式能源资源聚合运营的新型模式,正在重塑现代电力系统的运行方式。与传统电厂不同,VPP通过先进的信息通信技术和智能控制手段,将地理上分散的分布式电源、储能系统和可控负荷等资源聚合起来,形成一个特殊的电厂参与电力市场和电网运行。
多时间尺度调度是VPP运行的核心技术之一。在实际运行中,VPP需要同时应对:
- 日前市场的竞价决策(24小时前)
- 日内滚动调整(4小时前)
- 实时平衡控制(15分钟前)
- 秒级频率响应
这种分层递进的调度架构,使得VPP能够充分利用不同时间尺度的可控资源特性。例如,燃气轮机适合参与日前市场,电池储能更适合实时调节,而空调负荷群则可用于分钟级的频率响应。
关键点:多时间尺度调度的本质是根据不同资源的响应特性,将其分配到最适合的时间层级进行优化,形成时空互补的协同效应。
2. 储能系统容量衰减建模
2.1 容量衰减机理分析
锂离子电池作为当前VPP中最主流的储能介质,其容量衰减主要受三个机制影响:
-
循环老化:与充放电深度(DOD)、循环次数直接相关
- 经验公式:Q_loss = a·N^b·exp(c·DOD)
(其中a,b,c为电池特性参数,N为等效循环次数)
- 经验公式:Q_loss = a·N^b·exp(c·DOD)
-
日历老化:随时间发生的自然衰减
- Arrhenius模型:Q_loss = A·exp(-Ea/RT)·t^n
(Ea为活化能,T为温度,t为时间)
- Arrhenius模型:Q_loss = A·exp(-Ea/RT)·t^n
-
工况应力:包括:
- 高倍率充放电导致的局部过热
- 过充/过放引发的SEI膜增厚
- 温度梯度引起的电极不均匀老化
2.2 衰减模型实现方法
在Matlab中实现衰减模型时,推荐采用模块化建模方式:
matlab复制function [SOH] = battery_degradation(SOC_hist, Temp_hist, params)
% SOC_hist: 历史SOC曲线(0-1)
% Temp_hist: 历史温度曲线(℃)
% params: 电池参数结构体
% 循环老化计算
DOD = max(SOC_hist) - min(SOC_hist);
cycle_loss = params.a * params.cycles^params.b * exp(params.c*DOD);
% 日历老化计算
temp_kelvin = Temp_hist + 273.15;
arrhenius = params.A * exp(-params.Ea./(params.R*temp_kelvin));
calendar_loss = sum(arrhenius .* params.time_step.^params.n);
SOH = 1 - (cycle_loss + calendar_loss);
end
实测建议:对于不同电池类型,建议通过厂家提供的衰减数据拟合参数。宁德时代LFP电池的典型参数为:a=2e-5, b=0.5, c=0.8, Ea=30000 J/mol
3. 多用户负荷灵活性建模
3.1 负荷分类与特性
VPP中的可调负荷可分为三大类:
| 负荷类型 | 响应时间 | 持续时间 | 可调幅度 | 典型代表 |
|---|---|---|---|---|
| 刚性负荷 | 不可调 | - | - | 照明、电梯 |
| 可转移负荷 | 15min-4h | 2-8h | 100% | 洗衣机、电动汽车充电 |
| 可中断负荷 | 秒级-分钟级 | 0.5-2h | 30-70% | 空调、工业制冷 |
| 可调节负荷 | 分钟级 | 连续 | 10-30% | 变频水泵、通风系统 |
3.2 灵活性量化方法
采用"负荷灵活性包络"描述用户的调节能力:
matlab复制classdef FlexibilityEnvelope
properties
P_max % 最大可上调功率
P_min % 最大可下调功率
ramp_up % 上调速率 (kW/min)
ramp_down % 下调速率 (kW/min)
duration % 可持续时间
cost % 调节成本系数
end
methods
function obj = FlexibilityEnvelope(profile)
% 从历史数据提取灵活性参数
obj.P_max = max(profile.flex_up);
obj.P_min = max(profile.flex_down);
obj.ramp_up = mean(diff(profile.ramp_up));
% ...其他参数计算
end
end
end
实际项目中,建议通过智能电表数据+用户问卷调查相结合的方式获取初始参数,再通过实际调节测试进行校准。
4. 多时间尺度优化模型
4.1 分层优化架构
建立三层优化模型:
-
日前层(24h前瞻)
- 目标:最小化总运行成本
- 约束:机组组合、网络拓扑、市场规则
- 时间分辨率:1h
- 求解方法:混合整数线性规划(MILP)
-
日内层(4h滚动)
- 目标:修正预测偏差
- 约束:爬坡速率、储能SOC连续
- 时间分辨率:15min
- 求解方法:二次规划(QP)
-
实时层(15min前瞻)
- 目标:功率平衡+储能寿命优化
- 约束:频率偏差、电压波动
- 时间分辨率:1min
- 求解方法:模型预测控制(MPC)
4.2 Matlab实现要点
核心代码结构建议如下:
matlab复制%% 主调度循环
for t = 1:total_steps
% 实时数据采集
[load_actual, pv_actual] = SCADA_interface();
% 预测更新
if mod(t,96)==1 % 每天零点更新日前计划
day_ahead_plan = DA_optimizer(forecast);
end
if mod(t,16)==1 % 每4小时滚动优化
intraday_plan = ID_optimizer(day_ahead_plan, forecast);
end
% 实时控制
real_time_dispatch = MPC_controller(intraday_plan, load_actual);
% 执行控制命令
execute_dispatch(real_time_dispatch);
% 更新储能健康状态
battery_SOH = update_degradation(battery_SOC_history);
end
关键调试技巧:
- 使用
parfor并行计算不同场景 - 用
persistent变量保持优化器状态 - 采用稀疏矩阵处理大规模约束
5. 完整案例实现
5.1 测试系统配置
构建含以下资源的测试VPP:
| 资源类型 | 容量 | 数量 | 参数 |
|---|---|---|---|
| 光伏电站 | 5MW | 2 | 预测误差σ=15% |
| 风电 | 3MW | 1 | 预测误差σ=25% |
| 锂电储能 | 2MW/4MWh | 3 | SOH初始值95% |
| 可调负荷 | 1.5MW | 50 | 灵活性系数0.3 |
| 可中断负荷 | 0.8MW | 30 | 最小中断时长2h |
5.2 调度结果分析
运行24小时调度的关键指标:
| 指标 | 不考虑衰减 | 考虑衰减 | 变化率 |
|---|---|---|---|
| 总运行成本(元) | 28,450 | 29,120 | +2.4% |
| 储能容量衰减(%) | - | 0.15 | - |
| 可再生能源消纳率(%) | 92.3 | 91.8 | -0.5% |
| 负荷中断次数 | 6 | 4 | -33% |
结果显示:考虑容量衰减后,调度策略会主动:
- 减少储能的深度充放电循环
- 增加负荷调节的频次但降低单次幅度
- 更平滑的功率过渡曲线
5.3 关键可视化代码
生成调度结果对比图:
matlab复制figure('Position',[100,100,900,600])
subplot(3,1,1)
plot(time, P_gen1, 'b', time, P_gen2, 'r--')
legend('不考虑衰减','考虑衰减')
ylabel('发电功率(MW)')
subplot(3,1,2)
stairs(time, SOC, 'LineWidth',1.5)
ylabel('SOC(%)')
subplot(3,1,3)
bar(time, degradation_rate*100, 'FaceAlpha',0.5)
ylabel('衰减速率(%/h)')
xlabel('时间(h)')
6. 工程实践建议
-
参数校准优先
- 储能衰减参数必须通过实测循环测试获取
- 负荷灵活性参数建议采用聚类分析(k-means)对用户分类
-
求解效率优化
- 对MILP问题使用
intlinprog的初始解启发式策略 - 对QP问题启用
quadprog的活动集算法 - 考虑将24小时问题分解为4个6小时子问题
- 对MILP问题使用
-
实际部署注意事项
- 建立衰减模型的在线更新机制
- 设置调度指令的软过渡带(±5%死区)
- 开发可视化监控界面实时显示SOH变化
-
扩展研究方向
- 加入电池温度场的耦合建模
- 考虑需求响应的用户舒适度约束
- 研究基于强化学习的自适应调度策略
