做了几年的并网逆变器仿真和稳定性分析,说实话,早期我对“弱电网不稳定”这件事的认知是停留在波形层面的——明明控制器参数是按经典方法整定的,换了强电网环境一跑,并网电流开始出现几赫兹的包络振荡,FFT一看,次同步频段冒出一堆分量。后来系统的学习了阻抗建模和Nyquist判据这套方法,才明白这类问题的根源在于:弱电网下VSC输出阻抗和电网阻抗之间的相互作用,而不是简单的“PI参数没调好”。这篇内容就把我实际做过的“弱电网下LCL-VSC阻抗建模及稳定性分析(次+超同步谐振)+ Nyquist判据验证 + Simulink仿真实现”完整套路梳理一遍,参数、模型、步骤、踩坑都会写清楚,适合正在做并网逆变器稳定性研究、或者被振荡问题困扰的工程师。
1. 弱电网下LCL-VSC为什么需要阻抗建模分析
1.1 弱电网的定义与工程痛点
“弱电网”不是主观感觉,而是有量化指标的。工程上常用短路比SCR(Short Circuit Ratio)来描述电网强度,SCR等于并网点的三相短路容量与变流器额定容量之比。SCR大于20一般是极强电网,10到20算较强,3到10属于中等强度,小于3就是公认的弱电网。在弱电网环境下,电网等效阻抗(主要是电网电感Lg,加上少量电阻Rg)不能忽略,并网点的电压会随着功率传输发生明显变化。
我最早遇到问题是在一个SCR约为2.3的仿真工况下。当时用的是典型的跟网型VSC控制:PLL锁相、电流内环、直流电压外环,LCL滤波器参数完全按强电网设计,开关频率10kHz,电流环带宽设计在800Hz左右。在强电网(SCR=20)下一切正常,THD不到3%,但把电网阻抗调大后,并网电流出现了明显的低频振荡,振荡频率大概在28Hz附近。拿FFT一分析,基波50Hz左右还出现了22Hz和78Hz的边带分量,这就是次同步和超同步谐振的典型表现。
弱电网下的第二个痛点是LCL滤波器本身的谐振频率会被电网电感拉低。LCL的谐振频率公式是fres = sqrt((L1 + L2 + Lg) / (L1 * (L2 + Lg) * C)) / 2π,当Lg从小变大时,fres会显著下降。如果下降后的谐振频率和电流环带宽、PLL带宽发生耦合,系统很容易在某个频段出现负阻尼,这就是振荡的温床。
1.2 次同步与超同步谐振的产生机理
很多人一听到“次同步谐振”,第一反应是火电机组的轴系扭振。实际上在VSC并网系统里,次同步/超同步振荡的本质不完全相同,但共同点是系统在某个频段等效电阻为负,外部的LC回路一旦被激励,振荡就会持续甚至发散。
VSC通过PLL与电网同步,PLL在dq旋转坐标系下对电压扰动非常敏感。假设并网点有一个频率低于工频的正序电压扰动(比如45Hz),PLL会把这个扰动的一部分识别为相位误差,于是调整自己的输出角度,使得VSC输出电流在扰动频段呈现出动态响应。这个过程等效为一个负导纳或负电阻注入到网络。当电网阻抗足够大,PLL带宽又比较高时,负电阻的绝对值超过电网和滤波器的正电阻总损耗,系统就满足了自激振荡条件。
超同步频段也类似。电网阻抗和LCL滤波器电容在某些频率下形成串联或并联谐振回路,如果VSC在该频段呈现负电阻,谐振峰就会被激发。实际波形表现是并网电流在基波上叠加了一个高频振荡分量,畸变率明显上升,严重时触发保护。
1.3 为什么阻抗分析法在弱电网场景中更有效
传统的控制稳定性分析通常看开环传递函数的Bode图和相位裕度,这在电网阻抗恒定、可以忽略的场景下有效。但弱电网的难点在于:电网阻抗不是一个固定值,新能源场站的并网点参数还会随运行方式变化。你很难用一个固定被控对象的开环传递函数去覆盖所有工况。
阻抗分析法的思路完全不同:把VSC等效为“电流源+并联输出阻抗Z_vsc(s)”,把电网等效为“理想电压源+串联阻抗Z_g(s)”。这两个阻抗在整个频段内的关系决定了系统的稳定性。判据也很直接:如果Z_vsc和Z_g的比值在复平面上的Nyquist曲线不绕过(-1, j0)点,系统稳定;否则不稳定。这个方法的工程价值在于,Z_vsc可以通过仿真中的谐波注入测量得到,Z_g可以直接从电网参数算出,两者解耦,分析流程非常清晰。
2. LCL-VSC阻抗模型的完整推导
2.1 LCL滤波器与VSC的基本传递函数
阻抗建模的第一步是把主电路的物理特性写出来。LCL滤波器由逆变器侧电感L1、滤波电容C、网侧电感L2组成,如果考虑电网阻抗,一般把Lg并入L2,也就是L2_total = L2 + Lg。从逆变器输出电压v_inv到并网电流i_g的传递函数为:
G_LCL(s) = 1 / [s * (L1 + L2_total) + s^3 * L1 * L2_total * C]
这个公式是我做所有后续推导的基础。它有两个关键信息:低频段呈现积分特性(s在分母),高频段呈现-60dB/dec的滚降,中间在谐振频率fres处有一个尖锐的谐振峰。如果不加阻尼,这个谐振峰直接进入电流环,很容易引起中频振荡。所以在建立VSC阻抗模型时,通常会在电流环中加入有源阻尼(最常用的是电容电流反馈有源阻尼),把谐振峰的幅度压低。
VSC本身可以看成一个大功率的电压源型变换器,在工频附近,它的动态特性由控制器决定。对于阻抗建模,通常把VSC等效为诺顿模型:一个受控电流源并联一个输出阻抗Z_vsc。输出阻抗的表达式在理想情况下可以写成:
Z_vsc(s) ≈ (L1*s + K_p + K_i/s) * G_delay(s) / ...
这里不展开全部代数式,但要理解物理图像:电流环的PI参数决定了VSC在低频段的阻抗特性,L1决定高频段的感抗,PLL则在某个频段上叠加负电阻效应。
2.2 数字控制延时与锁相环对阻抗特性的影响
很多第一次做阻抗建模的人会栽在控制延时上。数字控制器中,采样、计算、PWM更新不可避免存在一拍延时,加上零阶保持器,等效延时约为1.5个采样周期。这个延时在频域中表示为e^(-1.5Tss),它不改变幅频特性,但在高频段会带来明显的相位滞后。如果不把这个延时加进阻抗模型,仿真测出来的Nyquist曲线和理论推导会有明显偏差,甚至出现理论稳定、实际振荡的情况。
PLL对阻抗特性的影响是弱电网分析的核心。在dq坐标系下,PLL的等效负导纳可以近似表示为:
Y_PLL(s) ≈ -I_f * T_PLL(j(ω - ω_0))
其中I_f是基波有功电流,T_PLL是PLL闭环传递函数。这个式子的物理意义是:PLL以工频为中心,把略低于或略高于工频的扰动转换成dq轴电流的调节指令,形成一个负的导纳分量。PLL带宽越高,T_PLL在中低频段幅值越大,负导纳越明显。这也是为什么弱电网下提高PLL带宽会让振荡加剧——你等于在系统里注入了一个更大的负电阻。
2.3 得到诺顿等效模型:VSC输出阻抗与电网阻抗的合成
把上述各部分组合,VSC从并网点看进去的输出阻抗为:
Z_vsc(s) = Z_plant(s) + Z_control(s) + Z_PLL(s)
其中Z_plant是主电路本身的阻抗,Z_control是电流环闭环带来的阻抗重塑,Z_PLL是PLL的负导纳贡献。实际工程中,这一步往往不是纯解析推导,而是结合阻抗扫描来校正模型。我在Simulink中搭建好VSC闭环模型后,先在时域跑出稳定工作点,再注入扫频扰动,用FFT提取并网点电压和电流的比值,就得到了实测的Z_vsc。这个实测值可以直接用于稳定性判断,也可以反过来校验解析模型的正确性。
电网阻抗的模型比较简单,弱电网下等效为Z_g(s) = R_g + s*L_g。把VSC的诺顿模型和电网的戴维南模型对接,就得到一个经典的互联系统。稳定性分析的系统开环传递函数定义为:
T(s) = Z_g(s) / Z_vsc(s)
这个比值的物理意义是:电网阻抗相对VSC阻抗的“相对大小”,当两者互相匹配时,系统在对应频段最容易激发谐振。
2.4 工程中常用的简化与前提条件
阻抗建模要注意适用范围。我一般做如下假设:电网三相平衡、忽略零序、VSC开关频率远高于分析频段、PLL小信号线性化成立。这些条件在多数次/超同步谐振分析中都能满足。对于三相对称系统,可以在正序、负序坐标系中分别建立阻抗模型,正序阻抗和负序阻抗是解耦的,每个序下可以当作单输入单输出系统处理。
另外,如果研究的是跟网型VSC,通常需要考虑恒功率外环对阻抗的影响。直流电压环的带宽一般设计得很低(10~30Hz),它主要在很低的频段影响阻抗特性,而次同步振荡频率通常在几十赫兹,所以直流电压环的影响往往可以忽略,但不能完全无视。我在实际项目中通常先把直流电压环去掉,只保留电流环和PLL做阻抗扫描,分析谐振机理后再把外环加回来做时域验证,这样逻辑更清楚。
3. Nyquist判据的稳定性分析实操
3.1 阻抗比作为开环传递函数的稳定性判据原理
把VSC和电网互联归结为两个阻抗串联,系统的闭环稳定性取决于Z_vsc + Z_g是否在右半平面存在零点。如果Z_vsc和Z_g本身都是稳定传递函数,那么Z_vsc + Z_g的零点分布等价于T(s) = Z_g / Z_vsc的Nyquist曲线是否绕过(-1, j0)点。这个判据和经典控制理论里的Nyquist判据完全一致,只是开环传递函数换成了阻抗比。
为什么用阻抗比而不是直接检测Z_vsc+Z_g的零点?因为零点无法直接测量,而阻抗比可以通过频域扫描得到,工程上非常实用。实际判断时,我在MATLAB里把Z_vsc的实测频响数据(幅值和相角)和Z_g的解析表达式相除,得到T(s)在每个频点的复数,直接plot(T_real, T_imag)就能画出Nyquist图。如果曲线接近并绕过(-1, j0),说明这个频段存在负阻尼,系统在时域一定会有对应频率的振荡。
3.2 广义Nyquist判据在dq模型与序模型中的应用
严格来说,在dq坐标系下建立的VSC阻抗模型是2x2的MIMO矩阵,因为d轴和q轴之间存在耦合。当电网阻抗在d轴和q轴不对称,或者考虑PLL耦合时,稳定性判断需要使用广义Nyquist判据:对矩阵传递函数L(s) = Z_g(s) * Y_vsc(s),求其特征值λ1(s)和λ2(s),两条特征值轨迹都必须不绕过(-1, j0)点。
实际仿真中,这个操作是通过MATLAB的eig函数在每个频点对2x2矩阵求特征值来完成的。但广义判据有一个麻烦:它只给出“是否稳定”的结论,不利于我们直观理解振荡频率和参与因子。所以我更推荐在正负序坐标系下做阻抗扫描,把2x2矩阵对角化为两套单输入单输出系统。三相平衡电网下,正序阻抗和负序阻抗天然解耦,每个序单独画Nyquist图,直观程度高很多。对于次同步振荡,主要看正序阻抗比;对于电网电压不平衡引起的宽频振荡,再看负序。
3.3 稳定裕度的工程判读:次同步频段与超同步频段
Nyquist判据给出的是稳定的与否的定性结论,但工程上还需要知道“离失稳还有多远”。我用两个指标做定量判据:相位裕度和增益裕度。在Nyquist图上找到|T(jω)| = 1的频点,该频点的相角与-180°的差就是相位裕度;找到arg[T(jω)] = -180°的频点,该频点幅值的倒数就是增益裕度。通常要求相位裕度不低于30°,增益裕度不低于6dB,这和经典控制设计标准是一致的。
在弱电网分析中,次同步频段和超同步频段要分开看。次同步频段(比如10~45Hz)的Nyquist轨迹受PLL影响最明显,PLL带宽越高,轨迹越靠近(-1, j0);超同步频段(比如55~300Hz)的轨迹主要受LCL谐振峰和数字延时影响,电流环带宽和滤波器参数在这里起主导作用。我在报告中会把T(s)从1Hz到2kHz的频响分成三段,分别标注次同步、基波附近和超同步频段的稳定裕度,这样评审专家一眼就能看出风险点在哪。
4. Simulink仿真实现全流程
4.1 仿真电路与控制系统搭建思路
Simulink仿真我习惯分成主电路、控制、测量三部分搭建。主电路用Simscape Electrical(以前叫SimPowerSystems)的元件库,三相电压源选“Three-Phase Source”,电网阻抗用三相串联RLC支路表示,LCL滤波器用三个单相电感电容组装或者直接用“Three-Phase Series RLC Branch”。DC侧用一个理想直流电压源简化,因为研究重点是交流侧的阻抗稳定性,直流动态不属于这个问题范畴。
控制部分我推荐先用平均模型跑通阻抗扫描,再做器件级模型做时域验证。平均模型用受控电压源替代IGBT桥臂,省去PWM环节,仿真速度至少快5倍,而且不影响阻抗特性的低频段准确性。器件级模型用Universal Bridge + PWM发生器,主要用于最终时域波形验证,验证谐振频率和THD。
关键参数给一组我实际用过的参考值:电网线电压380V/50Hz,额定功率10kW,开关频率10kHz,L1=3mH,L2=1.5mH,C=10μF,基波频率50Hz下LCL谐振频率由公式计算约为:
fres = sqrt((3mH+1.5mH)/(3mH1.5mH10μF))/2π ≈ 1095Hz
这个谐振频率离电流环带宽(约800Hz)有一定距离,单独看没什么问题,但弱电网Lg加入后,比如Lg=5mH时:
fres = sqrt((3mH+1.5mH+5mH)/(3mH*(1.5mH+5mH)*10μF))/2π ≈ 590Hz
一下子掉到600Hz以内,和电流环带宽接近,风险陡增。这就是弱电网导致LCL谐振点移动的直接算例。
4.2 谐波注入法测量阻抗的详细步骤
阻抗扫描的做法是在稳定的工作点上叠加一个小幅值正弦扰动,测量对应频率的电压和电流响应。具体操作:
- 先把VSC控制环路调到稳定工作点,并网电流为额定值。
- 在并网点电压源与电网阻抗之间串联一个受控电压源,扰动电压设为vp_inj = Asin(2πf_inj*t)。扰动幅值A我通常取基波电压幅值的1%~2%,太大非线性失真,太小测不准。
- 从1Hz到2kHz按对数均匀扫20~30个频点。注意在次同步频段(5~45Hz)要多取几个点,因为中低频段频响变化剧烈。
- 每个频点等系统进入稳态后,采集并网点电压v_pcc和并网电流i_g,时长要能容纳几十个扰动周期,方便FFT分析。
- 用FFT求扰动频率处的复数幅值比:Z(f_inj) = V_pcc(f_inj) / I_g(f_inj)。对注入频率以外的频谱分量做加窗抑制,减少其他谐波的干扰。
我的扫频脚本大致结构如下(MATLAB示例):
% 读入Simulink导出的时域数据 t = out.tout; v_pcc = out.v_pcc; % 并网点三相电压 i_g = out.i_g; % 并网三相电流 fs = 1 / (t(2) - t(1)); Fp = 2^nextpow2(length(t)); win = hann(Fp); % 每个扰动频率点做FFT for k = 1:length(freq_list) f_inj = freq_list(k); % 只取稳态段 idx = t > t_steady; v_win = detrend(v_pcc(idx)) .* win; i_win = detrend(i_g(idx)) .* win; V = fft(v_win) / sum(win) * 2; I = fft(i_win) / sum(win) * 2; [~, b] = min(abs(f_axis - f_inj)); Z(k) = V(b) / I(b); % 频率点的阻抗复数 end脚本不复杂,但很实用。把Z的结果用bodeplot(Z, freq_list)画出来,就是VSC输出阻抗的Bode图,再与理论模型对比。
4.3 Nyquist图绘制的数据处理脚本
得到Z_vsc的频响数据后,结合电网阻抗参数Z_g = Rg + j2πf*Lg,就能计算T(s):
% 电网阻抗,freq_list来自阻抗扫描 Zg = Rg + 1j * 2*pi*freq_list * Lg; T = Zg ./ Zvsc_freq; % 绘制Nyquist图 figure; plot(real(T), imag(T), 'b-', 'LineWidth', 1.5); hold on; plot(-1, 0, 'rx', 'MarkerSize', 12, 'LineWidth', 2); xlabel('Real'); ylabel('Imag'); title('Nyquist Plot of T(s) = Zg(s)/Zvsc(s)'); grid on; axis equal;在若干关键工况下(不同Lg、不同PLL带宽),把这组图放在一张图上对比,稳定性趋势非常明显。
4.4 一组可直接复现的参数与结果分析
我推荐一组复现参数给读者参考,以方便把整套流程跑通:
- 额定功率:10kW,电网线电压380V/50Hz
- L1=3mH,L2=1.5mH,C=10μF
- 电网阻抗基准:Lg=0.5mH对应SCR约20,Lg=5mH对应SCR约2.5
- PLL带宽:低带宽5Hz(稳定方案),高带宽50Hz(失稳方案)
- 电流环PI:Kp=1.8,Ki=300(标幺值系统)
- PWM开关频率10kHz,采样频率10kHz
实际结果:SCR=20、PLL带宽5Hz时,Nyquist曲线离(-1,0)很远,相位裕度约65°,时域波形正弦度很好。把Lg加到5mH并保持PLL带宽50Hz,Nyquist曲线在25Hz附近穿过负实轴并绕过(-1,0),相位裕度变成负的,时域波形立刻出现约25Hz的包络振荡,FFT显示50Hz两侧出现25Hz和75Hz的边带。这正是次同步振荡与超同步振荡的同源表现——都是同一对复共轭极点被推到了右半平面。
5. 常见问题与调试技巧实录
5.1 PLL带宽与电流环带宽配置错误导致的误判
我在做参数扫描时发现一个非常容易混淆的现象:某个工况下Nyquist曲线明明没绕过(-1,0),但时域波形却在几十赫兹处持续振荡。排查半天,原因是PLL带宽设得过高,而我的阻抗模型中没有包含PLL的负导纳项。后来把PLL效应加入解析模型后,Nyquist曲线就和时域现象对应上了。这说明阻抗模型绝不能只考虑电流环和LCL滤波器,PLL的负电阻特性是弱电网振荡的主要来源之一。
实际操作中,做稳定性分析之前先确认PLL建模是否完整,可以交叉验证:用谐波注入扫频得到Z_vsc实测曲线,分别对比“有PLL模型”和“无PLL模型”的理论曲线,看哪个在中低频段更接近实测。如果实测阻抗在次同步频段出现了负实部,几乎可以断定PLL贡献主导。
PLL带宽的设计原则我通常遵循:PLL带宽低于电流环带宽的1/10,弱电网下建议PLL带宽不超过10Hz。虽然这会让动态响应稍微变慢,但对于并网稳定性,这个取舍非常划算。
5.2 阻抗扫描结果的负电阻现象解释
第一次扫出负电阻时我一度认为是脚本算错了。后来理解到这是正常现象:在正方向定义下,如果VSC在某个频段的等效阻抗实部小于零,意味着在该频段VSC不是吸收能量而是向系统注入能量。反过来,电网阻抗是有源一端口模型中的正电阻,两个电阻串联,总电阻为负时,该频段的谐振回路阻尼为负,振荡就会增长。
因此在报告里呈现阻抗幅相特性时,我建议直接把实部为负的频段高亮标出,标明“负阻尼频段”,再把Nyquist图中对应的轨迹段和现场波形对应的FFT边带对照起来。这样做的好处是,即使不深究传递函数细节的读者也能直观理解:负电阻频段和振荡频率基本是一一对应的。
5.3 仿真不收敛与FFT频谱泄漏的处理
阻抗扫描中最让人烦躁的问题是仿真不收敛,尤其是插入扰动源后,某些频点会出现数值振荡。我的经验是:给受控电压源串联一个很小的阻尼电阻(0.01Ω量级)能抑制大部分数值不稳定;另外把求解器设为变步长ode23tb,相对容差设成1e-4,比默认的1e-3稳定很多。
FFT频谱泄漏主要影响阻抗测量的精度,特别是扰动频率接近基波或工频整数倍谐波时。解决方法是确保采样时长是扰动周期的整数倍,并且采样步长能被扰动频率整除。如果做不到整周期采样,就用汉宁窗,并把FFT点数设为2的幂次,加窗后取主瓣峰值。测量数据多平均几次能显著压低噪声,我用同一个频点反复扫三次取平均值,误差基本控制在2%以内。
5.4 如何从时域波形快速判断谐振频率
仿真波形出现振荡后,直接用肉眼看包络频率并不精确,我通常用两个手段快速定位。第一是对并网电流做在线FFT,找基波之外的显著分量。次同步振荡的特征是基波两侧出现对称边带,比如基波50Hz,振荡频率为fs,那么FFT谱线中会出现50±fs两条边带,fs通常处于10~50Hz之间。第二是取电流包络信号做Hilbert变换,再对包络做FFT,包络的振荡频率就是谐振频率,这种方法在边带不太清晰时特别好用。
确认谐振频率后,回到Nyquist图上查看该频点的稳定裕度,如果恰好落在相位裕度不足的区域,整个分析闭环就完成了。这个“时域异常→FFT定位→Nyquist解释→参数修正→时域验证”的流程,是我推荐给所有做类似研究的工程师的标准操作路径。
最后再分享一个我个人的实操体会:阻抗建模分析工具本身不难,难点在于不要让仿真结果骗了你。我见过很多项目只跑时域波形,振荡了就去调PI参数,调来调去治标不治本。正确做法是先把Z_vsc和Z_g的频域数据测准,用Nyquist判据定位失稳频段和主导参数,再有针对性地调整PLL带宽、电流环响应或加入额外的阻尼控制。这套“阻抗建模+Nyquist验证+Simulink仿真闭环”的方法,一次吃透之后,再遇到弱电网振荡问题就不会慌了。