ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

基于Simulink的SVG无功补偿仿真建模与双闭环控制实践

基于Simulink的SVG无功补偿仿真建模与双闭环控制实践 开篇为什么我要折腾 SVG 的 Simulink 仿真前阵子单位配电房新上了一台静止无功发生器SVG调试那天我看着控制面板上的功率因数从 0.72 一路爬到 0.99心里就在琢磨这东西内部到底怎么工作的虽然厂家给了手册但光看原理框图总觉得隔着一层。后来我干脆用 Simulink 从头搭了一套 SVG 仿真模型从主电路到控制环路全部自己来折腾了大概两个星期期间踩的坑比过去一年还多。这篇就把我的建模思路、参数计算过程、控制策略实现以及排查问题的实战经验完整记录下来给正在做 SVG 仿真或者准备入坑电力电子仿真的朋友一个参考。这个内容能帮你解决什么问题主要是三件事第一搞清楚 SVG 为什么能快速补偿无功和传统电容柜的本质区别在哪第二掌握在 Simulink 里搭建 SVG 模型的一套完整流程包括主电路参数怎么算、双闭环控制怎么调第三避开学仿真时最常见的几个坑比如发散、锁相环不收敛、直流侧电压建立不起来。适合电力电子方向的学生、刚接触无功补偿的工程师还有想做电能质量仿真验证的同行参考。1. 先从原理说起SVG 到底在干什么1.1 和传统电容柜相比SVG 强在哪里在聊仿真之前得先把 SVG 的原理讲透。你去看无功补偿的发展史早期就是接触器投切电容器组后来有了晶闸管投切电容TSC、晶闸管控制电抗器TCR再到现在的 SVG本质思路完全不一样。电容柜说白了就是并一组电容上去用接触器一组一组地投。缺点很明显补偿是阶梯式的负载无功一变要么过补要么欠补而且电容投切的涌流大、触点容易坏响应速度以秒计。你遇到过那种点焊机一工作车间功率因数猛掉的场合电容柜根本追不上。SVG 的思路就完全不同了。它本质上是一个电压源型逆变器通过 PWM 控制逆变器输出电压的幅值和相位让交流侧电流超前或滞后电网电压从而等效成一个连续可调的无功源。它能做到毫秒级响应补偿范围从感性到容性连续可调不会和系统发生谐振而且还能兼顾一部分谐波补偿功能。这就是为什么现在新建项目里 SVG 越来越普及。理解到这一层仿真的目标就很明确了我们要在 Simulink 里搭出一个能根据负载无功变化自动调节输出电流的逆变器系统验证它的稳态补偿效果和动态响应能力。1.2 仿真的价值花最少的钱验证控制策略有人可能会问有现成的 SVG 设备直接拿示波器测不就行了这个问题我刚开始也纠结过。但实际做下来发现真机调试有很多限制你没法随意修改控制参数没法在不同负载工况下反复测试更没法把直流侧电压、调制波这些内部信号一个个拉出来看。而 Simulink 仿真的优势就在于完全可控。你可以把 PI 参数从 0.5 改到 5 看响应变化可以把负载从纯阻性换成阻感混合可以在 0.5 秒时突然切掉一半负载模拟动态过程。这些操作在真机上都不敢轻易做但在仿真里随便试。而且仿真能暴露出很多理论计算时忽略的细节问题比如开关纹波对电流采样的影响、PLL 在电压畸变时的锁定精度这些都是真机调试时容易忽略但实际很重要的点。2. 仿真模型整体架构从主电路到控制回路2.1 主电路拓扑电压源型逆变器怎么搭SVG 的主电路拓扑并不复杂核心就是一个三相桥式逆变器直流侧接一个大电容维持电压交流侧通过电感或者 LCL 滤波器并到电网上。在 Simulink 里我推荐直接用 Simscape Electrical 库里的模块。三相电源用Three-Phase Source逆变器用Universal Bridge桥臂选 IGBT/Diode 组合。这里有个细节要注意Universal Bridge默认的 Ron、Rn 这些寄生参数会影响仿真精度如果做稳态分析可以把开关管设成理想模型但如果要研究损耗和温升就得把导通电阻、开关时间这些参数填进去。交流侧电感这块我一开始图简单只用了三个独立的Series RLC Branch设成纯电感结果电流纹波大得没法看。后来改成三相并联的Three-Phase Series RLC Branch把耦合效应也考虑进来波形明显好了很多。如果你要更贴近工程实际可以上 LCL 滤波器但控制复杂度会上去一截建议先把 L 型调通再升级。直流侧电容理论上越大电压越稳但太大充电时间会变长成本也高。我后面会专门讲这个参数的选取过程这里先记住一个结论直流电压取电网线电压峰值的 1.5 倍左右电容按电压波动允许范围反推。主电路搭完之后别忘了在电源侧加一组Three-Phase V-I Measurement既给控制回路提供电压电流采样信号也给后面的波形分析提供数据来源。2.2 关键参数计算别小看这几个数值这一节是整篇里最值得收藏的部分。我当初搭模型时最头疼的不是搭电路而是参数到底取多少。查了半天文献各说各话最后还是自己推导了一遍才算明白。先说容量。假设我们要做一个 50kvar 的 SVG电网线电压 380V/50Hz。这个容量怎么理解就是它最大能向电网注入或者吸收 50kvar 的无功功率。对应的交流侧电流有效值大约 I Q / (√3 × U) 50000 / (√3 × 380) ≈ 76A。这个电流值决定了交流电感的通流能力和逆变器的容量。直流侧电压怎么定逆变器要能输出和电网电压匹配的交流电压直流侧电压必须高于交流线电压的峰值。380V 电网的线电压峰值是 537V考虑到 PWM 调制度一般取 0.8~0.9直流电压 Udc 大概取 537 / 0.85 ≈ 632V工程上通常取 650V 到 800V 之间。我模型里取的是 700V留了一定裕量。交流电感 L 的选取是个权衡电感太小电流纹波大谐波含量高电感太大电流响应变慢动态性能变差。常用经验公式是让电感在额定电流下的压降不超过 5%~10%。以 76A 为例电感压降取 5% 即 11V感抗 XL 11 / 76 ≈ 0.145Ω电感 L XL / (2πf) 0.145 / 314 ≈ 0.46mH。我实际取的是 0.5mH仿真效果不错。直流电容 C 的选取也讲究。电容的作用是在开关周期内稳住直流电压允许的电压波动一般在 5%~10%。用能量守恒来算C (S × T) / (Udc × ΔUdc)。比如开关频率 10kHz周期 100μsS50kvarUdc700VΔUdc 取 5% 即 35V那么 C 50000 × 0.0001 / (700 × 35) ≈ 204μF。但这是理论下限实际为了抵抗负载突变时的电压波动我取到了 5000μF相当于一个较大的储能池。我把这几个参数整理成表格方便你对照调整参数符号计算依据本模型取值额定容量S设计指标50kvar电网线电压U系统电压380V/50Hz直流侧电压Udc≥√2×U√3 / 调制度700V交流侧电感L压降 ≤ 5%~10%0.5mH直流侧电容C按电压波动 5%~10%5000μF开关频率fswIGBT 开关损耗与纹波权衡10kHz2.3 控制回路框架检测、调节、调制三件套主电路搭好只是第一步SVG 的灵魂在控制回路。整个控制系统分三块无功检测、闭环调节、PWM 调制。无功检测这块核心是瞬时无功功率理论。简单说就是把三相电流电压变换到两相同步旋转坐标系dq 坐标系下这时候基波正序分量在 dq 坐标系里变成直流量无功功率对应 q 轴的电流分量。这个变换的细节在下节专门讲这里先记住结论我们要拿到电网电压的相位信息用 PLL 锁相环然后通过坐标变换把负载电流分解成有功电流 id 和无功电流 iq。闭环调节采用经典的双闭环结构外环是直流电压环控制直流侧电容电压稳定在设定值内环是电流环控制 SVG 输出的无功电流快速跟踪指令值。电流环的指令值是怎么来的一部分是来自无功检测模块算出的系统所需无功电流另一部分是直流电压环的输出用于维持逆变器自身的有功损耗和直流电容的能量平衡。PWM 调制这部分我用的是 SPWM 方式把电流环输出的调制波和三角载波比较生成六路开关信号送给逆变器的六个开关管。SPWM 的好处是直观、容易调通缺点直流电压利用率比 SVPWM 低 15% 左右。如果你后面要做优化可以换成 SVPWM但建议先把 SPWM 跑通。3. 核心控制策略的 Simulink 实现3.1 无功电流检测dq 变换的前因后果做 SVG 仿真第一个拦路虎就是坐标变换。很多新手看着公式一头雾水其实就是高中数学里的投影概念换了个马甲。三相静止坐标系abc里的三个量在空间上互差 120 度变化起来很麻烦。Clark 变换先把它们映射到两相静止坐标系αβ相当于把三维空间的问题降维到二维。然后 Park 变换再把 αβ 坐标系以电网角频率 ω 旋转得到 dq 坐标系。关键点是当 dq 坐标系和电网电压矢量同步旋转时电压和电流的基波正序分量在 dq 轴上就是恒定值不再是正弦变化的量这就方便了 PI 控制器对直流量进行无静差跟踪。在 Simulink 里的实现方式有两种。一种是直接用abc_to_dq0 Transformation模块这模块库里有现成的设置好旋转角度就行。另一种是自己搭数学运算模块这样能更清楚每一步的数学关系。我建议初学者自己搭一遍代码也就几行function [id, iq] abc_to_dq(ia, ib, ic, theta) % Clark 变换 alpha (2/3) * (ia - 0.5*ib - 0.5*ic); beta (2/3) * ((sqrt(3)/2)*ib - (sqrt(3)/2)*ic); % Park 变换 id alpha * cos(theta) beta * sin(theta); iq -alpha * sin(theta) beta * cos(theta); end这里面有个最容易出错的地方theta 到底用哪个角度正确做法是取电网电压矢量的角度也就是通过锁相环PLL测出来的角度。如果 theta 不对id 和 iq 就不是恒定值而是带有二倍频波动。我一开始偷懒直接用固定频率积分生成 theta结果负载一波动检测出来的 iq 就跟着抖根本没法用。后来老老实实加了Three-Phase PLL模块才算解决。还有一点要提醒如果电网电压不平衡或者有畸变简单的 PLL 加 dq 变换会引入误差。这时候需要用到双同步坐标系解耦DDSRF或者陷波滤波器来分离正序和负序分量这是进阶玩法先把基础版搞明白再说。3.2 双闭环控制电压外环稳住直流侧电流内环快速跟踪双闭环控制是 SVG 控制的核心理解它的逻辑比抄参数重要得多。先说电流内环。电流环的作用是让 SVG 输出的实际电流跟踪指令值。在 dq 坐标系下被控对象的数学模型是ud L·(did/dt) - ωL·iq eduq L·(diq/dt) ωL·id eq这里 ed、eq 是电网电压在 dq 轴的分量。注意式子里的交叉耦合项 ωL·iq 和 ωL·id以及电网电压扰动项 ed、eq。如果不管它们d 轴和 q 轴会互相干扰控制效果很差。所以标准做法是引入前馈解耦控制把 PI 控制器的输出加上交叉耦合补偿项和电网电压前馈项得到最终的调制电压指令。解耦后d 轴和 q 轴就变成两个独立的二阶系统可以分别设计 PI 参数。电流环的 PI 参数整定可以用经典方法设电流环期望带宽为 ωci被控对象近似为 L/(RsL)则 Kp ωci × LKi ωci × R。比如电感 0.5mH电阻很小约 0.01Ω期望带宽取 1000rad/s那么 Kp ≈ 0.5Ki ≈ 10。实际调试时这两个参数可以在这个基础上微调。直流电压外环的逻辑是这样的SVG 在工作时自身也会消耗少量有功功率开关损耗、电感铜耗如果直流侧没有能量补充电容电压会一路下跌到没法正常工作。所以电压环的职责是感知 Udc 和设定值的偏差把偏差折算成一个 d 轴电流指令有功电流控制逆变器从电网吸收少量有功来维持直流母线电压。电压环的带宽要远低于电流环一般低 10 倍以上这样才能保证两个环路互不干扰。我给个参考的 PI 初值你自己微调的时候省点时间控制环Kp 初值Ki 初值整定依据电流内环 d 轴0.510带宽约 1000rad/s电流内环 q 轴0.510同上对称整定电压外环0.020.5带宽要小于 100rad/s3.3 PWM 调制与驱动信号生成控制环路算出来的 ud、uq 是 dq 坐标系下的调制电压需要先反变换回 abc 坐标系才能和载波比较。反变换的角度还是用 PLL 测出来的 theta这点务必保证和正变换一致否则调制波相位就乱了。我用的 SPWM 实现方式是载波用 10kHz 的三角波调制波是三相正弦参考电压两者通过Relational Operator比较生成 0/1 信号。这里有个坑Universal Bridge的触发信号需要互补的上下桥臂驱动而且上下桥臂之间要加死区时间防止直通短路。Simulink 里可以用Dead Zone模块或者直接在Universal Bridge的内部参数里设置死区时间。死区时间一般取 2~5μs。我最初没加死区仿真居然也能跑但后来看开关管电流波形时发现有尖峰加死区后尖峰明显减小。这是仿真里容易忽略但实际非常重要的一个问题。另外如果调制波幅值超过载波幅值就会出现过调制输出电压波形会产生大量低次谐波。我习惯在调制波输出端加一个Saturation限幅模块幅值限制在 0.95 以内留一点线性调制区间。4. 仿真结果分析与波形解读4.1 稳态补偿效果从功率因数看成效模型搭完参数调好后第一件事就是跑稳态工况验证。我的做法是电网 380V负载先设成一个固定的阻感负载有功 40kW无功 30kvarSVG 投入前后各跑 0.3 秒对比电网侧的电流、功率因数和无功功率。从仿真波形看SVG 投入前电网侧电流明显滞后于电压功率因数大概 0.8 左右投入后经过大约 20ms 的调节过程电流和电压相位基本重合功率因数稳定在 0.99 以上。这里我特别关注两个指标一个是无功功率 Q 是否接近零一个是直流侧电压是否稳定在设定值 700V。前者反映补偿效果后者反映电压外环是否正常工作。实测下来稳态时 Q 基本在 ±1kvar 以内Udc 波动在 ±5V 以内效果相当理想。还有一个细节看 SVG 网侧电流波形的时候别只盯着一相的波形要结合三相看是否对称。如果三相不对称大概率是 PLL 锁相或者坐标变换里有问题。4.2 动态响应负载突变时 SVG 的反应速度稳态没问题后重点测试动态响应。我在 0.5 秒时把负载的无功从 30kvar 突然跳到 60kvar模拟现场大功率设备突加的场景观察 SVG 的跟踪速度。从波形上看负载无功突变后SVG 的输出电流在 5ms 内就开始响应大约经过一个工频周期20ms基本跟上指令值电网侧的无功功率在突变后的 30ms 内恢复到一个很小的范围。这个响应速度对绝大多数工业现场设备来说是足够的也比传统的电容柜快了一个数量级以上。动态测试中我发现一个有意思的现象电流内环的 PI 参数对响应速度影响非常敏感。Kp 稍微调大一点响应是快了但电流波形开始出现振荡Kp 保守一点响应变慢但稳定。我最终采用的方案是让 Kp 稍微偏保守把超调量控制在 5% 以内换来的是全程无振荡的电流波形。这在实际工程中是有意义的毕竟谁也不想看到 SVG 在动态调节时引起系统振荡。5. 常见问题与排查技巧实录5.1 仿真发散的几类原因与对策做电力电子仿真发散是绕不开的问题。我最早搭的模型一跑就发散查了半天总结下来主要是这几种情况。第一类是求解器设置问题。Simulink 默认的变步长求解器 ode45 对付这种带开关器件的系统经常力不从心。我换成 ode23tb适合刚性系统把最大步长限制在 1e-5 秒以下问题迎刃而解。如果你用的是定步长求解器步长一定要小于开关周期的 1/100也就是 10kHz 开关频率下步长要小于 1e-6 秒。第二类是代数环问题。采样信号经过一连串模块后直接反馈到前向通道容易形成代数环导致求解失败。解决办法是切断代数环常见做法是在反馈路径加一个内存模块Memory或者Unit Delay。这在 dq 变换和 PI 控制器的连接处尤其容易发生。第三类是初始条件问题。比如直流电容初始电压为零刚启动瞬间逆变器要强行把电压抬到 700V电流冲击大得直接导致仿真发散。解决方法就是把电容的初始电压设成接近稳态值比如 650V或者让系统先带一个预充电阻启动等电压建立后再切到正常运行状态。5.2 PLL 锁相与 dq 变换的相位坑PLL 锁相环看起来简单实际坑不少。我遇到过的最典型问题是锁相环输出的 theta 和电网电压相位差了一个固定角度导致检测出来的 d 轴和 q 轴分量不准。排查方法很简单在仿真里把电网电压的 a 相波形和 sin(theta)、cos(theta) 波形放到同一张图里看。正常情况下sin(theta)应该和 a 相电压同相位如果差了 90 度或者一个固定值就要检查 PLL 的初始角度设置和abc_to_dq0 Transformation模块里的旋转方向设置。还有一个隐藏较深的问题PLL 模块输出的 theta 是斜坡信号从 -π 到 π 循环而 dq 变换里用的三角函数需要连续光滑的角度。如果不做处理直接用每次 theta 跳变时会出现相位跳变导致 id、iq 波形出现周期性毛刺。解决办法是用Modulo-Flipped模块把斜坡信号变成连续递增的角度或者用Rate Limiter平滑处理。5.3 直流侧电压建立不了或波动大的处理直流侧电压是 SVG 正常工作的大前提。如果模型跑起来发现 Udc 一直掉或者震荡问题通常出在电压外环。我调试时遇到的一个情况是电压环 PI 参数取反了。由于电压外环的输出是 d 轴电流指令如果 PI 极性接反整个系统变成正反馈Udc 根本无法稳定在设定值。排查思路是先把电流环指令全部置零单独给一个固定的 d 轴电流观察 Udc 是上升还是下降以此确定极性是否正确。另外电压环的带宽如果取得太高会和电流环互相干扰引起 Udc 振荡。我最初的电压环带宽取了 500rad/s结果 Udc 波形剧烈抖动后来降到 50rad/s 才稳定。记住一个原则电压环带宽要比电流环低 10 倍以上让两者在频域上解耦。5.4 谐波与纹波的抑制经验SVG 本身用于改善电能质量但如果它的设计参数不合理反而会向电网注入谐波。我见过有人把仿真跑通后网侧电流的 THD 高达 15%这在实际中是不能接受的。谐波来源主要有三个开关纹波、死区效应和调制波畸变。开关纹波由交流侧电感滤除电感越大纹波越小但动态响应越慢需要权衡。死区效应会引入低次谐波通常需要加死区补偿算法。调制波畸变多半是坐标变换或限幅设置出了问题需要回到前面排查相位和幅值。对于开关纹波我实测下来当电感取 0.5mH 时 THD 约 5%加大到 1mH 时能降到 3% 以下。如果你的系统对谐波要求高建议用 LCL 滤波器替代 L 型对高频纹波的衰减效果是两个数量级的提升但要注意 LCL 的谐振尖峰需要加阻尼一般是串一个小电阻或者用有源阻尼算法。6. 从仿真到工程还有哪些路要走模型调通之后我又花了不少时间思考一个问题仿真和实际设备的差距到底在哪这里聊聊我的体会帮大家建立更完整的认知。Simulink 模型里用到的是理想电网、理想开关管、理想传感器而实际工程面对的是阻抗会变化的电网、开关损耗发热、器件压降随温度漂移、采样延时和量化误差这些因素在仿真里很难全部复现。所以仿真验证过的控制策略工程落地时通常要加一层保护逻辑包括过流保护、过压保护、欠压保护、温度保护和通信故障保护。另外仿真里的 PI 参数到现场大概率要重新整定因为实际系统的电感和电容参数存在容差线路阻抗也与模型假设不同。我现在做仿真时会刻意把参数在合理范围内扰动一下看看控制器的鲁棒性这比追求单一工况的完美波形更有价值。如果你后续要把 SVG 往硬件方向走我建议在 Simulink 里验证完算法后用代码生成工具把控制模型转成嵌入式 C 代码配合快速原型控制器比如 dSPACE 或者基于 STM32 的板卡搭建硬件在环测试平台。这条路能帮你把控制周期、采样延时这些细节提前暴露出来减少现场调试的时间成本。写在最后的一点心得这次 SVG 仿真做下来我最深的体会是仿真跑通容易跑好很难。所谓好不只是波形漂亮而是你对每一个参数背后的物理意义都心里有数。你调 PI 的时候知道带宽取多少合适你改电感的时候知道谐波和动态性能的此消彼长这才是仿真带给你的真正能力。最后给刚入门的朋友一个小建议不要一上来就追求功能完备的模型先搭一个最简单的开环模型看逆变器能不能输出预期的电压波形然后加无功检测验证 dq 变换的准确性最后再上闭环控制。每一步都把波形和理论对上号了再往后走就不容易出那种让人抓狂的仿真发散问题了。
返回列表