你做风光储并网仿真,多半遇到过这种情况:光伏、风机、储能每个模块单独跑都没问题,一放到同一个Simulink模型里,并网电流就开始跳,直流母线电压跟着抖,波形图上全是毛刺。更难受的是,板子全查了,参数也设了,就是不知道问题出在哪。这套“MATLAB/Simulink风光储并网系统,含有多种控制,扰动加入,并网效果完美”的仿真框架,我从搭建到调通折腾了两周多,把走通的路子和最容易翻车的点都理清楚了,正好适合刚从单机模型迈到系统级仿真的初学者。下面我会直接从整体链路开始,把每种控制策略的落点、扰动怎么设、以及判断“完美”的标准全部拆开讲。
1. 风光储并网系统到底由哪几块拼成?模型链路先理顺
1.1 能量流动与控制目标的对应关系
很多初学者一上来就急着找“风光储并网模型”的完整文件,然后直接改参数跑,结果改一处崩一处。我不建议这么干。仿真首先要理清楚的是能量从哪来、往哪去、由谁负责稳定。
一套典型的风光储并网系统,结构上并不复杂:光伏阵列经Boost变换器升压;风机(通常建PMSG永磁直驱模型)经背靠背变流器整流、逆变;储能电池经双向DC-DC变换器;这三路都汇到同一条直流母线。直流母线再通过一台并网逆变器(DC/AC)和滤波电感/变压器接到交流电网。甚至有些模型会加入直流负荷或交流负荷,用来模拟本地负载突变。
控制目标也对应清晰了:光伏侧主要干两件事,一是MPPT让光伏一直工作在最大功率点,二是把光伏输出电压升到直流母线电压以上,保证能往母线送电。风机侧分机侧和网侧两个变流器,机侧管转速和功率捕获,网侧管直流母线电压稳定和单位功率因数。储能侧则负责削峰填谷,当光伏风机出力大于用户需求时充电,不足时放电,这样并网点功率不会大起大落。并网逆变器是最后一关,负责把直流转化为交流,并按指令输出有功和无功。
这五块就是整个系统的主体。你在Simulink里搭模型,其实就是在搭这五条链路,而不是把一个“大杂烩”拖进来。心里有这条链路图,后面所有模块和参数的设置都能对上号。
1.2 三大发电子系统的建模选型思路
Simulink里做电力电子仿真,最常用的是Simscape Electrical库里的“Specialized Power Systems”(早期版本叫SimPowerSystems)。这里面提供了光伏阵列模块、风力发电机组模块、电池模块等成套模型,比用受控电压源硬凑要稳定很多。
光伏侧我会用“PV Array”模块,它支持短路电流、开路电压、MPPT曲线等参数配置,也可以在参数里设置串联模块数和并联模块数。模块内部自带I-V/P-V特性,不用你自己写光伏方程。Boost变换器用开关管(MOSFET/IGBT)加二极管、电感、电容搭起来,也可以用半桥Boost拓扑的子系统封装好。注意PV Array的输出引脚默认是正负极,光照模块输入端用外部信号并接到常数或Signal Builder里,方便后面加光照扰动。
风机侧如果做并网系统仿真,建议直接用“Wind Turbine”模块搭配PMSG和“IGBT通用桥”组成背靠背变流器,而不是自己搭dq方程。虽然自己建模更能理解原理,但对初学者来说,模块化能让你先把系统逻辑跑通,再慢慢深挖算法。
储能侧用“Battery”模块,选锂离子电池模型,参数设容量、SOC初值、内阻和响应时间。双向DC-DC用两象限Buck-Boost拓扑,或者用受控电压源加电流源近似,但后者做动态扰动时误差偏大。我的建议是搭真实的半桥双向变换器,用MOSFET和二极管组成,控制信号由PWM产生。
1.3 一次典型参数配置(可直接抄作业)
考虑到初学者,我给出我常用的参数思路。交流电网取380V/50Hz三相系统,直流母线电压在800V左右。光伏阵列用20kW左右,选一个市售模块(比如SunPower SPR-315E-WHT-D)进行串并联组合,得到接近额定功率的阵列;风机用15kW等级PMSG,额定线电压380V;储能电池电压设在500V左右,容量30Ah以上,SOC初值设80%。
直流母线电容通常取2000uF到5000uF之间,太小则电压纹波大,太大则动态响应慢。并网逆变器的滤波电感按经验取并网额定电流基波阻抗的10%左右,比如20kW、380V系统额定电流约30A,电感值取3mH左右比较稳。开关频率统一设10kHz,PWM发生器用“Discrete PWM Generator”,载波频率也设10kHz。
这套参数不需要非常精确,只做一个参照,真正还是要靠仿真结果微调。初学者最忌讳的是看见网上一个模型文件就拿来跑,模型的直流母线电压、开关频率、电网电压跟你自己设想的不一致,结果根本没法对齐。参数抄作业可以,但特性参数自己心里要有数。
2. 仿真模型中“多种控制”具体落在哪些环节
标题里有“含有多种控制”,这句话听起来很宽泛,实际上每种控制都有明确的模块归属。我在下面分四条链路说,基本覆盖目前主流的新能源并网仿真控制方式。
2.1 光伏侧:MPPT + Boost升压
光伏侧控制目标很直接:用Boost电路把光伏阵列的输出电压变换到直流母线电压,同时让阵列工作点靠近最大功率点。最常用的MPPT算法是扰动观察法,进阶一点有电导增量法。对初学者,我建议先用扰动观察法实现。
在Simulink里,我一般用“MATLAB Function”写一个小函数,输入为当前的光伏输出电压和输出电流,输出为Boost占空比D。核心思路很简单:计算当前功率P(k),和上一次功率P(k-1)比较,如果P在增大,继续朝同一个方向改变参考电压或占空比;如果P减小,就反方向调整。下面是可以用在MATLAB Function里的一个参考框架:
function D = MPPT(V, I, Vold, Pold, Dold, deltaV) % 扰动观察法,简单版 P = V * I; if P > Pold if V >= Vold D = Dold - deltaV; % 保持同向扰动 else D = Dold + deltaV; end else if V >= Vold D = Dold + deltaV; % 反向补偿 else D = Dold - deltaV; end end D = max(0.1, min(0.9, D));用的时候需要把Vold、Pold、Dold做成单位延迟(Unit Delay)过一遍,否则会形成代数环。这是新手很容易卡的一个点。占空比D再和三角载波比较,生成PWM,驱动Boost开关管。
Boost升压的关键参数是电感和开关频率。电感太小,电流纹波大;电感太大,动态跟随慢。我这里建议用一个小经验:电感电流纹波控制在光伏额定电流的10%左右,你按额定功率除以光伏电压估算出平均电流,再去算电感值。
2.2 风机侧:机侧与网侧变流器解耦控制
风机并网仿真绕不开背靠背变流器。PMSG出来后是交流电,频率随风速变化,不能直接并网,所以要经过“机侧整流器—直流中间环节—网侧逆变器”两个环节。机侧整流器负责把发电机发出的交流整流到直流母线,同时控制发电机的电磁转矩,让风机工作在最佳叶尖速比附近,本质上也是MPPT,只不过针对的是风速-功率曲线。
网侧逆变器是风机系统的“平衡器”,它控制直流母线电压稳定。直流母线电压代表功率平衡:机侧送进来的功率多了,母线电压会升高;送出去到电网的功率多了,母线电压会下降。所以网侧逆变器的外环就是电压环,输出电流指令,内环再通过dq轴坐标变换做电流PI控制。到这里你应该看出来了,风机侧的网侧控制对最终并网质量影响很大,不能简单用开环控制。
对于初学者,我建议不要把机侧模型做太深,先用平均值模型或受控源来替换开关模型,重点调网侧逆变器。当你把直流母线电压稳住,并网电流的波形基本就正常了。
2.3 储能侧:双向DC-DC的充放电控制
储能系统在风光储并网里的“储”字主要体现在双向DC-DC上。它的拓扑是半桥式双向Buck-Boost变换器,两个开关管互补导通。当储能放电时,电池电压低,需要升压到直流母线,此时相当于Boost;当储能充电时,直流母线降压给电池充电,此时相当于Buck。
控制逻辑一般是功率外环加电流内环:系统给出一个功率参考值P_ref(正数放电,负数充电),除以电池电压得到电池电流参考值,然后由电流PI来调节占空比。如果想做得更真实,还要加一个SOC限制,防止过充或过放。
我在做负载突变仿真时,储能控制是否及时,直接决定了直流母线电压能否保持稳定。可以这样体验:你把并网逆变器输入功率固定,在1秒时给光伏加一个光照阶梯下降,储能如果不动作,直流母线电压就会掉,并用网电流也会跌;储能动作之后,电压能在一个比较短的时间内回到800V附近。这个对比实验,就是理解储能控制价值的最直观方式。
2.4 并网逆变器:PQ控制策略
并网逆变器是整个系统的“脸面”,因为电网只看到它。最通用的控制是PQ控制,也就是有功无功解耦控制。它的实现是经典的双闭环:外环是功率环,输入有功无功参考值P_ref和Q_ref,通过PI计算d轴和q轴电流指令;内环是电流环,用PI调节d轴和q轴电流,输出调制电压;最后经过SVPWM或SPWM,去驱动三相逆变器的6个开关管。
整套控制离不开锁相环PLL。PLL的作用是实时锁住电网相角,拿到这个角度之后,你才能做Park变换,把abc三相电流变成dq坐标系下的id和iq,进而实现有功、无功独立控制。初学者最容易在这里画错信号线:PLL输出的频率和角度不是同一个单位,角度theta接坐标变换,频率信号可以接Scope看,但不要误当成控制输入。
PI参数怎么调?有个笨办法很好用:电流内环试凑时,先让d、q轴电流误差很大时可以快速校正,把比例项先拉起来;然后加积分项把稳态误差消掉。不要上来就同时调四个PI,你会完全不知道是谁在起作用。
3. 扰动注入不是乱加:怎么模拟并网效果
3.1 三类常用扰动的Simulink实现
很多演示模型加了扰动后让人眼前一亮,你也想要那种效果,但扰动不是乱加。常见的扰动有三类,各自目的完全不同:
- 电网侧扰动:用“Three-Phase Fault”模块接在并网点和电网之间,可以在设定时间发生三相短路或单相短路。这个用来观察低电压穿越能力、故障期间母线电压变化、并网电流冲击。
- 负荷突变:用“Three-Phase Dynamic Load”模块配合Step信号,让负荷在某一时刻从20kW跳到50kW。这样可以看储能如何应对功率缺口。
- 资源侧扰动:光照在0.8秒从1000W/m²降到600W/m²,风速在1.2秒从12m/s降到8m/s。用“Signal Builder”或“Step”模块加“Time”逻辑就可以,不需要很复杂的组件。
我建议扰动设置遵循“一次只变一个”原则。你先把光伏光照扰动加进去,跑完记录波形;再单独加负荷突变;最后再组合。一下加太多扰动,波形乱成一团,你根本不知道是哪个环节导致的问题,也就失去了“加扰动验证控制逻辑”的意义。
3.2 扰动时长的设置与步长匹配
扰动加入之后,一个很容易被忽略的点是仿真步长。Simulink对于电力电子开关模型,如果你用固定步长,一般建议设小于开关周期的1/10,10kHz的开关频率可以用步长10微秒或5微秒。如果步长太大,开关事件的细节捕捉不到,波形会“假性震荡”;如果步长太小,仿真速度又会慢得让人抓狂。
Similar为系统性扰动设持续时间,故障模块里可以设置故障起始时间和故障持续时间。比如初始0.4秒正常运行,0.5秒故障开始,0.7秒故障切除,这样你有0.1秒的故障窗口和0.1秒的恢复窗口,足够观察控制的响应过程。故障电阻也很重要,纯短路会导致过大的电流,不如用一个几欧姆的过渡电阻模拟实际短路,看得更清楚且更容易跑通。
3.3 判断并网效果的量化指标
“并网效果完美”不能只靠眼睛看,要有量化的指标。初学者只要盯住这几个数据就够了:
| 指标 | 参考标准 | 怎么在Simulink里测 |
|---|---|---|
| 并网点电流THD | 小于5% | Powergui里选FFT Analysis,对稳态波形做FFT分析 |
| 直流母线电压波动 | 小于5%额定值 | Scope看电压波形,用Data Inspector读峰峰值 |
| 有功功率跟随 | 与参考值偏差小于2% | 用功率测量模块或者测电压电流乘积后低通平均 |
| 频率误差 | 保持50Hz附近,偏差小于0.5Hz | PLL模块输出的频率读数 |
| 动态恢复时间 | 扰动结束后约0.2~0.5秒内回到稳态 | 看并网电流或母线电压的时刻标记 |
当这几个指标都达到后,波形再好看也说得过去。我见到过有些模型为了好看,把PI参数调得极其激进,阶跃响应瞬间完成,但实际系统根本做不到。仿真的目的是合理反映系统动态,不是做动画表演。
3.4 我踩过的坑:并网点电压为何会发飘
第一次搭好模型,我加了个电网故障扰动,结果故障切除后并网点电压迟迟不恢复,感觉像“发飘”。排查了很久,最后发现原因是三相变压器的接线方式和接地方式设置不对。Simscape里的三相变压器默认可能是Yg接线,中性点没有接地或者接地方式没选好,故障切除后电压谐振就不容易平息。
这类问题在模型库里看不出明显报错,只有在波形上体现为“电压缓慢漂移”。解决方法是打开变压器参数,选中“中性点接地”配置,并在故障模块里设置好三相故障的接线,确保短路电流有明确的回路。另一个可能是并网逆变器的无功电流在故障后没有快速恢复,导致电压支撑不足,需要调低PI积分饱和度。
4. 初学者从头搭建时最容易翻车的10个细节
这块我想集中说操作性很强的问题,因为这些小毛病在初学者模型里出现的概率极高。
4.1 线路与量测的连接问题
第一,总线信号与普通电气信号混接。Simulink图形上电气线路是标准的连线,但如果你用Bus Creator把一组信号打包后再解包,新手经常找不到某个信号,或者提示“Bus selector has no such signal”。问题的本质是总线名字和层级不一致。建议用“Goto/From”标签代替,或者把总线名称统一为小写英文单词。
第二,电压电流测量模块使用不当。Scope不能直接接在电路节点上,必须经过“Voltage Measurement”或“Current Measurement”模块。电流测量必须串入回路,不能并联。很多新手直接把Scope接在电容两端或电感支路中间,系统会报“invalid connection”。
第三,三相负载、变压器、电源的相序要一致。如果光伏逆变器出来的A相接到了负载的B相,所有波形都是错位的,且没法通过控制参数纠正。我习惯在模型文件里统一标注A相、B相、C相颜色的文本标签,不然相序错了很难检查。
4.2 求解器与采样时间设置
这一步我建议所有初学者照着执行:仿真参数里,求解器选择“ode23tb”或“ode15s”,这两种适合电力电子开关模型;如果使用离散PWM和数字控制器,则推荐选择固定步长离散求解器,步长设置为开关周期的1/10到1/20。
控制器里的“采样时间”也是一个坑。你把PI控制器放在连续域里,但PWM是离散的,两者之间需要加“Zero-Order Hold”模块,不然会混叠。我在早期搭PMSG背靠背变流器时,把控制器设为连续,结果仿真非常慢,而且局部会出现高频振荡。换成离散控制器之后,仿真速度和波形质量都有明显提升。
还有代数环问题。当你把电压测量信号经过“MATLAB Function”算MPPT,再把这个计算出来的占空比直接控制Boost开关,往往报“algebraic loop”。解决办法就是给反馈路径增加一个“Unit Delay”或“Memory”模块,把循环切断。代价是会有一步延迟,但在开关周期10kHz的仿真里,影响不大。
4.3 参数级典型错误对应表
下面的表是我在帮人看模型时最常遇见的,先贴出来:
| 错误现象 | 原因 | 解决方式 |
|---|---|---|
| 启动就发散 | 电容初始电压为0,直流母线预充电过程缺失 | 设置电容初始电压为额定值,或加预充电路 |
| 并网电流畸变大 | 滤波电感太小或PWM载波频率太低 | 增大电感或提高载波频率到10kHz以上 |
| PLL锁不住角度 | PLL比例积分参数默认值不适合弱电网 | 降低PLL带宽,典型PI值可试Kp=0.1,Ki=20 |
| 光伏功率上不去 | MPPT扰动步长太大引起振荡 | 减小deltaV到原来的一半甚至更小 |
| 储能不动作 | 功率参考值初始化错误,P_ref一直为0 | 检查P_ref输入端是否接了实际功率差值信号 |
| Scope显示拟合很怪 | 量测模块输出是pu还是SI单位没弄清楚 | 在模块参数中统一选择“SI Units” |
这些细节单独看都不难,但组合在一起,就会消耗你大量时间。我的建议是每搭一条完整链路(比如光伏Boost链),先单独给它加一个固定直流电压源跑一下,确认MPPT占空比和输出电压都正确,再接进总系统。
5. 模型调通之后的进阶玩法和收尾经验
等你把基础模型调通,并网功率也稳定了,可以再往两个方向做点小扩展,这对理解和写论文都有价值。
5.1 从并网模式到离网模式的切换
风光储系统里很常见的一个扩展是“并网模式与离网模式切换”。方法很简单:用“Three-Phase Breaker”把并网点当作分断点,控制器增加一个模式判断逻辑。并网时逆变器走PQ控制,离网时改成V/f控制,为本地负荷提供稳压稳频电源。你需要在Simulink里做一个可切换的控制结构,用“Manual Switch”或“Selector”来选择哪一套控制回路进到PWM的输入端。
做这个扩展之前,我建议你先理解一个本质差异:PQ控制依赖电网电压作为支撑,离网V/f控制则需要自己生成参考电压和频率。很多初学者做切换时,切换那一刻波形崩了,多半是切换时两套PI控制器的工作状态没有初始化,导致积分项突变。解决办法是把两套控制器的初始输出设为切换前的稳态值,或者使用“重初始化积分”功能。
5.2 把真实光照和风速数据引入模型
进阶玩法中另一个很受用的,是把一段真实的光照曲线和风速数据导入系统。操作并不难,光照数据可以用一个“From Workspace”模块,把Excel数组加载成MATLAB变量,再用Signal Builder或“Lookup Table”接入。风速数据如果采样频率够高,可以替换掉原来固定的风速信号。
这一改动会让你的仿真从“原理验证”变成“工况复现”。比如你有一天的实测数据,可以观察并网点功率波动曲线,然后看储能SOC变化是否合理。这也是风光储容量配置、功率平滑策略评估的常见做法,对科研型初学者尤其有帮助。
5.3 我个人实操中的几点体会
最后聊点体会。第一,不要贪多。第一次搭风光储并网模型,不要追求“风机、光伏、储能、柴油机、负荷、配电网、保护全都有”,那会超出初学者的调试能力。先把光伏+储能+并网逆变器搭通,再加入风机。
第二,版本兼容性问题比想象中多。比如不同MATLAB版本里Simscape模块的封装名可能变了,比如老版的“PV Array”与新能源版本默认参数有差异。你从网上下载一个旧模型文件用新版MATLAB跑,经常报错。建议自己基于新版本库重新连一次信号,不要迷信旧文件能直接用。
第三,任何调参都要留下记录。我用一个Excel表记录设备功率、储能容量、开关频率、PI参数、扰动时间和波形评价,每次改参数都记一行。看上去很土,但排查问题时特别有效,尤其是第二天你看着一版改了一半的模型,完全想不起来昨天动了什么。
风光储并网仿真看起来门道多,但真正拆开也就“五块电路、四套控制、三类扰动、一份参数表”。把前面几条链路分别跑通再合并,然后加扰动验证控制效果,你的模型就能做到“波形不骗人、参数有依据、结果可复现”。这也是我搭完这套系统之后最想对初学者说的话。