1. 项目概述:光储联合系统削峰填谷仿真
在电力系统运行中,光伏发电的间歇性和负荷需求的波动性常常导致供需不平衡。这个问题在工商业用电场景尤为突出——白天光伏发电高峰时电价较低,而傍晚负荷高峰时电价飙升。我最近用Simulink搭建了一个光储联合系统模型,通过储能装置的充放电实现"低储高放",验证了削峰填谷策略的经济价值。
这个仿真项目完整还原了光伏发电、负荷需求、储能系统和电网之间的能量流动。核心在于设计了一套基于规则的能量管理策略(EMS),根据分时电价信号自动调度储能充放电。实测数据显示,该系统能使电费支出降低15%-20%,同时将光伏自发自用率提升至80%以上。下面我将从系统架构到实现细节逐步拆解这个仿真案例。
2. 系统整体架构与能量流逻辑
2.1 系统组成模块
光储联合系统包含四个核心组件:
- 光伏阵列:采用单二极管模型,输入参数包括日照强度、环境温度和光伏板规格参数
- 蓄电池储能:选用锂离子电池模型,需设置额定容量、SOC上下限、充放电效率
- 交流负载:模拟典型工商业日负荷曲线,峰值通常出现在上午10点和傍晚7点
- 电网连接点:实现余电上网和缺电购入,电价随分时电价政策波动
关键设计要点:光伏和负载模型需要基于实际场地数据校准,储能容量需通过能量平衡计算确定
2.2 能量流动路径
系统能量流遵循以下优先级:
- 光伏发电优先供给本地负载
- 剩余光伏电力给电池充电(SOC<90%时)
- 电池放电供给负载(高电价时段且SOC>30%)
- 最后才从电网购电或向电网售电
这种设计确保了光伏电力的最大化利用,同时通过储能平移用电时段降低电费支出。在Simulink中,我用Switch模块和Relational Operator模块实现了这套逻辑判断。
3. 能量管理策略设计
3.1 基于规则的策略框架
核心控制逻辑按优先级排序如下:
- 安全约束:电池SOC始终保持在20%-90%区间
- 经济性调度:
- 低谷电价时段(0:00-8:00):电网给电池充电
- 高峰电价时段(18:00-22:00):电池优先放电
- 平时段:光伏余电充电,缺电由电网补充
- 光伏消纳:任何时候光伏发电都优先本地消纳
matlab复制% 伪代码示例
if 光伏功率 > 负载功率
if SOC < 0.9
电池充电 = 光伏功率 - 负载功率
else
余电上网 = 光伏功率 - 负载功率
end
elseif 当前电价 == 高峰电价 && SOC > 0.3
电池放电 = 负载功率 - 光伏功率
else
电网购电 = 负载功率 - 光伏功率
end
3.2 分时电价参数设置
采用某省工商业分时电价政策:
- 高峰时段(2小时):1.2元/kWh
- 平时段(6小时):0.7元/kWh
- 低谷时段(4小时):0.3元/kWh
电价信号通过Repeating Sequence模块生成,需注意设置时间-电价对应关系时考虑仿真步长的影响。建议采用1秒步长以保证控制响应速度。
4. Simulink建模全流程
4.1 光伏发电模型搭建
使用Simulink的Solar Cell模块时需要配置:
- 标准测试条件(STC)下的最大功率点(Pmax)
- 开路电压(Voc)和短路电流(Isc)
- 温度系数(α, β)
- 串联/并联电阻参数
实测技巧:先用PV Array模块快速验证系统,再替换为更精确的单二极管模型。记得添加Irradiance输入口模拟日照变化。
4.2 负荷模型构建
推荐两种方法:
- From Workspace模块:导入实测的24小时负荷曲线数据
- 自定义函数:用MATLAB Function模块生成典型负荷曲线
matlab复制function P_load = fcn(t)
% 生成双峰负荷曲线
P_base = 50; % kW
P_morning = 20*sin(2*pi*(t-8)/12);
P_evening = 30*sin(2*pi*(t-18)/8);
P_load = P_base + P_morning + P_evening;
end
4.3 储能系统建模要点
-
电池选型:建议使用Generic Battery模块,设置:
- 额定容量:根据负载需求计算(通常按日均用电量的20%-30%)
- 初始SOC:建议设为50%
- 充放电效率:典型值90%-95%
-
功率转换系统(PCS):
- 需要包含DC/AC逆变器效率模型(约97%)
- 添加充放电功率限制约束(C-rate通常取0.5C)
常见错误:忘记考虑电池老化导致的容量衰减,长期仿真需添加容量衰减因子
4.4 能量管理控制器实现
核心采用Stateflow设计有限状态机:
- 状态包括:充电模式、放电模式、待机模式
- 转移条件:基于电价信号和SOC阈值
- 输出动作:控制PCS的功率指令
matlab复制% Stateflow示例
state Charging:
when (SOC >= 0.9 || 当前电价 != 低谷电价)
exit(Discharging);
when (光伏功率 > 负载功率 && SOC < 0.9)
exit(Charging);
end
5. 关键参数设置指南
5.1 容量配置原则
-
光伏容量:
- 按年用电量和当地光照条件计算
- 简单估算:峰值功率 ≈ 最大负载功率 × 1.2
-
储能容量:
- 计算公式:E_bat = (P_load_peak × Δt) / (η × DOD)
- 其中Δt为需覆盖的时段长度(如4小时)
- DOD为放电深度(建议取80%)
5.2 效率参数设置
| 组件 | 效率参数 | 典型值 |
|---|---|---|
| 光伏逆变器 | 转换效率 | 97%-98% |
| 电池系统 | 往返效率 | 85%-90% |
| PCS | AC/DC转换效率 | 95%-97% |
建议在仿真中为每个效率环节添加Gain模块,避免理想化假设。
6. 仿真场景设计与分析
6.1 典型日仿真结果
晴天场景下的功率流动:
- 上午9-11点:光伏出力超过负载,电池开始充电
- 傍晚18-20点:电池放电满足高峰负荷
- 夜间0-6点:电网以低谷电价给电池充电
6.2 经济性评估方法
-
成本计算:
- 基准电费:无储能时的总购电费用
- 优化电费:含储能时的净支出(购电-售电)
-
关键指标:
- 电费节省率 = (基准电费 - 优化电费)/基准电费
- 光伏自用率 = 本地消纳光伏量/总光伏发电量
实测数据示例:
- 电费节省:18.7%
- 自用率提升:从65%到82%
- 投资回收期:约6-8年(需考虑具体造价)
7. 工程实践优化建议
7.1 预测信息引入
实际系统中建议:
- 集成光伏功率预测(基于天气预报)
- 加载负荷预测算法(如LSTM)
- 在Stateflow中增加预测调整逻辑
7.2 效率精细化建模
进阶改进方向:
- 考虑温度对光伏效率的影响
- 添加电池老化模型(循环次数与容量衰减关系)
- 线损建模(特别是大容量系统)
7.3 需量管理扩展
工商业用户可增加:
- 需量电费计算模块
- 功率爬坡率限制
- 需量峰值削减控制逻辑
8. 常见问题排查
8.1 仿真不收敛问题
可能原因及解决:
- 代数环:添加Memory模块打破环路
- 步长过大:改用变步长求解器(ode23t)
- 初始值冲突:检查各模块初始状态一致性
8.2 电池SOC异常波动
检查要点:
- 充放电效率参数是否设置正确
- 采样时间是否与仿真步长匹配
- 功率指令是否超出电池额定值
8.3 经济性结果不合理
验证步骤:
- 检查电价信号时间对齐是否正确
- 确认电费计算公式符号(购电为正,售电为负)
- 核对各时段功率流向是否符合预期
9. 模型扩展方向
9.1 模型预测控制(MPC)
升级步骤:
- 建立预测模型(状态空间方程)
- 设计优化目标函数(最小化电费)
- 用MATLAB MPC工具箱替换规则控制
9.2 多目标优化
可考虑:
- 经济性与电池寿命的权衡
- 碳排放最小化目标
- 电网辅助服务收益
9.3 硬件在环测试
进阶开发:
- 通过OPC UA连接实际BMS
- 使用Speedgoat实时目标机
- 添加通信延迟模拟
这个仿真项目让我深刻体会到,好的能量管理策略需要在多个约束条件中找到平衡点。实际部署时,建议先用仿真验证不同策略效果,再逐步过渡到物理系统。对于想深入研究的同学,可以从修改控制策略入手,比如尝试加入天气预报数据或机器学习算法,这些都能显著提升系统性能。