做光伏并网仿真的人,十个里面有八个都会卡在同一个问题上:模型搭出来了,波形也出来了,但一深究"这模型到底靠不靠谱、并网条件成不成立、控制策略换一换结果会怎么变",就说不清了。MATLAB/Simulink里的光伏并网仿真模型,说白了就是一套"光伏电站接入系统"的缩尺沙盘,你在里面搭的是电网、光伏阵列、逆变器和控制策略之间的事故推演逻辑,外面看着是一堆模块连线,里面其实是电气与控制的耦合博弈。这篇内容就是把我自己从零建立一套光伏并网仿真模型的经验拆开讲,适合刚入手做毕设、搞课题、或者想给项目做预研验证的工程师,聊的是模型结构怎么设计、控制策略怎么落地、仿真结果怎么判断,以及那些仿真里踩了才发现的问题。
1. 从零搭一个光伏并网模型到底要做什么
1.1 仿真目标拆解:稳定性和电能质量
很多人一上来就在Simulink里拖模块,拖到最后发现自己拖出来一个"看起来很专业"的黑箱子,但问他要解决什么问题,他回答不上来。所以第一个建议是:动手之前,先把仿真的目标拆成两条线。一条是稳定性的线,就是光照突变、负荷波动时,光伏电站能不能不断电、不振荡地继续并网运行;另一条是电能质量的线,就是并网点的电压、频率、谐波含量是不是满足电网要求。
这两条线决定了你后面所有模块的取舍。比如你只关心最大功率跟踪好不好,那电网侧用一个理想电压源就行;但如果你的课题是"光伏电站接入对电网电压的影响",那电网就得建模成戴维南等效阻抗,甚至要带上负荷和变压器。
我自己常用的做法是先把目标写成一页纸的验收清单,例如:直流母线电压波动不超过正负5%;并网点电流THD低于5%;光照从1000W/m²骤降到200W/m²时,系统能在0.2秒内恢复稳定。有了这些量化指标,后面每一步建模和调参都不会跑偏。
1.2 整体拓扑选择:两级式还是单级式
光伏并网系统的拓扑,工程上最常见的就两类。单级式是光伏阵列直接接逆变器,再经过滤波器和变压器并网,只有一级功率变换,效率高、控制简单,但要求光伏阵列的输出电压范围要匹配逆变器直流侧的工作范围,光照温度变化时工作点容易被限制。两级式是前面多了一级Boost升压电路,先通过DC/DC把光伏阵列的电压抬到一个稳定母线电压,再交给逆变器,控制更灵活,MPPT和并网控制可以分开做,但多了一级损耗,成本也高一些。
我的模型选的是两级式,原因很实际:仿真里调试MPPT时,不需要担心逆变器那边的电压波动干扰到跟踪曲线;调试并网控制时,也不需要担心光照突变直接冲击母线电压。每个环节的"责任田"清清楚楚,排查问题容易得多。后面讲到的所有控制策略,都是基于这个两级式拓扑来展开的。
2. 光伏阵列建模:从物理公式到Simulink参数
2.1 光伏电池的工程数学模型
光伏阵列的数学模型是整套系统里最容易被人一带而过、却又最影响结果的部分。物理模型用五参数方程,也就是光生电流、二极管反向饱和电流、串联电阻、并联电阻和二极管理想因子,精度高但参数难整定,仿真里反而容易数值敏感。我做仿真用的是工程简化模型,把I-V特性用一个显式方程表达:
I = Isc_new * [1 - C1 * (exp(U / (C2 * Uoc_new)) - 1)]
其中C1和C2由标准测试条件下的短路电流Isc、开路电压Uoc、最大功率点电流Im和电压Um反推得到。光照和温度的影响通过修正系数叠加:
- Isc_new = Isc * (S/Sref) * (1 + a * ΔT)
- Uoc_new = Uoc * (1 - c * ΔT) * ln(e + b * ΔS)
- Im_new = Im * (S/Sref) * (1 + a * ΔT)
- Um_new = Um * (1 - c * ΔT) * ln(e + b * ΔS)
这套公式是实用方向的经典写法,适合在Matlab Function里用几十行代码实现,比Simulink自带的PV Array模块更透明——至少你知道每一个曲线拐点是哪里来的。做课题如果要写创新点,也建议在这个方程上做文章,比如加入局部遮罩情况下的多峰特性建模,这是后话。
2.2 组件参数与阵列组态计算
选组件参数时别拍脑袋。我用的是常见250W多晶组件作为单块基准,标准测试条件下的参数如下:
| 参数 | 数值 | 说明 |
|---|---|---|
| Pmp | 250 W | 最大功率点功率 |
| Vmp | 30.6 V | 最大功率点电压 |
| Imp | 8.17 A | 最大功率点电流 |
| Voc | 37.6 V | 开路电压 |
| Isc | 8.63 A | 短路电流 |
然后按目标电站容量做组串计算。比如做一个100kW的仿真模型,20块组件串联成一组,电压在600V左右;25组并联,总电流约204A。这样阵列的MPPT电压范围落在500~700V之间,Boost输出给逆变器的直流母线电压可以定到750V附近,留出约10%的升压余量。
这里必须提醒一个常见坑:很多人直接用"组件数乘以单块功率"算总容量,却忽略了温度和光照变化后实际输出可能远低于标称值。仿真里如果只给一个固定光照,你就永远看不到MPPT之后直流侧的真实应力。所以阵列建模完成后,至少要跑三条I-V曲线:标准条件、高温低光照、低温高光照,确认MPPT电压范围确实覆盖到了。
3. MPPT算法实现:扰动观察法为什么仍是主流
3.1 扰动观察法的逻辑与参数设定
MPPT的算法五花八门,扰动观察法、电导增量法、模糊逻辑、神经网络,名字一个比一个唬人。但仿真做多了你会发现,真正在工程里跑得最长久的还是扰动观察法,它思路直接:每隔一个采样周期,给参考电压加一个小扰动,然后看功率是增大还是减小,增大就继续同方向扰动,减小就反向扰动。整个过程就像爬山,往高处走就继续走,发现下坡了就掉头。
实现起来用一个MATLAB Function块就行,输入电压、电流,输出占空比变化量。核心代码的逻辑大致是这样:
function dD = mppt_po(V, I, D_old, V_old, P_old) P = V * I; dV = V - V_old; dP = P - P_old; if dP > 0 if dV > 0 dD = D_old + step; else dD = D_old - step; end else if dV > 0 dD = D_old - step; else dD = D_old + step; end end end参数上我最常用的组合:扰动步长0.005,采样周期0.01秒。步长太大,稳态时会在最大功率点附近来回振荡,输出功率纹波大;步长太小,跟踪光照变化的速度太慢。仿真时可以拿一个1000W/m²到600W/m²的阶跃光照测试,看功率曲线从突变到重新收敛的时间,一般控制在100毫秒以内就算合格。
3.2 电导增量法与仿真中的对比
电导增量法听起来更高端,它依据的是功率对电压求导为零的原理,用瞬时电导和电导变化率的比较来判断工作点的位置,理论上比扰动观察法更精准,动态响应也更快。但仿真做对比实验时你会发现,电导增量法的优势在高分辨率、低噪声条件下才明显,而仿真模型里的I-V曲线本身是理想方程算出来的,没有测量噪声,扰动观察法和电导增量法的稳态精度差异其实微乎其微。
有一说一,如果你做的是控制算法创新类课题,电导增量法是很好的起点,因为在它的基础上可以叠加变步长、比例积分调节器和预测控制,做出一套新的复合MPPT策略。但如果只是做系统级仿真验证,扰动观察法够用,把精力省下来去调并网控制反而更划算。
4. 逆变器并网控制:dq解耦双闭环
4.1 锁相环和坐标系变换
逆变器的控制是整个模型里最需要耐心的地方。三相电压型逆变器要并网,首先得知道电网电压的相位和频率,锁相环就是干这个的。仿真里我用的是同步旋转坐标系锁相环,也就是SRF-PLL,思路是把三相电压先经过Park变换变成dq分量,然后通过调节q轴分量为零来锁定角度。闭环PI控制在park变换的基础上完成,稳态时d轴分量代表电压幅值,q轴分量被控到零。
这个环节容易出问题的是初始角度。PI调节器的初值给错了,锁相环会跑飞,整个控制就全乱。我的经验是仿真前先记录电网电压的初始相角,在锁相环模块里设置一个接近值,别让它从零开始盲锁。或者简单点,直接用小步长可变步长的求解器,让锁相环有一个充分收敛的过程,初始震荡幅度就不会那么大。
4.2 电流内环和电压外环的参数整定
并网逆变器的主流控制结构是电压外环加电流内环的双闭环。电压外环控制直流母线电压,输出作为有功电流的参考值;电流内环控制实际的d轴、q轴电流跟踪参考值。q轴电流参考值一般设为零,除非你的课题做了无功补偿。电流内环的模型基础是并网电感上的电压方程,在dq旋转坐标系下可以写成:
- L * di_d/dt = u_d - e_d + ω * L * i_q
- L * di_q/dt = u_q - e_q - ω * L * i_d
这个方程里d轴和q轴之间存在耦合项,所以标准做法是加前馈解耦:u_d的参考值等于PI调节器输出加上电网电压e_d,再减掉ωLi_q;u_q的参考值同理加上e_q再加ωLi_d。这个前馈项加上之后,d轴和q轴就变成了两个独立的电流单回路,整定起来简单多了。
电流环PI参数的整定,我一般用工程整定法起步:电流环带宽取开关频率的十分之一左右,假设开关频率是10kHz,带宽就是1kHz,对应的积分时间常数约等于电感与电阻的比值。仿真里我用的一组典型值是Kp=20,Ki=1000,但这组值换了电感参数就要重新调。调试的时候先把电流环单独跑起来,给定一个阶跃电流参考值,看跟踪波形有没有超调超得离谱,再把电压外环加上去。
电压外环的参数相对宽容,带宽要比电流环低一个数量级,不然两个环会互相打架。Kp=2,Ki=50左右作为起点,然后根据直流母线电压在光照突变时的恢复速度微调。这里有一个需要小心的地方:电压外环输出的是电流参考值,方向千万别接反了,曾经有一位仁兄把电压环输出接到电流环的反馈端,仿真结果一反就懵了半天。
5. 接入电网之前:滤波与变压器环节
5.1 LCL滤波器参数设计要点
逆变器输出的PWM波形里全是高频开关谐波,直接并网一定会超过电能质量限值。滤波器设计的好坏,直接决定你THD能不能压到5%以下。最简单的是单电感L滤波器,结构简单但高频衰减只有20dB每十倍频程,要滤干净就得用个大电感,体积压降都受不了。两个电感加一个电容的LCL滤波器,高频衰减能到60dB每十倍频程,同样的滤波效果总电感小得多。
LCL的参数设计有几条约束:总电感上的压降不要超过额定电压的10%;滤波电容产生的无功功率不要超过系统额定功率的5%;谐振频率要落在电网频率的10倍和开关频率的一半之间。这些约束叠在一起,用试凑法就能确定一组可用参数。我做100kW模型时用的LCL参数大概是:逆变器侧电感0.35mH、网侧电感0.15mH、滤波电容40μF。谐振频率算下来大约在1.6kHz左右,开关频率10kHz,电网频率50Hz,中间的选择很合理。
注意一点:LCL滤波器本身有谐振峰,不加阻尼的话,电流环控制带宽高一点就会激励起谐振,波形发散得一塌糊涂。最简单的处理办法是在电容支路串一个小电阻,无源阻尼,阻值约等于谐振频率下电容阻抗的三分之一。代价是多了损耗,但仿真模型里这点的精度要求不高,稳定性优先。
5.2 变压器与并网点等效模型
并网变压器是很多新人容易忽视的模块,直接从逆变器输出接电压源了事,这样不是不行,但课题只要涉及到"并网点电压影响""电网故障穿越"之类的话题,变压器就必须建模。仿真用的变压器模型主要看两个参数:容量和短路电抗。容量按逆变器输出容量的1.2倍左右选择,比如100kW的逆变器选125kVA变压器;短路电抗标幺值一般取0.06左右,具体看你们当地配电网的习惯。
电网侧我习惯用一个三相电压源串联一个等效阻抗来模拟公共连接点。等效阻抗的来源是上级变压器和线路的叠加,典型10kV配电网短路容量200MVA左右时,折算到低压侧0.4kV的短路阻抗大约在0.008欧姆到0.02欧姆之间。这个阻抗越小,电网被等效成"无限大电网",光伏功率波动的时候并网点电压几乎不变;阻抗越大,你越能看到光伏波动引起电压抬升的现象。这个要看你课题需要什么就设什么,别照抄一个数。
6. 仿真结果解读与排错清单
6.1 看什么波形、怎么判断是否合格
模型跑完,Simulink的Scope里铺了一堆波形,第一步不是看细节,而是按系统级顺序过一遍。首先看光伏阵列的输出功率,跟着光照曲线走,并且稳定在目标功率附近,说明MPPT没白干;然后看直流母线电压,稳态时稳稳绑在750V上下,动态时最多晃一下马上回来,说明电压环没白干;最后看并网电流和电网电压的相位,两者同相、波形正弦,说明逆变器没白干。
谐波分析可以在MATLAB里用fft函数处理并网电流的数据,看总谐波畸变率。如果THD超过了5%,优先检查滤波参数和PWM开关频率,LCL谐振阻尼电阻没加的话,波形往往有明显的毛刺,这也是第一个要怀疑的点。
6.2 仿真发散与波形畸变的排查思路
我前面说仿真里调试控制回路,本质上是把电气模型、控制算法、数值求解器三者之间的关系理顺。这里分享一下排查问题的顺序,是我自己总结的:
- 仿真直接报错发散:先看求解器步长。变步长的话把最大步长调到1e-5秒级别,通常发散问题能解决一半;还不行就查代数环,尤其逆变器电流反馈路径里如果有直接馈通,必须在反馈通道上加一个小延迟模块。
- 波形振荡但没发散:大概率是PI参数过大或LCL谐振产生的自激。用Bode图看控制环路的相位裕度,低于30度就会明显振荡。这也是为什么前面强调前馈解耦——解耦之后每环都接近单回路线性系统,分析起来非常干净。
- 母线电压垮掉了:先看MPPT输出有没有给到Boost的占空比,再看电压外环的输出方向,最后看负载侧是不是瞬间拉了太多功率。
- 锁相环角度乱飞:前面说过,初始角度设错或者电网电压含扰动,把PLL带宽降一点,或者加一个0.5倍电网周期的低通滤波。
做仿真的一个铁律是:一次只改一个参数,改完跑一次,记录一次波形。别同时动三四个参数,出了问题根本不知道是谁的锅。
这套模型我从头到尾搭下来最大的感受是,光伏并网仿真的难点不在任何单一模块,而在模块之间的协调关系。光伏阵列是非线性直流源,Boost把它的工作点"强制定"在最大功率点上,逆变器再把直流能量转成跟电网同步的交流,三个环节每个都有自己的时间尺度,控制带宽一个隔一个拉开,系统才能稳定地各干各的。实际做工程也差不多,仿真跑通了不代表实物能直接搬过去,但至少让你对每个环节的脾气有了底。后面如果你们有兴趣,我还可以聊聊怎么把这份模型从100kW扩展到兆瓦级电站,以及加入LVRT低压穿越控制之后,系统动态会有什么新的变化。