光储并网直流微电网仿真模型,是我最近一直在打磨的一套东西。简单说,就是把光伏板、储能电池、直流母线、并网变换器全部塞进一个仿真环境里跑起来,既要让光伏最大功率点跟踪(MPPT)正常动作,又要让储能电池在光照波动和负荷突变时把直流母线电压稳稳托住。这套模型覆盖了从器件级建模到控制策略验证的完整链路,无论是做微电网方向毕业设计、实验室预研,还是工程师做前期可行性摸底,基本都能直接用。
整件事的起源是那类老问题:光伏输出随光照温度乱跳,直接并网会给电网添乱,加储能又不知道怎么控制才不互相打架。用纯理论推公式,说的头头是道,一搭模型就各种崩。真正把MPPT、储能双向变换器、并网逆变器按直流微电网架构接在一起,并跑出稳定波形,中间有一长串坑。这篇文章我们就从需求拆解、模型搭建、参数整定到常见问题,一条线捋清楚。
1. 项目背景与核心需求拆解
1.1 我在做的是个什么东西
光储并网直流微电网,说白了就是一个以直流母线为核心的小型供电系统。光伏板发出直流电,储能电池本身也是直流,直流负载直接挂母线,交流负载和电网通过并网变换器相连。相比交流微电网少好几级DC-AC-DC变换,效率高、控制逻辑也直观。仿真模型就是把这几大块按实际电力电子拓扑装进 Simulink/Simscape 环境,在电脑里还原它的动态特性。
我的模型大致分五块:
- 光伏阵列:电压源串联电阻、并联电阻那种经典单二极管模型,输入光照和温度,输出I-V/P-V曲线。
- MPPT控制器:采样光伏输出电压电流,算实时功率,通过占空比调节DC-DC变换器,找最大功率点。
- 储能电池:用Thevenin等效电路模型,带SOC估算,接双向Buck/Boost变换器。
- 直流母线:分布式电容、线路阻抗、直流负载,母线电压是整个系统的生命线。
- 并网变换器:双向AC/DC,连接直流母线和三相交流电网,既能整流也能逆变。
这五块合在一起,就能做很多有意思的实验:光照突变时光伏功率往下掉,储能立刻补上;负载投切时母线电压有没有过冲;电网断开了系统能不能无缝切到离网模式继续供电。
1.2 这套模型能解决什么问题
你在学校做微电网课题,导师可能要求仿真验证一种改进的MPPT算法,或者储能SOC均衡策略。你在现场做项目,业主问你光伏加储能到底能不能把母线电压稳住,多大规模才合理。这时候套模型比空口说白话有说服力得多。
我总结这套模型主要解决四类问题:
- MPPT算法验证:同样是扰动观察法,步长多少、采样周期多少,追踪速度和稳态振荡怎么权衡,直接跑曲线看结果。
- 储能充放电逻辑验证:什么时候充、什么时候放、充电电流多大、SOC上下限怎么处理,避免电池过充过放。
- 母线电压稳定性验证:负载突变5kW,母线电压跌多少、恢复时间多久,储能功率怎么分配。
- 并网/离网切换验证:电网突发断电,系统能否平滑过渡到离网运行,切换瞬间电压冲击有多大。
适合三类人:刚接触微电网的本科生,可以用它快速理解能量流动和控制架构;做科研的研究生,可以在上面改算法、换拓扑做对比;做工程的工程师,可以把它当前期方案验证工具,避免一上来就搭实物烧钱。
1.3 整体架构怎么搭
传统做法是拿一堆独立模块临时连,结果接口电压对不上、控制极性反了、电感电流爆表。我的建议是先画一张系统能量流图,明确母线电压等级、功率方向、控制模式,再动手搭模型。
我采用母线电压400V直流,光伏额定功率10kW,储能额定功率5kW,并网变换器双向10kW。光伏侧Boost升压到400V,储能侧双向Buck/Boost也挂400V母线,并网侧通过LCL或LC滤波接到380V三相电网。控制上分三套:光伏侧MPPT发功率追踪指令,储能侧根据母线电压偏差决定充放电,并网侧根据运行模式决定稳压还是定功率。
这块设计最关键的一点是:必须先想明白各端口在什么条件下出力,往哪个方向送功率。不然模型跑起来,各个变换器都在抢着控制母线电压,系统必炸。
2. 光伏单元:MPPT模块的设计与仿真实现
2.1 光伏电池模型怎么搭
光伏电池的电气特性通常用单二极管等效电路描述。输出电流I与电压V的关系:
I = Iph - Id - Ish
其中光生电流Iph和光照强度G、温度T直接相关,二极管饱和电流Id影响开路电压,并联电阻Rsh模拟漏电流。仿真里最省事的办法是用Simscape Electrical自带的光伏模块,填好STC(标准测试条件)参数就行。但如果你想自己写数学模型,用MATLAB Function搭建也快。
我常用的一组5kW光伏阵列参数是这样的:
| 参数 | 数值 | 说明 |
|---|---|---|
| 开路电压Voc | 48V | 单块组件 |
| 短路电流Isc | 10A | 单块组件 |
| 最大功率点电压Vmpp | 38V | 最大功率点 |
| 最大功率点电流Impp | 9.2A | 最大功率点 |
| 组件串数 | 8 | 8串一列 |
| 组件并数 | 3 | 3并,总功率约8.8kW |
模型搭好后,先跑一版光照1000W/m2、温度25°C的静态曲线,确认P-V曲线是单峰,最大功率在350V左右。这一步很关键,只有I-V、P-V曲线正确,后面的MPPT算法才有意义。
2.2 三种主流MPPT算法对比
MPPT算法国内教材翻来覆去就那几种:扰动观察法、电导增量法、恒定电压法。我做仿真实验试过一圈,说说实际感受。
| 算法 | 原理 | 优点 | 缺点 |
|---|---|---|---|
| 扰动观察法 | 给电压一个扰动,观察功率变化方向 | 实现简单,参数少 | 稳态时在最大功率点附近振荡 |
| 电导增量法 | 比较电导变化率dI/dV和-I/V | 稳态精度高,追踪方向明确 | 对采样精度要求高,步长需调 |
| 恒定电压法 | 直接固定电压为0.8Voc | 极简单 | 光照温度变化时失去最大功率点 |
我模型里主用扰动观察法,因为它在Simulink里用延时模块和比较器就能搭出来,不需要解微分方程。电导增量法我也搭过,效果确实比固定步长的扰动法稳,但对仿真步长敏感,容易在数字控制延迟下产生误判。如果你想在仿真里做算法对比,建议把两种算法都写进去,通过切换开关看差异。
2.3 我在模型里用到的MPPT控制实现细节
这里给一份我实测能稳定跑的扰动观察法MATLAB Function代码,采样周期0.01s,电压扰动步长0.5V。
function [Vref, mode] = mppt_pno(Vpv, Ipv, Vref_old, P_old, step) persistent Pprev Vprev; if isempty(Pprev) Pprev = 0; Vprev = 0; end P = Vpv * Ipv; dP = P - Pprev; dV = Vpv - Vprev; if dP > 0 if dV > 0 Vref = Vref_old + step; else Vref = Vref_old - step; end else if dV > 0 Vref = Vref_old - step; else Vref = Vref_old + step; end end % 限幅 Vref = min(max(Vref, 200), 380); Pprev = P; Vprev = Vpv; end实际运行时,MPPT给出的Vref会送给光伏Boost变换器的电压外环,电压环输出电流指令,电流环生成PWM占空比。这里有个很容易踩的坑:MPPT采样和控制信号的同步。如果你的MPPT模块直接用连续采样,仿真结果会非常抖。我习惯用离散事件触发,每个采样周期锁存一次Vpv、Ipv,然后更新Vref,采样周期和PWM周期要拉开倍数关系,一般MPPT是PWM周期的50到100倍。
3. 储能单元:电池模型与双向DC-DC控制
3.1 储能电池等效电路模型选择
储能电池建模是这套模型里最容易让人纠结的部分。用理想电压源,那控制简单了,但完全看不出SOC变化;用复杂的电化学模型,仿真慢到怀疑人生。中间路线是用戴维南Thevenin等效电路。
一个二阶Thevenin模型包含电池开路电压OCV、欧姆内阻R0、两个RC网络模拟极化效应。不同SOC下OCV不同,R0和RC参数也会变。我做仿真时把OCV-SOC关系用查表实现:
| SOC(%) | OCV(V) |
|---|---|
| 100 | 54.2 |
| 80 | 52.1 |
| 60 | 50.4 |
| 40 | 48.9 |
| 20 | 47.0 |
| 0 | 45.0 |
电池总容量设为100Ah,额定电压51.2V,由16节3.2V电芯串联。端电压由OCV减去内阻压降和极化电压得到。这个模型虽然不精确,但已经足够体现直流微电网里“母线电压被拉低→电池放电→电压回升”的动态响应。
3.2 SOC估算与充放电切换逻辑
SOC我直接用安时积分法,公式很简单:
SOC(t) = SOC0 - (1/Capacity) * ∫(Ibatt) dt
充放电方向我规定放电电流为正,所以充电时Ibatt为负,SOC上升。这个模块本身不难,难的是什么时候切换充放电。
我的做法是看直流母线电压偏差。正常并网运行时母线电压由电网侧变换器稳住,储能待机;一旦母线电压跌落超过2%(400V跌到392V),储能转到放电模式;一旦母线电压高于400V的2%(408V),储能转充电模式。为避免切换抖动,加了10V滞环,比如跌落到395V才放电,升到405V才充电。滞环区间内保持上次状态。
这个方法在仿真模型里简单实用,比做复杂的功率平衡调度省事,还能直观体现储能对母线电压的支撑作用。
3.3 双向变换器的控制环路设计
储能侧双向Buck/Boost变换器采用电压外环加电流内环的双闭环控制。母线电压误差经PI控制器输出电流指令,电流方向和大小决定电池充放电。
电压外环PI参数怎么调,我举个例子。母线电容约680uF,电感2mH,开关频率10kHz。先用电流环满足快速性:电流环带宽设为开关频率的1/10,也就是1kHz,Kp大致取L2pifc = 0.0026280 = 12.56。实验时稍微降一点,Kp取8,Ki取120,电流环稳定。电压环带宽设在20Hz,Kp取0.8,Ki取30,边跑边看母线电压波形。
这里要提醒一下:电压外环输出不要直接当占空比,要经过限幅,防止启动瞬间电流过大。我的做法是把电流指令限制在±50A,然后再进电流环。另外电池端要加一个很小的串联电阻,防止仿真出现非物理的电流突变。
4. 直流母线稳压与并网协调控制
4.1 母线电压控制策略(下垂控制 vs 主从控制)
直流微电网的母线电压控制策略,最常见的是主从控制和下垂控制。仿真模型里我建议先从主从控制入手,逻辑简单好调试。储能变换器作为主控源,实时调节充放电电流把母线电压稳压在400V;并网变换器作为从控源,或者跑恒功率。
但主从控制有个致命弱点:主源一旦失效,整个系统就瘫了。所以工程上更常用下垂控制,多个变换器按各自下垂系数分担功率,天然实现即插即用。
下垂控制方程:Vdc = Vref - Kd * P
比如储能变换器额定5kW,允许母线电压从400V下垂到390V,那么Kd = (400-390)/5000 = 0.002 V/W。对这个系数整定要很小心,Kd太大母线电压稳态偏差大,Kd太小功率分配不均。仿真时我喜欢切两个工况对比:主从控制下负载突变10kW,母线电压几乎不变;下垂控制下母线电压稳定在393-397V,但储能和并网变换器功率分配确实更均衡。
4.2 并网变流器与电网接口建模
并网部分我用三相三线制,通过LCL滤波器连380V/50Hz电网,双向AC/DC变换器工作在dq坐标系下。传统电压定向控制,d轴控制有功,q轴控制无功。
并网模式外环给有功功率指令,内环d轴电流跟踪;无功指令一般给0,保持单位功率因数。离网模式就切换成定直流电压控制,这时候储能或者光伏来提供母线电压参考。
电网等效模型直接拿Simscape Electrical里的Three-Phase Programmable Voltage Source,可以设置电压幅值频率变化,甚至模拟电网跌落。滤波器参数是我实际调过的一组:L1=3mH,C=20uF,L2=1.5mH,阻尼电阻R=1Ω。这个LCL参数会给并网电流带来特定频率谐振,仿真时需要在控制器里加有源阻尼,否则电流波形上能看到明显振荡。
4.3 离网-并网切换逻辑
切换逻辑是整套控制里最体现细节的地方。我做了状态机和优先级排序:
- 并网模式:母线电压由电网侧变换器维持,光伏跟踪MPPT,储能按SOC和电价策略充电或待机。
- 离网模式:储能切换为主控源,维持母线电压,光伏继续MPPT但限制最大输出功率不超过负载加储能可吸收范围。
- 并转离:检测到电网电压下降低于85%额定值超过50ms,封锁电网侧PWM,延时3ms后储能进入恒压控制。
- 离转并:检查电网电压频率恢复,先让并网变换器预同步,锁相环稳定后再闭合并网开关。
实际仿真中,最怕的是切换瞬间的速度太快导致电流冲击。我一般在切换时给电流环输出加斜坡限幅,从0开始爬升到目标值,攀爬斜率每秒100A。这样波形平稳很多。
5. 仿真搭建与参数整定实录
5.1 我选择的仿真工具与求解器设置
这套模型我用的是MATLAB R2021a + Simscape Electrical,整体用离散求解器跑变步长,最大步长设1e-4秒。为什么不用连续求解器?因为PWM和MPPT采样是离散事件,连续求解器会为了捕捉开关沿疯狂降步长,仿真速度直接慢十倍。
具体配置参考:
| 设置项 | 取值 |
|---|---|
| 求解器 | ode23t(刚性变步长) |
| 最大步长 | 1e-4 |
| 最小步长 | 1e-7 |
| 相对误差 | 1e-3 |
| 绝对误差 | auto |
| PWM开关频率 | 10kHz |
| 控制采样周期 | 1e-4 |
| MPPT采样周期 | 0.01 |
Simscape里的功率模块默认可能有很大惯性,建议在“Simscape > Solver Configuration”里把局部求解器打开,速度能上来不少。
5.2 关键参数计算过程
母线电容是稳定电压的第一道防线。按系统允许10kW功率突变、电压在1ms内允许跌落10%(400V跌到360V)来算:
C = P * Δt / (0.5 * (V1² - V2²))
= 10000 * 0.001 / (0.5 * (400² - 360²))
= 10 / 15200 ≈ 658uF
实际取680uF。留一点裕量,并上高频薄膜电容做滤波。
电感选择按Boost变换器纹波电流公式算,开关频率10kHz,输入电压300V,输出400V,允许电流纹波2A,L = (Vin * D * Ts) / ΔI,D = (Vo - Vin)/Vo = 0.25,Ts = 1e-4,算出来大概3mH,我取2mH,纹波稍大但动态响应快。
PI参数前文说过,电流环Kp=8、Ki=120,电压环Kp=0.8、Ki=30。这里强调一个经验:先断掉外环,手动给电流指令测电流环阶跃响应,调好电流环再接电压环。不然两个环同时调,波形一乱,根本不知道是哪个环节的问题。
5.3 运行结果怎么看
模型跑完,建议记录四组关键波形:
- 光伏输出功率曲线:看MPPT能否在光照突变后1-2秒内重新回到新的最大功率点。
- 母线电压曲线:看负载突变和切换瞬间电压跌落多少、恢复时间多长,一般要求电压偏差小于5%,恢复时间小于100ms。
- 储能电流和SOC曲线:看充放电切换是否平顺,SOC是否越界。
- 并网功率曲线:并网模式下看功率是否平滑,离网模式下看并网电流是否归零。
我跑一个标准工况:光照从1000W/m2在0.5s瞬间降到600W/m2,负载从10kW在0.8s突增到15kW,储能SOC在80%待机。结果一般是:光伏功率从9kW降到5.4kW,母线电压在0.8s跌到392V,储能立刻放电补上约4.6kW,1s后母线回到398V,整体满足设计要求。
6. 常见问题与避坑指南
6.1 MPPT追踪速度vs稳态振荡怎么取舍
固定步长扰动观察法最大的痛点就是步长选大、追踪快但稳态功率在最大点附近来回跳;步长选小、稳态稳了但光照突变时半天找不到新工作点。仿真时可以观察波形:如果功率曲线像锯齿,就是步长太大;如果有几十秒慢慢爬,就是步长太小或采样周期太长。
我的建议是加一点自适应逻辑。根据前一拍功率变化趋势动态调整步长:功率变化大,步长加大到2V;功率变化小,步长缩小到0.2V。实现不复杂,就是在MPPT函数里加个条件判断。另一个技巧是对MPPT输出的Vref做低通滤波,时间常数0.05s,可以把稳态功率抖动压下来。
6.2 储能SOC越界、电流过冲问题
SOC越界是没做保护逻辑的典型毛病。电池SOC到了5%还在放电,或者到了98%还在充电,模型不会炸,但结果失真。我的处理是加三段式保护:SOC低于10%时,即使母线电压低了也不允许放电,只允许充电;SOC高于90%时反过来;在10%到90%之间正常充放。
电流过冲通常出现在模式切换瞬间,尤其是电网转离网那一刻。解决的直接办法就是前面说的斜坡限幅,以及把电压环PI的上限输出从±50A再往下限到±40A。仿真时如果仍看到电流尖峰,检查一下储能电感的Per-Unit单位设置,有时候是标幺化参数没对齐导致的。
6.3 仿真跑太慢、不收敛的排查经验
仿真跑得跟慢放一样,最常见原因是模型里有太多高频开关信号和刚性微分方程。可以依次排查:
- 把IGBT/二极管换成Simscape里平均值模型,去掉PWM细节,速度能快5倍以上。
- DC-DC电感改成带初始电流的模型,避免启动时零状态引发大电流尖峰导致步长缩小。
- 检查控制回路有没有代数环。代数环会让离散求解器每个步长都迭代,极慢。
- 把光伏和储能的电化学模型换成查表模型,省掉大量微分计算。
不收敛的话,第一件事看事件日志,定位是哪个模块报错。Numeric induction voltage过零错误,十有八九是电感电流突变或PWM死区没设好。我习惯把死区时间设1us到3us,并且打开“Zero-Crossing Detection”选项。
6.4 参数速查表
最后把我这套模型里实际调到能长期稳定运行的关键参数整理成表,你拿去可以直接当初始值再微调:
| 参数 | 值 |
|---|---|
| 直流母线额定电压 | 400V |
| 母线电容 | 680uF |
| 光伏Boost电感 | 2mH |
| 储能双向变换器电感 | 2mH |
| 并网LCL滤波: L1/C/L2 | 3mH/20uF/1.5mH |
| PWM开关频率 | 10kHz |
| MPPT采样周期 | 0.01s |
| MPPT扰动步长 | 0.5V |
| 电流环Kp/Ki | 8/120 |
| 电压环Kp/Ki | 0.8/30 |
| 储能SOC保护上下限 | 90%/10% |
| 离网切换斜坡限幅速率 | 100A/s |
这套模型我前后迭代了两三版,从最初的控制极性接反导致母线电压直接飙到600V,到后来基本能做到光照、负载、并离网全工况稳定运行。中间最深的体会是:光储并网直流微电网像是一支球队,MPPT负责前锋抢功率,储能负责中场调平衡,并网变换器负责跟电网传球,任何一个环节控制逻辑不清楚,整场球都会乱套。仿真模型的意义就在于用最低成本把这些配合逻辑试明白,等你真的要去搭硬件平台时,至少心里有谱。最后再分享一个小技术细节:如果你也要跑这种多变换器系统,务必先跑裸工况验证每个变换器的单机稳定性,再合系统,这能省掉你一大半排查故障的时间。