弱电网下跟网型逆变器小干扰失稳的Simulink仿真与优化
做新能源并网的人多半会遇到这种怪事模型在强电网下跑得好好的换到弱电网后有功功率突然开始几赫兹到十几赫兹的来回抖电流波形也不干净拿去用理论分析又总差那么半口气。这篇内容我打算从跟网型逆变器的小干扰稳定性入手讲讲怎么用Simulink把小信号失稳这件事复现明白再结合控制策略优化把振荡压下去。文章里的模型搭建思路、参数选取和分析流程适合刚接触并网稳定性的学生也适合被Simulink仿真结果反复折磨的工程师。下面我按自己平时做研究的顺序来写先回答“为什么弱电网下会不稳”再对比两种常用分析工具然后是Simulink模型怎么搭最后用一个弱电网振荡案例串起整个排查和优化过程。1. 不想稳定裕度被吃掉先搞懂跟网型逆变器的小干扰本质1.1 跟网型控制的基本假设电网对我来说是无穷大母线先说概念。跟网型逆变器英文里叫grid-following控制默认电网已经存在自己只负责把电流按参考值送出去。它没有主动支撑电压幅值和频率的能力所以必须靠锁相环PLL去跟踪并网点电压的相位。整个控制系统就像一个跟随者电网给角度我跟着输出功率。正常强电网下这么做没问题因为并网点电压非常接近理想电压源PLL看到的相位基本由源决定逆变器输出电流怎么变化都改变不了电压控制回路之间没有坏耦合。但电网不是无穷大母线。线路阻抗、变压器漏抗、远端负荷都会让并网点电压受本机输出电流影响。越到电网末端短路比SCR越低这种耦合越强。一旦并网点电压随着电流变化PLL的相位又会跟着变相位反过来影响电流参考、实际注入电流最终又影响并网点电压。闭环形成之后负阻尼就有机会出现。小干扰稳定性分析研究的就是这个闭环在平衡点附近的收敛性。所谓“小干扰”不是指短路、甩负荷那种大暂态而是工作点附近的一个小偏差比如参考功率阶跃2%、电网电压幅值抖0.5%、PLL相位出现一个微小跳变。只要这个平衡点本身是局部稳定的这些扰动最终都会衰减如果不稳定扰动就会按指数规律增长直到限幅或保护动作变成持续振荡。1.2 弱电网下为什么会出现负阻尼振荡展开说负阻尼要提到两个对象PLL和电网阻抗。PLL输出的是同步相位θ_pll电网实际相位是θ_g。稳态时二者相等有扰动时偏差Δθθ_pll−θ_g。电流控制用的坐标变换基于θ_pll实际电网dq系和控制器dq系之间差一个Δθ于是输出功率里会出现sinΔθ的分量。小信号线性化后这个分量在并网点电压对电流灵敏度较高时就是一条附加反馈通路。问题在于PLL是一个有带宽的跟踪环。扰动频率低于PLL带宽时相位能被跟上反馈主要改变有功扰动频率高于PLL带宽时PLL来不及跟反馈会滞后甚至反相。再加上电网阻抗这种滞后环节在某个频段会出现“功率增量与角度偏差同相”的负阻尼。负阻尼意味着每次振荡不衰减反而越摆越大。这就是弱电网下跟网型逆变器失稳最常见的物理图像。从参数上看常见诱因有四个PLL带宽取得太高、PLL带宽和电流内环带宽太接近、电网阻抗过大、控制器阻尼比不足。四个因素经常叠加。更麻烦的是单纯降低PLL带宽能稳住系统却会让动态响应变慢所以后面必须做控制策略优化而不是一刀切。2. 状态空间特征值法和阻抗法两条分析路径的选择逻辑2.1 状态空间法把控制环路写成矩阵再看特征值状态空间法的思路很直接把主电路、PLL、电流环、功率环、滤波器、电网阻抗全写成一阶微分方程组然后在稳态工作点附近线性化得到Δx_dot A·Δx B·Δu其中状态向量Δx通常包括PLL积分器状态、电流环PI状态、滤波电感电流、电容电压、电网电感电流等。判断稳定性只需要看矩阵A的特征值所有特征值实部都小于0小干扰稳定只要有一对共轭特征值实部大于0系统就是小干扰不稳定的振荡频率由虚部决定。在Simulink里不需要每次都从手推模型拿A矩阵。可以用Simulink Control Design的线性化工具拿状态空间模型。我习惯的工作流程是先用Matlab手推一个简化模型做交叉验证再用findop和linearize命令从完整非线性模型取线性化模型。命令很简单% 在t2s的稳态工作点线性化io是之前定义好的线性化输入输出点 op findop(gfl_weak_grid, 2.0); sys linearize(gfl_weak_grid, op, io); % 查看特征值 [V, D] eig(sys.A);特征值法最大的优点是可以做参与因子分析。参与因子会告诉你某对振荡模态主要由哪个状态变量引起。比如算出7.8Hz振荡模态的参与因子发现PLL积分器状态贡献最大那问题基本就锁定在PLL上。这样优化时目标明确不容易乱试。2.2 阻抗法把逆变器看成黑盒比一比谁在外面谁在里面阻抗法的逻辑更工程化。把逆变器整体看成一个电流源并联输出阻抗Z_inv电网看成一个理想电压源串联电网阻抗Z_g。两个子系统分别稳定时它们互联后的稳定性取决于比值T(s)Z_g(s)/Z_inv(s)。如果T(s)的奈奎斯特曲线不绕过临界点则互联系统稳定如果绕过就会振荡。频域上也可以用伯德图看幅值交越频率处的相位裕度相位裕度不足就是弱阻尼。在Simulink中拿逆变器输出阻抗可以扫频。在逆变器输出端口注入一个小正弦电流或电压扰动提取同频率的电压电流响应就能得到这个频率点上的阻抗幅值和相位。逐个频率点扫过去就得到Z_inv(s)的伯德图。Simulink Control Design里有一个Frequency Response Estimator模块可以自动做这件事比手写扫频脚本省事很多。需要注意三相并网系统里阻抗并不是一个简单的标量在dq坐标系下有Z_dd、Z_dq、Z_qd、Z_qq四个元素严格来说需要2×2矩阵。工程上如果只关注某一类振荡模态可以先从单输入单输出扫频开始后面再做完整矩阵。2.3 两种方法怎么搭配使用状态空间法和阻抗法不是互斥的我在实际项目里通常顺序使用。先用状态空间法拿到特征值和参与因子确定振荡模态到底是谁引起的再用阻抗法看这个频段的阻抗比和相位裕度指导控制参数怎么改。状态空间法能告诉你“哪里有问题”阻抗法能告诉你“这个频段还差多少裕度”。如果只做仿真复现用特征值法就够了如果后面要到硬件上去测试阻抗法更有优势因为现场的逆变器本质上就是一个黑盒你没法把整套控制器的内部状态全部拿来做特征值。两种方法我也会互相验证。做完状态空间特征值分析后再用Frequency Response Estimator扫一遍阻抗伯德图如果计算出的失稳频段和特征值虚部基本一致就说明线性化模型没有建错。这一步看起来多花时间其实能省掉后面很多调参阶段的弯路。3. Simulink模型怎么搭从主电路到控制环路的完整套路3.1 主电路侧电网阻抗、桥臂和滤波器的处理我用Simscape Electrical的Specialized Power Systems库搭模型。核心模块包括三相电源、电网阻抗、IGBT桥或平均电压源、滤波器、三相电压电流测量。下面这个表是常用模块和设置要点对象Simulink模块设置要点三相电网Three-Phase Source线电压380V/50Hz内阻先按强电网设小电网阻抗Three-Phase Series RLC BranchR和L串在电源与并网点之间体现弱电网逆变桥Universal Bridge三臂IGBT/Diode稳定性研究可先用平均模型滤波电感Three-Phase Series RLC Branch常用3mH级别按额定功率和开关频率选测量Three-Phase V-I Measurement同时采并网点电压和逆变器输出电流控制Subsystem放PLL、坐标变换、PI、PWM等稳定性研究我强烈建议先做平均模型不要一上来就上10kHz PWM开关模型。所谓平均模型就是用受控电压源代替IGBT桥只保留电压参考到实际输出电压的平均关系。这样仿真速度快也不会被开关纹波干扰。等特征值分析和控制参数基本定下来再用开关模型做最终验证。不然每次仿真都要等很久调试一个振荡问题可能要跑几十遍太痛苦。电网阻抗一定要折算准确。工程上常用短路比SCR来定义电网强度SCR等于电网短路容量除以逆变器额定容量。三相系统里基准阻抗Z_baseU_n^2/S_n电网阻抗幅值约等于Z_base/SCR。以10kW/380V/50Hz系统为例Z_base≈14.44ΩSCR1.5时电网阻抗幅值约9.6Ω如果近似纯感性Lg约30mH。这个参数看起来很大但1.5的SCR在现实中确实存在尤其在偏远光伏电站。3.2 控制环路侧PLL、功率外环、电流内环的模块化实现控制环路的层次一般是PLL先给出同步相位功率外环根据有功、无功参考计算电流参考电流内环跟踪这个参考最后输出PWM。用Simulink搭的时候我会建一个Control子系统内部再分三层第一层是PLL。可以用Simscape的Three-Phase PLL模块也可以自己搭SRF-PLL。自己搭的好处是参数完全可控三相电压经abc/dq变换得到Vd和VqVq进入PI调节器输出角频率再积分得到相位。Vq在稳态时应该为0整个PLL就是让Vq归零的反馈环。PLL的PI参数会影响后续稳定性这是整个模型里最需要小心的地方。第二层是功率外环。有功参考Pref和无功参考Qref进来后结合并网点电压的dq分量计算电流参考I_d_refPref/V_dI_q_refQref/V_q或者按无功需要的公式算。这个环节可以做得简单也可以加入低通滤波但带宽必须很低避免和PLL、电流环打架。第三层是电流内环。dq轴电流分别用PI调节加解耦项和电网电压前馈输出是逆变器电压参考。如果后面要加虚拟阻抗优化也是在这一层做。最后把d/q电压参考反变换到abc送给PWM或平均电压源。这种分层结构的好处是每个环路的带宽可以单独整定小干扰稳定性分析时也能从中间引信号做扰动注入不用动主电路。3.3 仿真算法和扰动事件注入模型搭完后仿真参数设置不能偷懒。Specialized Power Systems里面必须有Powergui模块。稳定性分析的仿真模式我一般选Continuous求解器用ode23tb相对误差1e-3最大步长限制在1e-4或更小。如果用的是离散固定步长步长至少要比PWM周期小一个数量级否则开关纹波会在采样上混叠成低频噪声特别容易误判。扰动事件注入有很多种方式。最方便的是在Pref处加一个小阶跃比如仿真到1.5s后从10kW跳到10.2kW2%的扰动足够看出系统是否收敛。也可以在并网点电压源上叠加一个小幅值正弦扰动或者加一个三相接地故障模块做短时扰动。无论哪种方式都应保证扰动幅值属于小信号范畴否则结果会被非线性效应污染特征值就对应不上了。启动过程也要留意。上电瞬间电容充电、PLL锁相、电流爬坡都会产生大暂态。如果直接从0开始看波形很容易把启动暂态当成失稳振荡。我通常先让系统空载运行到0.5s再切入功率参考或者直接把仿真时间跑到3s以上在系统进入稳态后再注入扰动观测。4. 复现一次弱电网振荡从波形异常到根因确认的完整排查链路4.1 案例参数和工况为了把前面的方法串起来我以一个仿真实例说明。研究对象是一台10kW/380V/50Hz跟网型逆变器直流母线750V滤波电感3mH电网阻抗按弱电网设置。先做一个PLL带宽偏高的对照组。参数工况A弱网高PLL带宽工况B弱网低PLL带宽电网电阻Rg0.8Ω0.8Ω电网电感Lg28mH28mH等效SCR约1.5约1.5滤波电感L3mH3mHPLL等效带宽约25Hz约8HzPLL PI参数Kp0.7Ki80Kp0.23Ki8.2电流内环带宽约800Hz约800Hz这里PLL的PI参数是按带宽法初算的具体数值在仿真里做了微调。大家在自己模型里不要照抄因为电压幅值归一化方式、离散周期、滤波器结构都会影响最终PI值。关键是理解趋势PLL带宽高在弱电网下容易出问题。4.2 第一步先确认“真不稳定”再看振荡频率仿真流程是0~1.5s让系统稳定运行1.5s时把Pref从10kW阶跃到10.2kW然后继续观察2s。工况A下第一个明显现象是有功功率在阶跃后没有收敛而是出现约7.8Hz的持续振荡幅值在几个周期里越涨越大。PCC电压波形也出现调幅包络电流波形不再是干净正弦开始带有明显的低频包络。看到这种波形我的第一反应不是直接压低PLL参数而是先确认这是不是真实的不稳定模态。检查方式有两个一是把仿真步长减小后再跑一遍如果振荡频率和增长趋势基本不变说明不是数值问题二是回到连续平均模型如果平均模型里同样存在这个振荡证明它来自控制环路和主电路的真实交互。这一步很关键。开关模型里经常会看到高频数值振铃但那种随步长变化而改变而且频率在几千赫兹以上。这里7.8Hz显然属于控制环路的低频交互必须认真对待。4.3 第二步用特征值验证根因波形只能说明“振荡存在”不能说明“为什么会振荡”。我直接回到线性化流程在t1.5s稳态点用linearize获取状态空间方程再算特征值。工况A的特征值里有一对共轭根大约在0.21±j2π×7.8实部为正虚部对应7.8Hz与波形完全吻合。工况B把PLL带宽降到8Hz后同一对根变成-1.5±j2π×5.6实部变负系统稳定。如果只停在这里结论就是“降低PLL带宽可以稳定”。但这个结论太粗糙因为低PLL带宽会让动态响应变慢。下一步必须看参与因子搞清楚到底是谁在推动这个模态。4.4 第三步锁定PLL是主要参与模态参与因子计算出来后那个7.8Hz模态里占比最大的是PLL积分器状态和电网电感电流状态。也就是说振荡的本质是PLL动态和弱电网阻抗之间的交互。电流内环的状态参与度相对较低说明当前问题的主要矛盾是PLL而不是电流环。这解释了为什么降低PLL带宽有效。低带宽让PLL在7.8Hz附近几乎没有跟踪能力负反馈通路被削弱系统阻尼自然变好。但代价是锁相变慢如果电网相位动态较大可能会影响有功输出质量。所以下一步的控制策略优化就不是单纯降带宽了而是要在保留一定动态的前提下针对这个模态额外加阻尼。这就是我实际项目里常用的三招参数分层、附加阻尼、虚拟阻抗。5. 控制策略优化参数整定、附加阻尼和虚拟阻抗三招5.1 参数分层别让PLL、电流环、功率环抢带宽第一个优化还是参数整定但不是无脑降PLL带宽而是把几个环路的带宽拉开。电流内环要最快带宽通常500~1000HzPLL在强电网下可以取20Hz左右弱电网下建议降到5~15Hz功率外环最慢1~5Hz就够。环路典型带宽整定顺序功率外环1~5Hz最后PLL5~15Hz弱电网其次电流内环500~1000Hz最先整定顺序也很明确先定电流内环因为它是基础再定PLL让它和电流环保持一个数量级以上的间隔最后定功率外环让它比PLL更慢。这样从频域上看各环路的相位裕度不会互相踩踏负阻尼出现的频段会明显变窄。在我的案例里把PLL从25Hz降到15Hz其实系统已经临界稳定但相位裕度还不够。这时候不能继续往下降要继续用附加阻尼补裕度。5.2 附加阻尼只压模态不牺牲动态附加阻尼的基本思路是针对不稳定的振荡频段构造一个反馈支路把该频段的能量耗散掉。在Simulink里实现很简单难的是选对反馈量和相位。我常用的做法是在PLL的角频率参考上加带通阻尼。中心频率取振荡频率7.8Hz带通滤波器传递函数可以用G_d(s) K_d · s / (s² 2·ζ·ω_c·s ω_c²)其中ω_c2π×7.8rad/sζ取0.5~1K_d先给0.1再慢慢调。这个滤波器的输出和瞬时功率偏差ΔP相乘叠加到PLL输出的角频率上。等效效果是当系统在7.8Hz附近开始振荡时阻尼支路产生一个滞后合适的频率修正抵消原来的负阻尼。做这个加法时最怕反馈方向接反。接反了不是加阻尼是加激励振荡会变得更厉害。所以我在仿真里每次调整K_d后都会重新做一次特征值校验确认目标模态的实部在变负而不是变正。这是一个“小步试错”的过程不能凭感觉给一个大K_d。5.3 虚拟阻抗/虚拟导纳从阻抗特性上把阻尼补回来第三招是虚拟阻抗。跟网型逆变器本质是电流源特性但控制上完全可以在电压参考上叠加虚拟阻抗改变逆变器对外呈现的输出阻抗曲线。在电流内环输出端的电压参考上叠加v_dq_ref_new v_dq_ref_original − Z_v(s)·i_dqZ_v(s)可以取一个正的虚拟电阻R_v也可以取R_vs·L_v。正电阻的作用是直接增加振荡频段的电气阻尼虚拟电感则可以进一步抬高某频段的输出阻抗避免和电网阻抗形成低阻尼交点。Simulink里实现不需要改主电路只要在电流环输出后面加一个传递函数模块把电流反馈经过Z_v(s)后再减到电压参考上就行。如果你的控制结构里没有显式的电压参考也可以改成在电流参考上并联虚拟导纳i_dq_ref_new i_dq_ref_original − Y_v(s)·u_pcc_dq。Y_v取正实数的等效电阻导纳或带通导纳都能起到类似作用。本质上是通过控制把输出阻抗曲线重新整形让Z_g/Z_inv的奈奎斯特曲线远离临界点。5.4 优化效果对比我在同一套模型上跑了三组优化方案结论很典型方案特征值实部7.8Hz阻尼动态响应PLL 25Hz原始0.21负发散PLL 8Hz-1.5改善变慢PLL 15Hz 带通阻尼-2.1明显改善基本保留PLL 15Hz 虚拟电阻-1.8明显改善基本保留从对比能看出最优方案不是把PLL压到最低而是保持一个适当带宽再用窄带阻尼或虚拟阻抗把问题频段单独处理。这样既稳又不会让系统变成“老牛拉车”。另外附加阻尼和虚拟阻抗还能组合使用。窄带阻尼专门对付7.8Hz模态虚拟电阻可以顺便改善其他频段的谐振裕度。组合后的特征值实部比我单独用任意一种都更负这是我在几次项目迭代里反复验证过的经验。6. 仿真中那些容易误判和翻车的细节6.1 数值振荡和真实不稳定要区分开仿真里最坑的不是“不稳定”而是“看起来不稳定其实只是数值噪声”。PWM开关模型里高频振铃、离散采样混叠、求波器步长太大都会产生类似振荡的波形。我区分真实不稳定和数值振荡的办法很简单换求解器和步长再看特征值。如果同一个开关模型用固定步长1e-5和5e-5跑振荡频率和幅值变化很大那大概率是数值问题。如果连续平均模型里也能复现同样频率的振荡而且和特征值虚部吻合才是真实的小干扰失稳。平均模型是唯一的“裁判”它没有开关纹波最能暴露控制环路的本质问题。6.2 扰动注入位置和幅值都有讲究小干扰稳定性研究里扰动幅值不是越大越好。太大会触发非线性比如限幅、PWM饱和、PI积分器饱和振荡的形态会和线性理论预测完全不同。我一般控制在小信号范围以内有功参考扰动2%~5%电压幅值扰动0.5%~2%相位扰动几十毫弧度。要观察阻尼是否变负1%~2%的参考阶跃已经足够清晰。扰动位置也需要设计。想验证PLL模态就在PLL输入电压或输出角度上加扰动想验证电流环就在d/q电流参考上加扰动想验证电网交互就在电源电压幅值/相位上加扰动。不同位置注入激发的模态不一样不能只在一个地方做阶跃就下结论。6.3 扫频测试比想象中敏感用Frequency Response Estimator扫阻抗时扫频信号的注入幅值、等待时间和FFT窗口都会影响结果。幅值太小FFT的信噪比低伯德图会抖得很厉害幅值太大系统非线性会造成谐波污染。我常用的范围是1%~2%额定电压。每个频点要给足10个周期以上的稳定响应时间尤其是低频段10Hz以下不能只跑两三个周期就采样。还有一个容易忽略的问题是如果系统本身已经不再是小干扰稳定扫频测试是跑不出正确阻抗曲线的。因为系统本身在持续发散扫频信号叠加上去会得到一个混合结果伯德图乱七八糟。所以正确的顺序永远是先用状态空间特征值判断是否稳定再考虑用扫频验证不要上来就扫。另外扫频结果和特征值结果对不上的情况多半是dq轴阻抗矩阵里的交叉项没有考虑。严格的三相逆变器阻抗不是标量Z_dd、Z_dq、Z_qd、Z_qq四个元素都要拿到。如果只测一个对角元素就下结论很可能会漏掉实际主导模态。回到一开始那个案例。我在实际项目里遇到类似振荡时第一反应不是“换控制器”而是先搭一个能复现问题的Simulink模型把特征值、参与因子、阻抗伯德图全部对齐再决定是压低PLL、加带通阻尼还是加虚拟阻抗。这套流程看起来繁琐但每一步都是在给后面的优化扫雷。我的体会是跟网型逆变器在弱电网下的振荡多半先从PLL找原因但不要一刀切把PLL带宽压到很低用带通阻尼或虚拟阻抗把频段单独处理往往既稳又保留动态。先把一个小模型里的全过程跑通后面换拓扑、换电网强度都会顺手很多。