弱电网并网充电设备阻抗自适应稳定控制与Simulink仿真解析

📅 发布时间:2026/10/21 9:45:33
弱电网并网充电设备阻抗自适应稳定控制与Simulink仿真解析
做过并网充电设备的人十有八九遇到过这种诡异故障同一台充电桩在城区站点跑得好好的移到电网末端就频繁报过压、母线振荡甚至跳机。查来查去问题多半出在“弱电网”三个字上——从接入点看进去的电网阻抗比设计工况大了一截。本文用一个基于Simulink的仿真案例把弱电网阻抗自适应稳定充电控制从前到后完整走一遍内容包括失稳机理、阻抗辨识思路、控制参数自整定方法以及可直接照搬的模型搭建步骤。适合刚开始学Simulink电力电子仿真的同学也适合正在为并网稳定性头疼的电源工程师。先声明一句本文里所有波形描述都是我在仿真模型上跑出来的示意结果参数和结论可以复现别把它当成某一台真实设备的厂家数据就行。1. 弱电网到底“弱”在哪先看充电前级是怎么被逼失稳的1.1 短路比SCR一张表看懂电网强度在电力电子仿真里判断一个并网点“弱不弱”最常用的指标是短路比。短路比的定义是并网点三相短路容量除以设备额定视在功率。SCR S_sc / S_n短路容量可以直接从并网点的三相短路电流算出来S_sc √3 × U_n × I_sc。比如一个100kW的充电系统额定视在功率按120kVA计接在一个三相短路容量只有600kVA的末端线路上那SCR就是5。电网侧的等效阻抗和短路容量是反比关系短路容量越小戴维南等效阻抗就越大。为了方便工程估算可以把SCR的区间和现场表现对应起来我整理了一张常用表。SCR范围电网强度现场常见表现 20很强电压基本稳定按常规参数设计基本不会出事10 ~ 20中等负载波动时有轻微电压变化控制参数需稍微保守3 ~ 10弱电网PCC电压明显随负载摆动母线振荡风险显著 3极弱电网固定参数基本无法正常运行必须采取额外措施这张表不是严格标准但作为仿真系统的初始判断很好用。实际做项目时如果手头没有短路容量数据也可以反过来估算已知线路长度和导线截面算出阻抗Z_g再看Z_g相对于设备额定阻抗Z_n的比值Z_g/Z_n超过0.1就值得警惕。1.2 电网阻抗是怎么一步步瓦解电流环、PLL和母线环的很多初学者觉得电网阻抗不过就是个电感电阻大不了动态慢一点。实际不是“慢一点”的问题而是三条控制链路都会一起被带偏。第一是电流内环。三相PWM整流器在dq坐标系下的电流环控制对象本质上是1/(sLR)这里的L是滤波电感加网侧等效电感。强电网设计时L_f按0.4mH算一旦实际并网点有1.5mH的网侧电感总电感直接变成1.9mH接近原来的5倍。如果PI参数还是按0.4mH设计的K_p对应的环路截止频率就会从设计值往下掉电流环响应变慢负载阶跃时母线电压的跌落深度显著增大。第二是锁相环。锁相环采样的是PCC电压而PCC电压等于理想电压源电压减去电网阻抗上的压降。弱电网下负载电流大这个压降就大而且压降随电流实时变化PCC电压的幅值和相位都在晃。如果PLL带宽设得高PLL会把这些晃动当成真实的电网相位变化去跟踪结果是PLL、电流环、电网阻抗三者形成一个闭环振荡结构。高带宽的PLL和高带宽电流环叠加在弱电网上基本是振荡放大器。第三是直流母线电压外环。电压外环本质上是电流内环外面的慢圈它检测母线电压误差给出电流指令。弱电网下PCC电压本身波动大这些波动通过整流桥功率级传到母线上再进入电压环又变成电流指令的扰动源。几个环路频率一旦靠得太近就会产生10Hz到50Hz的低频振荡。1.3 固定参数控制在弱电网下会看到什么症状固定参数在弱电网下的典型症状其实很有辨识度。母线电压出现低频包络振荡幅度可能达到几十伏甚至上百伏输入电流波形出现幅度调制THD明显超标负载投切时容易触发过压、欠压或过流保护设备反复重启。这些症状在示波器上一眼就能认出来但如果不知道背后机理很容易在PI参数上瞎调一遍最后越调越糟。我在模型里把典型的失稳波形记录下来后第一反应不是去调PI而是反过来问为什么固定参数只有在设计点附近才是合理的答案很简单任何固定PI参数都隐含了对被控对象参数的假设。电网阻抗一变这个假设就失效了。所以要真正解决弱电网问题得把电网阻抗当成一个在线变化的系统参数来看待于是就有了下一章的阻抗自适应控制思路。2. 阻抗自适应的设计思路辨识电网阻抗然后动态调整这3个旋钮2.1 整体思路把Z_g当系统参数实时反演再控制自适应控制的直观类比是开车换挡强电网像是平整高速路控制参数可以激进带宽拉高、响应快弱电网像是泥泞小道参数必须收敛一点带宽压低、动作平稳。问题在于你不可能一直知道前面的路况所以得先“看清路”也就是在线辨识电网阻抗。整体架构可以分成三层感知层负责估计Z_g决策层根据Z_g算出一组控制器参数执行层把这些参数实时写进电流环、PLL和虚拟阻抗模块。信号流是PCC电压电流 → 坐标变换 → 阻抗辨识 → 自适应调节律 → 控制参数更新 → 双闭环调节器 → PWM调制。这样一个结构在Simulink里是非常清晰的模块化设计每个环节都可以单独调试。2.2 在线辨识主动注入法与简化计算方案的取舍电网阻抗在线辨识的方案不少我在表里列了主流三种。方案原理优点缺点主动注入法在电流环参考叠加特定频率正弦扰动测量PCC响应算Z_g精度高可同时估计R和L向电网注入扰动幅值要控制被动纹波法利用PWM固有纹波或已有谐波计算无额外扰动信号微弱易受噪声和电网背景谐波干扰模型参考法建立离散模型用RLS等算法辨识不依赖特定频率适合实时对模型阶数敏感计算量稍大仿真教学里我用的是注入法的简化版本在q轴电流参考上叠加一个幅值约为额定电流2%的正弦扰动频率取200Hz。这个频率避开了50Hz基波、电网特征次谐波和PWM开关边带便于用FFT或带通滤波器分离。PCC处同步旋转坐标系下的响应满足近似关系Z_q(ω_inj) ΔV_q / ΔI_q R_g jω_inj · L_g所以只要在200Hz频率点上提取电压和电流响应的幅值和相位就能得到R_g估计值和L_g估计值。需要说明的是电流环闭环之后测到的阻抗其实包含了L_f和控制器作用严谨的工程实现需要专门校准。本文为了突出自适应控制逻辑把辨识结果当作“网侧与本机滤波电感的等效总感抗”使用对控制效果的解释完全足够。2.3 三个旋钮电流环增益、PLL带宽、虚拟阻抗怎么联动拿到Z_g估计值之后关键问题变成调什么、按什么规律调。我实际用的调节律有三个联动旋钮。第一是电流环PI增益。为了避免L变大后带宽下降K_p按总电感比例补偿但刻意留出安全系数不让带宽恢复到强电网时的最高值。写成公式就是ω_c_ref ω_c0 · [ (L_f L_g_base) / (L_f L_g_est) ]^0.4 K_p ω_c_ref · (L_f L_g_est) K_i ω_c_ref · (R_f R_g_est)这个式子的含义是电网变弱时虽然补偿K_p但目标带宽整体下调把阻尼裕度留给其他交互环节。第二是PLL带宽。PLL带宽是弱电网下最关键也最容易被忽视的旋钮。我的调节律很简单f_PLL f_PLL0 / (1 β · L_g_est / L_g_base)β取1到2效果是电网阻抗越大PLL带宽降得越快。强电网时200~300Hz的PLL带宽到了弱电网降到50~100Hz。牺牲一点动态响应换来的是PLL不再和电流环发生耦合振荡。第三是虚拟阻抗。在电流环输出中叠加上一个虚拟阻抗压降相当于让变换器对外表现得更“软”一些等效增加系统阻尼。虚拟阻抗取R_v sL_v以标幺值的0.1到0.2倍起步。虚拟阻抗可以理解为给原本的“硬”电流源加了一个串联阻尼电阻把电压电流中的振荡能量消耗掉。三个旋钮的联动原则是先压PLL带宽保证同步稳定再按总电感补偿电流环使响应不劣化最后投虚拟阻抗补阻尼。强电网下三个旋钮基本不动弱电网下顺序生效不能只调其中一个。2.4 稳定判据怎么支撑参数调整自适应参数不是拍脑袋给的背后有判据支撑。逆变器并网系统在频域上可以看成两个阻抗网络的互联变换器的输出阻抗Z_o和电网侧阻抗Z_g。根据阻抗比判据只要Z_o/Z_g的幅值和相位满足Nyquist稳定性条件系统就是稳定的。弱电网下L_g增大Z_g随频率变化的曲线下移Z_o/Z_g的绝对值变大穿越点向Nyquist点靠近PLL的高带宽会进一步恶化Z_o在某些频段的相位特性。自适应调节后PLL带宽下降改善了中频段相位虚拟阻抗抬高了输出阻抗的阻尼K_p补偿维持了低频增益不过度衰减。综合效果是Z_o/Z_g的轨迹重新回到稳定裕度内。Simulink里也可以用线性化工具扫频验证后面调试章节会提到。3. Simulink模型搭建主电路、辨识模块与自适应环路的完整落地3.1 建模型前先定参数一张表把网格搭清楚搭模型前先列一张全局参数表把所有用到的常数写清楚后面改参数、复现结果都会省很多事。下面是我用的参数体系。参数数值说明电网线电压380V / 50Hz三相额定功率100kW前级整流器容量直流母线电压750V电压环指令滤波电感L_f0.4mH网侧滤波电感滤波电阻R_f10mΩ电感寄生电阻直流母线电容C_dc3mF电解电容等效开关频率10kHzPWM载波控制采样周期50μs离散控制器Ts强电网阻抗0.15mH / 20mΩ基准设计点L_g_base弱电网阻抗1.5mH / 150mΩ失稳测试点L_g_weak扰动频率f_inj200Hz阻抗辨识注入频率扰动幅值2%额定电流注入信号幅值这个参数体系下强电网短路比大概在三四十弱电网短路比掉到4左右刚好跨过“中等”和“弱”的分界适合观察稳定性的明显变化。3.2 弱电网等效电源和三相PWM整流主电路Simulink里建主电路用Simscape Electrical早期叫SimPowerSystems。弱电网等效不要用“无穷大电源”直接并一个电抗正确做法是三步独立建模先用Three-Phase Source建立一个线电压380V、频率50Hz的理想三相电压源然后在电源和PCC之间串一个Three-Phase Series RLC Branch参数设置成Lg_var、Rg_var两个工作空间变量方便后续做阻抗突变仿真整流器用Universal Bridge选择两电平VSC开关器件选IGBT/Diode交流侧滤波电感用Series RLC Branch填写L_f和R_f直流侧并联C_dc负载端用一个受控电流源或者恒功率负载模拟充电后级。我建议负载用受控电流源加一个电池等效模型这样可以模拟恒流充电过程的功率变化。关键技巧电网阻抗的突变不要直接改模块参数而是把Lg_var定义成Simulink信号比如用Step模块从0.3mH跳到1.5mH接到RLC分支的可变电感端口。这样场景D的动态切换就能用一个Step模块实现不需要额外写回调脚本。3.3 基础控制环dq-PLL、电压外环、电流内环控制部分先做三件套dq-PLL、电压外环、电流内环。dq-PLL直接取PCC三相电压Clarke变换到αβ再Park变换到同步旋转dq。dq-PLL的输入是q轴电压目标是把它调节到0PI输出是角速度修正量积分后得到θ。PLL参数按二阶系统设计Kp_PLL 2ζωnKi_PLL ωn²。弱电网时ωn取2π×100rad/s强电网时取2π×300rad/s。带宽调节就通过这两个Kp/Ki完成。电压外环是慢环带宽取电流环的十分之一量级指令是Vdc_ref750V输出是id_ref。初始参数可以粗略按Kp_v≈C_dc×ω_v、积分零点放在ω_v/5位置来整定再在仿真里微调。电压环PI的积分要加抗饱和否则启动阶段母线电容充电电流可能会把积分器顶到很高产生明显的电压超调。电流内环是快环在dq轴解耦的基础上加电网电压前馈公式是v_d_ref v_d_feedforward ωL_f·i_q PI_dq轴同理。强电网设计时电流环带宽可以取到1kHz附近配合10kHz开关频率相位裕度大约50度。电流环PI参数不能固定要按自适应模块输出的Kp_i、Ki_i实时更新。Simulink里可以直接把PI模块的P和I端口接到来自自适应模块的信号不需要用S函数也能实现参数在线更新。3.4 电网阻抗辨识子系统和自适应参数计算这里重点讲辨识子系统的搭建。从PCC采集三相电压电流坐标变换到dq之后先在q轴电流参考上叠加入扰信号i_q_ref i_q_base A · sin(2π·f_inj·t)然后取dq轴电压和q轴电流各经过一个以200Hz为中心的带通滤波器或直接攒数据做FFT。我用的MATLAB Function如下数据窗取200ms窗函数用汉宁窗。function [Rg_est, Lg_est] impedance_est(vq, iq, finj, Ts) N round(0.2 / Ts); % 200ms窗口 if N length(vq) N length(vq); end vwin vq(1:N) .* hann(N); iwin iq(1:N) .* hann(N); Vf fft(vwin); If fft(iwin); fbin round(finj * N * Ts) 1; % 200Hz对应FFT bin if abs(If(fbin)) 1e-6 Zq Vf(fbin) / If(fbin); % 电压/电流响应 Rg_est real(Zq); Lg_est imag(Zq) / (2 * pi * finj); else Rg_est 0; Lg_est 0; % 信号太弱时保持空值由外部惯性环节兜底 end end这个模块在运行中每200ms输出一次Rg_est和Lg_est再经过一阶惯性环节平滑后交给自适应律。注意FFT之前一定要去直流分量否则基波泄漏会严重污染200Hz点的结果。辨识结果是网侧加本机滤波总感抗的等效值本身用于控制参数补偿就够了。自适应参数计算模块用MATLAB Function实现function [Kp_i, Ki_i, Kp_pll, Ki_pll, Rv] adapt_law(Lg_est, Rg_est, cfg) L_total cfg.Lf Lg_est; R_total cfg.Rf Rg_est; ratio (cfg.Lf cfg.Lg_base) / L_total; wc_ref cfg.wc0 * ratio^0.4; % 目标带宽随阻抗软化 Kp_i wc_ref * L_total; Ki_i wc_ref * R_total; f_pll cfg.f_pll0 / (1 cfg.beta * Lg_est / cfg.Lg_base); wn 2 * pi * f_pll; zeta 0.707; Kp_pll 2 * zeta * wn; Ki_pll wn * wn; Rv cfg.rv_pu * cfg.Zbase; % 虚拟电阻 end需要强调一点自适应参数的输出端一定要接限速器和饱和限幅。参数突变造成的阶跃比参数本身的值更具破坏性限速器建议设置成每个控制周期变化不超过上一次的百分之二三十时间常数在50到100ms量级。这是我的实测经验后面调试章节还会再提到。3.5 充电控制部分后级DC-DC的CC/CV简化建模为了对得上“充电控制”这几个字仿真模型里必须体现充电策略。后级DC-DC我用受控电流源加电池等效模型来简化电池的外特性用理想电压源串联内阻QC状态则用一阶RC等效。控制逻辑做一个简化双模式状态机恒流(CC)阶段电流指令给额定值恒压(CV)阶段根据电压误差削减电流指令两个模式之间用慢速切换防止电流跳变。前级在这个仿真里的任务就是提供一个稳定母线电压。弱电网对充电控制最大的破坏路径是母线电压振荡→后级输入电压波动→充电电流出现纹波→电池温升和寿命受影响严重时充电机直接保护。所以前面做的所有阻抗自适应工作最终目的是保证后级在任何电网阻抗下都能按CC/CV曲线稳定工作。4. 仿真结果说话强电网、弱电网、阻抗突变三组波形对比4.1 场景A强电网固定参数——一切正常的基准波形把Lg_var设定为0.15mH关闭自适应模块只跑固定参数控制器。满载启动后直流母线电压大约0.15s进入稳态超调量不到5%稳态波动在±5V以内。PCC三相电压接近标准正弦输入电流THD低于3%电流波形没有可见毛刺。这个场景说明固定参数控制器在强电网设计点上的表现是合格的也为后面失稳对比提供了基准。记录波形时一个小建议在Scope里把采样时间设为Ts的整数倍避免混叠。母线电压、PCC电压、输入电流三个信号放到同一个Scope窗口启动过程用不到0.5s的时间窗观察已经足够。4.2 场景B弱电网固定参数——典型失稳波形长什么样把Lg_var改成1.5mH控制器参数保持和场景A完全一样。载荷加上去后母线电压开始出现约20Hz的振荡幅度在±80V左右波形看起来像正弦慢摆。输入电流出现步进式包络调制PCC电压波形发生明显畸变局部出现凹陷相位也在来回跳动。继续加大负载或减小母线电容振荡幅值会进一步扩大最终触发过流保护动作设备停机。这个波形和现场设备报“母线振荡”是完全对得上的。很多人遇到这种波形会先怀疑传感器、驱动板、甚至电感参数而不会怀疑是电网阻抗导致的环路失配。这也是为什么我建议先做仿真复现再做现场排查顺序不能反。在模型里如果把母线电压信号送到FFT分析窗口可以看到振荡能量集中在20Hz附近这个频点远低于电流环和电压环的设计带宽只有在多个环路交互时才会被激发。4.3 场景C弱电网自适应——稳定效果和关键指标对比把自适应模块打开还是Lg_var1.5mH。启动后控制系统先以保守参数运行大约50到100ms内辨识模块输出收敛随后PLL带宽下降、电流环Kp补偿、虚拟阻抗逐级投入。母线电压振荡在自适应投入后逐渐衰减大约200ms后稳定到750V±10V电流THD恢复到5%以内PCC电压波形恢复接近正弦。三种场景的指标对比可以看下表。指标强电网固定参数弱电网固定参数弱电网自适应母线电压波动±5V±80V振荡±10V输入电流THD3%10%~15%5%稳定时间0.15s不收敛0.2~0.3s保护动作无大概率触发无自适应的效果不是因为某个参数调得特别准而是参数整体跟随系统阻抗变化让系统始终处于一个合理的稳定区间。4.4 场景D运行中电网阻抗突变——自适应跟踪与限速场景D是模拟实际运行中的电网结构变化比如配电线路切投、其他负荷投切导致并网点阻抗突然变大。我用Step模块在t0.5s时把Lg_var从0.3mH跳到1.5mH观察自适应的动态跟踪能力。如果参数更新没有被限速控制器参数会在阻抗跳变的瞬间发生大幅度阶跃母线电压先是一个30V左右的瞬态脉动紧接着新参数和系统状态不匹配可能再诱发一次振荡。加了限速器之后PLL带宽和电流环增益在100ms内平滑过渡母线只在切换点出现一个很小且很快衰减的脉冲之后重新回到稳态。这个细节很关键自适应不是把坏参数快速换成好参数而是要让参数变化的速度和环路动态匹配太快反而制造新扰动。仿真时可以把全局的Lg_var接一个带斜坡的Step做更平滑的切换但为了考验算法直接用阶跃更狠一些。5. 调试踩坑与工程落地这些细节决定了方案能不能用5.1 阻抗辨识结果忽大忽小的排查方向仿真里最容易出现的问题是Rg_est和Lg_est的估计结果来回跳动一会1.2mH一会2.3mH自适应当然也就跟着乱动。我排查过几次原因通常是三个FFT数据窗太短导致频率分辨率不足基波泄漏没有抑制干净以及注入频率恰好落在电网背景谐波上。把数据窗加长到200ms以上、加汉宁窗、把注入频率避开50Hz的整数倍基本能压住波动。扰动幅值也很讲究额定电流的1%以下容易被死区和噪声淹没5%以上又会明显污染电能质量2%~3%是一个不错的折中。还有一个容易忽略的问题注入信号不能和PWM死区时间产生的谐波频率重叠否则辨识出来的阻抗会有明显偏置。我在模型里用的是一个固定频率的正弦注入源实际工程中如果电网频率有偏移最好把注入频率做成能跟随基波频率变化的自适应量或者干脆用随机偏频信号降低背景谐波干扰。5.2 参数更新不能“一步到位”限速、限幅与抗饱和前面场景D已经展示过限速的必要性。这里补充两个工程习惯一是所有自适应输出都要接Saturation和Rate Limiter上限按标幺值1.5倍、变化速率按每周期30%来设二是PI积分器在参数切换瞬间要特殊处理。直接改PI模块的增益可能让积分器输出跳变最好的做法是把积分初值随增益一起映射或者切换时短暂冻结积分。Simulink里可以用状态使能逻辑实现实时控制器里则是在中断任务里处理。另外电压外环和电流内环的带宽本来就有级差自适应时同样要保持这个级差。我见过有人只调了电流环参数而忘了压PLL带宽结果弱电网下电流环倒是稳了PLL却开始抖整体依然振荡。三个旋钮必须联动不要单独调一个。5.3 仿真步长、离散化与实时控制器移植的几个提醒仿真层面主电路如果用了连续器件电网阻抗突变属于刚性变化求解器建议选ode23tb或ode15s别用默认的变步长ode45硬扛否则可能会因为小步长需要导致仿真时间拉得很长。控制部分用离散步长50μs和开关频率10kHz对应比较自然。混用连续和离散模块时注意采样保持模块的位置尤其是PCC电压经过坐标变换后进入离散控制环节必须在ADC采样模块之后再做滤波。真正往DSP或者ARM平台上移植时最需要调整的不是控制核心而是辨识算法。FFT在嵌入式环境里计算负担高我一般换成滑动DFT或Goertzel算法只计算200Hz那一个点的谱线计算量小很多效果几乎一致。自适应参数更新放在低频慢任务里执行比如1kHz周期电流环在20kHz快任务里读取更新后的参数两级任务不互相阻塞。5.4 自适应不是万能极弱电网下的边界和兜底方案我得说句实话阻抗自适应在SCR大于3的弱电网场景下效果立竿见影但到了SCR小于2的极弱电网单纯调参数的空间已经不大了。到了这个边界控制方案要从“自适应”退到“结构性兜底”——加大直流母线电容降低功率脉动幅值、改用LCL滤波加阻尼、在并网点加无功补偿装置甚至降低充电功率运行。自适应策略还必须设计失败保护当辨识结果持续抖动且置信度不足时自动回到上一组保守参数不要硬用估计值。在Simulink里可以用一个简单的使能逻辑实现一旦Rg_est和Lg_est的方差超过阈值就把参数保持模块切到保持模式。项目做下来我最深的体会是遇到弱电网稳定性问题最先要做的就是“把电网阻抗放在视野里”。Simulink好就好在能把电网阻抗、PLL、电流环和母线电容放在同一个窗口里观察失稳发生的环节一目了然这种直观感是公式和文档很难替代的。如果你也在做并网充电设备建议把上面这套模型先跑一遍场景B亲眼看一次母线振荡再回头看自适应代码很多东西会比只看文字理解得透。