ARTICLE DETAIL

资讯详情

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

APF仿真中PI+重复控制实现谐波补偿的关键工程实践

APF仿真中PI+重复控制实现谐波补偿的关键工程实践 做有源电力滤波器仿真这几年最让我印象深刻的一件事是单纯用PI控制器做电流环把Kp和Ki调了又调补偿后的电网电流THD怎么都压不到5%以下。一开始我以为是参数没调好反复查了采样频率、滤波器参数甚至怀疑是PWM调制的问题。直到系统把控制理论重新翻了一遍才意识到问题出在控制器结构上——PI对直流参考信号是“无静差”的但APF要跟踪的谐波指令在dq旋转坐标系里是高频交流量单靠PI根本给不出足够的稳态增益。后来切到“PI重复控制”的复合控制结构效果立刻不一样了。稳态THD从7%级别压到了3%以内5、7、11、13次谐波幅值都有数量级上的下降。这套方案不算多前沿但工程价值非常高仿真模型也相对容易落地。这篇文章就把整个思路拆开讲一遍从谐波在dq坐标下的频率映射原理到重复控制的内模设计再到Simulink里一步步搭模型、整定参数、排查问题全是一条线走下来的实操记录。1. 谐波在坐标变换后的“真面目”为什么PI单独搞不定先想一个问题APF的电流环到底在控制什么如果只知道“补偿谐波”这句话直接上PI控制器大概率做出来的仿真效果很差。原因得从坐标变换说起。1.1 dq旋转坐标系下的频率映射关系三相电网电流经过Clarke变换到了αβ静止坐标系再经过Park变换用锁相环锁出的电网电压相位做旋转角把αβ映射到dq旋转坐标系。这一套变换下来基波正序电流在dq下会变成直流分量这是教科书里反复强调的结论。也正因为这个结论很多人在设计电流环时默认用PI就够——毕竟PI对直流量的跟踪是“零稳态误差”的。但问题在于谐波分量在dq坐标系下并不是直流。以三相不控整流桥作为典型非线性负载为例它产生的特征谐波是6k±1次也就是5、7、11、13、17、19次。这些谐波经过坐标变换之后对应的频率关系是5次负序谐波-5次变换到dq后变成6次交流分量7次正序谐波7次变换到dq后变成6次交流分量11次负序谐波-11次变换到dq后变成12次交流分量13次正序谐波13次变换到dq后变成12次交流分量写成表格更直观电网谐波次数序分量方向dq坐标系下频率叠加在直流上5次负序6×基波频率300Hz7次正序6×基波频率300Hz11次负序12×基波频率600Hz13次正序12×基波频率600Hz17次负序18×基波频率900Hz如果在50Hz电网里补偿5次、7次谐波电流环实际要跟踪的是dq轴上的300Hz交流分量要把11、13次也压下去就要跟踪600Hz的交流量。谐波次数越高dq下的跟踪频率越高对控制器带宽的要求也越高。1.2 单一PI控制器为什么存在稳态误差控制理论里的结论是PI控制器只在阶跃信号直流下具备零稳态误差能力。为什么因为PI里包含一个积分器而直流信号的数学模型就是1/s积分器恰好是这个模型的逆能提供无穷大直流增益。但dq轴上的谐波指令是300Hz、600Hz的正弦信号PI控制器对这些频率已经衰减了。闭环跟踪一个正弦信号时增益不再是无穷大跟踪误差取决于开环增益。频率越高PI的增益就越低稳态误差就越大。所以会出现一个让人非常沮丧的现象无论怎么加PI参数补偿后的THD总卡在一个瓶颈上。把Kp拉到很大系统就开始振荡Ki调太高动态响应变差甚至不稳定。PI参数调整的收益非常有限因为这是结构性的问题不是参数能解决的。1.3 要真正消除谐波误差控制器里必须“内置”谐波模型想对某一频率的交流信号实现零稳态误差控制理论给出的方案很明确在控制器里加入该频率信号的内模。对单一频率的谐波可以用谐振控制器PR在谐振点提供高增益但要同时处理5、7、11、13、17、19次这么多频率PR控制器得并很多个谐振环节参数调试工作量非常大。重复控制走的是另一条路它不是针对某一个频率而是把“整个基波周期内的所有周期信号”作为一个整体放在内模里。理论上只要误差是周期性的重复控制就能对基波及其所有整数倍频率提供高增益。这恰好覆盖了APF所有的特征谐波。这也是为什么APF谐波抑制这个应用场景被公认为重复控制最典型的用武之地。2. 重复控制的内模原理与复合控制结构设计重复控制的“杀伤力”来自内模原理但直接把它做成完全独立的控制器动态性能会很差。工程中几乎都是用它与PI组合。下面把原理和结构拆开来聊。2.1 重复控制内模一个能够“记住”上一个周期误差的机制在连续域中一个周期为T的信号其数学模型可以用延时环节e^{-sT}来表示。把这个模型嵌入到控制器反馈通道里控制器就具备了对周期信号的无静差跟踪能力。离散化之后这个内模就是一个周期延迟z^{-N}其中N fs / f0fs是采样频率f0是基波频率。比如采样频率10kHz、基波50Hz那N就是200也就是说把前一个周期的误差信号延迟200个采样点之后再引入当前周期的控制。这样做的效果是如果某个误差在第k个周期出现控制器在下一个周期会基于“记住了”的同一个位置产生校正作用。经过几个周期反复学习稳态误差被逐步压缩。可以做个很粗糙的类比重复控制相当于一个拥有“上一段错误模板”的纠错者每个周期都做同样的事情——看着上一轮的误差把这一轮的输出往前补一段循环迭代误差越来越小。这就是“重复”的含义。2.2 并联式与嵌入式两种PI重复控制结构通常工程中用得最多的是并联式结构也叫插拔式plug-in重复控制。误差信号同时进入两个通道一个通道走普通的PI电流控制器另一个通道走重复控制器两个输出相加作为最终控制信号。这种结构的最大优点是设计解耦。PI控制器负责快速动态响应重复控制器负责稳态精度。两者可以独立设计参数先调PI让电流环稳定再引入重复控制逐步提高谐波抑制能力互不干扰。对于做仿真和工程调试来说这种“先易后难”的路径非常友好。另一种是嵌入式结构重复控制串在前向通道或反馈通道里面与PI形成嵌套关系。它在理论上对系统参数摄动的鲁棒性更强但参数耦合严重稳定性分析复杂。多数APF工程实践不会一上来就选这种结构。在Simulink仿真里建议直接用并联式结构逻辑清晰调试也直观。2.3 为什么不能只靠重复控制那是不是把PI去了只用重复控制就行实际做下来会发现问题很明显重复控制内部带着z^{-N}这个大延迟误差从出现到“被学习并校正”天然慢一拍。负载突变的瞬间重复控制器基本帮不上忙第一个周期的电流畸变完全靠控制器自身的瞬时增益去顶。单独使用重复控制时动态响应要拖到3到5个基波周期才能恢复。这就是PI必须保留的原因。PI的带宽虽然不高但它是即时反馈负载突变的那一个周期主要靠它撑住波形。之后重复控制逐步接管把稳态误差打磨干净。一快一稳正好互补。3. Simulink模型整体架构与关键模块搭建到了实操环节。下面按我自己搭模型时的顺序从主电路到控制环路一步步说。推荐在Simulink里用三个模块组来组织模型主电路电源负载APF桥臂、谐波检测、控制器PWM。这样层次清晰调参也方便。3.1 主电路拓扑与仿真参数仿真参数先给一组能直接跑出效果的参考值。三相电网线电压380V、频率50Hz非线性负载用三相不可控整流桥加直流侧阻感负载整流桥直流侧电阻取10Ω、电感取5mH。这个组合会产生典型的三相特征谐波THD通常在25%到30%区间非常适合观察APF的补偿效果。APF主电路用三相桥臂结构IGBT模块可以用Simulink里的Universal Bridge开关器件模型默认内置反并联二极管。交流侧需要接一个并网电感典型值2mH到5mH。直流母线电容大小影响电压纹波建议取2000μF到5000μF仿真中可以先给3000μF把母线电压外环调稳了再根据纹波调整。Powergui模块选离散化模式仿真步长1e-5秒这样能和后面的离散控制器保持一致的求解环境。连续系统与离散系统混搭很容易碰到仿真速度慢、代数环报错的问题。3.2 谐波检测环节基波提取与指令电流生成谐波检测用瞬时无功功率理论的ip-iq法这是APF仿真和工程里最常用的方案。思路是先通过PLL锁定电网电压相位用这个相位把三相电流变换到dq坐标系。在dq坐标系下基波正序电流变成直流分量谐波分量则表现为交流脉动。用低通滤波器把直流分量提取出来得到基波有功、无功电流再经过反变换变回abc坐标系得到基波分量。最后用原始负载电流减去基波分量就得到谐波补偿指令。低通滤波器的截止频率选择很关键。取太高比如300Hz以上基波提取不干净dq轴里的谐波脉动会漏过去取太低比如50Hz动态响应太慢负载突变后指令电流要很久才跟上。工程上取100Hz左右是一个比较平衡的点。关于“Simulink里ab转dq怎么搭”我用得最顺手的方式是在MATLAB Function模块里直接写变换矩阵。Clarke变换和Park变换的核心代码就几行function [id, iq] abc_to_dq(ia, ib, ic, theta) % Clarke变换 alpha (2/3) * (ia - 0.5*ib - 0.5*ic); beta (2/3) * (0.866*ib - 0.866*ic); % Park变换 id alpha * cos(theta) beta * sin(theta); iq -alpha * sin(theta) beta * cos(theta);记住PLL角度要用电网电压的相位而不是电流相位。很多人直接在仿真里随手拿一个Phase信号就做Park变换结果相位对不齐dq轴下的直流量全是振荡的谐波指令完全错误。3.3 电流控制器PI与重复控制的Simulink实现细节电流环是整个模型的“心脏”。d轴和q轴各一个控制器结构相同只是参考值不同。d轴参考值来自直流母线电压外环的输出控制有功功率维持母线电压q轴参考值通常设为0不补偿无功或者根据无功需求设定。PI控制器用Discrete PI Controller模块就行采样时间与控制周期一致。注意电流环PI输出要加饱和限幅限幅值取决于直流母线电压能提供的最大输出防止动态过程中控制器积分饱和导致波形失控。重复控制器的离散实现是核心。误差信号进入重复控制器后要经过四个环节滤波器Q(z)、周期延迟z^{-N}、增益Kr、相位补偿z^m。在Simulink里可以这样搭周期延迟用Delay模块延迟长度为N个采样周期。N的计算直接用常数模块表达式为Ts采样步长对应的载波周期除以基波周期。Q(z)滤波器最简单的做法是取一个小于1的常数比如0.95。不要小看这个细节它决定了内模的鲁棒性。如果Q1理论增益无穷大但也会带来稳定性风险Q0.95则给系统留出了稳定裕度。增益Kr典型值取0.5到1。它控制“学习速度”Kr越大收敛越快但过大会导致系统不稳定。相位补偿用z^m实现在Simulink里可以等价地用提前m拍来近似或通过一个超前环节实现。工程上m通常取1到3用来补偿PWM驱动和滤波器带来的相位延迟。3.4 PWM调制与开关驱动电流环输出的控制信号作为三相调制波与三角载波比较生成PWM脉冲。载波频率取10kHz或20kHz都可以。如果希望更接近实际工程载波频率取10kHz采样频率也设为10kHz二者保持一致最不容易出问题。PWM生成有两种做法一种用离散比较器模块组搭把调制波与三角波比较输出逻辑电平另一种直接用SVPWM模块。APP谐波补偿仿真用Simulink自带的PWM Generator也能跑但要注意三相调制波需要加零序分量来提升直流母线利用率。如果只是验证控制策略载波比较法已经足够。还有一个容易被忽略的点PWM调制会引入一拍延迟。这个延迟在高增益的重复控制环路里会影响稳定性需要在重复控制参数整定时考虑进去。很多仿真里加重复控制后反而振荡多半就是这个延迟没有补偿好。4. 参数整定方法与调整顺序参数整定是重复控制能否发挥效果的关键一环也是最考验经验的地方。大致分四步先定PI再算N再试Kr最后调相位补偿。4.1 电流环PI参数的计算思路电流环被控对象是并网电感L传递函数是1/(sL)。以L3mH为例PI的穿越频率f_c一般取载波频率的1/10到1/5。载波10kHz时取1kHz左右比较稳。Kp计算有一个很实用的近似关系Kp ≈ 2π·f_c·L。按f_c1000Hz、L3mH计算Kp ≈ 2×3.14×1000×0.003 ≈ 18.8。Ki则根据期望的转折频率确定一般让PI的零点频率在穿越频率的1/10附近即Ki/Kp ≈ 2π×100 ≈ 628所以Ki ≈ 18.8×628 ≈ 11800。不过考虑到Simulink里PI模块的Ki定义可能基于纯积分形式具体数值需要根据模块说明换算。实际仿真中先按这个量级调再微调Kp直到电流波形没有高频振荡即可。直流母线电压外环的带宽要远低于电流环取电流环带宽的1/20左右保证内外环不打架。母线电容越大外环Ki可以越小响应越平稳。4.2 重复控制的4个关键参数参数整定表整理如下参数含义取值范围/经验值调整方向说明N周期延迟点数N fs / f010kHz/50Hz 200与采样频率、基波频率严格匹配Q(z)内模鲁棒性滤波器0.95常数或( z^{-1}2z )/4Q越接近1稳态精度越高鲁棒性越差Kr重复控制学习增益0.51.0增大提高收敛速度过大会振荡m相位补偿拍数13补偿PWM及滤波器延迟过大导致高频发散N值必须严格等于离散采样频率除以实际基波频率。仿真中电网频率给50Hz、采样步长给1e-5时N是2000而不是200这一点特别容易算错。我在搭模型时习惯用一个Constant模块单独存放f0和fs然后用表达式算出N这样改采样步长时不容易遗漏。4.3 调整顺序与参数耦合建议的顺序是先把纯PI控制调稳再用阶跃负载验证动态响应然后加入Q0.95的重复控制支路Kr从0.3开始慢慢加观察波形增加Kr直到误差收敛速度几乎不再改善为止回头退10%左右作为最终值最后微调m改善高频谐波的补偿效果。如果调Kr时出现周期性发散典型原因是相位补偿不足m太小或Kr过大。降低Kr或者增大m看哪种措施能先抑制发散。参数之间有耦合但调试逻辑一直是“先保证稳定再求性能”。5. 仿真结果验证方法与波形解读模型跑通之后怎么判断这套控制策略到底厉害在哪里只看输出波形不够要看FFT、动态响应和误差信号的变化过程。5.1 必须观测的4类波形电网侧A相电流波形直观判断电流是不是正弦是否有畸变。FFT分析结果用Powergui的FFT Analysis工具基波频率设为50Hz分析到20次或50次观察谐波分量幅值。dq轴电流误差信号这个波形最能体现重复控制的“学习过程”误差幅值呈周期性收敛。直流母线电压波形验证电压外环是否稳定波动是否在允许范围之内。5.2 典型仿真结果分析在我们这个模型参数下补偿前负载电流THD约为28.7%电流呈典型的双峰波形状5次谐波最大约占基波的22%左右7次约11%。加上纯PI控制后电网电流THD能压到7.5%左右但5、7次谐波仍然明显。引入重复控制并完成参数整定后电网电流THD最终稳定在2.6%左右。FFT图上5次谐波降到基波的1.2%7次降到0.8%11、13次也都有明显下降。从dq轴误差信号上看前几个周期误差幅值在收缩大约经过4到5个基波周期后误差达到稳态这是重复控制“逐周期学习”的典型特征。负载突变测试中比如把整流桥直流侧电阻从10Ω突变为5ΩPI能在一个周波内把波形大致拉回来但稳态谐波变大重复控制会在这个基础上继续学习大约3个周期后THD重新收敛到3%以内。能看到两种控制器各管一段的工作状态。5.3 一个容易被误读的点THD不是越低越好仿真中把Kr调到1.2时THD数值可能更低但波形开始出现周期性毛刺这是重复控制在与PWM延迟“打架”的征兆。工程上不会为了零点几个百分点的THD牺牲稳定裕度仿真调试也一样THD掉到3%以下就说明方案已经发挥出价值了。6. 仿真中常踩的坑与排查经验这部分是我觉得最值得分享的。很多人模型搭得出来但仿真结果不对劲往往就是下面几个原因。6.1 谐波检测的低通滤波器截止频率选错现象补偿之后电网电流不仅没有改善某些谐波反而变大了。一排查发现是因为LPF截止频率给到了500Hzdq轴下的谐波脉动和基波混在一起谐波指令里混入了大量基波分量。APF不但没有“专心”补谐波反而往电网里注入了错误的电流。处理LPF截止频率先回到100Hz附近测试不同值对基波提取纯度的影响。如果对动态响应不满意可以考虑用带陷波的滤波器替代一阶LPF但仿真阶段100Hz足够用。6.2 代数环警告与仿真卡死现象Simulink弹出代数环警告仿真速度急剧下降甚至直接卡住。原因通常是重复控制支路的延迟模块与PWM调制之间存在直接馈通路径。重复控制的输出会立刻影响当前周期的输入误差形成了代数约束。处理在误差采样进入重复控制器之前插入一个与PWM同步的采样保持环节或者把重复控制的计算步长设为控制周期整数倍。最省事的办法是在误差信号路径上加一个Discrete Filter传递函数为z^{-1}来断开代数环。代价是多一拍延迟但对重复控制的稳定性影响很小。6.3 离散步长与载波频率不一致现象重复控制补偿效果不稳定误差信号收敛后又周期性复发。排查方法确认重复控制的N值计算中的fs是不是等于Simulink仿真步长的倒数。如果仿真步长设为1e-5但控制器的采样时间设成了1e-4那么N要按1e-4的采样率计算而不是按仿真步长计算。这个不一致会让重复控制的“记忆周期”和电网周期对不上误差永远学不完。6.4 电网频率偏移时的补偿效果退化现象把电网频率改成49.8Hz后重复控制补偿效果明显变差。原因是固定N值的重复控制内模频率严格锁定在50Hz频率偏移后内模与真实谐波频率不再重合。处理工程化的方案是用PLL实时输出电网频率动态调整N值或采用分数阶延迟近似。仿真中可以先把手动修改N值观察效果进阶再实现自适应。理解频率自适应重复控制之前先把固定频率下的模型跑透更有利于把握原理。6.5 仿真时间太长调参效率低现象仿真总时间给了3秒每个步长1e-5秒模型里有电力电子器件一跑就是好几分钟。处理分阶段优化。先用较小的模型规模跑通功能再逐步增加复杂度。把载波频率从20kHz降到10kHz能在保证谐波抑制趋势的前提下显著提速。仿真总时长控制在1秒到1.5秒足够观察稳态和动态响应不需要每次都跑3秒。7. 一点个人实操体会这套PI重复控制的APF仿真模型我在不同参数组合下跑了不下几十组。感触最深的一点是它的理论知识并不复杂但“纸上得来终觉浅”真正上手搭模型时很多问题只有看到波形才会理解。比如相位补偿m对高频谐波的敏感性比如Q(z)的微小变化对稳定裕度的影响这些东西在公式里是看不出体感的。如果你刚开始接触这个方向建议先别急着把重复控制加上去。先把单PI的系统跑稳再逐步加入谐波检测、PWM调制最后才把重复控制支路挂上去。每加一层就验证一步排查问题的范围会小很多。重复控制的调试虽然耗时间但看到THD从7%掉到3%以下的那一刻前面所有踩坑都值了。
返回列表