尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

两级式单相光伏并网仿真:从Boost与MPPT到并网逆变器调参

两级式单相光伏并网仿真:从Boost与MPPT到并网逆变器调参 做光伏并网仿真几乎都会撞上“两级式”这道坎。前级用DC-DC变换电路把光伏组件的电压抬到合适的母线上同时靠MPPT算法去实时计算最优占空比再把这个占空比交给Boost电路的PWM波去驱动开关管后级再接一个单相全桥逆变器把直流母线电压变成和电网同频同相的交流电。前两天还有个做毕业设计的小兄弟问我两级式单相光伏并网仿真到底怎么搭才不翻车参数怎么调才能同时稳住MPPT和并网电流。我干脆把自己从零搭建、调参、踩坑的整个过程整理出来给准备用MATLAB/Simulink做这套系统的人一份能直接照着动手的参考。这套东西尤其适合刚接触电力电子仿真、需要复现完整光伏并网流程的入门者以及准备在论文里做控制算法对比的研究生。1. 两级式系统架构为什么光伏并网普遍选择“Boost逆变”这种组合1.1 两级式不是性能妥协而是控制解耦单级式拓扑听起来更“省事”光伏阵列直接接逆变器一个变换器同时承担MPPT和并网两个任务。元件少效率理论上也能高一点。但真正用单级式做并网你会立刻遇到两个麻烦。第一个麻烦是电压匹配光伏组件的最大功率点电压会随着光照、温度大范围浮动而单相并网逆变器为了输出220V交流电直流侧电压通常要稳定在360V到400V以上这两者的电压范围经常对不上。第二个麻烦更致命MPPT本身就是靠“扰动”来寻找最大功率点的这种扰动会直接传导到逆变器的电流控制回路里两个动态过程耦合在一起控制器参数会变得非常难调光照稍微变化母线电压就跟着抖。两级式把这两个任务彻底分开了。前级Boost电路只干两件事把光伏阵列的电压升上去以及通过MPPT算法保证光伏组件始终工作在最大功率点附近。后级逆变器只负责把稳定的直流母线电压转成交流并网电流。中间的直流母线电容就像两个控制系统之间的缓冲池前级往里面灌能量后级从里面取能量两边互不拖累。虽然多了Boost这一级效率会损失两三个百分点但换来的是控制逻辑清晰、调试方便、对光伏阵列电压变化的适应性也更强。在中小功率分布式光伏并网仿真里两级式基本是主流选择也是教材和论文里出现频率最高的结构。1.2 两级式系统由哪些环节组成我按能量流向把整个系统拆成了这么几块后面所有参数和控制都是围绕这条主线来的光伏阵列负责把光能变成直流电是整个系统的能量来源。仿真里通常用PV Array模型代替真实组件。前级DC-DC变换电路Boost升压拓扑把光伏阵列电压升到直流母线电压同时承接MPPT控制指令。MPPT控制器采样光伏输出电压和电流实时计算一个期望的参考电压或者占空比输出给PWM发生器。PWM调制与驱动环节把MPPT算出来的占空比转成开关管的门极脉冲信号也就是标题里说的“控制Boost电路的PWM波”。直流母线电容兼顾Boost输出电容和逆变器输入侧稳压电容是前后级能量解耦的枢纽。单相全桥逆变器由四个开关管组成把直流母线电压逆变成SPWM波形再经过滤波器变成并网交流。LCL滤波与并网点抑制开关频率附近的高频纹波让输出电流满足并网谐波要求后接入电网。控制回路也是两条并行的主线。一条从光伏阵列出发经MPPT到Boost的PWM驱动另一条从母线电压和电网侧出发经电压外环、电流内环到逆变器的SPWM驱动。理解了这个总体框架再看后面的参数计算和控制实现就不会晕了。1.3 一套可以照抄的设计指标示例仿真前先定一个基准设计指标后面参数计算全部围绕这个表进行。我做仿真时习惯先把指标列成表格避免调来调去最后自己都忘了当初依据什么定的。设计项数值说明光伏阵列最大功率点电压 Vmpp约290V通过光伏组件串并联配置得到光伏阵列最大功率 Pmpp约2000WSTC条件1000W/m²、25℃直流母线电压 Vbus400V为后级逆变留足调制余量Boost开关频率 fs20kHz兼顾电感体积与损耗逆变器开关频率20kHz与后级共用一个控制步长并网电压220V/50Hz单相交流电网模型这个配置的光伏阵列和母线电压保证Boost只在0.2到0.3的占空比附近工作既体现了升压功能又不会因为占空比太高导致开关应力失控是个很舒服的仿真工作点。2. 前级核心MPPT算法如何变成Boost的PWM波2.1 为什么要费劲去找最大功率点光伏电池本质上是一个大面积PN结它的输出特性有一条非常明显的拐点。以STC条件为例在I-V曲线上光伏阵列从短路电流附近开始电压升高时电流几乎不变输出功率跟着电压线性上升但一旦电压越过某个拐点电流会迅速塌陷功率也开始下降。这个拐点就叫最大功率点。当外部负载变化、光照变化、温度变化时这个拐点会左右移动光伏阵列的实际输出功率可能从2000W跌到几百瓦甚至跌得更惨。如果系统只是把光伏阵列直接连在一个固定负载或者固定占空比的变换器上工作点大概率不在最大功率点附近光伏组件的能力就被浪费了。MPPT做的事情就是不断试探当前工作点到底在最大功率点的左边还是右边然后通过改变Boost的PWM占空比把工作点推回去。市面上的MPPT算法几十种但仿真和工程中出镜率最高的还是扰动观察法和电导增量法所以我重点把这两种讲透。2.2 扰动观察法最简单但容易理解错扰动观察法的思路可以用一句话概括今天比昨天多走了一步发现手里的果子变多了就继续往这个方向走发现变少了就掉头走。落到光伏系统里就是给Boost的占空比或者光伏参考电压加一个小的增量扰动然后观察光伏输出功率的变化方向再去决定下一次扰动方向。用伪代码写出来是这样if P(k) P(k-1) if V(k) V(k-1) D(k) D(k-1) deltaD; else D(k) D(k-1) - deltaD; end else if V(k) V(k-1) D(k) D(k-1) - deltaD; else D(k) D(k-1) deltaD; end end这是一个直接输出占空比的MPPT核心逻辑。这里有一个非常容易踩的误区很多人以为MPPT采样周期和PWM开关周期是同一个东西于是让MPPT每个开关周期都更新一次占空比。结果是占空比莫名其妙高频抖动母线电压跟着抖根本稳不住。光伏组件的热动态和最大功率点移动速度相对“慢”MPPT更新周期完全没有必要做到毫秒级甚至微秒级。我在仿真里通常把MPPT的更新周期设在0.05秒左右扰动步长deltaD取0.005到0.01既能较快跟踪光照突变稳态振荡也在可接受范围内。扰动观察法另一个绕不开的缺陷是稳态振荡。因为算法始终在“往左试试、往右试试”到达最大功率点附近后不会停下来会围着最大功率点来回小幅摆动。步长越大摆动幅度越大追踪越快步长越小摆动越小但光照突变时反应慢。工程上更常用的是变步长扰动观察法功率偏差大的时候用大步长靠近最大功率点时自动切小步长算是对这个缺陷的一种折中。2.3 电导增量法精度更高但实现代价也高电导增量法的理论基础来自数学求导。最大功率点处功率对电压的导数为零即 dP/dV 0。展开后是 V·dI/dV I 0也就是 dI/dV -I/V。算法每步都去比较“瞬时电导 I/V”和“增量电导 dI/dV”之间的关系判断工作点位置然后调整参考电压。因为判断条件是一个等式理论上它到达最大功率点后不需要继续振荡跟踪精度比扰动观察法高光照变化时响应也更快。但它同样有代价需要高精度的电压和电流采样特别是在最大功率点附近dV很小除法运算带来的噪声会被放大。在Simulink里第一次做电导增量法的人容易因为采样量化误差和信号噪声发现算法反而比扰动观察法更容易上下乱跳。如果你打算在论文里对比算法我的建议是基础版先用扰动观察法把整套系统跑通再换电导增量法做对比否则一上来就是高精度算法的坑很容易被劝退。2.4 MPPT结果转PWM直驱占空比还是先追电压先搞清楚一个关键点MPPT最终输出什么这直接影响整个控制回路的搭建方式。目前仿真里最常见的做法有两种。第一种是MPPT直接输出占空比D把D直接接到PWM发生器。这种接法最简单模型里少一个PI调节器MTALAB里PWM Generator (DC-DC)模块可以直接接收0到1的占空比信号。但缺点是光伏电压没有闭环外部扰动来了Boost只会被动地按固定占空比工作光伏电压被强行拉离最大功率点的风险更高动态响应也比较生硬。第二种是MPPT输出一个参考电压Vref然后让一个电压PI调节器去追踪这个VrefPI的输出才是占空比。我实际做仿真基本都用这种“电压闭环MPPT慢调参考”的结构。MPPT每0.05秒才更新一次Vref而电压环在中间负责快速抗扰动。光照突变时光伏电压短时间偏离Vref电压环能很快把它拉回来MPPT只需要慢悠悠地修正Vref两者互不干扰。工程产品里也几乎都是这个思路建议你直接学电压环版本。不管用哪种方式占空比限幅都不能省。Boost的电压增益是 M 1 / (1 - D)D越接近1增益越大但二极管和开关管的应力急剧上升电感电流也失去控制。所以仿真时我会把占空比上限限制在0.85以内甚至保守一点0.8初始占空比从0.3附近开始避免开机瞬间出现过压尖峰。3. Boost主电路参数计算与Simulink模型搭建3.1 先算清楚电感、电容和占空比Boost电路工作在最常用的电流连续模式CCM下时输出电压和输入电压的关系是Vout Vin / (1 - D)反推懂占空比就是 D 1 - Vin / Vout。如果光伏阵列最大功率点电压接近290V母线目标400V那么占空比 D 1 - 290/400 0.275。可见Boost前级并不需要在仿真里拼命升压它要做的只是把光伏阵列的宽范围电压“适配”到后级需要的稳定母线电压上。电感尺寸由电流纹波要求决定。Boost的电感电流就是输入电流工程上通常把电感电流纹波控制在平均输入电流的20%到30%。光伏阵列2000W、输入电压290V时平均输入电流约为6.9A如果取25%纹波那就是约1.7A。电感值按这个公式估算L Vin × D / (fs × ΔIL)带入数值L 290 × 0.275 / (20000 × 1.7) ≈ 2.35mH。实际仿真里我一般取3mH附近稍微放大一点让电流纹波更平缓给MPPT采样提供更干净的电流信号。如果你的开关频率取到40kHz同样的纹波要求电感可以减半但开关损耗会上升仿真步长也得更小这些是你要权衡的事情。输出电容也就是直流母线电容有两个作用一是滤除开关频率纹波二是缓冲前后级功率差。很多第一次搭模型的人只按纹波要求算电容结果母线电压在并网后出现巨大的100Hz波动。因为单相并网功率本身就以两倍频脉动如果把电容留得太小母线就会跟着脉动。按纹波要求C D × Io / (fs × ΔVbus)输出电流Io大约是5A允许1%的纹波也就是4V算出来只有17μF这是远远不够的。仿真里我通常直接给母线电容取1000μF到2200μF才能既压住开关纹波又稳住二倍频脉动。电容太大也有副作用电压环响应变慢启动充电时间变长所以别盲目堆容量。3.2 Simulink里模块到底怎么选我用的是MATLAB/Simulink里的Simscape Electrical库早一点的版本叫SimPowerSystems或者叫Specialized Power Systems。搭建顺序从能量源开始一步一步连过去。光伏阵列在Simscape Electrical - Electrical Sources里模块名一般叫PV Array。双击后可以选内置组件型号也可以自己填Voc、Isc、Vmpp、Impp这些参数。我习惯自定义一组接近真实组件的参数然后通过设置“串联模块数”和“并联组串数”来凑出阵列电压和功率。比如单块组件Vmpp41.6VImpp6.1A左右串7块出来约290V功率约1800W到2000W正好匹配前面的算例。光照和温度可以在参数里改成常数但为了后面测试MPPT动态最好用Signal Builder或Step模块把光照做成突变信号。主电路从光伏阵列正极出发串联Boost电感然后接到一个IGBT开关管和二极管交汇的节点上。IGBT集电极接电感输出端发射极接到光伏阵列负极二极管阳极接同一个节点阴极接直流母线电容正极。母线电容负极回到光伏阵列负极。IGBT的门极接来自PWM Generator的驱动信号。这里要注意Simulink里的开关管都是有导通压降和缓冲电路的如果仿真收敛困难可以把开关管的Ron调小同时给IGBT并联一个RC snubber来辅助数值稳定。光伏阵列输出端我还会加一个小电容大概100μF用来平滑输入电压、减少MPPT采样毛刺同时它能消除一些代数环问题。后级逆变器是四个IGBT组成的单相全桥桥臂中点接LCL滤波器。滤波器参数我常用的是机侧电感2.5mH、网侧电感1mH、滤波电容10μF电容支路串联一个5到10Ω的阻尼电阻抑制谐振尖峰。LCL谐振频率要设计在开关频率的1/5到1/2之间太靠近开关频率会放大开关纹波太靠近基波又会让滤波效果变差。3.3 控制环的仿真参数怎么配合MPPT控制器我在Simulink里用Matlab Function实现输入是光伏电压Vpv和光伏电流Ipv两个采样信号输出是参考电压Vref或者占空比。如果按电压闭环结构Vref出来之后进一个PI调节器PI输出限幅到0到0.85再进PWM Generator (DC-DC)模块。电压环PI的整定思路和普通直流变换器一样先根据带宽需求定比例增益再加入积分消除静差。给个起步值Kp0.02左右Ki0.5左右然后根据母线电压波形微调。这套参数不是万能的因为仿真里电感、电容、功率都不同但通常在这个量级附近。PWM Generator (DC-DC)模块里需要设置的参数主要是开关频率和占空比上下限。我强烈建议在模块内部就把占空比上限限制好而不是只在外面加Saturation因为模块内部限幅和外部限幅在求解器行为上是有差异的内部限幅更不容易出现台阶跳变引起的数值振荡。仿真步长方面PWM载波20kHz每个开关周期最小50μs但门极信号边沿和续流过程要求求解器能捕捉更小的时间尺度我一般设离散求解器Ts1e-6秒也就是1μs这样既能看清电流纹波细节又不会慢到没法忍。如果想快速验证控制逻辑可以把开关频率降到10kHz步长改成2μs速度会快不少。4. 后级单相逆变与并网控制如何稳定送出功率4.1 单相全桥和SPWM调制的关系前级Boost把光伏阵列的能量先变成400V直流并存在母线上后级全桥逆变器要做的是把直流母线“掰成”50Hz的交流。四个开关管按对角的两个为一组交叉导通桥臂中点就交替出现正母线电压和负母线电压形成一个幅值在±Vdc之间跳变的方波序列。把这个方波序列经过LCL滤波就能得到接近正弦的交流电压和电流。调制方式上双极性SPWM是最容易理解的一种把正弦调制波和高频三角载波比较调制波大于载波时输出正电平小于时输出负电平桥臂输出就是一组宽度按正弦规律变化的脉冲。单极性SPWM的开关噪声更小但逻辑稍微复杂一点需要两个桥臂分别调制。仿真里如果你想快速出结果可以直接用Simscape Electrical里的PWM Generator模块选择“2-Level Bridge”或“Single-Phase Bridge”把调制波信号输入进去它会自动生成四个桥臂的驱动信号。无论哪种调制死区时间都不能设为0我习惯设1到2μs防止同一桥臂上下管瞬间直通烧掉开关管。仿真里直通不一定真的烧器件但会出现莫名其妙的电流尖峰排查起来非常费劲。4.2 双闭环控制PLL锁相与电流跟踪并网逆变器控制的一句口诀叫“电压外环定功率电流内环守波形”。电压外环的输入是母线电压反馈和400V参考的偏差输出是一路电流幅值指令。这个电流幅值指令乘上电网电压的相位参考就得到并网电流的瞬时给定值。电流内环把实际并网电流往这个给定值上追从而控制送往电网的功率大小。电流环的跟踪目标是一个正弦波。如果直接用普通PI调节器对正弦参考做无差跟踪理论上是做不到的PI会对50Hz正弦信号产生固定的幅度误差和相位滞后。针对这个问题仿真里有三种常见化解思路。第一种是用准PR控制器它的谐振峰正好落在50Hz可以对正弦参考实现近似无差跟踪这是最贴合单相逆变器的一种方案。第二种是构造单相dq旋转坐标系先用一个延时环节把当前电流信号错开四分之一个周期构建出虚拟正交分量然后再做park变换把正弦量变成直流量这样能用传统PI解决。第三种最简单粗暴PI加电网电压前馈电网电压前馈项可以补偿掉大部分电感压降剩余跟踪任务交给PI虽然相位会有一点偏差但作为学习仿真是能跑通的。我第一次做这套系统时就是用的第二种思路调好之后的波形确实干净但构造正交分量的4ms延时环节如果处理不好动态响应会显得拖沓。PLL锁相环在这个环节里承担的作用是给出电网电压的实时相位θ。整个并网电流给定值都要拿这个θ去计算锁错了相位并网电流就会出现无功分量甚至出现倒灌功率现象。在Simscape Electrical里有个比较方便的PLL模块输入三相电压或单相电压输出角度和角速度。如果用单相PLL给它输入正弦电压信号内部会构造正交信号能跟随电压幅值变化。锁相环节不复杂但值得单独用一个Scope盯着角度和实际电压过零点的关系看几秒钟确认锁相没有明显偏差再继续调后续电流环。4.3 并网启动顺序这个顺序救了我一套参数有些人在网上照着别人的成果抄参数发现别人的模型双击一跑就出漂亮波形自己抄过来却各种发散。这个现象十有八九出在启动顺序上。两级式系统存在两个有惯性的大储能元件输入端的MPPT动态和直流母线电容。如果仿真一开始就同时启动Boost和逆变器母线电压还没建立起来电流环已经在那里拼命追参考值PI积分项瞬间饱和等母线电压真正上来并网电流早就冲过头了。波形乱七八糟不是控制参数不行是启动时序错了。一套合理的启动流程是分阶段的。第一阶段让逆变器侧保持封锁状态也就是把SPWM驱动信号关掉只让Boost和MPPT运行把直流母线电容器从零充到400V附近。有些模型里交流侧没有开关那就在起始阶段把电流环的给定幅值设为0。第二阶段等待母线电压稳定波动小于几个伏特再逐步放开电流环给定最好用斜坡上升而不是阶跃跳变比如让给定电流幅值在0.2到0.5秒内从0爬升到目标值。第三阶段再投入整个并网模型观察并网电流的THD和母线波动情况。这一步顺序对了后面调参才有的放矢。5. 仿真常见问题与排查记录5.1 MPPT振荡和占空比失控现象是光伏电压和功率在最大功率点附近高频抖动或者占空比直接冲到限幅值。先确认MPPT更新周期是不是太快我见过有人把MPPT周期写成和PWM周期一样那就是拿一个慢系统的心脏去跑快系统的节奏不炸才怪。把MPPT更新周期调到0.02秒以上再去观察波形。还抖的话把扰动步长减小一半试试。如果你用的是直接输出占空比的方式建议改成电压闭环加Vref的结构振荡能立竿见影压下去。另一个原因是光伏电压采样噪声太大尤其是PV阵列模型和Boost电感直接相连时开关动作会造成电压纹波叠加。处理办法是在光伏阵列输出端并联一个100μF左右的电容并且MPPT采样用平均值或者加一个一阶低通滤波。占空比失控还有一个常见原因是占空比限幅没做好初始状态或光照跳变瞬间D短暂大于上限输出电压瞬间冲高设备进入流氓状态。检查一遍限幅模块别让它不在状态。5.2 母线电压过冲或者建立不起来母线电压过冲通常出现在Boost启动阶段因为MPPT初始占空比给得太大或者电压环PI超过限幅母线电容承受的冲击超过了设计值。解决办法是给初始占空比一个斜坡上升从0.2开始在0.2秒内缓慢增长到期望值电压环的积分器要加抗饱和限幅。母线电压建立不起来最常见的是光伏阵列电压配置得太低而带宽和Boost增益又不匹配造成升压能力不足。另一个容易被忽略的问题是母线电容取值过小前后级功率脉动直接拉着母线电压塌陷。这时候用Scope把三条曲线放一起看光伏阵列输出功率、Boost占空比、母线电压。如果占空比已经接近上限而母线电压还低于400V大概率是电感或者母线电容计算错误如果占空比不大但母线电压纹波很大多半是电容小了或者电压环带宽不够。真的排查过几次之后你会发现看波形比看参数列表更能定位问题。5.3 并网电流畸变和相位不准并网电流波形如果出现明显的削顶或者毛刺检查路径有这么几条。第一条是电流环PI或PR参数不合适带宽太低会导致跟踪滞后带宽太高又会把开关纹波放进来。第二条是死区设置问题死区时间过大时并网电流在过零附近会出现一小段平台畸变。第三条是LCL滤波参数不合适尤其阻尼电阻太小会激发谐振尖峰。简单的测试办法是先把LCL滤波电容和阻尼电阻拆掉只用两个单纯电感滤波如果电流波形变好那就是LCL参数问题如果依旧畸变问题大概率在控制环。相位不准最直接的原因就是PLL没锁对。用Scope把电网电压、PLL输出角度、并网电流给定三条曲线叠在一起看。理想状态下并网电流和电网电压同频同相给定波形的峰值应该和电网电压过零点对齐。如果相位偏了先单独验证PLL模块给它输入一个纯正弦源看输出角度是否正确排除PLL问题后再去纠结电流环。5.4 仿真速度慢、不收敛电力电子仿真最容易出问题的就是代数环和初始条件。光伏阵列是一个带指数项的强非线性电源直接和感性负载相连时很容易出现代数环求解器每步都要反复迭代速度骤降。最有效的办法是给光伏阵列并联一个大电容破坏代数环另一个办法是把部分电压测量通过一个短延时模块隔离开。开关管模型里的数值问题也会拖慢仿真给IGBT并联合适的缓冲电路设置snubber电容电阻收敛性会明显好转。仿真速度慢还有个常见原因是采样步长取得太小。很多人下意识用1e-8秒连续求解器结果一个仿真跑几小时。其实对20kHz的PWM系统离散求解器Ts1e-6秒已经足够看清大部分现象。如果只是想验证MPPT逻辑甚至可以忽略逆变器开关细节用平均模型代替全桥仿真速度能提升一个数量级。症状可能原因快速处理方案占空比高频抖动MPPT更新周期太短、步长太大更新周期放宽到0.02s以上步长减半母线电压过冲初始占空比过大、PI饱和软启动斜坡、限幅、抗积分饱和母线电压塌陷母线电容太小、Boost增益不足加大电容、检查占空比余量并网电流削顶电流环参数偏软、死区过大提带宽、缩短死区时间并网电流谐振毛刺LCL阻尼不足加阻尼电阻或改小滤波电容仿真不收敛代数环、初始值异常加并联电容、设缓冲电路整套系统调完之后我自己最值的一条经验是两级式光伏并网仿真的成败七成在启动时序两成在参数阻尼只有一成在算法本身。遇到波形不对先检查是不是前级没稳住、后级就急着送电。做仿真不要一上来就追求漂亮曲线把光伏阵列的功率、Boost占空比、母线电压、并网电流放到同一个示波器里对照着看问题会清楚非常多。再分享一个小技巧母线电压波形是这套系统的“晴雨表”。母线稳前级MPPT和后级功率控制大概率都在正常工作轨道上母线抖问题一定出在前后级之间的能量平衡上。后续如果想把这个项目继续扩展可以把光照突变、部分遮挡场景加进来对比扰动观察法和电导增量法在快速动态下的表现那是另一个很有意思的坑但也说明你已经把这套两级式光伏并网仿真真正吃透了。
返回列表