弱电网下并网充电装置阻抗自适应控制策略与Simulink仿真实现
去年我在现场调试一套并网充电装置的时候被弱电网狠狠上了一课。设备在实验室里跑得好好的一拉到现场充电功率刚往上加直流母线电压就开始抖接着变流器直接报过流停机。当时我以为是参数没调好控制器里里外外改了三四版都没用后来用录波器查了PCC点的电压和电流谐波才发现根子全在电网阻抗上。电网一弱等效阻抗明显变大PLL采到的电压里全是畸变和相位跳变电流内环和电压外环之间互相扯皮整个系统在某个频段上就像共振一样越抖越厉害。后来我把整套东西搬回Simulink里用阻抗自适应的方式让控制器参数跟着电网阻抗走问题才算真正理顺。今天这篇文章就顺着这个思路从弱电网模型搭建、阻抗辨识方法、自适应参数映射到Simulink里逐步配置和仿真结果对比完整过一遍。如果你在搞车载充电机、储能双向变流器、或者任何需要并网充电的电力电子装置又刚好被“弱网不稳定”折磨过那这篇文章基本就是照着你的需求写的。做仿真课题的研究生也好做预研验证的工程师也好都能直接参考甚至抄作业。1. 弱电网到底难在哪阻抗自适应在解决什么问题1.1 弱电网的“脾气”电网阻抗不是小数字聊弱电网之前先明确一个概念什么是弱电网。业内常用的判断指标是短路比SCRShort Circuit Ratio也就是电网短路容量和变流器额定功率的比值。SCR大于10一般算强电网5到10算中等强度低于5基本就是弱电网了。SCR越低意味着电网等效阻抗越大。强电网下你画的控制器模型里可以默认电网是理想电压源PCC点电压稳如老狗。但弱电网下电网阻抗Zg主要是电感Lg和电阻Rg不能忽略。变流器往电网灌电流的时候电流在Zg上产生的压降会让PCC点电压发生明显的幅值变化和相位偏移。尤其当电网背景谐波大、或者附近还有别的负荷在不断投切时PCC点电压就是一团乱麻。这对控制系统的直接影响至少有三层。第一层PLL采样到的电压相位和幅值都是污染的锁相环输出会抖动dq旋转坐标系的基准就不干净。第二层电流内环在弱电网下等效于一个带大电感负载的电压源逆变控制对象模型里多了一项电网阻抗原来的解耦和前馈补偿就失配了。第三层整机的中频段阻抗特性会被电网电感拉低相位裕度系统出现负阻效应表现为特定频段的振荡。所以弱电网问题的本质是电网阻抗这个不可控的外部变量改变了控制对象的动态特性而固定参数控制器没有能力应对这种改变。1.2 阻抗自适应的核心思路让控制器跟着电网阻抗走既然问题是电网阻抗不确定、而且会随时间变化那最直接的办法就是把Zg实时测出来然后根据Zg去调整控制参数。这就是阻抗自适应框架的基本逻辑在线辨识加参数映射。听起来很直接但落地有两个关键挑战。第一个是阻抗辨识怎么做。电网阻抗不能直接拿万用表去量尤其在设备运行状态下电网本身有电压、有功负荷在动态波动你要从测量信号里把电网阻抗的信息剥离出来。常用的方法有小信号注入法、基于PCC电压电流波动量的被动估计算法以及特定工况下的解析计算。工程上小信号注入法最直观在控制环里主动注入一个频率明显区别于基波和主要谐波的小幅扰动电流然后检测PCC点在该频率下产生的电压响应两者相除就能得到对应频率下的电网阻抗。第二个挑战是辨识结果怎么映射成控制参数。电网阻抗主要影响电流环的等效被控对象Lg变大后电流环的增益裕度下降。映射策略可以是简化计算把Lg叠加到逆变器滤波电感上重新计算电流环PI参数并把电压环带宽相应压低。也可以更精细一点设计一个带阻抗前馈项的控制律把电网阻抗的影响直接补偿掉。这两件事做通之后自适应控制逻辑就闭环了每隔一段时间辨识一次Zg如果Zg变化超过阈值就重新计算控制器参数并平滑切换。这就是整套方案的骨架。2. 把仿真框架搭起来从电网模型到主电路和控制架构2.1 弱电网模型怎么搭RL串联加可控电压源在Simulink里搭弱电网模型很多人习惯直接用Three-Phase Source模块然后配一个串联阻抗。这个做法可以但要注意几个细节。电网模型至少应该包含两个部分理想电压源和电网阻抗。理想电压源可以用Three-Phase Source模块内部参数设置为理想平衡三相源幅值按线电压有效值设比如380V。频率50Hz相位按120度分布。关键在串联阻抗参数电阻Rg设小一点比如0.1欧姆到0.5欧姆电感Lg按目标SCR反算。SCR等于电网短路容量除以装置额定功率而短路容量又等于额定电压的平方除以短路阻抗模值所以给定SCR之后可以直接反推Zg的大小。举个例子一台额定功率10kW的三相充电装置额定线电压380V。如果电网母线短路容量是50kVA那SCR就是5Zg (380²) / 50000 ≈ 2.89Ω。假设Rg取0.3Ω那Lg就是sqrt(Zg² - Rg²) / (2πf)算出来大约9.2mH。这个电感值在仿真里是相当可观的跟变流器自己的并网滤波电感差不多一个数量级。用这个参数跑仿真你就能真实感受到弱电网的恶劣程度。另外建议在模型中留一个电网阻抗切换开关比如用定时器或Step模块控制一个三相断路器让电网阻抗在仿真的某个时刻从1mH跳到9mH。这样你可以在一次仿真里直观看到控制系统在强网变弱网瞬间的动态响应也是后面做对比实验的关键操作。2.2 充电主电路选型双级结构最稳妥充电控制的主电路拓扑我推荐最常用的双级结构前级AC/DC是三相PWM整流器后级DC/DC是双向Buck/Boost变换器。前级负责把电网交流电变成稳定的直流母线电压同时控制输入电流的功率因数和谐波后级负责电池侧的充电电流和电压控制。为什么选双级原因在于弱电网下前级要承受最大的稳定性压力如果做成单级结构充电电流的纹波和电压波动会直接耦合到电网侧控制更难做。双级结构中间有个直流母线电容这个大惯性环节可以把前后级的动态基本解耦开。前级只管母线电压稳定和网侧电流品质后级只管电池充电曲线调试思路清晰很多。在Simulink里前级用Universal Bridge模块或者自己搭IGBT半桥结构都可以。我习惯用Universal Bridge功率开关选IGBT/Diodes器件模型选平均值模型或者详细模型。注意如果重点看控制策略和稳定性用平均值模型仿真速度快、收敛性好如果还要看开关纹波和谐波细节就要用详细模型。本文后面的方案基于平均值模型重点验证控制逻辑。后级DC/DC用MOSFET或者IGBT搭双向Buck/Boost都可以Simulink里有现成的半桥支路可以直接用。2.3 控制器基础架构电压外环加电流内环加PLL主电路确定之后控制器架构基本上是行业标配三相PWM整流器采用电压外环和电流内环串级结构外环输出d轴电流参考值q轴电流参考值通常设0或者按无功需求给定。电流内环在dq旋转坐标系里实现对电感电流的快速跟踪输出调制电压经过SVPWM或者简单的PWM调制生成开关信号。这里特别强调一下PLL的角色。弱电网下PLL是整个控制系统的薄弱环节之一因为PCC点电压畸变会直接污染PLL的输出相位。建议使用基于双二阶广义积分器的锁相环SOGI-PLL或者带陷波器的同步参考坐标系PLLSRF-PLL不要用最基础的SRF-PLL裸奔。SOGI-PLL对谐波和不对称有不错的抑制能力在弱电网仿真里明显更稳。Simulink里搭PLL可以自己用函数模块搭也可以直接用Simscape Electrical里的PLL模块。自己做的好处是内部结构透明模块的全部参数可以直接看方便排查问题。3. 核心细节阻抗辨识和自适应策略到底怎么落地3.1 电网阻抗辨识小信号注入加FFT提取我现在在仿真里用的阻抗辨识方法是小信号注入法的简化实现。原理说起来很朴素。电网在基波频率下是个50Hz的电压源控制回路里除了正常的控制电流之外你额外叠加一个特定频率的小幅电流扰动。假设你注入的扰动频率是fp那么变流器会在PCC点产生一个fp频率的电流分量。这个电流流过电网阻抗Zg会在PCC点电压上产生一个fp频率的电压降落分量。你只要把PCC点电压和电流里fp频率的分量提取出来用电压分量除以电流分量就能得到Zg在fp频率下的值。又因为电网阻抗在低频段主要是感性的fp选几十赫兹到几百赫兹之间就可以近似认为你测到的是电网感抗和电阻的矢量和。具体在Simulink里怎么做第一步在电流内环的d轴参考值上加一个正弦扰动信号。扰动幅值设为额定电流幅值的1%到3%频率选一个避开基波和谐波的频点比如75Hz、125Hz这种非整数倍频。幅值不能太大否则会影响充电功率并导致THD超标也不能太小否则PCC电压响应信号被噪声淹没FFT提取不准确。第二步把PCC点的三相电压和三相电流采集下来经过坐标变换得到dq轴分量再送到FFT分析模块。在Simulink里可以用Powergui自带的FFT分析工具离线分析但如果要做在线自适应就得把FFT改成在线形式比如用离散傅里叶变换DFT算法模块。只提取fp这一个频率点的幅值和相位计算量很小。第三步用fp频率下电压扰动分量U_p除以电流扰动分量I_p得到复阻抗幅值和相角。电阻分量Rg |Zg| * cos(相位差)电感分量Lg |Zg| * sin(相位差) / (2πfp)。有几个实操细节要注意。扰动频率和采样频率要匹配仿真步长决定了你能提取的最高频率建议仿真步长不大于100微秒。另外在强电网下PCC点的电压响应非常小信噪比低这时候辨识出来的阻抗误差可能偏大所以一般只在电网阻抗超过一定阈值时才启动辨识强电网下直接用默认参数。3.2 阻抗到控制参数的映射核心是电流环带宽在线修正辨识出Lg之后怎么更新控制器参数先从电流环的角度推一遍。三相PWM整流器的电流内环被控对象是滤波电感Lf加电网等效电感Lg的串联从数学上看电流环的开环传递函数里有一个主导极点位置在Rf / (Lf Lg) 附近。Lg增大这个极点往原点移动对相同的PI参数来说相位裕度会下降。为了保证稳定裕度最直接的手段就是按 (Lf Lg) 的实时值重新计算PI参数。用工程上最常见的设计方法令电流环PI的积分时间常数Ti等于被控对象电气时间常数 (Lf Lg) / Rf这样PI零点可以抵消被控对象的极点。比例增益Kp按期望的电流环带宽fc_i计算Kp (Lf Lg) * 2π * fc_i。所以电网电感Lg一变大Kp就要线性加大Ti也要相应调整。很多人到这里会犯一个错误Kp直接随着Lg增大而增大总以为加大增益就能稳住弱电网。实际上Kp加大后电流环带宽上去了抗扰动能力确实变强但与此同时它对PCC电压畸变中的高频分量也会更敏感而且带宽提得太高还会和PLL、电压环的带宽打架。所以在自适应映射里我通常还会加一个限制把fc_i限制在一个安全范围内比如200Hz到800Hz。当Lg很大时宁可适当压低带宽也不要无脑把Kp推高。电压环的映射相对简单一点弱电网下电压环容易与电网阻抗发生动态交互推荐的策略是随着Lg增大把电压环带宽略微调低让电压环的响应速度慢于电流环一个数量级以上给内环足够的稳定空间。3.3 自适应切换的平滑过渡不能生硬改参数参数辨识和映射做完之后还有一个工程上很容易忽视的问题参数怎么切换。如果每次检测到Lg变化就直接把Kp、Ti跳变到新值那在切换瞬间会造成电流环控制量突变反映到网侧就是电流尖峰和电压冲击严重的话直接触发保护。所以自适应要加一个平滑处理。我在仿真里用的是一个惯性和限速模块相当于电磁学里的惯性环节参数参考值算出来后不直接送到控制器而是经过一个一阶低通滤波器时间常数取50到200毫秒。这样参数是从旧值渐近过渡到新值的控制量的变化被拉伸到一个平缓的斜坡系统就不会出现明显的切换冲击。另外还要设计一个切换判定逻辑如果辨识到的Lg变化量小于设定滞环比如5%就不更新参数避免因为辨识噪声导致参数频繁来回变动。如果Lg突然变化很大说明电网发生了严重的状态切换不仅要尽快更新参数还需要把充电功率降一点先保证不断流再慢慢恢复功率。这个滞环加降额策略在仿真和现场都很有用。4. 手把手搭建Simulink模型关键环节与参数计算4.1 模型顶层结构怎么组织Simulink模型的组织方式直接影响调试效率尤其这种多模块、带自适应回路的模型一定要按功能分区。我习惯把模型分成六大块电网模块、主电路模块、测量与坐标变换模块、控制模块、自适应模块、显示与记录模块。电网模块在最左侧包含三相电压源、串联RL阻抗和阻抗切换断路器。主电路模块在中间左边接电网右边接电池负载。测量模块从PCC点和直流母线采集电压电流输出到控制模块和自适应模块。控制模块接受参考值和反馈值输出调制信号。自适应模块独立放在下方负责阻抗辨识和参数映射并把计算出的PI参数在线更新到控制模块的PID控制器中。这样分块之后的好处是仿真跑崩了你能一眼看出问题出在哪一块。比如说电流波形异常但直流母线正常那问题大概率在控制模块或自适应模块跟电网和主电路关系不大。4.2 关键参数计算从主电路到控制器为了下面的参数计算有明确语境我统一按一台10kW/380V三相充电机来做示范。直流母线电压设为700V电池侧电压范围250到450V所以后级DC/DC选双向Buck/Boost很合适母线侧升压、电池侧降压充电。前级交流侧滤波电感Lf取3mH寄生电阻Rf取0.1Ω。直流母线电容取2000μF它的作用是维持母线电压动态稳定理论上电容越大母线越稳但成本和体积受限仿真里取这个量级没问题。交流侧额定电流有效值I_N (10kVA / 3) / 220 ≈ 15A按1.2倍裕量前级器件选30A以上即可。电流环参数计算是重点。设计带宽fc_i取500Hz则设计角频率ω_i 2π * 500 ≈ 3140 rad/s。电流环PI比例系数Kp (Lf Lg) * ω_i。强电网下Lg取1mH则Kp ≈ (3mH 1mH) * 3140 ≈ 12.56 V/A。积分时间常数Ti (Lf Lg) / Rf ≈ 0.04s对应积分增益Ki Kp / Ti ≈ 314。弱电网下Lg变为9mH则Kp_new ≈ (3mH 9mH) * 3140 ≈ 37.7 V/ATi_new ≈ 0.12sKi_new ≈ 314。可以看到Lg变大后Kp翻了三倍积分增益基本不变。如果不用自适应固定参数在弱网下必然会出现相位裕度不足这也是固定参数控制器在弱电网下振荡的核心原因之一。电压环带宽一般取电流环的十分之一左右也就是50Hz。电压环的PI参数需要根据直流母线电容和负载等效电阻来设计这里不再展开给一组典型值Kp_v ≈ 0.5 A/VKi_v ≈ 20。4.3 自适应模块的Simulink实现要点自适应模块是整个模型里最需要细心的地方我分开说。阻抗辨识部分我建议用离散DFT模块而不是FFT。在Simulink里找Discrete Fourier Transform这个模块设定要提取的谐波次数。但这里有个坑谐波次数是按照基波频率的整数倍来定义的而我们的扰动频率是75Hz不是50Hz的整数倍直接给模块设气固定次数是行不通的。我在仿真里的做法是不用现成的DFT模块而是自己搭一个正交解调器——用两个乘法器把采样信号分别乘以cos(2π fp t)和sin(2π fp t)然后经过低通滤波器就能得到信号在fp频率下的实部和虚部。这个思路本质上就是锁相放大器体积小、可灵活改频点也方便讲解原理。用你设置的fp频率当作载波PCC电压和电流各过一路解调器提取出U_d、U_q、I_d、I_q然后Zg_real (U_d * I_d U_q * I_q) / (I_d² I_q²)Zg_imag (U_q * I_d - U_d * I_q) / (I_d² I_q²)再把Zg_imag除以 (2πfp) 得到Lg。参数映射部分我建议不写复杂的函数脚本而是直接用Simulink的基本数学模块搭一个计算链路Lg输入经过一个加法器加上Lf再乘以2π*fc_i限幅值得到Kp。Ti则用除法模块计算 (LfLg)/Rf。对Kp、Ti各接一个一阶低通滤波器做平滑。最后一步是把更新后的Kp和Ti送到PID Controller模块的输入端口。这里要注意PID Controller模块默认的增益是内部参数不能直接从外部改。有两种解法一种是把PID Controller模块的内部P和I参数设为外部输入端口另一种是干脆不用PID模块自己用增益加积分器搭一个并联PI结构。我自己常用第二种因为结构透明、参数随时可以在线改也方便后续在FPGA或者DSP实现时做代码移植。5. 仿真实战三组工况让你看清稳定性的差距5.1 工况一强电网下固定参数控制先把电网阻抗设成1mH模拟SCR在10以上的强电网。用固定参数Kp12.56、Ti0.04跑仿真。设置额定充电功率从零开始斜坡加载大概0.2秒加载到10kW。跑出来的结果应该是很理想的直流母线电压经过一个小的超调后稳定在700V附近网侧电流正弦度好功率因数接近1稳态THD很低。这个仿真主要是验证你搭的模型本身是正确的也是后面弱电网仿真对比的基准。在这个阶段建议把PCC点电压和电流波形录下来保存到工作区后面做FFT对比用。5.2 工况二弱电网下固定参数控制接着把电网阻抗切换到9mH模拟SCR不足3的弱电网场景其他参数不变。这是最关键的一组仿真。在这个条件下观察到的典型现象是充电功率加到一半左右直流母线电压开始出现持续的低频振荡振荡频率通常在几十赫兹到一百多赫兹。网侧电流波形明显畸变PCC点电压跌落。继续增大功率振荡加剧仿真报错或保护动作。这个结果和我在现场看到的故障完全一致固定参数控制器在弱电网条件下会周期性失稳。把PCC电压做FFT分析你会看到除了基波外在振荡频率附近出现明显的边带分量。这些分量不是电网背景谐波而是变流器与电网阻抗交互产生的。如果你把这个结果录下来再去和自适应控制的波形对比差异会非常直观。5.3 工况三弱电网下自适应控制把自适应模块接入控制环路。在0时刻电网阻抗为1mH控制器以默认参数运行。2秒时切换电网阻抗到9mH观察自适应模块的动作。这里你能看到设计的核心效果阻抗辨识模块在2秒后大约经过3到4个扰动周期每个扰动周期约13ms完成阻抗检测检测结果传入参数映射模块然后Kp经过低通滤波从12.56逐渐过渡到37.7Ti从0.04逐渐过渡到0.12大概用了100毫秒左右完成参数切换。整个切换过程中直流母线电压没有出现大幅振荡电流波形保持正弦系统平稳过渡到弱电网工况。如果试着把充电功率在满载和半载之间反复切换自适应方案都能维持稳定而固定参数方案在这个场景下基本会报警停机。这个指征对比已经足够说明阻抗自适应方法在弱电网稳定控制上的实际价值了。6. 常见问题与仿真排查技巧实录6.1 模型不收敛、仿真速度奇慢怎么办Simulink里搭电力电子模型最容易踩的坑就是不收敛和仿真卡死。我先给几个排查顺序。第一步检查求解器设置。Simulink控制环和电力电子主电路混合仿真建议用ode23tb或者ode15s这类变步长刚性求解器。不要用默认的ode45因为变流器开关器件和电感电容产生的快变信号会让ode45步长缩到极小仿真速度慢到怀疑人生。第二步检查PCC点的三相电压源参数。电网电压源的初始相位角和实际测量模块的参考相位要一致否则第一个仿真周期内会有巨大的瞬态冲击直接把非线性元件逼到收敛失败。第三步检查平均值模型和详细模型混用的接口。如果你前级用平均值模型后级用详细模型中间直流母线电容的等效串联电阻ESR不能设为0否则会出现高频振荡。建议给电容串联一个小电阻比如0.01Ω。6.2 PLL在弱电网下失锁、相位跳变怎么处理弱电网仿真里PLL失锁是个高频问题。典型现象是d轴电压不再稳定在幅值附近锁相环输出的相位来回摆整个dq坐标系就乱了。排查思路是先在静止坐标系里看PLL的输入电压波形。如果输入电压畸变过大就检查PLL前端的滤波环节。我推荐在PLL前面加一个二阶低通滤波或者SOGI前置滤波滤掉5次和7次谐波后再进锁相环。如果畸变里面还有直流偏置那可能是测量模块的问题需要加高通滤波器隔离。另外要注意PLL的带宽设置。带宽太高锁相环会跟着PCC电压的畸变一起抖带宽太低动态响应太慢。经验上PLL带宽取20到30Hz比较合适既能跟踪电网频率的小幅变化又不会对谐波太敏感。6.3 阻抗辨识结果跳变严重、不收敛如果辨识出来的Lg在仿真过程中上下乱跳先别急着怀疑算法优先检查扰动信号的设置。扰动幅值太小是最常见的原因。当幅值低于1%额定电流时PCC电压响应信号往往低于1V这时候数值噪声就会明显干扰提取结果。把扰动幅值提高到2%到3%通常就能解决。但要注意幅值也不能太大否则影响充电功率THD会超标。其次检查解调器的低通滤波器带宽。正交解调之后你希望保留的是fp附近的基带分量低通滤波器的截止频率要设得比fp小很多比如fp是75Hz低通截止频率设10Hz左右。如果截止频率设高了基波和其他频率的泄露信号会混进解调结果导致辨识结果里叠加重大的直流偏移和波动。最后看扰动注入点。扰动信号要加在电流环的参考值端不要加在调制波信号端否则扰动会被电流环本身抑制掉PCC点根本产生不了对应的电流响应。结尾一点个人体会这整套方案我在Simulink里跑了不计其数的组合之后才真正理解为什么弱电网问题是电力电子行业里常说难啃的硬骨头。很多看似突兀的振荡归根到底都是控制器和外部阻抗之间的交互失稳跟单纯的参数调优没有关系。如果你打算基于这套思路做自己的仿真我建议从工况二和工况三的对比入手先把固定参数在弱网下振荡的现象复现出来再接入自适应模块。有了“先病后医”的直观感受你对阻抗辨识和参数映射每一步设计的必要性会有完全不同的认识。最后再分享一个小技巧Simulink里所有自适应相关的参数——扰动幅值、解调滤波器带宽、参数平滑时间常数——都集中放到一个初始化脚本里用一组变量名统一管理。这样你每次改参数不用在模型图里翻来翻去直接在脚本里改完数值重新跑一遍就行。这个习惯陪我做了好几个版本的迭代省下的时间足够你多测十组工况。