ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Matlab Simulink中SVG静止无功发生器仿真:从参数推导到双闭环控制

2026/10/6 21:35:00 拓冰建站 浏览量
Matlab Simulink中SVG静止无功发生器仿真:从参数推导到双闭环控制 刚接触SVG仿真那会儿我对着Simulink模型图一度非常迷惑——SVG到底是那个矢量图片格式还是电力系统里的无功补偿装置等查完资料才闹明白这里的SVG是Static Var Generator静止无功发生器跟Scalable Vector Graphics除了缩写撞车没有任何关系。这个缩写同名的问题在检索资料时经常踩中导致搜出来一堆图片渲染教程。我前后花了差不多三周时间在Matlab Simulink里把一台10kVar的SVG无功补偿仿真从主电路参数推导到双闭环控制策略完整搭起来又把稳态波形、动态响应、谐波分析全部跑通。这篇文章就是这次仿真探索的完整复盘把原理、建模、参数推导和调试踩坑都串起来讲清楚适合正在做电力电子课程设计、毕业设计或者想搞懂无功补偿控制机理的读者参考。1. SVG到底在补什么无功补偿的底层逻辑1.1 一个理解无功的通俗说法无功补偿这件事很多人一开始学的时候被无功两个字带偏了以为无功就是没用的功。实际上无功功率是交流电力系统维持电压和磁场必不可少的部分。你想象一家物流公司货车在路面上正常行驶拉货是有功但是如果仓库里的传送带需要持续运行、变压器需要建立磁场这部分能量在电网与设备之间来回搬运不做对外机械功却实实在在占着线路输送能力。感性负荷异步电机、变压器、电弧炉、整流设备需要从电网吸收滞后的无功电流来建立磁场。无功电流在线上来回流动会造成线路压降、增大损耗还会让电源侧功率因数变低。电网考核功率因数低于0.9一般就要罚钱很多企业上了电容柜来改善这也是SVG最直接的应用场景。从物理层面说SVG说白了就是一个并联在电网上的电压源型变流器VSC通过PWM调制让变流器交流侧输出一个可控的电压幅值和相位经过连接电抗器与电网电压形成压差从而控制流过电抗器的电流。只要把电流控制在与电网电压正交的方向上它就能向电网发出或吸收无功看起来像是一个连续可调的电感或电容。1.2 为什么传统电容补偿不够用传统电容器组只能分级投切每投一组就是几百千乏的台阶对着变动负荷很难精确匹配。接触器投切还有机械延迟响应速度按秒计算碰上电弧炉、轧机、提升机这类快速冲击负荷电压闪变根本压不住。而SVG的响应时间是毫秒级的电流可以连续调节既能发无功也能吸无功不会跟系统电抗形成危险的谐振点。我把两者的关键差异列在下面这张表里做方案选型的时候可以直接参考对比项传统电容补偿SVG静止无功发生器调节方式分组分级阶梯式连续无级调节响应速度秒级接触器动作毫秒级PWM控制无功方向只能发出容性可发可吸双向调节谐振风险存在并联谐振风险无电容谐振谐波治理灵活控制精度粗放波动大闭环精准稳定性好成本低高需维护电力电子器件当然SVG成本高不少工程上经常采用电容器粗调加SVG细调的组合方案。但仿真阶段我们没有预算约束直接把SVG模型搭出来研究控制逻辑才是最干净的路径。1.3 这次仿真探索的目标边界我这次在Simulink里做的是三相三线380V系统、额定容量10kVar的SVG模型。控制目标有三个第一直流母线电压稳定在750V左右第二对感性负载进行无功补偿后网侧功率因数接近1第三无功指令阶跃时SVG动态响应时间在10ms以内。模型只做主电路加控制策略不深究IGBT的开关损耗、散热、绝缘配合这些工程落地细节毕竟仿真的价值在于把控制机理先吃透。凡是涉及SVG与源侧坐标系定义、符号方向的内容我会在后文专门强调因为这类细节是第一次搭仿真最容易出错的地方。2. 从电网电压推参数SVG主电路模型搭建2.1 Simulink模块选型清单我用的模块都来自Simscape Electrical原来是SimPowerSystems后来合并进去了。先把主电路拼出来再往上叠加控制部分。主电路需要以下核心模块Three-Phase Source三相交流电源线电压380V频率50Hz内阻可设很小值模拟无限大电网。Series RLC Branch用两个支路分别模拟线路阻抗和SVG连接电抗。SVG侧用纯电感R设0.03Ω串联在变流器和电网之间。Universal Bridge三相两电平VSC桥臂我这里选IGBT二极管默认内建反并联Ron和缓冲电路保持默认。DC Capacitor直流侧母线电容初始电压设为500V左右避免仿真开始瞬间冲击过大。Three-Phase Parallel RLC Load作为被补偿的感性负荷初始有功5kW无功设置成8kVar感性模拟功率因数0.53的重负载场景。Breaker可选用于后续做负荷突变的动态实验可以设定在某个时刻切入一组额外的感性负载。模块清单不需要多花哨SVG主电路本质就是三相电源电抗器VSC桥直流电容四件事。很多同学喜欢一开始把模型画得很复杂各种测量模块堆一堆后面调试起来反而找不到问题。2.2 直流母线电压定750V的推导过程直流母线电压不是随便取的。三相VSC交流侧输出的相电压幅值依赖于直流电压对于SPWM调制变流器交流侧相电压峰值最大只能达到直流母线电压的一半即桥臂中点输出的最大相电压幅值等于Vdc/2。电网相电压幅值是多少线电压380V对应相电压有效值220V幅值是220乘以根号2约311V。要保证变流器在调制比不超过1的前提下有能力输出这个电压Vdc至少要大于等于2乘311V也就是622V。实际工程中还得留裕量因为连接电抗上有压降PWM死区也会带来电压损失而且调制度一般不会长期工作在1.0。我最终把直流母线电压定在750V给出约20%的裕量。如果换成220V系统相电压幅值约180V直流母线取400V就够这个关系可以按比例推广。2.3 连接电感3mH和直流电容4700uF怎么来的连接电抗的取值直接决定电流纹波和动态跟随速度。电抗太小PWM开关产生的高频电流纹波会很大电抗太大电流响应慢SVG就失去了动态补偿意义。工程经验是取0.05到0.15标幺值之间。以10kVar、380V系统来算基准阻抗Zb等于380平方除以10000约14.44欧姆。我取0.06标幺值对应感抗0.866欧姆再除以2π乘以50Hz得到电感量约2.76mH。最后取整到3mH实际仿真纹波和响应速度都在合理范围。直流母线电容和电压纹波直接相关。电容越大纹波越小但动态响应变慢成本和体积也上去了。工程上按允许的电压波动来估算这里取允许波动2%即750V下约15V直流母线电压功率脉动按额定10kW算用到近似公式C大于等于P除以2乘以角频率乘以允许波动电压乘以母线电压代进去得到10kW除以2乘314乘15乘750约1414uF。我考虑到仿真中负载突变时的裕量直接取4700uF一步到位后面调参省很多事。2.4 仿真步长和离散化的选择SVG仿真有个容易忽略的问题PWM开关频率高了之后连续变步长求解器会频繁减步长一个十秒的仿真能跑出十分钟。我的做法是主电路保持连续模型仿真控制部分离散化整体用固定步长求解器步长取1e-5秒10微秒PWM载波频率10kHz这样每个开关周期有10个采样点精度足够。控制器的采样时间也设置为1e-5秒跟仿真步长保持一致避免多速率采样引入的相位延迟。如果你用的是变步长求解器电流内环的PI调参很容易被数值步长变化忽悠一会发散一会稳定最后都不知道是参数问题还是求解器问题。仿真模型追求的不是绝对精确而是在可控误差范围内给出可复现的行为固定步长是复现性的前提。3. 控制策略dq解耦双闭环在Simulink里的落地3.1 为什么非要在dq坐标系里控制直接在三相静止坐标系里控制SVG面对的是三个相位相差120度、随时间正弦变化的交流量。常规线性PI控制器对交流量做无静差跟踪非常困难除非你用PR比例谐振控制器。而在同步旋转dq坐标系下三相基波正弦量被变换成直流量PI控制器就能发挥无静差优势。这在思路上类似于你开车时把往东南方向修正两度这个时变指令变成方向盘回正到某固定角度这种恒定指令控制难度完全不是一个量级。dq变换的实际流程是先采集三相电流和电压通过Clark变换把abc三相信号变成静止αβ坐标系下的两相信号再做Park变换得到跟着电网电压同步旋转的dq轴直流分量。旋转角度来自锁相环PLL的实时输出只要PLL锁得准d轴对齐电网电压矢量d轴电流就是纯有功分量q轴电流就是纯无功分量。这样一来控制无功就变成了控制一个直流电流给定值非常好操作。3.2 电流内环的搭建细节电流内环是整个控制系统的核心基本任务就是让实际电流快速跟踪指令电流。在dq坐标系下VSC的交流侧电压方程是这样的L乘di_d/dt -R乘i_d ωL乘i_q u_sd - u_cdL乘di_q/dt -R乘i_q - ωL乘i_d u_sq - u_cq这两个方程里ωL乘i_q和-ωL乘i_d是d轴与q轴之间的耦合项如果不管它们d轴电流给定突变会让q轴电流跟着振荡动态性能很差。我的做法是在PI调节器输出后面加上解耦补偿u_cd的参考值等于u_sd加ωL乘i_q再减去PI输出u_cq的参考值等于u_sq减ωL乘i_d再减去PI输出。补偿之后d和q两个通道近似独立可以单独整定。具体的Simulink搭建流程可以按下面这条线走用abc_to_dq0 Transformation模块将VSC交流侧三相电流转成dq分量旋转角度接PLL输出。电流指令i_d_ref来自外环直流电压环i_q_ref来自无功指令换算。分别计算d轴误差和q轴误差进Discrete PI ControllerPI输出加减解耦项得到调制波u_cd_ref、u_cq_ref。调制波dq分量经过dq0_to_abc模块逆变换回三相馈入PWM Generator的调制波输入生成6路IGBT触发脉冲。PWM模块载波比设20010kHz载波对50Hz基波直流电压取750V做参考。全过程看着长实际在Simulink里就是几根信号线的连接。需要注意的是PWM Generator在三相模式下要求调制波幅值不超过1所以PI输出和解耦补偿后的调制波要做标幺化处理把电压基值取为Vdc除以2。3.3 直流电压外环和无功指令怎么接直流电压外环的本质是让VSC吸收或释放有功功率来维持电容电压稳定。直流电容的功率关系是电容储存电能的变化率等于SVG交流侧输入有功功率。d轴电流正比于有功功率所以电压外环的输出就是电流内环的d轴指令i_d_ref。无功指令的换算有一个公式非常关键在等幅值Park变换前提下三相系统无功功率Q等于1.5乘以u_sd乘以i_q。既然PLL把d轴对准了电网电压u_sd就是相电压幅值310V那么i_q_ref就等于Q_ref除以1.5乘310。比如要发8kVar无功i_q_ref大约就是17.2A符号根据方向约定来定。我在模型里把电网流向SVG的方向定义为正参考方向SVG吸收感性无功时i_q为正发出无功时i_q为负。仿真前一定要想清楚自己的符号体系不然波形出来方向反了排查半天找不到原因。电压外环的PI输出需要加限幅我这边限幅在±25A。这个限幅值就是电流内环的允许最大电流本质上是保护IGBT不过流。限幅之后还要加积分抗饱和处理Simulink的Discrete PI Controller自带anti-windup选项一定要打开。第一次调试时我忘开负荷突变瞬间电压环积分饱和直流母线过冲到800多伏吓得以为器皿炸了。3.4 一组可以直接试的PI初值PI参数网上一搜一堆但真正能直接用的初始参数还是有门道的。我的经验是先用带宽法估算一个范围再微调。电流内环比电压外环快得多按电流环带宽1000Hz估算Kp约等于L乘以2π乘以10003mH算出来约18.8Ki取值通常在Kp的5到10倍角频率附近我初试给Kp等于15、Ki等于1000。电压外环带宽取电流环的十分之一左右Kp初试给1、Ki给20。下面是两组直接可用的参数环节KpKi说明电流内环d轴151000带宽约1kHz先固定电流内环q轴151000与d轴对称设置直流电压外环120带宽约100Hz响应较慢PLL锁相环501500带宽约150Hz稳定跟踪整定顺序永远是先内环后外环。把电压环增益先调低甚至挂一个常数给定i_d_ref单独看电流跟踪效果电流环稳了再逐步放开电压环一点一点加Kp不然两个环互相作用发散时你根本分不清究竟是哪一环出了问题。4. 仿真验证从空载到满载的波形判读4.1 稳态波形看什么相位对齐与功率因数模型跑通后第一件事就是看稳态波形。我在Scope里放了四路信号网侧A相电压、网侧A相电流、SVG输出的A相电流、直流母线电压。开始时SVG不投入只有三相感性负载8kVar挂在电网上你会看到网侧电流明显滞后电压相位差大约58度功率因数只有0.53。然后我给SVG发8kVar的容性无功指令让i_q_ref变为负值几毫秒之后网侧电流和电压变成同相位相位差归零功率因数恢复接近1。这个相位对齐的过程就是SVG补偿成功的直接证据。你可以再加一个功率因数测量模块或者直接用Simulink的Power Measurement读取基波有功和无功能稳定显示0.99以上就算合格。直流母线电压此时应该稳定在750V附近纹波峰峰值在20V以内为好超出就要回头查电容参数和电压环带宽。4.2 动态响应无功阶跃和负荷突变怎么测动态性能是SVG区别于电容器组的核心卖点。我在模型里加了一个Step模块在0.3秒时把无功指令从8kVar阶跃到发4kVar然后再在0.5秒时阶跃到吸收2kVar。观察i_q的跟踪波形理想情况是电流内环在半个到几个毫秒内跟上指令电压外环在几十毫秒内恢复直流电压。实测下来我的模型里i_q在4ms左右到达目标值的90%直流母线电压跌落不超过15V并且30ms内恢复这个表现已经接近工业级SVG的动态指标。如果要做负荷突变实验就在负载侧加一个Breaker设定在0.4秒切入一组额外负载。这时候外网电压会瞬间被拉低SVG应该自动增大无功输出把电压拉回来。观察网侧电压波动幅度和恢复时间是评价控制性能的好办法也是把这篇仿真写出深度的关键实操。4.3 用FFT确认谐波水平SVG的PWM调制本质上是斩波过程交流侧电压不可避免含有开关频率附近的谐波分量。我习惯在Powergui模块里选择FFT Analysis对网侧电流做频谱分析。采样时间选在最后0.2秒的数据基波50Hz最高频率设到2kHz。你会看到基波占绝对主导然后在10kHz载波频率附近有一些谐波边带但幅值衰减得很快。如果网侧电流THD在5%以内基本满足电网要求如果超出可以先检查连接电抗是不是太小、载波比设置是否合理、电流内环PI带宽是不是太低。注意FFT分析窗口长度要覆盖完整工频周期的整数倍不然会发生频谱泄漏算出来的THD虚高。我一开始没注意窗口取了0.15秒正好不是50Hz的整数倍周期THD显示12%浪费了半天排查时间。5. 调试记录那些让SVG发散的坑5.1 直流母线电压飞掉的三个常见原因第一次跑通模型时直流母线电压在0.1秒内冲上900V然后发散波形直接飞出屏幕。我把问题拆成三个方向排查最后才定位到原因。第一个原因是PI输出方向反了电压环的误差定义写反导致SVG往电容里倒灌有功电压越冲越高。检查方法是把电压环断开给一个固定的i_d_ref观察Vdc是上升还是下降确认方向正确后再闭环。第二个原因是电流限幅缺失SVG启动瞬间电容电压低充电电流巨大没有限幅时PI输出直接给到满调制直流电容相当于短路充电电压当然刹不住。给电压环PI输出加±25A限幅后瞬间正常。第三个原因是积分饱和负荷突增时外环误差长期为大值积分项积累到饱和等误差反转后积分器还要很长时间退饱和导致电压过冲。解决办法就是打开anti-windup或者做积分分离。这三个坑层层叠加排查的时候要有耐心一次只改一个变量。5.2 dq轴电流莫名其妙耦合的现象我第二版模型里出现一个诡异现象无功指令没有变化但q轴PI输出和d轴电流都在振荡像两个轮子互相咬住。根子出在解耦前馈项上——我建模型时图省事把ωL乘i_q这一项删掉了结果d轴和q轴之间完全通过电抗器耦合在一起物理上就是电感储能会在两个轴之间交换。把解耦项补上去之后耦合振荡立刻消失。后来我做对照组实验故意把解耦系数乘0.5d轴电流的动态就又开始波浪起伏这验证了解耦补偿在电压等级越高、电感越大时越不可省略。想用经验判断解耦是否起效可以给q轴电流加一个小阶跃看d轴电流有没有瞬间扰动。扰动幅值小于5%基本可接受超过20%就要回头查前馈系数和坐标变换矩阵。5.3 波形低频振荡先查步长、PLL和带宽匹配我遇到过稳态波形不散但慢速振荡的情况频率大概七八赫兹幅度缓慢起伏不像开关纹波。排查顺序是仿真步长、PLL带宽、内外环带宽差。仿真步长太大会让离散化的控制滞后变大等效给系统叠加了相位延迟直接把步长从1e-4降到1e-5振荡减半。PLL带宽过高会让锁相环把电网谐波和电压波动引入坐标系给电流环增加扰动把PLL带宽从400Hz降到150Hz后明显改善。最后是内外环带宽匹配电压外环带宽不能离电流内环太近否则两个环频率特性重叠会在重叠区形成新的谐振峰。原则是外环比内环慢5到10倍这个比例要守住。5.4 常用排查方向速查表调试过程中把常踩的坑整理成了下面这张表每次波形异常我会从第一行开始逐项核对故障现象优先检查位置常见根因直流母线电压过冲/发散电压环误差方向、积分抗饱和、限幅值方向反、积分饱和、电流限幅缺失d轴q轴电流互相振荡解耦前馈项、坐标变换矩阵耦合项缺失或系数不准网侧电流THD偏高连接电抗大小、步长、FFT窗口电感太小、步长过大、频谱泄漏低频慢速振荡PLL带宽、内外环带宽比、采样步长带宽相互重叠、离散化延迟过大无功方向相反符号约定、i_q_ref方向、电流传感器方向Universal Bridge方向定义不一致启动冲击电流过大电容预充电路、直流母线初始电压初始电压设为0、无软启动这张表对排查过程帮助很大每次波形有问题先对着表找比自己对着Scope瞎猜高效得多。SVG仿真本质上是一个电源、变换器、控制器三者相互作用的闭环系统所有异常现象最终都能追溯到某一环的参数或逻辑错误。仿真探索这趟走下来我最深的一个体会是SVG模型最难的不是搭电路而是对每一个参数意义的理解。电压环带宽为什么不能高、解耦项为什么不能省、限幅为什么要加积分抗饱和每一个坑背后都对应一条控制理论的基本原理。调参调得越痛苦对控制系统各环节的相互作用就理解得越透彻。最后分享一个小技巧调试时可以把Scope数据通过To Workspace模块导出到工作区用plot把i_q、Vdc、PLL角度画在一张图上鼠标放大对比时间轴比在Scope里拖来拖去精准得多。下一步我准备在这个模型基础上扩展并网逆变器控制把有功和无功的联合调节跑通SVG的这份控制框架换一换外环指令就能复用。仿真这件事搭一套基础平台解决一类问题后面的路就顺了。