十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

弱电网LCL谐振抑制:MPC模型预测控制原理与工程实现

弱电网LCL谐振抑制:MPC模型预测控制原理与工程实现 简介面向新能源并网、电力电子及逆变器控制方向研究者的一份技术文档系统梳理了弱电网下基于模型预测控制的NPC三电平LCL型并网逆变器谐振抑制方法。资料为1个docx文档大小1.09MB内容涵盖弱电网特性分析、LCL滤波器谐振机理、模型预测控制建模、滚动优化算法与谐振抑制策略并包含并网试验验证及不同方法控制效果对比。文档还建立了输出电流与直流侧中点电压的预测模型针对弱电网阻抗变化实现了有效谐振抑制。已有273人学习浏览适合电力电子与新能源并网领域的研究生、工程师及科研人员查阅参考可帮助快速理解该方向的研究思路、关键技术环节与验证方法。1. 弱电网下LCL谐振如何逼出MPC模型预测控制接在公共耦合点PCC上的并网逆变器面对的不是实验室那堵理想电网墙。尤其当线路拉长、变压器短路容量下降电网等效阻抗从几百微亨涨到几毫亨时LCL滤波器原本在中频段留下的那个谐振尖峰会被外部电感推向更低的频率、更高的品质因数。传统PI双闭环习惯把零点放在固定LCL参数上电网阻抗一变相位裕度立刻缩水。这就是弱电网研究的麻烦所在。MPC模型预测控制走的是另一条路把电网阻抗的变化直接收进预测模型用滚动优化在每一个控制周期里重新平衡并网电流和电容电压谐振抑制不再只靠调阻尼比而是靠每一步都对“下一步”做校正。这篇文章把这条路径上的谐振机理、MPC建模、代价函数设计、弱电网自适应调参和仿真验证方法拆开讲适合正在做并网逆变器控制、微网逆变器预研或者在毕业设计中碰了一鼻子谐波后想换条技术路线的工程师对照参考。2. NPC三电平LCL并网逆变器的谐振机理与MPC建模在讨论抑制方法前先得把谐振的根找清楚。LCL滤波器是把逆变器输出电流里的开关纹波压掉的但L1、Cf、L2串成一个不带电阻的被动态网络后天然是一个三阶无阻尼系统。逆变器侧电感和网侧电感的感抗在中频段与电容容抗交替作用会产生一个增益突然抬高、相位快速翻转的频率点。对电流控制环来说这个点附近就是一个潜在振荡源。2.1 LCL滤波器的谐振峰为什么让传统阻尼方案头疼如果不在控制器里做特殊处理LCL的谐振峰会在开环传递函数中形成一个接近-180°的相位跳变并伴随一个高增益尖峰。只要电流环带宽靠近这个频率闭环系统就会在该频段出现接近单位圆之外的极点。工业界最直接的压峰办法是无源阻尼在Cf支路串入几欧姆电阻用电阻把尖峰削平。代价是电阻在基波电流流过时也会发热系统满载效率掉零点几个百分点电阻值越大高频旁路损耗越难看所以阻尼电阻往往只取谐振阻抗的一半效果有限。有源阻尼则是在控制器里模拟一个虚拟电阻最常见的是把电容电流引出来做成比例反馈。这个方案在电网阻抗固定时非常好用反馈系数可以按LCL参数一次性算好。但问题在于反馈系数强依赖L2的准确数值而弱电网下L2是一个随线路、变压器抽头和当天负载变化的量。L2一变虚拟电阻的等效值也跟着变原本压下去的谐振峰又浮上来严重时阻尼环节还会对某个频段形成正反馈。这是近年大家转向MPC模型预测控制的直接原因它不是用固定反馈系数去压峰而是用滚动优化在每个周期重新评估状态谐振抑制能力天然随模型更新。2.2 弱电网阻抗如何改变LCL谐振点把电网等效阻抗记为ZgRgsLg。分析LCL谐振频率时通常把Lg与网侧电感L2串联得到等效网侧电感L2L2Lg。此时谐振频率为f_res (1 / (2π)) · sqrt((L1L2) / (L1·L2·Cf))从这个公式能直接看出Lg越大L2越大谐振频率越低。下面是一组典型参数算出来的结果L12mHCf4.7uFL22mH直流母线电压700V控制频率10kHz。电网附加电感Lg (mH)等效网侧电感L2 (mH)谐振频率f_res (Hz)控制难度0理想电网2.02321常规有源阻尼可覆盖1.03.02118电流环带宽边缘需小心3.05.01943与数字控制延时耦合易振荡6.08.01637常规PI双闭环很难压住注意实际弱电网中还伴随Rg增大谐振峰品质因数会被电阻压低但PCC电压波动变大波形畸变和相位跳变会让PLL与电流环互相干扰。谐振频率只是第一层分析不能只看Lg。由于谐振频率下降并接近电流环带宽PI双闭环中电压外环的时间尺度又更慢内外环的相互作用会被谐振峰明显放大。弱电网工况下最有价值的信息不是“谐振频率是多少”而是“谐振频率偏离设计点有多远”。MPC模型预测控制不需要重新调整零点或阻尼反馈系数它把L2直接放进预测矩阵里只要Lg可观测就能持续修正模型这是它适合弱电网的根本原因。2.3 把NPC三电平桥臂输出写成MPC可用的离散状态方程要进入MPC第一步是把LCL滤波器写成状态空间模型。取状态变量x[i_L1α, i_L1β, v_Cα, v_Cβ, i_L2α, i_L2β]^T分别代表逆变器侧电流αβ分量、滤波电容电压αβ分量、网侧电流αβ分量。输入uv_inv_αβ为NPC桥臂输出电压的αβ分量扰动dv_g_αβ为电网电压。把弱电网阻抗并入L2后连续时间状态方程为d/dt x A_c x B_c u E_c d其中A_c为6×6矩阵非零项包括逆变器侧电感对电容电压耦合项-1/L1电容对两侧电流耦合项1/Cf网侧电感对电容电压耦合项1/L2。B_c的非零项是1/L1对应桥臂电压对逆变器侧电流的直接作用。E_c的非零项是-1/L2对应电网电压对网侧电流的扰动。离散化后得到x(k1)A_d x(k)B_d u(k)E_d v_g(k)。在10kHz控制周期下可以用零阶保持法求A_d也可以用欧拉近似A_d≈IA_c·Ts。欧拉近似代码简单但要求Ts不超过谐振周期的1/10否则预测相位误差会明显影响阻尼效果。这里有个容易忽略的建模要点状态向量必须保留电容电压或电容电流这一维。如果像常规矢量控制那样只建立单电感模型MPC的预测方程里根本没有谐振信息后面代价函数再怎么加权也只是在“看不到谐振”的情况下盲目优化抑制效果不会比PI好。NPC三电平桥臂每相有正、零、负三个电平三相加起来有27种开关组合。把这27种组合投影到αβ坐标系会得到一个完整的大六边形电压矢量集。后面MPC要做的就是逐个评估这些候选电压矢量找出对未来一步或两步代价最小的那一个并直接输出对应开关状态。这样谐振抑制从频域设计问题变成了一个离散变量在线优化问题。3. 用模型预测控制抑制谐振状态方程、代价函数与实验代码现在进入核心实现。MPC模型预测控制要替换掉传统电流内环PI调节器外面仍然保留电压环、功率环或直流母线电压环外环的输出是下一拍网侧电流参考值i2_ref。MPC在每一个控制周期执行四个动作读取当前状态用预测模型外推未来状态计算所有候选开关状态对应的代价函数选择代价最小的开关状态输出。3.1 代价函数设计把谐振抑制放进MPC的代价里谐振抑制的目标不是只看网侧电流跟踪误差。如果代价函数只写成J||i2_ref-i2||²预测控制会把大部分注意力放在基波电流跟踪上而LCL谐振模态在代价里没有对应项结果和普通无阻尼控制类似。常见做法是把电容电流i_ci_L1-i_L2作为谐振模态的直接体现加入代价函数。i_c越大说明LCL在向电容循环充放能量这正是谐振的表现。最小可行的代价函数是J ||i2_ref(k1) - i2(k1)||² λ_d · ||i_c(k1)||² λ_np · v_np(k1)²其中λ_d是有源阻尼权重λ_np是NPC三电平中点电位平衡权重。第一项保证电流跟踪第二项负责压低电容电流中的谐振成分第三项把直流侧两个电容电压差控制在零附近。谐振抑制因此被转化成对电容电流的二次惩罚而不是额外设计阻尼滤波器。MPC预测模型已经包含L2电容电流预测值里天然带着电网阻抗变化的影响所以即使λ_d固定阻尼效果也能跟随弱电网状态自适应。实际实现时要注意量纲。若i2_ref和i_c都用安培λ_d是无量纲系数直接比较没问题若某个仿真模型里电流用了标幺值电容电压用了伏特代价函数各项量纲不一样λ_d就不再是“权重”而是“缩放因子”每次修改参数都需要重新标定。3.2 用Python仿真FCS-MPC谐振抑制的最小样例下面这段代码不是某个商业仿真包的完整工程而是把FCS-MPC最核心的“遍历候选矢量”部分摘出来。参数按常见的10kW级NPC LCL并网逆变器设置方便大家对照自己的仿真模型验证思路。import numpy as np # NPC三电平LCL并网逆变器主参数 fs 10000 # 控制频率 10kHz Ts 1/fs L1 2e-3 # 逆变器侧电感 Cf 4.7e-6 # 滤波电容 L2 2e-3 # 网侧电感不含电网附加电感 Lg 3e-3 # 弱电网附加电感在线辨识值 L2p L2 Lg # 等效网侧电感 Vdc 700 # 直流母线电压 Cdc 2.2e-3 # 直流侧分压电容用于中点电位计算 # 状态空间连续模型x[iL1a, iL1b, vCa, vCb, iL2a, iL2b] A_c np.zeros((6, 6)) A_c[0, 2] -1/L1 A_c[1, 3] -1/L1 A_c[2, 0] 1/Cf A_c[2, 4] -1/Cf A_c[3, 1] 1/Cf A_c[3, 5] -1/Cf A_c[4, 2] 1/L2p A_c[5, 3] 1/L2p B_c np.zeros((6, 2)) B_c[0, 0] 1/L1 B_c[1, 1] 1/L1 E_c np.zeros((6, 2)) E_c[4, 0] -1/L2p E_c[5, 1] -1/L2p # 一阶欧拉离散工程调试时建议换成零阶保持离散 A_d np.eye(6) A_c * Ts B_d B_c * Ts E_d E_c * Ts # 生成NPC三电平27个开关状态对应的alpha/beta电压 states [-1, 0, 1] voltage_vectors [] for sa in states: for sb in states: for sc in states: va 0.5 * Vdc * sa vb 0.5 * Vdc * sb vc 0.5 * Vdc * sc valpha (2.0/3.0) * (va - 0.5*(vb vc)) vbeta (2.0/3.0) * (0.866*(vb - vc)) voltage_vectors.append((np.array([sa, sb, sc]), np.array([valpha, vbeta]))) def predict(x, v_grid, v_inv): # 单步预测未加延时补偿时直接用当前拍状态 return A_d x B_d v_inv E_d v_grid def select_vector(x, i2_ref, v_grid, lambda_d, lambda_np): best_state None best_cost float(inf) for switch_state, v_inv in voltage_vectors: x_k1 predict(x, v_grid, v_inv) # 延时补偿从k1再预测一拍到k2 x_k2 predict(x_k1, v_grid, v_inv) i2_pred x_k2[4:6] # 网侧电流预测值 ic_pred x_k1[0:2] - x_k1[4:6] # 电容电流预测值 # 中点电位计算由alpha/beta电流重构三相电流后 # 按当前开关状态求i_np再更新v_np vnp 0.0 # 调试时可先忽略正式代码必须完整计算 cost np.sum((i2_ref - i2_pred)**2) \ lambda_d * np.sum(ic_pred**2) \ lambda_np * vnp**2 if cost best_cost: best_cost cost best_state switch_state return best_state, best_cost代码逻辑说明predict函数完成一个控制周期的状态递推select_vector对27个电压矢量逐一预测。先预测k1状态再用同一个输入预测k2这是对数字控制延时的一拍补偿。i2_pred取的是x_k2的网侧电流分量因为k拍选择的开关状态实际要到k2拍才体现在网侧电流上。ic_pred取k1拍逆变器侧电流与网侧电流差值用来感知谐振模态。参数说明i2_ref是外环给出的网侧电流参考值通常由直流母线电压环或PQ功率环生成。λ_d初始可从0.1开始观察电流波形λ_np初始取0.05~0.1若直流侧有独立均压电路可以置0。Lg在弱电网工况下不能用一个固定值需要实时估计第4章会给出常见做法。另外这个示例用欧拉离散当控制频率降到5kHz附近时一定要换成零阶保持离散否则预测相位误差会吃掉一部分阻尼裕量。3.3 延时补偿为什么不能省MPC在DSP上执行本身要消耗时间从采样到输出开关状态往往落后一拍。如果不补偿实际作用到桥臂的电压矢量比预测模型晚一个控制周期等效于把系统的相位裕度又吃掉一块LCL谐振峰附近更容易振荡。常见做法是两步预测第一步先用上一拍的开关状态预测当前采样时刻对应的k1状态第二步再遍历候选矢量预测k2状态。上面代码中的x_k2就是按这个思路写的。这一步几乎是谐振抑制MPC从仿真稳定走向实验稳定的分水岭。仿真里不补偿延时也能跑因为理想采样时刻和实际动作同步换成真机后调制波更新总是滞后控制周期稍紧就会暴露问题。所以这节的代码里特意保留了两步预测结构。4. 弱电网自适应的MPC调参权重、预测时域与电网阻抗识别MPC模型预测控制把传统控制器的“极点配置”问题转化为“权重选择”问题调参直接影响谐振抑制效果。如果还按PI调参的思路一个一个试很容易把λ_d调得过大导致电流波形看起来平滑但基波响应变慢低次谐波反而上升。下面给一个相对规范化的调参路径和环境自适应方法。4.1 MPC自身的LCL参数与Ts如何匹配预测模型里每一个参数最终都会影响预测精度。L1和Cf是设计滤波器时确定的误差不大容易出问题的是L2它包含了弱电网附加电感Lg。控制频率Ts决定离散化误差经验上控制频率要高于LCL谐振频率的5~10倍。第2章的例子谐振频率大约1.6~2.3kHzTs取50~200us是可行的若Ts小于200us必须用零阶保持离散而不是欧拉近似。常见调参起点如下表参数符号初值对谐振抑制的主要影响控制周期Ts100us / 50usTs越大离散误差越大λ_d需要越保守谐振抑制权重λ_d0.1~0.3太大拖慢动态太小压不住谐振峰中点平衡权重λ_np0.05~0.1影响中点电位波动对谐振峰影响不大预测时域Np1~2Np增大更接近最优控制但计算量显著上升电网电感估计值Lg先取最严重工况估偏时系统会欠阻尼或过阻尼预测时域Np超过2时27个候选矢量会变成27^Np种组合普通MCU很难在几十微秒内算完。工程上常用方案是先用价值函数筛选出大扇区再在扇区内只评估少量矢量或者把遍历从每个控制周期降为每两个周期一次换取Np2的滚动优化时间。弱电网场景下单步预测加延时补偿已经能解决大部分谐振问题不建议一上来就追求Np3。4.2 三电平NPC中点电位在代价函数里的处理NPC三电平桥臂在输出零电平时电流会从中性点流过导致上下电容电压不平衡。长时间运行后电压偏置会反映到桥臂输出电压上并网电流产生偶次谐波。代价函数里的λ_np就是用来约束这个状态的。中点电流计算如下i_np (1-|s_a|)·i_a (1-|s_b|)·i_b (1-|s_c|)·i_c其中s_a、s_b、s_c取值为-1、0、1。然后中点电压更新为v_np(k1)v_np(k)Ts·i_np/(2Cdc)。把v_np加入状态向量MPC就能在选开关状态时判断这个矢量对中点电压的影响。λ_np过大会导致MPC牺牲电流跟踪性能去平衡中点波形变差。通常先固定λ_d调出基本电流波形再逐步加大λ_np观察上下电容电压差是否收敛到±5V以内。4.3 弱电网阻抗在线辨识MPC自适应的前提要让MPC真正适应弱电网需要在线获得Lg。工程上常用短路比SCR描述电网强弱SCR低于3就属于弱电网。忽略线路电阻时Lg≈电网额定电压² / (SCR·额定功率·2π·50)。这个估算值适合作为MPC模型的初值实际运行中再根据PCC电压和并网电流做在线修正。最小二乘辨识利用的是PCC电压方程v_pcc v_g Rg·i_g Lg·di_g/dt。写成离散向量后可以用带遗忘因子的递推最小二乘RLS估计Rg和Lg。下面给一段离线批量回归代码方便先用录波数据验证公式再移植到在线RLSimport numpy as np def estimate_zg_offline(v_pcc, i_g, dt): # v_pcc: Nx1采样序列i_g: Nx1采样序列 v v_pcc[1:].reshape(-1, 1) i i_g[1:].reshape(-1, 1) di np.diff(i_g.flatten(), n1).reshape(-1, 1) / dt H np.hstack([np.ones_like(v), i, di]) # 增加常数项估计直流偏置减少数值误差 theta, _, _, _ np.linalg.lstsq(H, v, rcondNone) v_g_off, Rg, Lg theta return float(v_g_off), float(Rg), float(Lg)参数说明v_pcc和i_g必须同步采样di由相邻两拍电流差除以dt得到直接差分会放大采样噪声所以在线版本要在di前面加一个500Hz~1kHz的低通滤波器。theta中的v_g_off是电网电压的等效直流偏置在离线计算中用来吸收传感器零漂。在线RLS不需要求逆矩阵只用协方差矩阵递推计算量可以接受。拿到Lg之后更新L2p再重新离散化A_d、B_d、E_d让MPC预测模型跟随电网状态移动。这里要避免每个控制周期都更新离散矩阵否则在线估计噪声会直接抖动到预测方程里造成电流突变。常见做法是每20~50个控制周期更新一次并对L2p加一阶低通滤波比如当前值和前值各取50%平均。这样MPC的谐振抑制中心会平滑地跟随弱电网阻抗变化这是固定参数有源阻尼做不到的。5. 验证谐振抑制效果从Bode图到电流FFT的实操技巧MPC模型预测控制是变结构控制系统严格意义上不能像线性控制器那样直接画出全频域开环Bode。工程上常用“工作点扫频FFT”的组合验证方法。5.1 用扫频小信号观察谐振峰是否被压住在仿真或半实物平台上让逆变器稳定工作在某个功率点然后在PCC电压处叠加一个小幅正弦扰动频率从500Hz扫到5kHz。每个扫频点运行几十个基波周期等暂态消失后取并网电流做FFT提取该扫频频率对应的电流幅值。把MPC的λ_d设为0和正常工作值各跑一遍两条幅值曲线的差异就是谐振抑制效果。如果λ_d生效原LCL谐振峰对应的频段电流幅值应该下降5dB以上同时低频段幅值不应抬高。扫频间隔可以取100Hz但扫频扰动幅值不能设太大否则系统会进入过调制切换点附近出现大量边带谐波FFT结果失去参考意义。小信号幅值建议取额定电压幅值的2%~5%并在录波中同步记录PCC电压确认注入扰动确实到达了PCC。5.2 看阶跃响应和THD的联合指标谐振抑制的最终评价不是频谱上有没有尖峰而是并网电流THD和动态响应都满足并网要求。验证时分别做有功功率阶跃和电网阻抗阶跃。电网阻抗阶跃可以用可编程电网模拟器或者用一个接触器把附加电感切入/切出。记录切入Lg前0.2s到切入后0.2s的电流波形重点观察切入瞬间是否有持续衰减的等幅振荡。若在Lg3mH时电流波形在3~5个基波周期内恢复稳态且稳态THD低于5%基本可以认为抑制策略有效。如果电网阻抗切换瞬间出现振荡先不要急着加λ_d而是检查延时补偿是否生效。常见现象是仿真中一切正常半实物一台机就振多半是采样到输出的实际延时比两步预测多出来的那一拍还要长比如电流采样滤波引入额外延迟。此时应该在控制周期内把滤波器滞后也折算进预测模型而不是单纯加宽λ_d。5.3 λ_d的实际选点技巧如果要快速找到合适的λ_d建议不要一次一次试参数而是把λ_d设成0.05、0.1、0.2、0.5、1.0五个值分别记录电容电流RMS和并网电流THD。通常会看到λ_d从0.05加到0.2时THD快速下降再往大加THD下降趋缓甚至低次谐波开始上升。取THD曲线拐点位置对应的λ_d再留0.7~0.8倍裕量作为最终值就能避开过阻尼和欠阻尼两侧的问题。本文还有配套的精品资源点击获取
返回列表