干并网变流器的朋友应该都有这种直觉:同一个柜子、同一套控制代码,在工厂强电网测试时一切正常,拉到现场接到长距离架空线路后面,直流母线电压开始无缘无故地波动,电流波形隐约出现十几赫兹的包络振荡,严重时直接报过流跳闸。这种“换个电网环境就失控”的现象,往往不是硬件老化,而是跟网型逆变器在小扰动下的稳定性出了问题。
这篇文章围绕“跟网型逆变器小干扰稳定性分析与控制策略优化研究(Simulink仿真实现)”这个课题,把我从失稳机理理解、分析路线选型、Simulink模型搭建到参数整定和策略优化的完整思路写下来。适合正在做并网逆变器稳定性课题的研究生、刚入行新能源变流器研发的工程师,以及想弄明白“为什么弱电网下PLL会引发振荡”的人参考。整个分析链路,我都会用可落地的Simulink实现方式来讲。
1. 跟网型逆变器失稳:从“锁不住相位”到“振荡发散”的物理画像
1.1 跟网型的定位和典型控制架构
先把这个概念说清楚。所谓“跟网型”(Grid-Following,GFL),核心含义是逆变器本身不建立电压和频率,它通过锁相环(PLL)去检测电网电压的相位,然后把自己的输出电流相位“贴”到电网相位上。典型控制结构从上到下分三层:最外层是功率控制或直流电压控制,生成 dq 轴电流指令;中间是电流内环,通常用 dq 轴 PI 调节器生成调制波;最底层是调制和驱动环节,把调制波变成 PWM 脉冲。
这里有个关键点:跟网型逆变器所有控制都建立在“PLL 提供的角度”之上。PLL 给出一个旋转坐标系,电流内环在这个坐标系里把有功电流、无功电流分别控制成给定值。换句话说,逆变器没有自己的“惯性”,电网是什么相位,它就跟着转什么相位。这种架构在强电网下非常高效,因为 PCC 电压基本由电网决定,PLL 输出角度稳定、抗扰性好。但电网一弱,问题就来了。
1.2 弱电网下小扰动失稳的机理解读
弱电网最直接的表现是线路阻抗变大,我用短路比 SCR 来量化。SCR = 电网短路容量 / 逆变器额定容量,一般低于 5 就算比较弱了,低于 2 属于极弱电网。换成电路语言,就是 PCC 点到理想电压源之间串联了一个比较大的感抗 Lg。
在这个条件下,扰动会发生这样的链条反应:假设 PCC 电压相位出现一个小偏移 → PLL 为了追踪这个偏移会调整输出角频率 → 这个角度变化直接改变 dq 旋转坐标系的朝向 → 电流内环在这个被“带偏”的坐标系下看,有功电流和无功电流会出现交叉耦合 → 输出有功功率和 PCC 电压相位进一步受影响 → 又反馈给 PLL。在强电网下,这条反馈链路的增益很低,扰动会衰减;弱电网下电网感抗很大,有功功率变化对 PCC 电压相位的影响被放大,反馈增益超过某个临界值,原来的阻尼就变成负阻尼,振荡开始发散。
我给一个生活化类比:跟网型逆变器就像夜路骑行的人,眼睛盯着前车的尾灯保持方向。强电网时前车尾灯很亮很稳,你跟着走没问题;弱电网时前车尾灯的光会被你的车灯反射干扰,你看到的方向里掺了自己制造的影响,越修正越偏,最后摔进沟里。这就是弱电网下跟网型逆变器小干扰失稳的本质——不是硬件变差了,是控制环和电网阻抗形成了正反馈。
2. 分析路线选型:为什么把特征值法作为主线、阻抗法作为验证
2.1 状态空间特征值法:状态变量选取与小信号模型推导
研究小干扰稳定性,最正统的方法是建立系统在平衡点附近的线性化状态空间模型,然后计算状态矩阵的特征值。只要所有特征值实部都为负,系统在小扰动下就是渐近稳定的;一旦某一对共轭复根实部穿越零点,就对应某个频率的振荡从衰减变成了等幅甚至发散。
跟网型逆变器的小信号模型,状态变量一般这样选:PLL 的积分状态和角度偏差、电流内环 PI 控制器两个积分状态、L 或 LCL 滤波器的电感电流和电容电压、外环 PI 控制器的积分状态。在这个基础上,对每个状态变量求偏导,得到线性化矩阵 A。手动推导这个 A 矩阵工作量很大,也容易出错,我在实际课题里通常先在 Simulink 中搭平均值模型,再用线性化工具提取系统矩阵,同时用解析推导做交叉验证,两边对得上才继续往下走。
在 MATLAB 里求特征值非常直接:
% 由解析推导或 Simulink 线性化得到状态矩阵 A sys_linear = ss(A, B, C, D); eigenvalues = eig(sys_linear.a); % 特征根 [wn, zeta] = damp(sys_linear.a); % 自然频率与阻尼比特征值法的好处是物理意义非常清楚:每一对特征根对应一个振荡模态,能直接看出这个模态的频率、阻尼比,以及它主要受哪些参数支配。后面做 PLL 带宽扫描、电网阻抗扫描时,盯着主导特征根轨迹走就行了。
2.2 阻抗法:从输出阻抗相位裕度看失稳边界
阻抗法是另一条成熟路线,思路是把逆变器看成一个从 PCC 向逆变器侧“看进去”的阻抗 Zout(s),把电网看成理想电压源串联电网阻抗 Zg(s),稳定性就看两个阻抗的交互。跟网型逆变器在 PLL 带宽附近往往表现出负电阻特性,负电阻和电网感抗串联,构成的 RLC 回路等效阻尼可能是负的,这个回路的特征根实部一旦变正就是失稳。
阻抗法做起来比全状态空间模型轻量,特别适合快速扫描参数趋势。在 Simulink 里可以用小信号扫频方法直接测阻抗:在 PCC 处注入不同频率的小扰动电压,测量同频率的电流响应,用“电压扰动 / 电流响应”就是频域阻抗。这个结果可以直接和解析推导的 Zout(s) 做对比,也方便画 Bode 图看相位裕度。
特征值法和阻抗法不是二选一的关系。我自己的习惯是:用解析状态空间模型做主导模态定位和参数灵敏度分析,用阻抗法画稳定裕度曲线验证趋势,最后全部回到 Simulink 时域仿真中用非线性模型做最终确认。三种手段的结果要能互相解释。
| 分析方法 | 优势 | 局限 | 适合场景 |
|---|---|---|---|
| 状态空间特征值法 | 模态归属清晰、能做参与因子和灵敏度分析 | 建模工作量较大、模型阶数高时参数化繁琐 | 定位失稳根源、参数协同整定 |
| 阻抗法 | 模型直观、易与测量结果对比、便于扫频获取 | MIMO 情形需要广义 Nyquist 判断,物理意义不如特征值直观 | 快速评估失稳边界、验证优化效果 |
| Simulink 非线性时域仿真 | 能反映真实限幅、延时和非线性因素 | 仅靠波形难判断稳定裕度、不能直接给出根轨迹 | 最终验证和实验匹配 |
2.3 Simulink 线性化能不能直接用
很多刚接触这个课题的同学会直接搭一个 IGBT 开关级模型,然后想说“直接在 Simulink 里线性化”。这里要泼一盆冷水:开关级模型含 PWM 调制和开关器件高频通断,不能直接做小信号线性化,即使强行操作,线性化工具也只会在一个开关周期内做平均,结果往往和实际不符。
正确的做法是先搭平均值模型:三相桥用一个受控电压源代替,控制器的输出 dq 电压指令经过反 Park 变换后直接控制受控电压源的三相电压。平均值模型保留了 PLL、电流内环、功率外环所有低频动态,完全满足小干扰稳定性分析需求。对于 LCL 滤波器,平均模型也可以保留全部滤波状态,所以谐振峰附近的动态也跑不掉。
我自己在课题里通常建两套模型:一套是包含 PWM 的详细开关模型,用来跑大扰动、保护动作、限幅生效等工况,验证控制策略在真实工况下的表现;另一套是平均值模型,专门做小扰动稳定性分析、线性化提取和参数扫描。两套模型共享同一套控制结构和参数,用 MATLAB 脚本批量修改参数、批量运行。
3. Simulink中搭出可用于稳定性分析的跟网型逆变器模型
3.1 主电路与弱电网阻抗的参数设计
参数设计必须一开始就定清楚,否则后面所有结果都没法比较。我以一套常用参数为例:三相 380V / 50Hz,逆变器额定功率 20kW,直流侧电压 700V,L 型滤波电感 2mH、等效电阻 0.1Ω。如果要研究 LCL 型,可以设 L1=1mH,Cf=10uF,L2=0.5mH;LCL 会引入谐振峰,这部分动态也要进入状态空间模型。
电网侧用理想三相电压源串联可调阻抗来建模。电网阻抗以感抗为主,但建议保留一个较小的电阻分量,否则阻尼偏小,仿真结果会偏保守。电网阻抗和 SCR 的关系可以这样换算:对于线电压 380V、功率 20kW 的系统,如果电网阻抗模值是 Zg,那么 SCR ≈ (380² / 20000) / Zg = 7.22 / Zg。想要 SCR=5,Zg 大概取 1.44Ω;想要 SCR=2,Zg 大概取 3.6Ω,对应感抗 3.6Ω,换算到 Lg ≈ 11.5mH。这是一个非常大的电感,比逆变器侧滤波电感 2mH 大好几倍,此时弱电网对稳定性的影响相当明显。
在 Simulink 中,电网阻抗用“Three-Phase Series RLC Branch”串联在理想电压源和 PCC 之间即可,Rg、Lg 都做成可调变量,方便用脚本循环扫描。
3.2 PLL、电流内环、功率外环的模块化搭建要点
控制部分的建议是尽量模块化,因为后面要反复修改参数。PLL 模块在 Simulink 里可以直接用专门的“PLL (3ph)”模块,也可以用 Continuous 方式自建一个同步旋转坐标系锁相环,核心是 q 轴电压通过 PI 调节器锁定到零。自建的好处是你能清楚看到 PLL 的状态变量,方便后续线性化和状态矩阵提取。
PLL 参数按典型二阶系统设计:锁相环闭环自然频率 wn_pll 取 2π×15 ≈ 94.2 rad/s,阻尼比取 0.707,那么 Ki_pll = wn_pll²,Kp_pll = 2×zeta×wn_pll。注意不同文献的 PLL 模型归一化方式不同,参数数值可能差异很大,重点看闭环带宽而不是单个 kp、ki 的绝对值。
电流内环也按带宽设计:取电流环带宽 400Hz,即 2π×400 ≈ 2513 rad/s。对于 L 型滤波器,可以近似取 Kp_i = L×ωc = 2mH×2513 ≈ 5.03,Ki_i = R×ωc = 0.1×2513 ≈ 251.3。Simulink 中电流内环要加 dq 解耦项和 PCC 电压前馈项,否则 dq 轴之间会互相干扰,特征值和实际系统对不上。
3.3 小扰动注入实验:时域波形与频谱判据
模型搭好后,验证稳定性的最基本手段就是小扰动注入。在电流内环的有功电流指令 i_d_ref 上叠加一个小幅值阶跃或持续几个周期的正弦扰动,幅值取额定电流的 2%~5%,比如额定电流约 30A 时给 1A。观察输出电流和 PCC 电压在扰动撤销后是衰减收敛、等幅振荡还是发散。
光看时域波形还不够,最好配合 FFT 频谱分析。弱电网失稳通常表现为一个窄带振荡,频率落在 PLL 带宽附近,可能是 10Hz 到 30Hz 之间。对 PCC 电压或输出电流波形做 FFT,如果扰动撤销后频谱里仍然持续存在一个清晰的窄带峰值,且峰值幅值不衰减,那就是失稳或临界稳定的强信号。这个流程一句话总结:时域看包络、频域看峰值、特征值看实部,三者对上了,结论才可靠。
4. 参数灵敏度量化:PLL带宽、电流环与电网阻抗的拉锯战
4.1 PLL带宽对主导特征根的影响
PLL 带宽是跟网型逆变器稳定性最敏感的参数。把 PLL 闭环带宽从 15Hz 逐步提高到 30Hz、45Hz,在强电网下可能感觉不到什么差异,但在 SCR=2 的弱电网下,主导特征根会迅速向虚轴移动,甚至直接穿越到右半平面。
原因是 PLL 带宽越高,它对 PCC 电压相位变化的响应越快,但这意味着弱电网电压降落引起的相位变化能更快地通过 PLL 进入控制环路。这条通路的增益和电网阻抗成正比,电网越弱,高带宽 PLL 的副作用越大。在我的仿真里,SCR=2 时 PLL 带宽超过 25Hz 左右,主导模态阻尼比就开始接近零,再往上就是失稳。
这给工程整定一个关键启发:跟网型逆变器不能盲目追求“PLL 响应快”。强电网下快意味着动态好,弱电网下快意味着容易振荡。如果现场电网阻抗可能变化,PLL 带宽需要留足裕度。
4.2 电流环参数与输出阻抗曲线的耦合
电流内环带宽对稳定性也有显著影响。把电流环带宽从 400Hz 提高到 1000Hz,输出阻抗在中频段的幅相特性会改变,特别是在几赫兹到几百赫兹这个跟 PLL 模态重合的频段。如果电流环 PI 参数整得太激进,电流环自身的闭环响应出现明显超调,相当于在输出阻抗曲线上多出一个凸起,这个凸起如果和电网感抗曲线发生不利的交点,就会制造新的负阻尼区间。
反过来,电流环带宽偏低会削弱逆变器的动态跟随能力,外环扰动时电流指令跟踪变慢,也会间接改变整个闭环系统的阻尼特性。我建议以“电流环带宽:PLL 带宽 ≈ 20~40 倍”作为初始配置,然后在这个基础上做特征值扫描,不要直接甩一个随机参数就开始仿真。
4.3 SCR下降时主导模态的迁移规律
把电网阻抗从 SCR=10 开始逐步调到 SCR=2,观察主导特征根轨迹,会看到一个很典型的迁移过程:在 SCR=10 时,主导模态通常是电流环相关的模态,阻尼高、振荡频率在几百赫兹量级;随着 Lg 增大,PLL 相关模态的频率逐渐下降,向 10~30Hz 方向移动,阻尼比逐步下降并成为新的主导模态;SCR 降到 2 左右时,这个模态实部逼近甚至超过零。
我习惯把这种迁移做成一张表格,每次扫描记录主导模态频率和阻尼比。下面是基于我仿真参数的示意结果,具体数值会因滤波器参数和控制参数不同而偏移,但趋势是稳定的。
| SCR | 主导模态振荡频率 (Hz) | 主导模态阻尼比 | 稳定性状态 |
|---|---|---|---|
| 10 | 85 | 0.42 | 稳定,裕度充足 |
| 5 | 46 | 0.31 | 稳定,裕度下降 |
| 3 | 24 | 0.12 | 临界,接近弱阻尼 |
| 2 | 16 | -0.04 | 失稳,包络发散 |
看到这个趋势后,优化目标就很明确了:想办法在 SCR=2、3 的条件下把主导模态阻尼比抬高,同时尽量不牺牲 SCR=10 时的动态性能。
5. 控制策略优化:重塑阻抗、补偿相位与参数协同整定
5.1 虚拟电阻和虚拟电感:最直接的重塑手段
跟网型逆变器失稳的根源是输出阻抗在特定频段呈现负电阻特性,那最直接的办法就是人为改变输出阻抗形状。虚拟电阻法在电流环指令或调制波中叠加与输出电流成比例的分量,等效于在输出回路串入一个电阻。这个电阻能把负阻尼拉正,实现非常简单:在 dq 轴调制波上分别减去 R_v × i_d 和 R_v × i_q 即可。
虚拟电阻取值从电网阻抗的 0.3 倍开始试,观察主导特征根变化。R_v 增大,阻尼会明显改善,但代价是等效输出电压被“吃掉”一块,负载能力下降,重载时可能达不到额定电压。所以 R_v 不是越大越好,以刚好恢复正阻尼并留 5~10 度相位裕度为目标。
虚拟电感类似,在调制波中加入与电流微分成比例的项,能在频域削掉某个特定频段的阻抗凸起。但虚拟电感在数字控制中涉及微分项,对噪声敏感,离散化后容易引入高频抖动,实际工程里要加低通滤波或观察器处理。
5.2 电网电压前馈与相位补偿:在Simulink里的实现
电网电压前馈是改善抗扰性的常用手段:把 PCC 电压检测值经过低通滤波后直接叠加到调制波上,用来抵消电网电压扰动对输出电流的影响。前馈通道越完整,逆变器对外表现为“电压源跟随”,但弱电网下 PCC 电压本身受电流影响大,前馈增益太大会把噪声和畸变也引进来,反而激发高次谐波。所以前馈通道一定要串一个低通滤波器,截止频率一般取电流环带宽的两倍以上。
相位补偿则更精细一些。PLL、电流环、滤波器都会在特定频段引入相位滞后,如果在调制波中对某个关键频率做超前校正,可以抬高相位裕度。Simulink 里实现相位补偿,可以用 Continuous 传递函数模块,也可以在电流内环误差信号后面串一个超前-滞后环节。做完补偿后,我会回到阻抗法画一次 Bode 图,看 PLL 频段附近的相位曲线是否整体上移。
5.3 基于灵敏度指标的参数协同整定流程
单打独斗的参数优化不够系统,我在课题里跑了一套参数协同整定流程:先定义目标函数,比如在 SCR=2、3、5 条件下所有主导特征根阻尼比不小于 0.1,同时最大特征根实部留 20% 以上裕度;设计变量取 PLL 带宽、PLL 阻尼比、电流环带宽、虚拟电阻、虚拟电感。然后先用解析小信号模型做批量网格扫描或粒子群优化,得到候选参数,再放回 Simulink 平均值模型做线性化校验,最后挑一组鲁棒性最好的参数做时域验证。
这个流程的核心优势是把“控制参数整定”问题转化成了“特征值约束优化”问题,不会出现调了这个参数丢了那个模态的情况。粒子群优化在 MATLAB 中可以直接调 Global Optimization Toolbox,目标函数里每次调用小信号状态矩阵计算特征值,几分钟就能跑完一轮。
| 优化措施 | 实现位置 | 主要效果 | 副作用 / 注意点 |
|---|---|---|---|
| 降低 PLL 带宽 | PLL 调节器参数 | 减弱弱电网正反馈增益 | 动态响应变慢,需和启动需求平衡 |
| 虚拟电阻 | 调制波叠加电流比例项 | 消除负阻尼区间 | 等效压降增加,重载能力下降 |
| 电网电压前馈 + 低通 | 调制波前馈通道 | 提高抗扰性 | 前馈过强会引入高频噪声 |
| 相位超前补偿 | 电流内环或调制波环节 | 抬高相位裕度 | 高频段易放大噪声,需配合滤波 |
6. 实践中容易翻车的地方:假失稳、线性化误差与模型陷阱
6.1 三个容易误判为失稳的实际案例
第一个案例是启动瞬间的“假振荡”。PLL 初始相位和三相电压实际相位不一致时,启动瞬间冲击电流很大,dq 轴电流波形会出现一个非常大的衰减振荡,初学者容易把它当成失稳。解决方法是设置 PLL 初始相位为 0 时同步匹配三相电网电压初始相角,或者在仿真启动阶段先开环预同步,等 PLL 锁定后再切入闭环。
第二个案例是数值步长导致的“假发散”。开关级模型在仿真步长过大时,PWM 高频分量混叠到低频,波形上看就像低频振荡发散。把步长从 1e-5 改成 1e-6 后波形立刻干净了,和平均值模型结果也能对上。遇到可疑振荡,先检查步长和求解器,别急着改控制参数。
第三个案例是 dq 变换参考轴约定不一致导致的“特征值和波形对不上”。Simulink 中 Park 变换有很多种约定,有的用 sin 型、有的用 cos 型,有的 q 轴超前 d 轴 90 度,有的滞后。控制环里的 Park、反 Park、PLL 输出角度必须遵循同一套约定。我在排错时最常用的检查手段是:给模型加一个已知幅值和相位的三相正序电压,看 dq 轴的输出是不是符合预期,这一步 10 分钟就能定位约定错误。
6.2 线性化模型与开关级仿真结果为什么会差
线性化模型忽略了三类因素:PWM 开关纹波、控制延时、限幅非线性。其中最容易被忽略的是数字控制延时。实际控制器从采样、计算到 PWM 更新至少有一拍到两拍延时,这个延时在几十赫兹到几百赫兹频段会带来明显的相位滞后。如果线性化模型里不加入等效延时环节,得到的稳定边界会比实际系统乐观,也就是算出来稳定,时域开关模型已经振荡了。
我在状态空间模型中一般用 e^{-1.5Ts·s} 做控制延时的近似,Ts 是控制周期,典型值 100us。在 Simulink 平均值模型里,可以用 Transport Delay 模块模拟这个延时。这样线性化结果和开关模型的一致性会好很多。限幅非线性在小扰动分析里可以忽略,但大扰动验证时一定要保留,因为电流限幅会让系统工作点大幅偏移,线性化模型完全覆盖不了这个现象。
6.3 仿真实验设计的几条建议
参数扫描建议至少覆盖 SCR=10、5、3、2 四档,每档都记录主导特征根、阻尼比和时域扰动测试结果。保存波形时,既要保存 d 轴电流、q 轴电流、PCC 电压幅值,也要保存 PLL 输出角频率,因为失稳早期往往先在 PLL 频率上出现振荡迹象。
还要注意工作点漂移问题。电网阻抗变化不仅改变动态特性,也改变了静态工作点:功率角、PCC 电压幅值都变了。线性化必须在新工作点附近做,不能拿 SCR=10 的工作点线性化结果去判断 SCR=2 的稳定性。Simulink 线性化工具支持先对模型做 trim 找到平衡点,再做线性化,这个流程一定要走完整。
我个人的一个小经验是,把参数扫描、波形提取、特征值计算全部封装成 MATLAB 脚本,用结构体统一管理参数,跑 10 组参数用不了一分钟。这样你可以大胆地试各种 PLL 带宽、虚拟阻抗组合,不会因为手动改参数改到怀疑人生。课题做到后期,这套脚本就是最值钱的资产。