如果你们看到“SVG”这个词,第一反应是可缩放矢量图形(Scalable Vector Graphics),那说明你的主要战场在网页或平面设计。但在电力电子圈子里,SVG是静止无功发生器(Static Var Generator)的缩写,学术上更常写作STATCOM(Static Synchronous Compensator,静止同步补偿器)。两个SVG同名不同物,我甚至碰到过搜索“svg图片”的朋友误打误撞点进这篇仿真笔记,然后疑惑自己到底进了一个什么主页。
这篇文章围绕“三相三线制静止无功发生器(SVG/STATCOM)的Simulink仿真”展开,适合正在学电力电子、柔性输电、新能源并网的同学,也适合刚接触STATCOM仿真的工程师。文章会从方案选型讲到数学模型,再落到Simulink建模细节、参数整定和波形分析,最后整理我在实际操作中踩过的一些坑。按这个路径走完,你不仅能复现一个可运行的仿真模型,还能理解每个参数背后的工程逻辑,而不是只会拖动模块拼一个黑盒子。
1. 仿真目标与整体设计思路
1.1 三相三线制系统下SVG要解决什么问题
三相三线制系统没有中线,在三相对称工况下不存在零序通路,线间负荷和线路阻抗造成的无功需求,只能靠接入并联补偿装置来平衡。传统的解决办法是投切电容器组,但电容器补偿是有级的、离散的,而且补偿容量随母线电压平方变化——电压越低,补偿越无力,这个特性在电压跌落工况下相当尴尬。静止无功发生器不一样,它本质是一个并联在电网上的电压源型变换器(VSC),通过对桥臂输出电压的幅值和相位控制,让流过耦合电感的电流成为任意方向、任意大小的无功电流,从而实现连续、快速、双向的无功补偿。
三线制和四线制的区别直接影响控制策略:没有中线意味着零序电流无法流通,控制器只需要处理正序和负序分量。如果我们只做理想对称工况下的仿真,连负序都可以不搭,但如果你面对的电网存在不平衡负荷,负序分量会顺着相间回路流通,这就是后文要讲的正负序控制的来由。一个合格的仿真探索,首先要认清这个边界条件,三线制下哪些量可以忽略,哪些量必须建模,心里得有数。
1.2 为什么选Simulink做这个仿真
很多人问,做SVG仿真可以用PSCAD、PLECS、或者纯Matlab脚本,为什么偏偏选Simulink。我的回答是:建模效率高,控制逻辑直观,而且从仿真到嵌入式代码生成的链路成熟。Simulink里Simscape Electrical(早期叫Specialized Power Systems,大家习惯写SPS)库提供了三相电源、IGBT桥臂、电抗器、变压器、测量模块等现成元件,拖出来接线就能跑主电路。控制部分用Simulink标准模块搭PLL、坐标变换、PI调节器、PWM生成器,比写C语言或手写方程快一个量级。
另外,很多人做仿真只关心波形好不好看,忽略了一个实际问题:这个控制算法最终要跑到DSP或FPGA上。Simulink模型通过Embedded Coder生成C代码,再部署到实时控制器,是电力电子装置开发的主流路径。很多公司招聘时明确要求“会Simulink,了解C代码生成”,就是因为这个工作流已经成了行业标准。所以哪怕只是为了应付课程设计,我也建议你别只是“把图画出来”,而是把模型结构当成一个真正的控制器来搭,这样后面做硬件在环、做快速原型,都是顺路的事。
1.3 整体技术路线:从主电路到控制闭环
整套仿真我拆成四大块:主电路模型、信号测量与坐标变换、控制闭环、PWM调制。主电路是三相电源经线路阻抗接到SVG的交流侧,SVG内部是一组IGBT构成的三相桥,直流侧挂电容,交流侧通过电感(工程上常常是LCL)并入电网。测量模块采集电网三相电压和SVG输出电流,送入控制子系统。控制部分先通过PLL锁定电网电压相位,把三相量变换到dq同步旋转坐标系,然后电压外环稳住直流母线电压,电流内环控制dq轴电流,最后把d、q轴电压指令反变换到abc坐标系,产生SPWM波去触发IGBT。
这套结构与传统的PWM整流器几乎同源,因为SVG在数学上就是一个工作在无功工况下的PWM整流器。理解这一点,很多关于电流纹波、PI参数、前馈解耦的问题就能复用电机控制和整流器领域的成熟经验。仿真探索的核心目标不是把每个模块都写出来,而是验证“控制环能不能跟上无功指令、直流电压稳不稳、电流波形是否干净”。
2. 主电路与控制策略的选型拆解
2.1 主电路拓扑选型:两电平VSC是探索阶段的合理起点
SVG工程实现有几种主流拓扑:两电平VSC加升压变压器、级联H桥链式、MMC模块化多电平。中高压大容量场合现在基本是级联H桥和MMC的天下,但作为入门和探索,两电平VSC是当之无愧的第一课。原因很简单:两电平电路把所有关键问题都暴露在明面上——直流母线电压支撑、交流电感限流、开关管PWM调制、dq解耦控制的耦合项,每一个概念都直观可见。到了级联H桥,你还得额外处理载波移相、电容均压、旁路保护,这些细节很容易把新手淹没在“接线和三角波对齐”里,反而忽略了控制核心。
所以这篇仿真探索,我建议你用两电平拓扑,系统电压可以设成线电压380V或690V,容量取20kvar到100kvar。这个容量级别用单组IGBT桥臂完全合理。等你把两电平模型跑通,再往级联H桥或MMC扩展时,你会发现底层电流控制环基本不用动,需要新增的主要是均压策略和调制层——这就是由简入繁的学习路径。
2.2 交流侧滤波器:单L还是LCL
三相三线制SVG的交流侧必须串接电感,一方面限制开关纹波电流,另一方面让桥臂输出电压和电网电压之间形成可控的电流源特性。最简单的方案是单L电感,一相一个,模型清晰、参数少、控制环设计容易。缺点是高频纹波抑制能力有限,想要更干净的电流波形,需要更大的电感,这会让动态响应变差。LCL滤波器可以用更小的总电感量获得更好的高频衰减,但多了一个谐振峰,必须设计阻尼(无源电阻阻尼或有源阻尼算法),参数设计复杂度明显上升。
对仿真探索而言,我的建议是先用单L。为什么?因为单L下电流环的数学模型是一阶的,PI参数可以用经典带宽法直接算出来,整定过程清晰可复现。等你把单L系统的控制逻辑吃透,再引入LCL才会有底气。真要在工程上落地,LCL基本上躲不开,但那是另一个话题了。下面的参数计算也以单L为准。
2.3 控制策略:dq同步旋转坐标系下的电流内环+电压外环
无功补偿的本质是控制SVG交流侧电流,使其与电网电压保持正交。在静止abc坐标系下,这个电流是50Hz正弦量,PI调节器无法无静差跟踪,于是大家习惯把三相量变换到dq同步旋转坐标系。在这个坐标系里,电网电压旋转矢量变成静止量,电流的d轴分量对应有功电流,q轴分量对应无功电流,两个量都变成直流,普通的PI控制器就能实现无静差控制。
内环采用电流PI控制,两个PI分别控制id和iq,输出是d、q轴电压指令。电压外环的输出用于给定id的参考值,它的作用是维持直流母线电压。很多人一开始不理解电压环和无功补偿之间的关系,其实逻辑很简单:SVG自身有损耗,桥臂开关损耗、电感铜损、电容漏电流都会消耗有功,如果不补充这部分能量,直流电容会慢慢放空。电压外环通过控制id从电网吸收少量有功,正好抵消损耗,使母线电压稳定在指令值。q轴参考值则直接来自无功补偿指令,可以是固定值,也可以来自上层电压调节器或功率因数调节器。
2.4 不平衡工况与正负序控制
三相三线制系统里,电网电压不平衡时,负序电压分量会出现在SVG的接入点,导致输出电流中出现负序分量和2倍频功率脉动。负序量在正转dq坐标系下表现为2倍频正弦,常规PI无能为力,因为PI在带宽内对交流信号的增益不足。工程上有几条路:一是用陷波器把2倍频滤掉再给PI,简单有效但会略拖慢动态;二是做正负序分离,分别在正转和反转坐标系中控制正负序电流,响应快但算法更复杂;三是用PR(比例谐振)控制器直接在αβ静止坐标系下控制,同样能覆盖负序。
我在仿真探索阶段的做法是:先把对称工况做扎实,然后人为设置A相电压跌落10%,观察直流电压上出现的100Hz波动和电流畸变。这时候再对比“纯正序控制”和“正负序分离控制”的差异,体会会非常直观。正负序分离的常用实现方法是延迟四分之一周期法或基于二阶广义积分器(SOGI)的滤波器,二者在Simulink里都容易搭。搜索“正负序控制 simulink”能找到很多现成模型,但我建议你自己推一遍坐标变换公式,不然后面调参数时你都不知道问题出在正向变换还是反向变换里。
2.5 调制策略:SPWM与SVPWM的选择逻辑
调制环节把控制环输出的电压指令变成IGBT的门极脉冲。三相三线制下最常用的两种是正弦PWM(SPWM)和空间矢量PWM(SVPWM)。SPWM实现最直白:三相调制波与同一三角载波比较,高大通高,低导通低。SVPWM则是把电压矢量在αβ平面的扇区里分解,用相邻基本矢量合成期望矢量,直流电压利用率比SPWM高约15%,且谐波表现略好。
对于这个仿真,我建议先搭SPWM,因为它的实现路径不会分散你对控制环的注意力。三路调制波由控制器输出的d、q轴电压经反Park变换得到,载波频率就是开关频率。跑通之后,再换成SVPWM去对比直流电压需求和谐波。有一点要注意:三相三线制系统没有中线,三次谐波以及3的倍数次谐波是零序量,无法流通,所以SPWM里注入三次谐波提高电压利用率这类技巧在这个拓扑下并不适用,这也是三相三线制的一个天然限制。
3. SVG数学模型与关键设计参数计算
3.1 dq坐标系下的SVG数学模型
SVG交流侧的动态方程,按基尔霍夫电压定律可以写成三相形式:
L·(di_a/dt) = u_a - v_a - R·i_a
L·(di_b/dt) = u_b - v_b - R·i_b
L·(di_c/dt) = u_c - v_c - R·i_c
其中u_a、u_b、u_c是电网电压,v_a、v_b、v_c是桥臂输出电压,R是电感等效串联电阻。经过等幅值Park变换到dq旋转坐标系后,方程变成:
L·(di_d/dt) = u_d - v_d - R·i_d + ωL·i_q
L·(di_q/dt) = u_q - v_q - R·i_q - ωL·i_d
注意这里出现了ωL·i_q和ωL·i_d两个耦合项。控制的时候如果不处理,d轴电流的变化会扰动q轴,反之亦然。常规做法是在电流环输出上加上前馈补偿:v_d = u_d + ωL·i_q - u_d_out,v_q = u_q - ωL·i_d - u_q_out,实现d、q轴解耦。这个细节是很多初学模型的常见错误点——忽略耦合项,调试时你会发现两个轴总是互相影响,参数怎么调都不收敛。
3.2 交流侧电感参数的计算示例
电感参数直接影响电流纹波和系统动态响应。工程上从两个角度约束:纹波电流限制和电流跟踪速率限制。以380V线电压、20kvar容量的系统为例,相电压有效值约220V,额定电流有效值为Q/(3·U_phase) = 20000/(3×220) ≈ 30.3A,峰值约43A。开关频率取10kHz,允许纹波电流取额定电流峰值的20%,大约8.6A。纹波电流与电感关系可以近似用桥臂输出电感电压的伏秒积估算:
Δi ≈ (U_dc · T_on) / L
把U_dc取700V,最恶劣工况占空比D约0.5,开关周期Ts为1e-4s,代入计算得到L ≈ (700×0.5×1e-4)/8.6 ≈ 4.1mH。工程上还要校核动态跟踪能力:电感越小,电流变化越快,动态越好;但电感太小纹波大、短路冲击电流大,所以取一个有裕量的值,一般选3mH到5mH。我最终选了3mH,配合10kHz开关频率,仿真里纹波大概在15%左右,后续如果需要更低的纹波就把电感调大或增加LCL。
3.3 直流侧电容参数的计算示例
直流电容的作用是缓冲瞬时无功功率交换。严格推导比较复杂,经验公式可以直接用:
C ≥ S_N / (ω · U_dc · ΔU_dc)
其中S_N是装置额定容量,ω是电网角频率314rad/s,U_dc是直流电压参考值700V,ΔU_dc是允许的电压纹波峰峰值。若允许纹波为1%,即7V,那么C ≥ 20000/(314×700×7) ≈ 0.013F,也就是13000uF。考虑裕量和仿真成本,取两组10000uF并联,也就是20000uF,直流电压纹波会更好看。在Simulink里如果单纯仿真探索,电容太大只会延长充电时间,所以我最后用的是15000uF,兼顾启动速度和纹波表现。
直流电容的初始电压值得注意。仿真开始时如果电容初始电压为零,通过预充电电阻或者软启动过程给电容充电,这个过程会在波形里看到一大段瞬态。调试控制器时,建议把电容初始电压设置到接近参考值(比如680V),这样启动瞬间系统的冲击电流会小很多,也方便你集中观察稳态控制性能。
3.4 直流母线电压参考值的确定
直流母线电压不能拍脑袋定。对SPWM调制,三相桥输出相电压的基波峰值最高只能到U_dc/2。要让SVG输出额定无功电流,桥臂输出电压必须高于电网电压,留出足够的差值作用在电感上。以相电压峰值约311V(220V×√2)计算,U_dc至少需要大于622V。考虑到调制比裕量、动态工况下电感压降、以及纹波影响,取700V比较稳妥。
如果换成SVPWM,直流电压利用率提高15%,理论上U_dc可以降到更低,但这会压缩电流环的可控范围,一般不推荐卡着边界选电压。另外还要考虑IGBT耐压等级,700V的直流母线用1200V耐压等级的IGBT模块就够,工程上是很典型的选择。参数设计完成后,可以自己用仿真验证一下:把U_dc设成620V,你会发现无功电流指令稍微给大,电流环就会饱和,波形开始畸形,这就是电压裕量不足的直接表现。
4. Simulink仿真模型搭建实操
4.1 顶层模型结构与所需工具箱
在动工之前,先确认电脑上装了Simscape Electrical库,老版本叫SimPowerSystems,再新一些叫SPS。如果没有这个库,你只能手写受控源方程,工作量大且容易错。另外还会用到Simulink Control Design模块做PID整定辅助,Simulink标准库里的PLL模块在Simscape Electrical中也有。
顶层模型建议分成四个子系统:主电路子系统包含三相电源、断路器、线路阻抗和SVG功率部分;测量与PLL子系统输出电网电压角度θ、三相电压标幺值和SVG电流采样值;控制子系统包含电压外环、电流内环和前馈解耦;调制子系统把控制输出变为IGBT门极脉冲。这样划分的好处是调试时能单独看每一级的波形,哪个环节出问题一目了然。
4.2 主电路搭建步骤与参数配置
从Simscape Electrical库中拖入Three-Phase Source,设置相电压有效值220V、频率50Hz、三相平衡。三相三线制接线时注意不要接中线,源的内阻抗设一个很小的值即可,比如0.01Ω加1mH,模拟电网感性阻抗。线路阻抗可以用三相串联RLC支路表示,取值0.1Ω加1mH。SVG主电路的核心是Universal Bridge模块,桥臂数选3,功率开关选IGBT/Diodes,器件参数可以用默认值,但Snubber电阻建议设得很大或直接关掉,否则仿真波形会受到阻容吸收回路的影响,结果不够真实。
直流侧接一个电容,容值按上一节计算设置,初始电压设为680V。电容两端并联一个电压测量模块,给控制环反馈。交流侧三个电感分别串在SVG桥臂和电网之间,每相串联等效电阻。三相电压测量模块放在电网侧,电流测量模块放在电感前或者电感后要看你的控制目标——我习惯测SVG输出电流,也就是电感上的电流,因为这个量才是受控电流环控制的物理量。
4.3 PLL与坐标变换的实现细节
三相三线制系统没有中线,无法直接测量相电压中性点,所以PLL一般通过线电压重构相电压,或者直接采用基于dq变换的SRF-PLL。Simscape Electrical里自带Three-Phase PLL模块,输入三相电压即可输出角度θ,方便但内部算法是黑盒。建议新手手搭一个SRF-PLL:三相电压经过Park变换得到ud和uq,把uq送入PI调节器,PI输出作为角频率修正叠加在2πf0上,再积分得到θ。这个反馈回路调好后,θ能精确锁定A相电压相位。
坐标变换要统一约定。我用等幅值Park变换,也就是abc变dq时乘以2/3系数,这样变换后的d轴电压幅值等于相电压幅值,方便和真实数值对照。很多模型调不通,就是因为正变换用等幅值、反变换用等功率,系数不一致导致控制输出幅度全部不对。建议把变换公式写在模型注释里,一一对应检查。θ的方向也容易踩坑:dq坐标系跟随电网电压旋转,若PLL输出θ超前,波形会看到电流和电压相位关系不对,补偿方向甚至反掉。
4.4 电压外环和电流内环的搭建
控制子系统的实现顺序建议是:先搭电流环,再搭电压环,最后封装成一个整体。电流环输入为id_ref、iq_ref和实测id、iq,PI输出加上前馈解耦量,得到d、q轴电压指令。PI模块在Simulink里直接用PID Controller就可以,记得把它设成PI形式,比例和积分系数初始值用下面一组经验参数起步:
电流环:Kp = 18,Ki = 600
电压环:Kp = 0.5,Ki = 40
这两个参数的来源,电流环按带宽法估算:L=3mH,取电流环带宽1000Hz,即ωb≈6280rad/s,Kp≈L×ωb≈18.8,Ki≈Kp×(R/L)≈600。电压环带宽通常取电流环的1/10到1/5,围绕这个范围整定即可。注意控制输出都要加限幅,电流环输出限幅决定桥臂电压最大输出能力,电压环输出限幅决定允许的最大电流指令。
反Park变换把d、q轴电压指令变回abc三相调制波,与10kHz三角载波比较产生门极脉冲。三相调制波之间相差120度,由PLL角度θ同步,确保桥臂输出电压与电网电压同频率、同相位基准。三角载波可以用Repeating Sequence模块生成,也可以直接调用PWM Generator模块,但我更推荐手搭比较器,因为这样对调制原理的理解更透彻,排查问题时也更容易定位。
4.5 仿真求解器与步长设置
电力电子仿真最大的坑就是求解器配置。带IGBT高频开关的模型,如果采用连续变步长求解器,开关时刻不固定,仿真会非常慢甚至发散。我建议用powergui模块把模型调到离散模式,然后选择合适的离散采样周期。开关频率10kHz下,采样周期取1e-5s到2e-5s比较合适,也就是每个开关周期内至少采样5到10次,既能保证波形精度,又不至于仿真慢到怀疑人生。
具体到求解器,我习惯用离散求解器,步长设为1e-5s,算法用ode23t或者默认的discrete。如果模型加了比较复杂的控制环(比如正负序分离),可以把步长适当放大到2e-5s以提升仿真速度,但要注意观察波形是否有明显振铃或平滑缺失。仿真时间方面,观察稳态波形用0.5s就够,观察启动过程或动态阶跃响应至少得跑到1s,我这套模型全速跑1s大约需要几十秒到几分钟不等,取决于电脑和步长。
5. 仿真结果分析与波形解读
5.1 启动过程与直流电压建立
启动时直流电容初始电压680V,参考值700V,电压外环检测到偏差后输出正向id_ref,系统从电网吸收少量有功给电容充电。仿真开始后可以看到直流电压在几十毫秒内平滑上升到700V并保持稳定。这个过程中,A相电流有一个短时的有功脉冲,幅值大概在5到10A,具体由电压环PI参数决定。如果PI参数太激进,会看到直流电压超调到750V再回落,这个概率不大但确实会发生,属于正常现象。
直流电压稳定后,观察母线电压纹波,应该是100Hz的纹波分量(因为三相桥瞬时功率脉动频率是2倍基波),纹波峰峰值大概在10V以内,对应约1.4%。如果纹波明显更大,首先要看电容值是否偏小,其次看控制环是否引入了额外的低频振荡。用FFT工具分析直流电压纹波频率,能快速定位是正常的2倍频还是控制器振荡。
5.2 稳态无功输出与相位关系验证
稳态运行时,把iq_ref设成额定值对应的电流,比如20kvar下q轴参考电流设成30A。观察电网A相电压和A相电流波形,容性工况下电流应该超前电压90度,感性工况下滞后90度。电压和电流的相位关系是判断SVG工作性质最直接的证据。很多新手第一眼看到电流超前电压会不习惯,但只要想起无功电流的定义,就应该知道“容性无功=电流超前电压”这个基本事实。
频谱分析看输出电流THD,10kHz开关频率配合3mH电感,仿真波形THD一般在3%到5%。如果太高,先看载波比和电感参数是否合理,再看控制环输出有没有振荡纹波。要注意的是,Simulink的波形分析里开关纹波默认包含在THD里,实际工程中SVG会通过LCL滤波器进一步抑制高频分量,所以仿真时用单L的THD会比工程实测略高,这是预期内的。
5.3 无功指令阶跃动态响应测试
为了测试动态性能,可以在0.6s时刻把iq_ref从0阶跃到额定值30A。观察q轴电流跟踪过程:好的响应应该在10到20ms内完成跟踪,超调不超过10%,d轴电流几乎不受影响。这里就能看出前馈解耦做得好不好:如果解耦缺失,iq阶跃时id会出现明显的扰动凹陷,两个轴互相打架,波形就不好看。
电压外环在阶跃瞬间也会有反应:SVG突然输出大量无功功率,瞬时功率交换不在直流侧造成大的电压波动,但电容上的100Hz纹波幅值会短期增大,然后电压环慢慢找回平衡。这就是无功补偿装置“直流侧只交换纹波有功”的特性。动态响应的好坏直接影响SVG对冲击性负荷的补偿能力,比如电焊机和轧机,这类负荷要求SVG响应速度在10ms量级,否则跟不上负荷变化。
5.4 不平衡工况下的负序控制尝试
完成对称工况后,把三相电源的A相电压幅值降到198V(跌落10%),其他两相保持220V。这时如果不做负序控制,会看到SVG输出电流三相不对称,直流电压纹波从100Hz变成100Hz加50Hz分量,dq电流中混有2倍频波动,波形明显“毛糙”。用FFT看直流电压,频谱里除了100Hz还出现50Hz分量,这个50Hz分量的存在,基本可以判定负序电流已经进入装置。
如果加装了正负序分离控制,比如用SOGI滤波器把正序和负序分离,分别用两个旋转坐标系控制,输出电流的不对称度会明显改善。这个实验建议作为进阶内容尝试,不需要一开始就做到完美。重点是通过这个现象理解负序的危害:它不仅是电流波形难看,还会导致直流电容额外发热、功率模块应力增加。仿真里看到几行波形,换成实际设备可能就对应一次故障停机,这也是我总跟学生强调“不要只看对称工况”的原因。
6. 常见问题与排查技巧实录
6.1 PLL锁相失败的三种表现
PLL问题是最容易让模型整体崩溃的。第一种表现是锁相后角度抖动,dq电流波形上叠加了明显的低频振荡,这通常是PLL的PI参数带宽太高或者滤波不够,把电网电压谐波放大成了角度抖动。第二种表现是锁到反相,A相电压明明在正半周,θ却对应负半周,这会导致电流补偿方向完全反掉——该超前变成滞后,该滞后变成超前。第三种是初始相位不对,θ起始值设成0,而模型里电压源初始相位也是0,看起来没问题,但如果电源模块里设了初始相位角不是0,就必须在PLL积分器初始值里对应修正。
排查手段很朴素:把PLL输出的sinθ、cosθ和A相电压画在同一个示波器里,如果θ锁定正确,当A相电压过零点时sinθ应该同步过零。这一步一分钟就能定位问题,比猜参数有效得多。
6.2 直流电压建立不起来
直流电压不建立,或者建立到一半就塌下去,排查按这个顺序:先看IGBT有没有触发脉冲,门极信号旁边的PWM输出是不是满占空比或全是0;再看母线电容两端有没有电压采样回路的极性接反,反馈极性错误会让电压环比错,输出饱和到一端;再看电流环的id、iq有没有接反,id通道如果成了无功通道,电容就得不到有功补充;最后看直流电容初始电压是否设成了0,如果设成0,启动瞬间的限流问题会让模型需要很长的预充电时间,如果仿真时间不够长,看起来就像“建立不起来”。
一个实用经验是,给直流电容加一个单独的小电阻预充电支路,模拟真实装置的上电过程,然后用断路器切入SVG。这样做波形更贴近工程,也更容易控制启动冲击。
6.3 PI参数整定的实操顺序
很多新手一上来就同时调四个PI参数,四个旋钮一起拧,最后模型发散到无法直视。正确的顺序是:先把电压环输出强制成常数或直接给死参考,单独调试电流环;给iq_ref一个小阶跃,观察电流跟踪的超调和响应时间,把Kp从小到大逐步增加,Integral先给一个很小的值;电流环调到超调在10%以内且无明显振荡后,再恢复电压环闭环,此时只调电压环的Kp和Ki。
电压环比电流环慢一个数量级是基本原则。如果电压环带宽太高,它会把直流电压纹波放大成电流指令的振荡,反而导致装置输出电流杂乱。我在模型里通常让电流环带宽1kHz,电压环带宽50Hz左右,这个比例下系统稳定裕度比较充足。有条件的话接上Simulink Control Design工具箱,可以直接画出开环Bode图,辅助判断穿越频率和相位裕度,省下大量盲调时间。
6.4 仿真发散、步长过小和速度太慢
仿真发散常见原因有:二极管或IGBT的snubber参数设置太小,数值求解出现高频振荡;连续变步长求解器在开关换流瞬间计算失败;控制环输出出现NaN或Inf,传播到调制环节后,占空比直接非法。我自己的排查经验是:把powergui切到离散模式,让电力电子开关由离散事件驱动,可以有效提高鲁棒性。再检查所有PI模块输出有没有限幅,没限幅的PI在模型动态过程中很容易积分饱和,一饱和输出就飞掉,再好的负载也拉不回来。
仿真速度太慢时,除了换小步长,还要检查有没有不必要的高频采样模块。比如PWM死区时间、IGBT的导通压降、二极管反向恢复这些物理细节,在起步阶段都可以关闭或简化,它们对整体控制行为的影响不大,但会显著拖慢仿真。等模型核心功能验证通过,再逐步加入物理细节也不迟。
6.5 常见问题速查表
| 现象 | 可能原因 | 排查与解决 |
|---|---|---|
| 仿真直接发散 | 求解器连续变步长+开关冲击 | powergui切离散模式,减小步长 |
| 电流波形毛糙 | 电感太小或开关频率偏低 | 增大电感或提高载波频率 |
| 电压超前/滞后方向反掉 | 坐标变换系数错误或θ方向反 | 检查Park变换公式与PLL极性 |
| dq轴互相扰动 | 前馈解耦项缺失或符号错误 | 检查v_d=v_u+ωL·i_q等前馈公式 |
| 直流电压100Hz纹波偏大 | 电容容值不足 | 按公式重新核算C,并增加C值 |
| 启动冲击电流过大 | 电容初始电压为零 | 设置初始电压到接近参考值,或加预充支路 |
| q轴电流无法跟踪指令 | 电流环PI饱和或解耦失败 | 调大Kp,清理积分饱和,检查限幅 |
| 不平衡工况直流侧50Hz振荡 | 负序电流进入装置 | 引入正负序分离控制或陷波器 |
| 控制输出电压饱和 | U_dc参考值偏低 | 提高直流母线电压或换SVPWM |
| 仿真速度极慢 | 采样周期太小且模型过细 | 开关频率采样放宽到2e-5s,简化器件模型 |
这套速查表是我实际调试过程中整理出来的,几乎每个问题都在至少两台模型上踩过。现象和原因不是严格一一对应,但按表里顺序排查,多数问题能在半小时内定位。
最后分享一个小小的实操体会:很多仿真探索失败的场景,都不是算法本身出错,而是坐标变换符号、系数、初始相位这些“低级但致命”的细节在捣乱。建议把模型的每一级信号都拉出来看一遍波形,从abc到dq再到PI输出再到PWM,逐级核对,比迷信一次跑通靠谱得多。跑通两电平VSC的SVG模型之后,下一步可以试试级联H桥单元、LCL滤波、正负序分离或者SVPWM,也可以把这个控制器配合Embedded Coder生成C代码,直接在DSP里做半实物验证——到那一步,你会发现Simulink的探索价值还远没到头。