说实话,不少人在毕业设计或科研项目里一碰“并网光伏阵列”就犯怵,总以为要把整个变流链路从电磁暂态到底层控制全部手推一遍。其实借助 SimPowerSystems 在 Simulink 里搭一套可复现的并网光伏仿真系统,并没有想象中那么玄。我最近刚把从光伏阵列、MPPT、Boost、三相逆变、滤波器到电网闭环控制的一条完整链路跑通,这套平台用来做课程设计、论文验证,或者作为新能源方向的入门研究起点,都非常合适。下文就按我的实际搭建顺序,把需求拆解、模块配置、控制实现、参数整定和踩坑经验一次说清楚。
1. 并网光伏阵列研究需求拆解与系统方案设计
1.1 并网光伏阵列到底在“并”什么
先想明白一个问题:光伏阵列本身是直流源,单块组件的电压也不高,必须串联成串、并联成阵,把直流电压抬上来。而“并网”的关键动作,是把直流电通过逆变器变换成交流,再经过滤波和变压器接入电网。SimPowerSystems 中的电网通常建模为带内阻的三相电压源,频率和幅值固定,逆变器只能去跟踪和同步,而不是反过来推动电网。这个基本关系决定了后面所有控制策略的走向。
我把它拆成三个核心研究对象:第一是直流侧的功率提取,也就是光伏阵列如何工作在当前光照和温度条件下的最大功率点,这由 MPPT 负责;第二是直流母线电压的稳定,因为逆变器向电网输送功率的前提是直流侧电压足够且平稳;第三是交流侧的并网质量,包括锁相、相位同步、电流谐波和功率因数。把这三层分开理解,再去 Simulink 里搭模型就不容易被堆在一起的模块绕晕。
1.2 为什么选择 SimPowerSystems 而不是从零写模型
有人习惯自己搭数学方程做光伏阵列,其实没有那个必要。SimPowerSystems 的优势在于,它把电力电子器件、电力线缆、三相变压器、断路器这些物理模型封装成了现成模块,底层是经过验证的等效电路方程,使用者只要把注意力集中在拓扑和控制策略上。这个库在老版本里叫 SimPowerSystems,升级后叫 Simscape Electrical 下的 Specialized Power Systems,模块用法基本沿用,写论文和研究报告时大家还是习惯叫 SimPowerSystems,方便检索也方便沟通。
它的另一个好处是,能和普通 Simulink 信号侧无缝配合。物理侧用专门的电力模块搭建,控制侧用普通的基本模块搭,中间靠测量模块和信号转换模块衔接。这种“物理模型-控制模型”分离的结构,跟我实际调试时的思路完全一致:先让物理电路跑起来,再看控制侧有没有给出正确的开关信号,出问题的时候很容易定位。
1.3 整体仿真架构设计
我搭模型时没有一上来就全部铺开,而是先把整个系统按功能块切分。光伏阵列高压直流侧是第一个块,里面包含光伏组件等效模型、直流电缆和直流母线电容;Boost 升压和 MPPT 是第二个块;三相逆变桥、滤波器和并网变压器是第三个块;PLL、电流环、电压环等控制子系统是独立的第四个块。
这样切的好处是,每个子系统都可以独立调通后再拼装。比如 MPPT 可以先带纯电阻负载调,不接并网逆变器;并网逆变器可以先用手动直流源调,不接光伏。实际仿真中出现“波形炸了”的情况,多半是某些子系统内部的参数互相拖累,模块化以后排查范围能急剧缩小。
2. 光伏阵列与前端 MPPT 搭建细节
2.1 光伏阵列模块参数配置与背后原理
SimPowerSystems 库里专门的 PV Array 模块非常实用,它内置的是单二极管五参数等效模型,核心参数包括光生电流、反向饱和电流、理想因子、串联电阻和并联电阻。模块提供多种预设光伏组件型号,也允许自定义。我建议自定义,因为预设参数未必匹配你后续的直流母线电压设计。
具体做法是:先确定单个组件型号,比如我参考 SunPower SPR-305 的参数:开路电压约 64.2V,短路电流约 5.96A,最大功率点电压约 54.7V,最大功率点电流约 5.58A,单块峰值功率约 305W。然后根据系统容量决定串并联数。我定的是 15 块串联、10 组并联,直流侧开路电压大约 963V,MPPT 工作点电压约 820V,整体容量约 45.75kW。这个电压等级正好匹配常见的 800V 直流母线设计方案。
这里要注意 PV Array 模块的输入接口。光照和温度可以接外部信号,这样后面可以做光照从 1000W/m² 突降到 600W/m² 的动态工况。模块输出一般包含测量端子和物理连接端子,务必分清楚:测量端子返回的是电压、电流和功率信号,用于 MPPT 计算;物理端子才是接 Boost 电路的。
提示:PV Array 模块的采样时间如果设置得太大,仿真结果会丢失光照快速变化时的细节,建议和整体仿真步长保持一致。后期做慢变工况时,也可以放宽到 0.01s 左右。
2.2 MPPT 扰动观察法实现与防振荡处理
我用的 MPPT 是扰动观察法,这是最经典也最容易落地的方法。思路很简单:先采样当前光伏电压和电流,计算功率,再与上一拍的功率比较。如果功率增加了,就继续朝同一个方向去调整占空比;如果功率下降了,就反方向调整。Simulink 实现可以直接用 MATLAB Function 块写几十行代码,也可以用 Memory 模块保存上一拍的值。
扰动步长是性能的关键。步长取固定值 0.01 时,最大功率点附近会有比较明显的震荡;取 0.001 则跟踪速度变慢,但稳定后功率更平。我实际用下来,先用 0.005 起步,验证整条链路没有问题以后,再改成 0.001 做精细仿真。占空比需要做限幅处理,我限制在 0.1 到 0.9 之间,另外在输出端加了一个速率限制器,限制占空比每秒钟变化率不超过 5,避免启动瞬间占空比跳变导致直流电压崩溃。
MPPT 采样周期要控制好,一般取 0.01s 到 0.02s。采样太快,功率波动会混入开关纹波,导致误判;采样太慢,又跟不上光照突变。对 45kW 这个级别,0.01s 是个不错的起点。
2.3 Boost 电路与信号转换的连接坑
Boost 电路的作用是把光伏阵列输出电压提升到逆变器需要的直流母线电压,同时给 MPPT 提供一个调节占空比的手段。这个拓扑是电感在前、开关管和二极管组成升压单元,结构非常成熟。我用的参数是:电感 2mH、直流母线电容 4mF、开关频率 5kHz,空比约 0.2 到 0.4。
参数怎么算出来的?电感取值主要看电流纹波,Boost 输入电流在满载时有 50A 左右,按允许 10% 纹波算,ΔI 取 5A,开关周期 0.0002s,开关导通占空比 0.3,输入电压约 550V,算出来电感约 6.6mH。实际我留了裕量取 2mH 也没问题,因为光伏源电压会随负载变化。母线电容则根据功率和允许电压波动估算:45kW 功率、800V 母线、允许 2% 电压纹波,算出来需要约 4mF。
连接模块时最容易踩的坑,就是物理端子不能直接接普通 Simulink 模块。必须通过“Simulink-PS Converter”把物理信号转成数值信号,反过来也要用“PS-Simulink Converter”。我用电压测量模块和电流测量模块把物理信号抽出,再转给控制侧。这一步看似简单,但好多人在后面 Bus Selector 里找不到信号,回头才发现原始信号根本没接对。
3. 并网逆变与控制系统的核心实现
3.1 三相 VSC 与滤波器选型
逆变器侧我用了 Universal Bridge 模块,配置成三相两电平逆变器,开关器件选 IGBT。这个模块在 Specialized Power Systems 里可以直接设缓冲电路参数,我的经验是把缓冲电阻设成 100kΩ 左右、缓冲电容设成很大,能有效避免仿真中的奇异点问题。
逆变输出波形不能直接并网,PWM 高频分量会污染电网谐波,所以要加滤波器。常见方案有 L 型和 LCL 型。L 型结构简单,但为了把开关频率纹波压到足够低,电感要很大,体积和成本都不划算。LCL 型多一个电容,对高频纹波衰减能力更强,同时电感总量可以更小。我用的参数是:逆变侧电感 0.3mH,网侧电感 0.1mH,滤波电容 50μF,电容支路串联 0.5Ω 阻尼电阻。这个配置在 5kHz 到 10kHz 载波频率下能把电流 THD 压到 5% 以内。
选型也有讲究。电容太大会让无功电流变大,逆变器需要额外输出容性无功;阻尼电阻大了损耗增加,小了又档不住 LCL 谐振峰的放大作用。我调试时在谐振频率附近看到明显的电流振荡,后来在电容支路串入阻尼电阻才压住。对这个功率等级,0.5Ω 是个比较折中的值。
3.2 PLL 锁相与 dq 旋转坐标系下的控制
并网逆变器要稳定输出功率,必须知道电网电压矢量的实时相位。SimPowerSystems 里有现成的“Three-Phase PLL”模块,输入三相线电压,输出旋转角 θ。我在实际项目里试过,直接用这个模块完全可行,关键是确认输出的角度是电角度而不是机械角度,并且要和后面 Park 变换使用的角度基准一致。
控制结构采用电压定向控制,整个系统建立在 dq 旋转坐标系下。电网电压通过 Clarke 变换和 Park 变换从 abc 转到 dq,这样电网电压的 d 轴分量近似恒定,q 轴分量接近 0。有功电流按 d 轴控制,无功电流按 q 轴控制,解耦效果很好。PWM 模块用的是“PWM Generator (Three-phase, two-level)”,内部生成三角载波和调制波比较,输出六路脉冲给逆变桥。
角度处理还有一个细节:PLL 输出的 θ 可能是带 2π 跳变的波形,但是 Simulink 的正弦余弦函数能正确处理,所以不会在波形上产生跳变。真正需要担心的是 dq 变换的矩阵形式,有些教材用“cosθ 在 a 相列”,有些用“sinθ 在 a 相列”,混用会导致 id 和 iq 方向反掉,这时候看功率流向会非常头疼。
3.3 双闭环控制与 PI 参数整定套路
并网控制的灵魂是“外环稳电压、内环控电流”。外环把直流母线电压采样回来,和给定值比较,经过 PI 调节器后输出有功电流参考值 id_ref;无功电流参考值 iq_ref 一般设 0,保持单位功率因数。内环把实测 id、iq 和参考值做差,经过 PI 调节器后输出调制电压,再叠加电网电压前馈和交叉耦合补偿,得到最终的 dq 轴调制指令。
PI 参数整定我从带宽法开始。电流内环希望响应快,带宽取 1000 rad/s 到 2000 rad/s,对应时间常数 1ms 左右;Kp 近似取带宽乘以电感,约为 0.3,Ki 取 Kp 乘以电阻除以电感,实际电阻很小,我一般按 Kp 的 5% 左右粗略给。直流电压外环带宽要远远低于内环,取 20 rad/s 左右,Kp 约 2,Ki 约 20,然后手动微调。调的时候可以借助 Simulink 里的 PID Tuner 做自动整定,但我觉得先按带宽法给出初值,再观察阶跃响应去调,更容易理解参数变化的因果。
内环输出需要限幅,防止调制波超出 PWM 模块允许范围。PI 调节器最好加抗积分饱和,否则启动阶段误差大,积分器累积很深,后面回调会很慢,直流母线会出现很大的过冲。这一点在做光照突降实验时尤其明显。
4. 仿真整体接线、求解器设置与分步调试
4.1 整体接线逻辑:从光伏侧到电网侧
完整链路的接线顺序是:PV Array 正负极接 Boost 电路,Boost 输出接直流母线电容,电容两端再接 Universal Bridge 直流侧;Universal Bridge 交流侧输出经过 LCL 滤波器,接到三相断路器,再接到并网变压器和电网。光伏阵列处要加电压电流测量,直流母线处要加电压测量,交流侧要加三相电压电流测量,这些测量的信号同时给控制侧和示波器。
断路器不要省略,它可以用来做并网前的预同步判断,也能做后续的故障穿越研究。变压器我用的 Dyn11 接法,目的是给逆变器提供一个与电网隔离的并网电抗,同时抬升输出电压到电网等级。变压器容量取 50kVA,变比根据直流母线电压和电网线电压综合选择。
我在并网点前面加了一组负载,方便观察功率分配。仿真最开始,电网完全承担负载;光伏启动后,逆变器输出功率跟随光照变化,负载消耗固定功率,差额由电网补充或吸收。这样能做到多场景对比,对写研究报告很有用。
4.2 求解器与步长设置:能否跑得动全靠这里
SimPowerSystems 模型对求解器非常敏感。如果用了不合适的求解器,哪怕模块参数全对,也容易报“奇点”或者“仿真终止”错误。我的做法是,在 powergui 里选择离散求解器,Simulink 求解器也设为固定步长。离散化以后,电力电子开关处理起来更稳健,仿真速度也更快。
固定步长取多少要看开关频率。Boost 开关频率 5kHz,PWM 载波 10kHz,固定步长至少要小于载波周期的 1/10,也就是小于 1e-5s。我实际取 1e-5s,也就是 10 微秒,既保证了 PWM 波形精度,又不会让 1 秒仿真等太久。仿真时长从 0 到 2s,足够覆盖 MPPT 启动、光照变化、稳态调节这些常见工况。
连续求解器并不是不行,比如 ode23tb 在特化电力系统模型里经常被推荐,但连续求解器对代数环和手动设置的初始条件更敏感,新手容易卡住。个人建议先离散化跑通,真要深挖控制带宽再考虑改连续求解器。
4.3 分步调试路线:先开环后闭环
我调试的过程可以分为五步。第一步,把逆变器控制信号全部封死,只用光伏阵列接 Boost 再接一个纯电阻负载,验证光伏阵列和 MPPT 是否工作正常,观察直流侧功率是否接近理论最大功率。第二步,把 Boost 输出接到逆变器但断开并网断路器,让逆变器空载,观察直流母线电压能否稳定在设定值,PLL 输出角度是否正确。第三步,只启用电流内环,给定一个很小的有功电流参考值,看并网电流方向是否符合功率流出预期。第四步,把直流电压外环闭合,验证 MPPT 和电压环是否打架。第五步,做光照斜坡和负载阶跃,看全系统动态响应。
每一步我都在关键节点放 Scope,把光伏电压、光伏电流、直流母线电压、并网三相电流和功率集中显示。这样一旦某一步波形不对,我可以立刻判断是物理侧还是控制侧的问题,不会在最后汇总时面对一屏乱波形无从下手。
5. 常见问题与排查技巧实录
5.1 Bus Selector 没有可选信号:物理信号和普通信号混了
这是无数新手会遇到的热门问题,尤其是在 SimPowerSystems 模型里。Bus Selector 只能从 Simulink 总线信号或结构体信号中选取成员,但电力系统模块输出的往往是物理信号或者没有明确命名的向量信号,所以在 Bus Selector 的下拉列表里什么都看不到,显示“没有可选信号”。
解决办法要看信号来源。如果信号来自电流电压测量模块的物理端,必须先用 Simulink-PS Converter 转成普通 Simulink 信号;如果信号本身就是普通向量,直接用 Demux 或者 Selector 按索引取分量,没必要绕道 Bus Selector;如果确实用了 Bus Creator 打包信号,但 Bus Selector 下拉列表为空,多半是因为没有定义 Bus Object,或者模型没刷新。可以按 Ctrl+D 更新模型再试。
我在最初搭模型时就在这个坑里耗了不少时间,后来形成习惯:所有测量信号一律在源头就转成明确的带标签信号,信号线命名清晰,控制器输入直接连带标签的线,Bus Selector 只在真正需要总线聚合的场景下才用。
5.2 仿真中途报错、不收敛或出现代数环
并网光伏模型最常见的报错是“Simulation stopped because of a problem in a solver”或者“Algebraic loop”。前者通常和开关管缓冲电路、理想电压源直接并联等原因有关。检查电路,确保没有电容直接并联理想电压源而没有限流阻抗,确保电感串接时没有开路。后者则是因为控制信号和测量信号之间存在瞬时反馈,解决办法是给采样环节加一个 Memory 或延时单元,把代数环切断。
遇到不连续点时的“奇点”问题,可以把 Universal Bridge 的缓冲电阻加大,让开关切换瞬间的母线具备一点阻尼。仿真中如果出现 NaN 或 Inf,优先怀疑某个 PI 积分器发散,检查限幅有没有设置,以及前级信号是否被除零。
5.3 MPPT 振荡和直流母线电压持续下掉
MPPT 振荡最常见的原因是扰动步长太大。观察光伏功率波形,如果在最大功率点附近出现周期性的锯齿状波动,说明步长过大或者采样周期过短。把步长从 0.01 降到 0.001,功率曲线会平滑很多。另一个原因是功率计算信号里混入了高频纹波,可以先用均值滤波器处理功率信号,再做扰动判断。
直流母线电压持续下掉的场景一般出现在光照突然变弱而负载功率不变的时候。此时光伏侧无法提供足够功率,电压外环又一直努力增加有功电流,结果把母线电压越拉越低。正确处理是,让控制系统能够识别光伏可用功率上限,在功率不足时限制输出电流,甚至考虑切掉负载。仿真里实验时要注意给电压环的输出加限幅,否则 PI 积分器饱和后,母线电压恢复滞后明显。
5.4 并网电流 THD 偏高:滤波器与载波频率的调整
并网光伏要求电流谐波符合标准,THD 一般要小于 5%。如果仿真里 THD 偏高,优先查开关频率是否足够。载波频率 2kHz 时,电感电流纹波很大,THD 自然压不住;载波频率提到 10kHz 以后,相同电感下纹波显著变小。其次查滤波器参数,LCL 电容是否选得过大,电容支路阻尼电阻是否被短路。
看 THD 要用 powergui 里的 FFT Analysis 工具。先把仿真数据以离散波形形式存储,然后打开 FFT 分析窗口,基波频率设置成 50Hz,Max Frequency 设置成 1000Hz 或 2000Hz,适用范围选择最后 1 到 2 个周波,这样测出来的 THD 才和国标测试方法一致,不要用整个仿真时长的数据去分析。
我个人在实际操作中的体会是,这套仿真系统最花时间的其实不是模块接线,而是参数整定和信号类型转换。很多问题看起来是控制参数不对,往深挖却是测量信号类型不对、PLL 角度基准反了或者滤波电容选择失误。先分模块调试、再整体联调,遇到波形不对先查信号类型再查参数,能少走很多弯路。最后再分享一个小技巧:把光照输入做成 1000W/m² 到 400W/m² 的斜坡信号,你会清晰看到 MPPT 的追踪过程、直流母线电压的变化以及并网功率的跟随效果,这组波形对论文和项目汇报都非常有说服力。