做并网逆变器的人,多半都吃过“弱电网”的亏。单机仿真跑得漂漂亮亮,并入实际电网后电流突然开始抖,FFT里莫名其妙多出几十赫兹的分量,甚至触发过流保护。这类现象十有八九指向同一个根源:弱电网下LCL-VSC阻抗失配导致的次同步与超同步谐振。我这次把整个研究链路完整跑了一遍——从阻抗建模到Nyquist判据验证,再到Simulink仿真闭环复现,把过程整理成文。内容包括阻抗矩阵怎么提取、扫频仿真怎么设计、以及为什么Nyquist判据能把稳定性问题变成一条曲线的事。项目本身不复杂,但细节坑不少,这一篇记录能让你少走很多弯路。
1. 弱电网下的稳定性问题:为什么阻抗建模是最优选
1.1 弱电网“弱”在哪:短路比SCR与电网阻抗
弱电网的“弱”不是玄学,它的标准量化指标叫短路比SCR,定义是并网点短路容量与变换器额定容量的比值。SCR越大,电网越“硬”,理想情况下SCR无穷大时电网阻抗为零;SCR越小,电网阻抗越不可忽略,10以下就要开始当回事,低于3基本属于严重弱电网。以一套10kVA、380V的样机为例,基准阻抗Zbase=380²/10k≈14.4Ω,如果SCR等于3,电网阻抗折算过来就是Zbase/SCR≈4.8Ω,在50Hz下对应大约15mH的电感。这个数量级的电网电感,已经可以和LCL滤波器的网侧电感相提并论了。
电网阻抗一上来,最直接的变化是PCC电压不再刚硬。逆变器输出电流在电网阻抗上产生压降,导致PCC电压随工况偏移,控制器采到的电压相位和幅值都在“漂”。这会动摇整个控制系统的稳定基础:锁相环PLL本来靠PCC电压锁定同步坐标,现在PCC电压自身被电流调制,等于把电流环的输出又反馈回了PLL的输入端,形成闭合的交互回路。强电网下这个回路增益很小,可以忽略;弱电网下它可能增益超过1,系统就在某个频段产生负阻尼。
这也是为什么传统基于“电压源+理想电网”设计的控制器,移植到弱网环境后容易失稳。思路转换的拐点在于:把“电网”和“变换器”都看成频域阻抗,用阻抗比判断稳定性。阻抗建模的优势就是能把一个多输入多输出、包含控制环路和解耦网络的复杂系统,最终压缩成一条最容易判断的曲线。后文所有工作都建立在这个视角上。
1.2 次/超同步谐振的物理本质:负电阻与频率耦合
次同步谐振指频率低于工频的振荡分量,比如20Hz、35Hz;超同步谐振则对应频率高于工频、但通常还在100Hz附近的镜像分量。两者经常成对出现,这是三相平衡系统频率耦合的必然结果。扰动在正序域产生一个次同步频率分量,系统控制不对称性会“反射”出一个超同步镜像分量,反之亦然,所以研究时不能只看单边。
机理层面的核心是“负电阻”。VSC在dq同步坐标系下的等效阻抗,在PLL带宽附近的频段可能出现实部为负的区域。负电阻意味着能量不是被消耗,而是被注入振荡回路。LCL滤波器加上电网电感,本身构成一个多谐振点网络,一旦回路总电阻在某频段为负,该频率上微小扰动就会持续增长,最终形成振荡。可以粗浅类比成:带正反馈的音量旋钮遇到扬声器啸叫,阻尼不够就停不下来。
阻抗建模的价值正在于量化这个“负阻区域”。通过扫频得到VSC在不同频率下的复数阻抗,再看哪一段实部为负、幅值相位如何变化,就能预测系统在什么电网阻抗下、什么频率点最容易起振。Nyquist判据负责把这段阻抗曲线与电网阻抗放在同一判据框架下,回答“到底稳不稳”和“临界点在哪”两个关键问题。
2. LCL-VSC阻抗建模:扫频法在Simulink中的落地思路
2.1 两种建模路线:解析推导 vs 仿真扫频
阻抗建模有两条主流路线。第一条是解析推导:对VSC的控制系统建模,包括PLL动态、电流环PI、数字延时、采样保持,然后通过谐波线性化或dq域小信号模型推导出阻抗解析表达式。优点是可以获得完整的传递函数,直接做理论分析和参数设计;缺点也同样明显——推导过程长、符号量大,稍不留意符号方向就错,而且公式是基于大量理想化假设的,很难包含开关纹波、PWM死区、饱和限幅等实际细节。解析模型做出来之后,通常还需要仿真做交叉验证,不能直接当作结论。
第二条路线是仿真扫频,也是这次项目采用的方法。思路很简单:在稳定的工作点向系统注入一个已知频率和幅值的小扰动,测量系统在该频率产生的电压、电流响应,用复数比值求出该频点的阻抗。逐个频点扫过去,就得到一段频率范围内的阻抗曲线或阻抗矩阵。这个方法的特点是“所见即所得”:扰动经过的是实际控制系统通路,数字延时、PWM更新的离散性、电流环采样都真实参与计算,不需要额外建模。代价是需要跑大量频点仿真,以及后续的数据后处理。
两种路线在实际项目中经常互补。解析推导给出理论解释和趋势预判,扫频仿真给出最终校验结果。我这次选择“平均模型扫频提取阻抗 + 全开关模型时域验证”的组合,兼顾速度和真实性。另一个很容易踩的坑是:不要直接拿Simulink Control Design里的线性化工具箱frestimate对全开关模型做频率响应估计。开关模型是强非线性系统,线性化工具线性化出来的结果会混入大量开关纹波带来的伪响应,噪声远大于信号。扫频法用明确的扰动注入和FFT提取,信噪比可控得多。
2.2 扰动注入方案与2×2阻抗矩阵提取
扫频法的第一个关键设计是扰动注入位置。常用方案有三种:调制波叠加、PCC并联注入源、串联注入源。我实测下来最稳定的是调制波叠加——在控制器输出的三相调制波上直接加一组小幅值谐波分量。这样扰动等效作用在变流器桥臂电压参考上,物理意义清晰,且在平均模型里实现起来非常简单,只需要把正弦扰动信号加到调制波信号上即可。如果扰动加在PCC并联电压源上,变压器模型复杂,还容易引起PLL剧烈耦合,不利于提取VSC自身阻抗。
扰动注入的另一个关键决策是幅值。幅值太小,FFT提取到的响应淹没在开关纹波和数值噪声里;幅值太大,系统响应偏离线性范围,阻抗结果失真。我一般取额定参考电压的1%~3%,在这个范围内做了线性度校验:扰动幅值翻倍,响应幅值应近似翻倍,如果明显不满足,说明幅值太大,需要降低。实际项目中这个校验值得花十几分钟做一次,能省掉后面大量无效数据。
由于VSC控制不对称,dq轴阻抗不是两个独立的标量,而是一个2×2矩阵。在dq同步坐标系下,电压小扰动和电流小扰动的关系是:
[d_vd] [Zdd Zdq] [d_id] [d_vq] = [Zqd Zqq] [d_iq]这意味着不能只做一次扰动注入。需要分别注入d轴扰动(对应正序扰动)和q轴扰动(对应负序扰动),分别记录两组响应,然后通过矩阵求逆得到完整阻抗矩阵。交叉项Zdq和Zqd非零,正是次/超同步频率耦合的频域体现。如果只测对角线阻抗,后半段Nyquist分析会漏掉最重要的耦合路径,稳定性判断结果不可靠。
扫频频率范围上,我选择1Hz到200Hz,覆盖工频两侧的次同步和超同步频段。步长方面,先用5Hz粗扫,找到阻抗曲线变化剧烈的区间后,再在敏感区间用1Hz加密。每个频点仿真都需要等系统进入稳态再采样,通常取0.5~1.5秒的仿真时长,视PLL带宽而定——PLL带宽越低,稳态建立越慢,采样窗口相应加长。
3. Simulink扫频仿真系统搭建与阻抗提取实操
3.1 主电路与控制器参数设计
仿真模型采用三相两电平VSC加LCL滤波器拓扑,电网用理想电压源串联可变电感Lg模拟弱电网强度。我给的参数是一套中等功率样机级别的值,方便复现也能说明问题:
| 参数 | 数值 | 说明 |
|---|---|---|
| 额定功率 | 10kVA | 用于计算Zbase=14.4Ω |
| 电网线电压 | 380V / 50Hz | 三相 |
| 直流母线电压 | 800V | VSC直流侧 |
| 逆变器侧电感L1 | 1.5mH | LCL靠近桥臂侧 |
| 网侧电感L2 | 1.5mH | LCL靠近电网侧 |
| 滤波电容Cf | 10μF | 三角形或星形,按接地方式选 |
| 无源阻尼电阻Rd | 2Ω | 串接在Cf支路,抑制谐振峰 |
| PWM开关频率 | 10kHz | 离散控制采样同频率 |
| 电网电感Lg | 0~20mH | 对应SCR从∞降到约0.9 |
电流环采用前馈解耦的PI控制,内环带宽设计在500Hz量级,参数通过典型二阶系统整定:电流环PI的Kp取L总乘以期望带宽,Ki取R乘以期望带宽。PLL采用常用SRF-PLL,环路带宽压到30Hz左右——弱电网下PLL带宽不能太高,否则负阻频段会明显拓宽。控制环节用离散化模块实现,占空比更新采用一拍延时加零阶保持,这部分会真实反映数字控制的延时效应。
搭建过程中有个很容易忽略的细节:平均模型里VSC桥臂用受控电压源代替,我设置成v_out=(Vdc/2)*m,其中m是三相调制波。这个模型忽略了开关频率纹波,但完整保留了控制器动态对阻抗频段的贡献。时域稳定性验证则回到全开关IGBT模型,用simscape电力电子模型跑最终结果。两种模型对应两种用途,千万别搞混。
3.2 脚本批处理扫频步骤
扫频不能手动一个个改参数跑,效率太低且容易操作失误。我用MATLAB脚本驱动sim命令批量执行仿真,每个频点一次仿真,循环完成后统一后处理。核心流程如下:
f_list = [1:1:200]; % 频点列表,敏感区间可加密 f_inj = 0.01; % 扰动幅值,按额定电压比例折算 results = struct('freq',[],'Zdq',zeros(2,2),...); for fp = f_list set_param('vsc_scan/Freq_inj', 'Value', num2str(fp)); set_param('vsc_scan/Inj_amp', 'Value', num2str(f_inj)); sim('vsc_scan.slx'); % 对三相电压电流做Park变换,并在dq域提取扰动频率|fp-f1|处的复数幅值 [vd1,vq1,id1,iq1] = extract_dq_response(logsout,'d-axis-inject'); [vd2,vq2,id2,iq2] = extract_dq_response(logsout,'q-axis-inject'); % 组成2x2阻抗矩阵 Z = [vd1 vd2; vq1 vq2] / [id1 id2; iq1 iq2]; results.freq(end+1) = fp; results.Zmat(:,:,end+1) = Z; end这段代码的核心逻辑是两次独立注入、四个复数响应、一次矩阵求逆。每次仿真结束后,我通过logsout把dq域电压电流变量导出,在workSpace里做FFT。有一点要注意:fft提取的目标频率不是注入频率本身,而是dq坐标变换后对应的差频绝对值。比如注入频率fp=30Hz,工频50Hz,dq域的扰动频率是20Hz,提取到的幅值再换算回abc域30Hz。这个换算关系如果不写清楚,后处理结果全部按错频率记录,曲线会乱得一塌糊涂。
提取复数幅值时,我使用Hann窗函数加FFT。扰动幅值对应的频谱峰值落在目标频点,但因为采样窗口有限,频谱泄漏会影响幅值精度。加窗后幅值要乘以窗函数能量的归一化系数,再用频点邻近两条谱线插值。工程上这么处理绝对精度可以到1%以内,足够后续Nyquist判断使用。
对于每个频点,我还额外检查了一件事:镜像频率处的FFT响应。比如注入45Hz正序扰动,看55Hz处有没有非零响应。这正是频率耦合的直接证据,也是交叉项Zdq提取的来源。如果只记录注入频率本身的结果,既丢了超同步镜像信息,阻抗矩阵也会变成错误的标量模型。
3.3 阻抗数据后处理与曲线判读
扫频数据全部拿到后,我通常先画VSC阻抗的Bode图,把Zdd和Zqq两个对角元素的幅频、相频曲线展开。观察重点有两个:一是幅频曲线形状是否和LCL谐振频率对应,二是有没有频段出现实部为负的特征。画出Zdd实部随频率变化的曲线后,“负阻区域”一目了然。
另一个后处理是频率耦合评估。对每个注入频点,把镜像频率处的响应幅值与注入频率处响应幅值求比值,这个比值表征耦合强度。当比值接近或超过1时,说明系统在该频段具有强耦合特性,次同步和超同步分量会同步增长,这也是失稳时为什么总能看到两个旁频同时冒出来的原因。
数据质量检查同样重要。我会用三把尺子筛掉坏点:一是各频率幅频曲线是否平滑,异常跳变说明该频点FFT窗口过短或稳态未建立;二是阻抗矩阵逆的条件数,条件数过大说明两次注入近似线性相关,该频点数据无效;三是幅值与解析模型粗算值做交叉对比,偏差超过30%就要回头找原因。这些检查在实际项目里决策优先级很高,宁可多花时间重跑几个频点,也不能拿坏数据去画Nyquist。
4. Nyquist判据验证与失稳边界预测
4.1 环路增益构造:为什么是T(s)=Zg(s)/Zvsc(s)
阻抗法判稳的最后一步,是把复杂系统化简成环路增益。对并网VSC,最常见的等效是把变换器看成电流源诺顿等效:一个受控电流源Ic并联VSC输出阻抗Zvsc。电网侧看成理想电压源串联电网阻抗Zg。在这个等效下,并网点输出电流的表达式是:
I_g(s) = ( Zvsc(s) / ( Zg(s) + Zvsc(s) ) ) * Ic(s) - ( 1 / ( Zg(s) + Zvsc(s) ) ) * Vg(s)分母里的Zg+Zvsc决定了闭环系统的特征根位置。如果把它改写成1+Zg/Zvsc的形式,就可以定义系统的开环增益T(s)=Zg(s)/Zvsc(s)。稳定性由T(s)的Nyquist曲线是否包围(-1, j0)决定。当T=-1时,恰好对应Zg=-Zvsc,即电网阻抗和VSC阻抗在该频率上幅值相等、相位差180°,系统呈现负阻尼边界,进入自激振荡状态。
这个构造的物理意义相当直观:电网阻抗代表“外部环境的刚性”,VSC阻抗代表“变换器自身的动态承载力”。两者幅值、相位交互的结果,直接告诉你在什么频率上电网会“推动”VSC进入振荡。由于扫频得到的是离散频点数据,没法直接调用nyquist(sys)函数,我采用的方法是:在所有频点上逐点计算T(j2πf),把复平面上的轨迹连成折线,直接看是否包围(-1, j0);同时用matlab的inpolygon函数做自动判断,结果直观且可复现。
这个方法还有个小优势:可以把“稳定裕度”做成可看的数据。对每个频点,计算T点与(-1, j0)的距离,距离越小意味着越接近失稳。距离最小时对应的频率,就是潜在振荡频率。这个数值后面用于和全开关模型的时域振荡频率做对照,验证建模精度。
4.2 用扫频数据画Nyquist与临界点确定
实际操作中,我按下述步骤确定临界电网阻抗:
第一步,固定VSC阻抗数据不变,设置一个Lg初值,逐频点计算T(fp)=Zg(fp)/Zvsc(fp)。注意Zg按纯感性处理,频率越高幅值越大,相位恒为+90°。第二步,绘制Nyquist轨迹并检查是否包围(-1, 0)。如果不包围,逐步增加Lg重复检查;一旦出现第一次包围,对应的Lg就是临界电网阻抗。第三步,找到T轨迹离(-1, j0)最近的那个频点,记录为预测谐振频率。
纯感性电网阻抗的好处是Zg行为非常简单,问题焦点全在VSC阻抗曲线上。如果Zvsc幅值曲线在某频段快速下降、相位曲线在该频段穿过-90°(注意极性方向),那么Zg与Zvsc的幅值交点附近趋向相位互补,极容易满足T=-1条件。
从我这次扫频数据得到的典型结果是:SCR降到3附近时,Nyquist轨迹距离临界点还有不少裕量;SCR降到1.5左右,轨迹开始贴近(-1, j0);SCR约等于1.1时(Lg约13~15mH的区间),轨迹第一次碰触临界点,此时预测谐振频率大约在24~30Hz之间。超过临界点后,轨迹以明显方式逆时针环绕(-1, j0)一周,稳定判据直接判定失稳。
为了表达得更工程化,我会把T曲线在每个频点的幅值和相位整理成一张极坐标表格。频率从低往高扫过时,在Zg幅值与Zvsc幅值相等处的相位差是关键:相位差越接近180°,系统越危险。这个“幅值交点+相位差”的二步判断法,比直接看整条Nyquist曲线更适合工程快速筛查。
4.3 电磁暂态时域仿真闭环验证
Nyquist曲线预测了“会失稳”,时域仿真要回答“是否真的失稳、振荡频率对不对”。我把全开关电磁暂态模型的电网电感设成略大于临界值,比如Lg=18mH(SCR约0.9),然后在PLL相位阶跃或电流参考阶跃上施加一个短时扰动,观察系统响应。
实测结果与预测高度接近:启动稳定后施加1%幅值扰动,PCC电流在0.5~0.8s内开始出现明显包络振荡,波形不再是平滑正弦,呈现周期性强弱交替。对电流做FFT后发现,除了50Hz基波外,26Hz附近出现0.15pu左右峰值,同时74Hz镜像频率上也出现与之一一对应的0.12pu峰值。这两个频率关于工频对称,典型的次同步与超同步成对谐振特征。
把时域FFT得到的振荡频率与Nyquist预测值对比,差距在2~3Hz以内。这个误差主要来自全开关模型中的开关纹波、死区损耗,以及欠阻尼振荡本身对工作点的微扰。对于稳定性研究来说,这个精度已经非常能说明问题:阻抗模型捕获了物理系统的核心动态,Nyquist判据的预测是可以直接指导参数设计的。
我还做了一组反向验证:把电网电感恢复到临界值以下,比如Lg=5mH,重复同样的扰动注入,电流振荡在数个周期内衰减收敛,FFT里没有可观的次/超同步分量。这组对照实验非常关键——它排除了“扰动本身导致谐振”的误解,确认了现象完全取决于阻抗交互。好工具要能双向证明:它不光预测失稳,也应能预测稳定。
5. 实操踩坑与调参心得
5.1 扫频仿真中最容易翻车的三个细节
第一个坑是扰动注入位置选择不当。如果扰动加在PCC并联注入源上,网侧阻抗会影响注入电流的分配,导致提取结果既不是纯VSC阻抗,也不等于整机输出阻抗,而是个混合体。后期判断时数据左右都说不通。建议坚持在调制波叠加或使用等效受控电压源串入桥臂输出侧,确保扰动源是VSC本身视角。
第二个坑是FFT窗口长度与分辨率不匹配。扰动频率如果和FFT频率分辨率不齐整,周期泄漏会导致幅值偏小、相位偏移。我踩过最明显的一次是相位误差直接让Nyquist曲线在关键频段整体旋转,造成误判。解决办法是先定采样率,确保仿真时长等于整数个扰动周期再用Hann窗,或用细化插值算法补偿。
第三个坑是扫频步长定得太粗。很多人为了省时间,从1Hz到200Hz步长选5Hz甚至10Hz,结果阻抗曲线在负阻频段出现大幅“锯齿”,看不出真实的谐振峰位置。我的经验是先用步长5Hz粗跑一遍,定位幅值拐点后一定再用1Hz加密重扫。多跑二十个频点花不了多少时间,但能避免整个分析结论被一个假峰带偏。
5.2 数字控制延时和采样在阻抗中的表现
数字控制延时虽然只有1~1.5个PWM周期,但对高频段稳定性的影响远比想象中大。它在频域里等效为一个负相位贡献,频率越高延时的相位惩罚越大。如果扫频带宽覆盖到1kHz以上,阻抗相频曲线会明显下坠,这个现象在解析模型中很容易被忽略,但扫频法会如实呈现。如果你的目标是LCL谐振频率附近的稳定性分析,必须把全开关模型和平均模型的结果都跑出来对比,确认延时通道建模正确。
另一个容易被忽略的是采样保持效应。控制环在每个PWM周期采样一次,ZOH在频域引入一个低频带通形状,放大某些频段、衰减另一些频段。实际工程中常看到电流环带宽附近出现额外相位滞后,就是这个效应叠加的结果。PWM开关频率10kHz时,次同步几十赫兹频段受采样影响很小,但LCL谐振点几kHz处影响显著。所以扫频数据我习惯分两段看:低频段看次/超同步谐振,高频段看PWM与LCL交互。
关于模型选择的经验是:阻抗提取阶段用平均模型加数字延时模块足够,且抗噪声能力强;但最终报告结论,尤其涉及控制参数、PWM死区这类真实工程因素时,一定要用全开关模型复验一次。两种模型对次同步频段给出的阻抗几乎一致,差异主要体现在高频段,这个现象本身就是对建模假设的交叉验证。
5.3 参数灵敏度:改变什么能让系统活下来
项目做完之后,我做了一组参数灵敏度分析,核心目的是看哪些参数对次/超同步谐振影响最大。首先是PLL带宽:从30Hz提高到50Hz,负阻区域明显加宽,临界电网阻抗从大约Lg=13mH降到8mH,系统更容易失稳。PLL带宽与弱电网适应性是直接矛盾,弱电网下建议PLL带宽不超过20~30Hz。
其次是LCL的阻尼电阻。Rd从2Ω提高到4Ω,次同步频段的阻尼明显增加,Nyquist轨迹与(-1, j0)的最小距离扩大了一倍以上。代价是阻尼电阻上有功耗,对10kW级样机来说热损耗可以接受,但对MW级大功率可能需要考虑零损耗的有源阻尼方案。工程上有个折中技巧:阻尼电阻不是直接消耗谐振能量的唯一途径,也可以尝试在电流控制中增加谐振频段的陷波器。
最后是电流环带宽。过高的电流环带宽看起来“响应快”,但在弱电网下会放大与PLL的耦合效应。把电流环带宽从800Hz降到500Hz,临界SCR值会降低大约20%左右,稳定性提升明显。我在实际项目中的调参顺序是:先压低PLL带宽,再微调电流环,最后用LCL阻尼电阻补足裕量。每次调参后都重新扫频、重画Nyquist,形成闭环迭代,这样最终参数是有依据地“走”出来的。
从整个项目下来,我的体会是阻抗建模加Nyquist判据这套方法论的价值不在于让人“算出一个稳定边界”,而在于给了工程师一个可以反复试验、可解释、可量化的判断框架。弱电网下VSC失稳不是单一环节的锅,是PLL、电流环、LCL滤波器、电网阻抗协同作用的结果。有了频域阻抗这个观察窗口,所有交互都变成曲线上的点与线,问题自然清晰起来。以后遇到类似振荡,我建议你也先别急着调参数,建好扫频模型、提取阻抗、画Nyquist,让数据替你说话。