搞并网发电的人,对“弱电网”这三个字都有心理阴影。电网阻抗一变大,原来运行得还算规矩的LCL-VSC,电流波形会突然开始“喘”,几个周波内出现明显的低频包络,用FFT一扒,谐振频率往往不在开关频率附近,而是落在次同步段(比如30~45Hz)以及它对应的镜像超同步段(55~70Hz),这就是典型的次+超同步谐振。要查清楚它到底在什么条件下出现、怎么消除,阻抗建模是最硬核也最实用的路子:把变换器和电网分别看成随频率变化的阻抗,两者一比,再拿Nyquist判据一验,系统稳不稳、裕度够不够、谐振点在哪个频率,全部能写在图上。这篇文章,我就完整走一遍“弱电网下LCL-VSC阻抗建模→次/超同步谐振机理→Simulink仿真复现→Nyquist判据验证”的实操流程,用的都是现场和MATLAB里验证过的套路,适合正在做并网变流器稳定性分析的电力电子研究生,被现场振荡问题折磨的调试工程师也可以重点看第3、4节。
1. 弱电网如何“逼出”LCL-VSC的次/超同步谐振
1.1 弱电网的本质:SCR与电网阻抗
判断电网强弱,最常用的指标是短路比SCR(Short Circuit Ratio),定义是并网点短路容量与变流器额定容量之比:
[ SCR = \frac{S_{sc}}{S_n} = \frac{U_{LL}^2}{Z_g \cdot S_n} ]
工程上一般认为SCR大于10属于强电网,SCR在3~10之间属于弱电网,小于3就是极弱电网。电网阻抗Zg越大,SCR越小,并网点电压就越容易受到变流器电流的扰动。听起来有点抽象,我举个例子直观算一下:一个额定容量100kVA、线电压380V的VSC,电网电感Lg取3mH,工频下电网阻抗Zg=ωLg≈314×0.003≈0.94Ω,短路容量Ssc≈380²/0.94≈153kVA,SCR≈1.5,这是个非常弱的电网。如果把Lg降到0.5mH,SCR一下就到了9左右,系统会安分很多。
弱电网带来的实际感受,打个比方:强电网像水泥地,你在上面怎么蹦都稳;弱电网像弹簧床,你稍微一发力,床本身就开始晃,晃动的幅度反过来又影响你站姿。对VSC来说,这个“站姿”就是锁相环PLL看到的并网点电压相位,电网阻抗一大,电压相位随输出电流剧烈浮动,控制环路和电网之间就产生了强烈耦合,这就是后续一系列谐振问题的根源。
1.2 LCL滤波器:滤波效果与天生谐振
LCL滤波器是VSC并网的标配,原因是它能用较小的总电感量获得比单L滤波器好得多的高频衰减:在谐振频率以上,LCL的衰减斜率是-60dB/dec,体积重量可以明显缩小。但LCL有一个天生的毛病:存在本征谐振峰,如果不加阻尼,哪怕电网阻抗很小,也有可能在你不想看到的频率点放大扰动。
LCL谐振频率的近似公式是:
[ f_{res} = \frac{1}{2\pi}\sqrt{\frac{L_1 + L_2}{L_1 L_2 C}} ]
我用的典型参数是L1=0.35mH、L2=0.2mH、C=30μF,算出来fres≈2.6kHz。问题来了:弱电网的Lg会串联到网侧电感上,等效L2变成L2+Lg。按Lg=1.2mH算,新的谐振频率直接降到1.7kHz左右。也就是说,电网越弱,LCL的谐振峰越被压低,这会让高频模态和次同步模态之间的频率间隔缩小,给控制参数设计增加了难度。所以不要以为次同步谐振是LCL本征谐振峰引发的——那部分主要在千赫兹级别,真正引发几十赫兹振荡的,是后面要讲的VSC闭环控制呈现的负阻抗特性。
1.3 次同步和超同步谐振到底是怎么冒出来的
很多初学者想不通一个问题:LCL本征谐振在2.6kHz,为什么实际振荡在35Hz?因为它们根本不是一个东西。次同步谐振的来源是VSC在闭环控制下,其端口等效阻抗并不总是“正电阻+感性”这么单纯,而是在某些频段出现实部为负的“负电阻”特性。当电网侧感性阻抗和这个负电阻串联时,回路里的总阻尼变成负的,能量不断注入某个频率的振荡模态,波就起来了。
负阻尼通常出在PLL和电流环控制的交界频段。弱电网下PCC电压对电流非常敏感,PLL把电压相位中的电流信息耦合进来,如果PLL带宽调得过高,PLL动态就会在几十赫兹附近贡献一个明显的负电导,把系统往振荡方向推。还有一个经典的迷惑点:为什么次同步振荡总伴随一个超同步分量?因为在dq同步旋转坐标系里,一个频率为f_sub的扰动分量,变换回静止abc坐标系后,会被映射为两个一半幅值的分量:一个在f_sub,另一个在2f1-f_sub,即所谓的镜像频率。比如电网50Hz,次同步35Hz,镜像就是65Hz。所以FFT里总是成对出现“35Hz+65Hz”,这就是标题里“次+超同步谐振”的含义,理解了这一层,后面看波形抓频率就不会懵。
2. 阻抗建模:把稳定性问题装进频域框架
2.1 戴维南等效:把VSC也看成“电压源+阻抗”
阻抗建模的第一性原理,是在稳定工作点附近把VSC进行小信号线性化,并等效成一个戴维南电路:理想电压源Vvsc串联一个输出阻抗Zvsc(s)。必须强调一点:这个Zvsc(s)绝对不是LCL无源网络的阻抗,而是包含了PLL动态、电流环PI、有源阻尼、PWM延迟以及功率外环在内的一整套闭环等效阻抗。换句话说,你看到的是“整个变流器闭环系统”作为一个端口器件从外面看进去的阻抗,不是拿万用表量出来的电感电阻。
电网侧一样处理:理想电网电压源Vg串联电网阻抗Zg(s)。于是两个戴维南源通过PCC点相连,回路电流可以写成:
[ I(s) = \frac{V_{vsc}(s) - V_g(s)}{Z_{vsc}(s) + Z_g(s)} ]
系统的稳定性就归结为分母Zvsc+Zg会不会在右半平面出现零点。这个视角比直接列写十几阶状态矩阵求特征值要直观很多,因为它允许你把变流器和电网当成两个“黑盒”,只要各自的阻抗特性搞清楚,哪怕内部细节不完全知道,也能判断互联后的稳定性。这是阻抗法能在工程现场立足的根本原因。
2.2 dq轴阻抗矩阵与正负序阻抗换算
VSC在三相静止坐标下是周期时变系统,直接建模很麻烦,所以常规做法是先变换到dq同步旋转坐标系,在工作点处做小信号线性化,得到2×2的阻抗矩阵:
[ \begin{bmatrix} \Delta v_d \ \Delta v_q \end{bmatrix}
\begin{bmatrix} Z_{dd}(s) & Z_{dq}(s) \ Z_{qd}(s) & Z_{qq}(s) \end{bmatrix} \begin{bmatrix} \Delta i_d \ \Delta i_q \end{bmatrix} ]
四个元素Zdd、Zdq、Zqd、Zqq都有物理意义,工程上如果控制器设计得比较对称,那么Zdq≈-Zqd、Zdd≈Zqq,这时候可以简化为正序阻抗和负序阻抗两个标量:
- 正序阻抗:Zp(s) ≈ Zdd(s - jω1)
- 负序阻抗:Zn(s) ≈ Zdd(s + jω1)
这里ω1是工频角频率。次同步扰动在dq域里对应的是一个负频分量,在静止坐标里体现为正序的次同步频率分量;而它的镜像超同步分量则和负序通道耦合在一起。如果你的论文或项目需要特别严谨,交叉项Zdq/Zqd不能随便丢,因为PLL动态恰恰主要落在交叉项里,丢了交叉项阻抗模型就失去了分析次同步振荡的能力。现场快速分析用简化近似够用,做研究还是老老实实把2×2矩阵列全。
2.3 阻抗比与Nyquist判据的数学关系
把前面的电流表达式做一点代数变形,可以写成:
[ I(s) = \frac{V_{vsc}(s) - V_g(s)}{Z_{vsc}(s)\left(1 + \frac{Z_g(s)}{Z_{vsc}(s)}\right)} ]
定义环路增益L(s) = Zg(s) / Zvsc(s),稳定性就取决于1+L(s)的零点位置。如果VSC子系统本身稳定(Zvsc在右半平面没有零极点,或者说VSC空载闭环稳定),电网子系统也稳定,那么互联系统稳定的充要条件就是L(s)的Nyquist曲线不包围(-1, j0)点。这个判据用起来和经典控制里的单位负反馈Nyquist判据完全一样,区别只是把“开环传递函数”换成了“两个阻抗之比”。
工程上还有一个很实用的替代视角:直接看L(s)的Bode图,找出幅值等于1(0dB)的穿越频率,看这个频率处的相位离-180°有多远,那个距离就是系统的相位裕度。弱电网次同步振荡发生时,L曲线往往在几十赫兹频段幅值逼近0dB、相位逼近-180°,肉眼就能看出危险程度。
2.4 为什么阻抗法比纯时域仿真好使
时域仿真的痛点是:改一个参数,就得重新跑几百毫秒仿真,而且波形乱了,你还得花时间FFT、确认振荡频率、反推原因,效率很低。阻抗模型是线性化频域模型,一次计算就能覆盖你想看的整个频段,扫参数时可以批量算出“稳定/不稳定”的边界,定位谐振频率和裕度都是一步到位。
更要紧的是阻抗法在现场的价值:实际变流器内部控制器参数可能是保密的,或者已经固化在硬件里,你拿不到状态空间模型,但可以通过扫频测试直接测出变流器端口的阻抗频率响应,然后和电网阻抗一比,就能判断振荡风险。这相当于把稳定性分析从“必须知道对方全部底牌”变成“只看端口特性”的黑盒方法。当然阻抗法也有局限,它是小信号线性化方法,不能描述大扰动、限幅饱和、保护动作等强非线性行为,所以工程上一贯的做法是:阻抗判据说危险,时域仿真来确认,两边互相印证,而不是互相替代。
3. Simulink仿真实现:从搭建模型到复现谐振
3.1 主电路与控制系统搭建要点
Simulink里的仿真平台我用的是Simscape Electrical Specialized Power Systems(老名字SimPowerSystems),版本差异不大,模块都一样。主电路按这个顺序搭:三相交流源(Three-Phase Source)串RL支路模拟电网阻抗,然后是LCL滤波器的L2-C-L1,接着接两电平VSC(Universal Bridge),直流侧用一个750V直流电压源,PWM用标准的三相规则采样。
控制子系统是重头戏,这部分不能偷懒用库里的黑盒PLL模块,建议自己搭SRF-PLL,结构是Park变换→vq进PI→输出角频率积分得θ。自己搭的好处是PLL参数随时能改,后面做带宽对比才方便。电流内环在dq域做,PI输出加上ωL解耦项,再经过坐标反变换得到三相调制波。有源阻尼我习惯用电容电流反馈法,在电流环给定侧叠加一个电容电流比例反馈,等效为给LCL谐振峰并联虚拟电阻,避免高频谐振放大。仿真环境在powergui里选离散模式,步长取1e-5到2e-5s,对应10kHz开关频率足够。
3.2 关键参数计算:LCL、电流环、PLL
仿真参数我按一个100kVA、380V/50Hz的系统来配,主参数如下:
| 类别 | 参数 | 数值 |
|---|---|---|
| 电网 | 额定线电压 | 380V / 50Hz |
| 电网 | 网侧电感Lg | 0.5~3mH(SCR≈1.5~9) |
| 电网 | 网侧电阻Rg | 0.1Ω |
| LCL | L1 / C / L2 | 0.35mH / 30μF / 0.2mH |
| LCL | 本征谐振频率 | ≈2.6kHz |
| VSC | 额定功率 | 100kW |
| VSC | 直流母线电压Vdc | 750V |
| VSC | 开关/采样频率 | 10kHz |
| 控制 | 电流环带宽 | 600Hz |
| 控制 | PLL带宽 | 30Hz(低) / 80Hz(高) |
| 阻尼 | 电容电流反馈系数 | 按阻尼比0.3~0.6初调 |
电流环PI怎么给初值?把被控对象近似成纯电感LΣ=L1+L2+Lg,以Lg=1.2mH为例,LΣ≈1.75mH,带宽600Hz对应ωc≈3770rad/s,比例系数kp=LΣ×ωc≈6.6V/A。积分系数先按kp×R/LΣ给一个很小的值,或者干脆先给kp的1/10左右,再根据阶跃响应微调。注意:如果你的控制器内部做了标幺化或调制波折算,这几个数值还要乘一个增益系数,别直接硬搬,我一开始就是直接搬,结果电流环发疯,后来老老实实按折算关系重算才稳住。
PLL参数也可以直接算出来。PQ同步的SRF-PLL小信号模型是典型二阶系统,阻尼比取0.707,带宽30Hz时ωn≈188.5rad/s,稳态d轴电压Vd0≈310V,则kp_pll=2ζωn/Vd0≈0.86,ki_pll=ωn²/Vd0≈114。带宽80Hz时kp≈2.29,ki≈815。后面做稳定性对比,就把这两组参数来回切换,效果非常明显。
3.3 弱电网切换与次/超同步谐振复现
复现谐振的脚本是这样安排的:0到0.5s,Lg=0.5mH(SCR≈9),系统稳定运行;0.5s时刻把Lg切换成3mH(SCR≈1.5),这个切换不要直接改电感参数,Simscape里参数突变很容易引起数值震荡,我用三相断路器把另一段电感并联进去,模拟“线路断开后电网阻抗变大”的过程。
切换之后,PLL带宽30Hz时,电流会有一个短暂的波动,但几个周波内就收敛,只是动态响应明显变慢;PLL带宽80Hz时,戏剧性的一幕就来了:电流波形出现明显的低频包络,用FFT分析0.5s到1s的数据,主峰在35Hz左右,同时65Hz附近还有一个次峰——这就是教科书级的次+超同步谐振。看到这个波形时,先别急着改参数,用MATLAB的envelope函数把电流包络提出来,观察包络是指数衰减、等幅还是发散,等幅就说明系统已经临界,再增大Lg一点点,包络就会发散。
3.4 实测阻抗的频率扫描方法
仿真里验证阻抗模型,最扎实的手段是“扫频测阻抗”。方法是在PCC点并联一个受控电流源,注入多个频率的正弦扰动电流,同时记录PCC电压和注入电流,用FFT在对应频率上提取幅值和相位,然后算Zvsc(jω)=U_pcc(ω)/I_inj(ω)。
一次仿真不要只注入一个频率,那样太慢。我把扰动做成多正弦叠加:
[ i_{inj} = \sum_{k} I_k \sin(2\pi f_k t + \varphi_k) ]
频点取1、2、3、5、7、10、15、20、25、30、35、40、45、50、60、70、80、90、100、120、150、200、300、500、800、1000Hz,在可能的谐振频段加密,其他区域稀疏。每个扰动分量的幅值控制在额定电流的1%~3%,φk用随机数打散,避免多个分量同时达到峰值把变换器推到非线性区。采样步长1e-5s,FFT数据窗取0.5s以上,加hann窗抑制泄漏。这样跑一次扫描仿真,就能得到一条完整的阻抗频率响应曲线,拿它和第2章的解析模型曲线对照,两条线能叠上,说明你的阻抗建模是可信的。
4. 用Nyquist图完成稳定性判定的实操步骤
4.1 从仿真/解析数据构造阻抗比频率响应
有了Zvsc的数据,剩下就是构造L(s)=Zg(s)/Zvsc(s)并画Nyquist。解析路线方便,直接把状态空间模型扔进MATLAB的命令行:
% 假设 sysZvsc 是从状态空间得到的 VSC 输出阻抗传递函数 Lg = 3e-3; Rg = 0.1; s = zpk('s'); sysZg = Rg + Lg*s; % 电网阻抗 sysL = minreal(sysZg * inv(sysZvsc)); figure; nyquist(sysL); grid on;扫频路线更贴近“实测”,把扫频得到的复数阻抗离散点封装成频响数据对象,再相除:
f = [1 2 3 5 7 10 20 30 35 40 45 50 60 70 80 100 150 200 300 500 800 1000]; Zg = Rg + 1i*2*pi*f*Lg; Zvsc_frd = frd(Zvsc_measured, f); Zg_frd = frd(Zg, f); L_frd = Zg_frd / Zvsc_frd; figure; nyquist(L_frd); grid on;扫频数据的频点一定要覆盖谐振附近,低频段如果只有稀疏几点,Nyquist曲线在那一段会连出奇怪的形状,容易被误导。
4.2 解读Nyquist图的三个关键点
Nyquist判据落到图上,就抓三件事。第一,曲线是否穿过或包围(-1, j0)点。不包围、不穿过,系统稳定;穿过-1点,临界;曲线把-1点包在里头,基本就是发散了。第二,曲线离-1点最近的距离,代表稳定裕度。工程上我习惯把曲线放大看,如果最接近点的距离小于0.2左右,就认为危险,需要调参数。第三,把Nyquist图上最接近-1点的那个频率,和时域FFT的主导振荡频率对照。如果一边说是35Hz,另一边FFT峰值在42Hz,不要急着怀疑测量误差,先回头查模型有没有把PWM一拍延迟漏掉,这个问题在第5章会细说。
4.3 参数扫描:看Lg和PLL带宽如何移动“-1点威胁”
用同一个仿真模型,把Lg和PLL带宽做组合,我测出来的结果大致是这个趋势:
| 电网电感Lg | PLL带宽 | 时域表现 | Nyquist距-1点距离 |
|---|---|---|---|
| 0.5mH | 30Hz | 稳定,响应良好 | 较远 |
| 0.5mH | 80Hz | 稳定,裕度下降 | 中等 |
| 3mH | 30Hz | 稳定,但衰减慢 | 较近 |
| 3mH | 80Hz | 等幅振荡/发散 | 穿越-1 |
规律很清楚:电网阻抗变大和PLL带宽增高,都会把L(s)曲线往-1点方向推。PLL带宽的影响尤其直观——它把次同步频段的负电阻区域扩大加深,相当于给振荡模态不断供能。所以并网变流器的PLL带宽设计不能只考虑锁相速度,在弱电网场合宁可用30Hz甚至更低的带宽,换稳定性,这个取舍在仿真里看得明明白白。
5. 我在仿真和验证中踩过的坑
5.1 高频LCL谐振率先发难怎么办
第一次复现弱电网切换时,我满怀期待想看35Hz包络,结果电流波形先炸出来的是2kHz左右的高频振荡,毛刺非常密集。排查下来不是次同步问题,而是LCL谐振峰没有被有效阻尼,弱电网把等效谐振频率压到1.7kHz附近后,和PWM边带靠得更近,噪声一激励就起来了。处理办法:先确认有源阻尼反馈系数不是零,然后调电容电流反馈增益,使阻尼比落在0.3~0.6之间,再看波形。另一个隐蔽原因是仿真步长太大,离散仿真里PWM开关事件采样不准,把步长从5e-5s降到2e-5s,高频毛刺明显减少。记住:高频问题不先解决,次同步包络被掩盖在毛刺里,FFT根本看不利索。
5.2 解析阻抗与扫描阻抗对不上
这是阻抗建模最让人头秃的环节。我遇到过的情况是:幅频形状对得上,但整体频率向右偏移了大概一个开关周期对应的小量,谐振尖峰的位置和深度都对不上。问题出在我解析建模时没有考虑PWM一拍延迟。数字控制在当前周期采样、下一周期更新占空比,这个延迟在频域里差不多是e^{-sTs},Ts是采样周期。把这一拍延迟加进解析模型的VSC控制通路之后,两条阻抗曲线基本就叠上了。另一个常见原因是工作点不一致:解析模型用了某个Vd0、占空比,而仿真里运行在另一个工作点,小信号阻抗对工作点很敏感,务必让两边工作点完全一致再对比。
5.3 Nyquist说稳但时域发散的排查
最让人崩溃的判据失效场景是:Nyquist曲线明显不包围-1,判定稳定,但Simulink里电流却一路飙到保护限幅。后来查出来是子系统本身就不稳——VSC在某种参数下空载闭环有右半平面极点,这违反了阻抗比Nyquist判据“各子系统开环稳定”的前提。这时候你构建的L(s)=Zg/Zvsc根本不能直接说明问题,因为Zvsc自己都有问题。正确流程是:先把电网阻抗设成接近0,确认VSC本身闭环稳定,再逐步加Lg,找到第一个不稳定的临界点,而不是一上来就把Lg拉到3mH。另外仿真里的电流限幅、PI饱和这类非线性环节,会让系统在触发非线性后表现出和线性判据完全不同的行为,纯线性Nyquist图管不了非线性,时域校验不能省。
5.4 扫频测试的高效设置技巧
扫频这个活,仿真时长消耗很大,我有几个固定打法。第一,频点按对数或者按谐振区加密分布,不要在100~200Hz之间均匀塞20个点,那是浪费仿真时间,谐振峰附近多塞就够。第二,扰动幅值控制好:小于1%额定电流,FFT提取的谐波信噪比会很差;大于5%,变流器进入非线性调制区,扫出来的阻抗“飘”得没法看,我一般取2%左右。第三,每次切换参数后,让系统先跑3~5个工频周期再开始注入扰动,保证工作点完全稳定。第四,记录波形时把Simulink的日志采样步长设成和仿真步长一致,否则FFT高频段会混叠,这也是一个容易忽略但影响很大的细节。
整套流程做完,我最大的体会是:阻抗分析不是摆矩阵给别人看的形式主义,它就是一份“系统健康体检报告”。变流器的阻抗是它的性格,电网的阻抗是它的处境,Nyquist图就是判断两个角色相处会不会打架的参考系。你先把VSC自身调到稳定,再把电网阻抗一点一点加进去,看着阻抗比曲线一步步逼近-1点,比盲目跑几十次时域仿真要清楚得多。最后建议你把扫频得到的阻抗数据保留下来,以后换控制参数、换滤波器参数,直接对比阻抗变化,很多“莫名其妙振荡”当场就能定位。等这些基础工作跑顺了,这套模型还可以继续往控制器快速原型方向走——把控制部分生成C代码,配合外部模式在线调参,那是另一个阶段的事,但前提还是先把阻抗分析这块地基打扎实。希望这篇能帮你少熬几个通宵。