首页 / 资讯中心 / 文章详情

Matlab Simulink无功补偿SVG仿真:原理、建模与调试全解析

Matlab Simulink无功补偿SVG仿真:原理、建模与调试全解析 ★ FEATURED ARTICLE
前阵子我帮朋友处理一套厂区配电线路的功率因数问题换了三组接触器投切电容柜效果还是不理想——负荷波动太频繁电容器组要么来不及投要么投上去就过补。那段时间我就在想能不能用Matlab Simulink把更灵活的无功补偿装置SVG完整建出来先把控制策略和参数验证跑通再谈现场改造。这也就是这篇“Matlab Simulink 无功补偿 SVG 仿真探索”的由来。这篇文章不是教科书复读而是我自己从原理、建模、设参、调试验证一路走下来的笔记适合正在做电力电子仿真、想做无功补偿控制策略验证的同行参考也适合刚接触Simulink电力仿真的同学当一份避坑指南。1. 为什么需要SVG从电网功率因数说起1.1 无功补偿的工程背景电网里的负荷大体分两类电阻性负荷电热、照明消耗有功感性负荷异步电机、变压器、电焊机不仅消耗有功还需要从电网吸收大量感性无功电流。工厂里密密麻麻的风机、水泵、传送带电机一开功率因数往往掉到0.75以下。功率因数低会带来三个实际后果线路电流变大、线损升高变压器容量被无功占用能带的有功变少多数地区供电部门还会对力率不达标做电费惩罚。所以企业必须做无功补偿这既是经济账也是设备安全账。传统补偿手段是并联电容器组。电容可以提供容性无功正好抵消感性无功。听着简单用起来却不省心电容器只能阶跃投切不能连续调节负荷小了会过补过补会让母线电压抬高接触器频繁投切寿命和冲击都是问题。更麻烦的是电容补偿的容性电流与母线电压成正比电压跌落时它输出的无功反而减少——恰恰需要无功支撑的时候它掉链子。于是就有了动态无功补偿的需求。1.2 SVG与传统的电容器/电抗器补偿有什么区别SVG的全称叫静止无功发生器英文Static Var Generator本质是一台电压源型PWM变换器通过电力电子开关实时调整输出电压的幅值和相位与系统交换无功功率。它跟电容器组、电抗器的本质区别在于电容器和电抗器的无功输出是“被动”的取决于母线电压和器件阻抗而SVG的输出是“主动”的由控制器的指令决定要发多少发多少要吸收多少吸收多少响应速度在毫秒级。拿另一类动态补偿装置SVC相比SVG也有优势。SVC多采用晶闸管控制电抗器加电容器原理上是用“可变的等效电纳”吸收无功来调整补偿效果本质还是无源元件组合动态范围和响应速度受限制而且自身会产生谐波。SVG用PWM开关直接生成所需无功电流输出电流谐波小响应更快体积也更紧凑。代价是控制复杂、成本高需要在Simulink里仔细验证策略不能直接拍一个模型就上现场。1.3 SVG适合在什么场景下发挥作用我做仿真时首先界定使用场景这不只是为了写文章方便更是为了确定模型边界。SVG最典型的应用是三类一是冲击性负荷比如轧机、电弧炉、起重机负荷在几百毫秒内剧烈波动机械式投切完全跟不上二是需要功率因数严格达标的场合比如对力率考核较严格的企业希望补偿后功率因数长期稳定在0.95以上三是对电能质量要求高的精密制造车间这类负荷对电压波动和谐波敏感需要快速动态支撑。我的Simulink仿真模型就按“380V低压配电系统、100kVA级SVG并联接入、感性负荷波动”这个场景来搭既贴近实际设备又能在普通电脑上跑得动。2. SVG的核心机理拓扑结构与无功交换过程2.1 三相桥式逆变器拓扑怎么把直流变成可控交流先说拓扑。SVG主电路的核心是三相两电平电压源型逆变器由六只管子的三相全桥、直流侧储能电容、交流侧连接电抗器三部分组成。直流侧电容负责维持母线电压同时充当无功功率振荡的能量缓冲交流侧通过电抗器并联到电网电抗器的作用一方面是滤波另一方面是让逆变器输出电压与电网电压之间存在足够的“压差”以便控制无功流向。我用的Simulink模型里三相桥用Universal Bridge模块IGBT管反并联二极管直流侧接一组并联电容。电网侧用Three-Phase Source模块线电压设为380V、频率50Hz。逆变器交流输出经过三相对称电抗器后再接到电网公共耦合点。有些仿真示例会把电抗器直接放在Universal Bridge输出端这种做法简化了系统但漏掉了电抗器上的压降对补偿效果的影响我建议严格按实际主电路来桥臂输出、滤波电抗、并网点三段式结构最稳妥。刚开始做这类型仿真的人容易把SVG理解成“把直流变成交流往电网送电”这个说法不准确。逆变器的本质是把直流母线电压调制成一个幅值、频率与电网同步的三相交流电压源它既可以向系统送有功也可以只进行无功交换。SVG真正的调节对象不是电压大小本身而是通过控制输出电压与电网电压之间的相位差和幅值差实现对有功/无功的独立控制。2.2 无功是怎么样被“吸收”和“发出”的这个原理值得展开讲因为它是整个SVG控制的物理基石。设电网电压为U逆变器基波输出电压为Ui连接电抗器电抗为X则流过电抗器的电流I(U-Ui)/jX。如果Ui与U同相位那么它们之间只存在幅值差电流呈纯无功性质如果Ui比U低电流滞后SVG吸收感性无功等效于一个可调电抗器如果Ui比U高电流超前SVG向电网注入容性无功等效于一个可调电容器。控制Ui的幅值就能连续平滑地调节无功大小。再往深一步直流侧电容在无功交换中扮演什么角色SVG与电网交换无功时瞬时功率是交变的但平均有功为零不考虑损耗时。直流电容像一个能量缓冲池在每个开关周期里吞吐这部分振荡能量母线电压会因此有波动。所以直流电容的容值选择需要平衡两方面容值大电压波动小抗扰动能力强容值太大体积成本和第一次充电时间都会增加。这个矛盾在我的调试中暴露得特别明显后面有专门一节讲。控制有功交换也不陌生如果逆变器输出电压超前电网电压就会有一部分有功从电网流入直流侧给电容充电母线电压升高如果滞后则直流侧向电网回馈有功母线电压下降。这正是电压外环控制的基本原理——用母线电压误差调节有功电流分量维持直流电压稳定。2.3 控制目标拆解电压外环和电流内环各管什么SVG的控制目标最终就是两条让并网点功率因数回到目标值保证直流侧母线电压稳定。控制结构上通常采用双闭环外环是直流电压环内环是电流环。我搭模型时把外环输出作为内环d轴电流的给定q轴电流给定则根据无功需求直接给出这样d-q坐标下有功与无功就解耦了。双闭环的物理直觉是这样母线电压会掉说明直流能量不足需要从电网补充有功所以电压外环调节的是d轴电流有功通道无功功率由q轴电流决定q轴电流给定值直接反映补偿需求所以电流内环两个分量都可以独立设定。外环带宽低、动作慢内环带宽高、跟随快两层配合起来SVG才能既稳住直流电压又快速跟踪无功指令。具体到Simulink实现我常用的是同步旋转坐标系下的解耦控制把三相电压电流通过锁相环得到的角度做Park变换得到d、q轴分量。电流环PI输出的电压指令再叠加前馈解耦项得到最终的调制电压经反Park变换和SPWM调制生成驱动脉冲。这个控制实现我在第3节会把每个模块拆开讲。3. Simulink仿真的建模全过程与参数确定方法3.1 主电路搭建电源-负载-SVG之间的连接逻辑打开Simulink新建模型后我习惯先把主电路画出来确认所有电气节点逻辑无误后再加控制部分。主电路的连接顺序是三相电源 - 配电线路阻抗 - 公共连接点公共连接点分出两个支路一路接感性负荷一路经电抗器接SVG逆变器。SVG的直流侧并联电容组。电源模块里我设置了短路容量和初始相位这样仿真启动时更接近真实合闸过程而不是理想电压源直接怼上去。负荷我用的是Three-Phase Series RLC Load。研究无功补偿时负荷参数设置有三个注意点一是要明确负荷的有功和无功基准我初始设置为P80kW、Q60kvar对应功率因数0.8二是把负荷设置成可切换的准备一个Step信号控制并联的附加负荷用来模拟冲击性负荷波动三是如果研究的是三相平衡工况负荷模块单用并联形式即可不要一开始就上不平衡负荷调试复杂度会几何级上升。SVG并网电抗器的位置我要多说一句。它应该是“逆变桥出口 - 电抗器 - 并网点”的串联关系不能把电抗器放在变压器二次侧或随意并联。电抗器的取值直接影响纹波电流和无功输出上限我按标幺值方法初步选取基础阻抗以SVG额定容量100kVA、线电压380V计算Zbase380²/100000≈1.44Ω取电网侧总阻抗的12%左右作为并网电抗X_L约为0.17Ω对应电感LX_L/(2πf)≈0.55mH。这个值在仿真里兼顾了电流纹波和动态速度实测波形也不错。3.2 控制回路建模dq同步旋转坐标下的解耦算法控制回路是SVG仿真的灵魂我的搭建顺序是锁相环 - 坐标变换 - 电流环 - 电压环 - 调制与脉冲生成。锁相环用Simscape Electrical自带的PLL模块也可以在Simulink里自己搭同步坐标系锁相环作用是把A相电压相位锁出来给Park变换提供旋转角度。没有正确的锁相角度dq变换就会算出振荡的电流分量控制直接乱套。我用的是三相锁相环输出wt角度信号模型跑稳定后这个角度要呈线性增长这是判断PLL是否正常的第一步。电流环的模型结构是采集三相电流经abc-dq变换得到id、iq把指令值与反馈值做差通过PI调节器输出再叠加解耦项和电网电压前馈项形成调制电压指令。解耦项的公式是ωLiq和ωLid分别补偿d、q轴间的交叉耦合。我在仿真里单独对比过加不加前馈的效果不加前馈时电流环带宽即使调到很高两个轴之间仍有明显耦合动态过程中id会拖着iq走波形呈椭圆加上前馈后各轴独立跟踪瞬态响应干净得多。PI参数初值我是这么定的。电流环按“一阶惯性系统整定”思路设电流环期望闭环带宽ωc≈2000rad/s并网电抗L0.55mH、寄生电阻R≈0.02Ω电抗器绕组内阻则电流环PI可先取KpωcL20000.000551.1KiωcR20000.0240。实际仿真中我发现Kp1.1偏保守系统响应偏慢调到1.8后电流跟踪更快但Kp过大时容易在离散仿真步长下出现振荡这个要在机里反复试。电压外环带宽则要远低于电流环取ωv100~300rad/s够用。3.3 关键参数取值直流电压、交流电抗器、PI初值怎么算我把仿真里用到的一组基础参数列成表格这组参数是我调通模型的基准值直接抄作业基本能跑参数取值说明电网线电压380V / 50Hz低压三相系统SVG额定容量100kvar逆变器容量基准直流母线电压给定700V留出调制裕量的最小可行值直流侧电容4000μF三组并联母线电压波动控制并网电抗器0.55mH / 0.17Ω12%左右标幺值PWM载波频率6kHz离散仿真与纹波折中电流环PIKp1.8Ki60离散仿真步长下已核实稳定电压环PIKp0.5Ki30带宽明显低于电流环仿真步长1e-5s离散固定步长直流母线电压怎么算SPWM线性调制区内逆变器输出线电压最大有效值约为0.612倍的直流电压。如果希望逆变器输出线电压能跟上380V并留10%左右的调制余量直流电压应满足Vdc≥380/(0.612*0.9)≈690V。我取700V系统既能正常调制又不会因为直流电压过高而导致开关管电压应力变大。电容容值我们按能量法粗算假设允许母线电压波动±5%即3500J左右的能量吞吐能力对应电容大约4000μF。实际工程里还要考虑电容耐压、纹波电流和体积仿真里先用理想电容加并联等效串联电阻建模即可。仿真电容太小会出现明显的直流电压二次波动整个控制环跟着抖这是新手最容易遇到的坑之一。3.3 关键参数取值直流电压、交流电抗器、PI初值怎么算我把仿真里用到的一组基础参数列成表格这组参数是我调通模型的基准值直接抄作业基本能跑参数取值说明电网线电压380V / 50Hz低压三相系统SVG额定容量100kvar逆变器容量基准直流母线电压给定700V留出调制裕量的最小可行值直流侧电容4000μF三组并联母线电压波动控制并网电抗器0.55mH / 0.17Ω12%左右标幺值PWM载波频率6kHz离散仿真与纹波折中电流环PIKp1.8Ki60离散仿真步长下已核实稳定电压环PIKp0.5Ki30带宽明显低于电流环仿真步长1e-5s离散固定步长直流母线电压怎么算SPWM线性调制区内逆变器输出线电压最大有效值约等于调制比与直流电压、拓扑系数的乘积。按三相桥SPWM线性区输出线电压峰值不超过直流母线电压考虑实际调制比需要留10%裕度380V系统母线电压至少要在650V以上。我取700V作为电压环给定既保证输出能力又避免过高的直流电压导致电容和开关管应力偏大。电容容值按能量法粗算。SVG在动态补偿过程中需要吞吐无功功率的瞬时差母线电压允许波动±5%时容值取3000~4000μF在仿真里表现都还行。我最终选4000μF是并联三组电解电容的等效值启动时刻的预充电冲击也在这个参数下能接受。电容太小直流电压二次纹波大电压环反馈信号会混入波动成分严重时会让无功输出产生等幅振荡这个我在后面调试部分还会细讲。PI参数没有一步到位的公式但有个合理的初选路径电流环按零极点和期望带宽法Kp取电感乘带宽Ki取电阻乘带宽带宽先给2000rad/s量级跑起来看电流跟踪误差再微调电压环带宽取电流环的十分之一避免两个环“打架”。我的经验是离散仿真中步长固定为1e-5s时Kp超过2.2就容易出现电流环高频抖动这是数值积分和PWM调制共同作用的结果不是控制策略不对需要逐步缩小Kp。4. 仿真中遇到的坑与调试过程复盘4.1 直流母线电压“泵升”问题第一次把SVG模型并入电网运行时我发现直流母线电压不是稳定在700V而是在760V附近缓慢爬升有些工况下甚至冲到790V。显然有有功从交流侧灌入了直流侧储能电容一直在充电。我检查控制环路的给定时发现电压外环的反馈系数标错了——传感器增益设成了1但实际测量模块输出的是相电压峰值控制器需要的是直流母线电压的实际值两者的比例关系完全对不上。修正之后电压环才能正确判断“能量不足还是能量过剩”母线电压才稳稳落在700V。这个坑很典型Simscape Electrical里的电压测量模块输出瞬时值而控制系统的标幺值基准是以线电压幅值为基准定义的两个量纲不统一时PI输出的dq分量虽然也能把电流驱动起来但稳态工作点会偏移于是母线电压必然漂移。我的做法是建立一个统一的标幺值基准电网侧取线电压幅值380V对应约537V为电压基准取系统额定电流为电流基准所有测量信号都先除各自的基准值再进控制器。这样处理以后PI参数才具备清晰的物理意义后面换工况也不需要重新调参。4.2 调制比与容量匹配的偏差表现调试中我发现一个怪异现象补偿电流指令到了额定值附近实际输出的无功却“饱和”了波形像一个削顶的正弦。从电流环看调制波指令在到达PWM调制模块前已经超过了载波幅值也就是调制比超过了1。原因很直接SVG输出的最大无功能力受直流母线电压和并网电抗压降共同限制。假如直流电压不足逆变器输出电压幅值调不上去能形成有效压差的margin不够电流自然上不去。解决方向有两个。一是提高直流母线电压给定700V改成740V或780V代价是开关管电压应力变大二是减小并网电抗值但纹波电流会升高。仿真里我选择前者因为电压裕量更充足控制环路的线性范围更大同时把SVG额定容量标定为100kvar与电源容量匹配避免出现“小装置”带“大需求”。这件事再次说明SVG的容量设计与控制策略不是两码事调制比就是两者之间的纽带仿真时一定要在最恶劣工况下检查调制波是否越限。4.3 步长和求解器对波形质量的影响Simscape Electrical的仿真有连续和离散两种模式。纯连续模式下PWM逆变器的开关动作会使系统呈刚性变步长求解器在开关瞬间疯狂减小步长一个几秒的动态过程能跑几个小时。我最终换成离散固定步长仿真步长取1e-5sPWM载波6kHz等于每个载波周期内约有16个仿真点足够分辨开关细节和电流纹波形态。但离散仿真也有它的坑。步长太大时PWM脉冲的上升沿定位误差会被放大电流波形会出现不规则的脉冲缺口功率计算波动很大步长太小则电脑跑不动。我的经验是先以1e-5s起步判断控制环是否收敛调通之后再把步长降到2e-6s跑最终结果波形。另外采样保持模块的采样周期必须和仿真步长一致否则信号会出现“混叠”波形像鬼影一样叠在一起不少人在这里卡了很久。4.4 三相不平衡下的控制波动仿真快结束时我把负荷改成不平衡工况做了个延伸测试A相多接一组电热负载。此时SVG的控制效果明显变差补偿后的三相功率因数并不一致母线电压也有负序波动。根本原因在于我的控制策略基于同步旋转坐标系只能处理正序无功分量负序分量在dq坐标下表现为2倍频扰动普通PI很难消除。解决不平衡问题通常要上带陷波器的同步旋转坐标、或者用静止坐标系下的比例谐振控制器甚至需要在正负序两个旋转坐标里各做一套控制。仿真这种方法论验证型的项目我认为不必把不平衡控制做满但必须在文章里说清楚适用范围当母线电压畸变较大或三相不平衡时这样一套简单双闭环策略只能作为初级方案工程上需要配套负序补偿环节。让读者清楚模型边界比把模型包装成“万能补偿器”重要得多。5. 仿真结果怎么看波形分析与性能验证5.1 网侧电流与电压相位恢复正常判断SVG是否生效第一眼先看网侧电压和电流波形。补偿前感性负荷下电流明显滞后电压功率因数0.8时相位差大约36度电流波形和电压波形之间有一个肉眼可见的错位接入SVG并稳定运行后网侧电流波形与电压波形几乎同相位错位基本消失。我习惯把“三相电压A相”和“网侧电流A相”放在同一个Scope里先看形状再看相位差。相位差消除后继续看电流幅值补偿前后网侧电流的有效值会明显减小原来80kW、60kvar的负荷补偿前视在电流约151A把无功补到接近零后视在电流降到约121A。这一降意味着线路上所有损耗都会按电流平方比例下降这是最直接的节能证据。5.2 功率因数曲线的动态响应仿真模型里我加了一个阶跃信号在第0.5秒时投入一组20kW、20kvar的附加冲击负荷然后观察功率因数曲线。没有SVG时功率因数从0.8掉到0.72附近恢复要等负荷稳定很长时间有SVG时功率因数在冲击后的50ms内就重新回到0.98以上期间最大跌落不超过0.03。观察功率因数曲线要同时看它是否平滑。如果曲线在目标值附近持续振荡说明电流环或电压环PID参数不合适如果曲线缓慢漂移多半是锁相环节或坐标变换的初始角度有问题。我的模型调到最终状态时功率因数曲线在0.98~0.99之间略有波动但无持续振荡我认为这是离散PWM和采样噪声的正常表现。仿真过程中建议同时记录d轴和q轴电流的阶跃响应。理想情况是q轴电流快速到达给定值d轴电流保持稳定如果两个轴互相干扰波形就会交叉震荡说明解耦项没加对或者坐标变换符号有误。这是验证控制策略正确性的非常有效的辅助判据。5.3 不同负载工况下的对比结论我对四组工况做了对比纯感性负荷、感性加冲击负荷、轻载、过补偿临界负荷。表格里是测试结论。工况补偿前功率因数补偿后功率因数SVG输出情况80kW60kvar稳态负荷0.800.99输出容性无功约60kvar80kW60kvar冲击至100kW80kvar0.720.97动态跟踪50ms内稳定40kW30kvar轻载0.800.98输出容性无功约30kvar80kW60kvar再加过补设定0.950.98自动减小输出避免过补对比里最值得关注的是“过补临界负荷”这组。传统电容器组很容易在这一工况下反复投切导致母线电压波动SVG由于可以连续输出从“感性”到“容性”整个区间它能把功率因数平滑钳制在目标值不产生机械动作。仿真结果验证了SVG最核心的差异化价值连续无级调节。6. 从仿真到工程实践的个人体会与扩展方向6.1 我自己在做这类仿真时的一些习惯先说一个影响全局的习惯所有参数都写在工作区脚本里用变量名统一管理不直接在Simulink模块的对话框里填裸数字。MATLAB脚本可以定义Vdc700、Lac0.00055这类变量模型里的参数直接引用变量名。这样要换容量时只改脚本顶部的几个数重新运行就会自动更新整个模型比打开七八个对话框一个一个改高效得多也少犯错。第二个习惯是给Scope配测量引脚时尽量把数值经过一个增益模块转换成标幺值再显示。比如电流显示成1.2而不是1200一眼就能看出是否超过额定值。参数调整时数值的“相对感”比“绝对感”重要得多标幺值化能显著降低判断难度。我早期就是盯着几千安培的数字看半天看不出问题改成标幺值以后问题定位快了很多。第三个习惯是“单步验证”。我不会一次把整个SVG模型全部接好再运行而是分成四个阶段先跑锁相环确认角度正确再接电流环给定一个恒定iq看电流跟踪再上电压环稳定母线电压最后才把功率因数额定闭环串起来。每一阶段都用Scope确认无误再进入下一步。这套方法看起来慢实际排查问题比一口气搭完再从头找快太多。6.2 后续可以扩展的方向SVG仿真做完后我自己的下一步打算是把模型升级到几个方向。第一是加并网变压器和短路阻抗研究10kV中压配电场景那套模型对电压跌落时的动态支撑能力更有意义第二是加入负荷电流前馈把需要补偿的无功指令直接从负荷端测量出来补偿精度会进一步提高第三是研究不平衡工况下的负序补偿在dq坐标系基础上增加一个负序旋转坐标系或者尝试静止坐标系的PR控制。再有就是损耗建模给IGBT加上导通压降和开关损耗计算评估不同调制策略对装置效率的影响。这中间的每个方向都足够再开一篇长文。但我个人觉得对刚接触SVG仿真的朋友来说最重要的不是一口气把所有高级功能都叠上去而是先把这一套基础闭环跑通真正理解“为什么双闭环能稳住直流电压和控制无功”之后再去扩展控制策略、增加补偿目标。原理通了后面所有的进阶工作都是顺水推舟。最后分享一个我在仿真过程中反复用到的小技巧当系统波形出现莫名振荡优先检查的永远是坐标变换的角度符号、测量增益和PI输出限幅三个地方而不是去调PID参数。这个习惯帮我省了大量时间也希望看这篇文章的你能少走一段弯路。
阅读完成 · 觉得有帮助?
咨询建站