资讯动态

ANPC三电平逆变器SVPWM闭环仿真:扇区划分、中点平衡与PI整定全复盘

发布时间:2026/10/21 12:14:01 来源:尧图企业网站定制
搞电力电子的兄弟应该都有体会两电平方案做到一定阶段总会撞上“性能天花板”——器件耐压不够、谐波压不下去、损耗集中导致散热难做。我这段时间就在做一套带闭环控制的ANPC三电平逆变器仿真从拓扑选型、SVPWM调制到中点电位平衡和电流闭环前后踩了不少坑也把整套系统整体跑通了。这篇文章把整个过程做个完整复盘重点放在SVPWM的扇区划分和作用时间计算、闭环参数整定、以及仿真里特别容易翻车的几个支节点上。无论你是刚接触三电平的新手还是想从传统NPC迁移到ANPC的老手这份仿真研究笔记应该都能帮你少走几条弯路。1. 项目概述为什么盯上有源钳位型三电平1.1 核心需求解析说到三电平很多人第一反应是NPC二极管钳位。确实NPC是工程上的主力方案风电并网、轨道交通、中压变频到处都是它的身影。但NPC有个老毛病钳位二极管一旦导通反向恢复特性受硅材料限制开关频率一上去损耗和发热就压不住。而且NPC的四个主开关管损耗分配很不均匀外侧两个管子比内侧两个热得多散热设计只能按最热的管子来做系统容量余量白白被浪费。ANPCActive Neutral-Point-Clamped有源中点钳位的思路很直接把钳位二极管换成有源开关管同时把上下桥臂原本的单向导通开关改成具备双向阻断能力的结构。换来什么第一损耗可以通过调制策略重新分配让六个管子整体温度更均匀第二开关频率可以往上提交流滤波器体积跟着缩小第三不再存在钳位二极管反向恢复问题输出波形质量更好。这次项目需求很明确在MATLAB/Simulink环境下搭建一套完整的ANPC三电平SVPWM闭环仿真模型验证从空间矢量调制到闭环控制的可行性为后续样机的硬件实现做算法预研。所以这不是一个纯拓扑对比的PPT式研究而是要能跑出波形、能调PI、能测THD的工程仿真。1.2 ANPC相比传统NPC到底赢在哪具体说ANPC单相桥臂由6个开关器件组成S1/S2串联构成正母线通路S5/S6串联构成负母线通路S3/S4跨接在中点与桥臂输出之间形成钳位路径。关键是S3/S4要能双向阻断工程上一般用两个IGBT反串联加反并联二极管的方式实现仿真里也要按这个结构搭不能图省事用普通开关代替。在调制方面ANPC最常见的做法是混合调制。以输出正电平和负电平两个区间来分析输出P电平期间S1、S2导通S5、S6关断S3保持关断S4以开关频率做PWM动作输出N电平期间S5、S6导通S1、S2关断S4保持关断S3以开关频率做PWM动作输出O电平期间S1/S2和S5/S6都关断S3、S4同时导通或由其中一个续流。这样钳位开关只在半个周期内高频动作损耗是可控的。若想让结温更均匀还可以采用三态调制或轮换策略把开关动作从一个管子转移到另一个管子。这里有个特别值得注意的点ANPC并不天然解决“中点电压平衡”问题。中点电流的来源和NPC类似主要靠小矢量的冗余状态去调节。所以做ANPC仿真时千万别以为换了拓扑中点电压就自动稳了该做的平衡控制一样不能少否则母线中点漂移甚至炸电容都是肉眼可见的后果。2. SVPWM调制核心27个状态、扇区判断与平衡手段2.1 三电平空间矢量的27个开关状态SVPWM的数学本质是用相邻的基本电压矢量去合成参考电压矢量满足伏秒平衡。三电平逆变器每相有P、O、N三种电平输出三相组合共有3的3次方等于27种开关状态。这27个状态映射到αβ平面可以归纳为19个有效电压矢量位置。从矢量类别上看大致分四类零矢量3个PPP、OOO、NNN作用效果相同但切换路径不同影响开关次数。小矢量12个P型和N型冗余各6个模长是Vdc/3例如POO和ONN就是一对冗余。中矢量6个例如PON这种模长为根号3倍的Vdc/3。大矢量6个例如PNN这种模长为2倍的Vdc/3。重点说小矢量冗余。POO和ONN在坐标平面里指向同一个位置但两者流经中点的电流方向完全相反。这正是中点电压平衡控制的抓手合成参考电压时通过调整P型小矢量和N型小矢量的作用时间比例就能控制一个开关周期里中点电流的平均值从而钳住中点电压。中矢量同样会给中点带来电流波动但它没有冗余状态可选所以单纯靠中矢量无法主动平衡中点必须依赖小矢量来对冲。这个约束在后面设计平衡算法时要时刻记住。2.2 扇区判断与作用时间计算三电平SVPWM和两电平最大的区别在于每个60度扇区还要再细分成4个三角形区域必须先判断参考电压落在哪个小三角形里才能确定用哪三个相邻矢量去合成。判断流程可以分成四步第一步把参考电压Uα、Uβ换算到三相静止坐标系或者直接根据Uα、Uβ的角度确定大扇区编号N1到6。第二步在对应扇区内做归一化处理用扇区内的三条分界线判断参考电压落在region1、2、3还是4。第三步在确定的三角形里找出对应的三个矢量按伏秒平衡列方程组解出三个作用时间Tx、Ty、Tz。第四步生成开关序列。工程上常用七段式中心对称序列在中矢量或零矢量处插入冗余状态保证每次切换只改变一相开关状态降低dv/dt和开关损耗。时间计算里的关键参数是直流母线电压Vdc和调制比m。以扇区一0到60度为例各region的作用时间可以通过投影法求解也可以直接套公式表。举个例子当参考电压落在region1时参与合成的通常是零矢量加两个小矢量作用时间由电压在60度坐标系下的投影分量决定落在region3时则是一个小矢量、一个中矢量和一个大矢量计算式里会出现根号3和Vdc的比值最容易写错的地方就在这里。我调试SVPWM时的一个经验是先用纯开环固定幅值、固定频率的参考电压跑波形把每个扇区、每个region的输出相电压展开看确认阶梯波形符合预期再接入闭环。这样能把调制代码的问题和控制环路的问题隔离省掉大量排查时间。还要注意一点SVPWM的线性调制范围比SPWM宽最大可输出相电压幅值能达到Vdc除以根号3。也就是说PI输出的调制波超过这个幅值时必须做限幅处理否则进入过调制区波形畸变、电流失控是跑不掉的。仿真里我一般直接在SVPWM入口对Uα、Uβ做幅值限制限制值取0.577倍的Vdc再留5%的余量。2.3 中点电位平衡的工程手段中点电位平衡是这项目里最花心思的模块。简单说中点电压不平衡就是上电容和下电容的电压不相等导致输出电压出现偶数次谐波、器件应力不均严重时母线电容直接失效。工程上主流有三类手段。第一类是小矢量时间重分配。定义系数k让P型小矢量的作用时间为k乘以小矢量总时间N型小矢量为1减k的剩余部分。把中点电压偏差上电容电压减下电容电压和当前中点电流方向综合起来用PI或者查表法修正k。这个方案实现最简单改动量也最小我仿真里用的就是这版。第二类是虚拟空间矢量法简称VSVPWM。核心思路是把中矢量在一个周期内的中点电流波动通过精确分配小矢量、中矢量的作用时间让每个采样周期的中点电流期望值为零。这个方案控制效果更好但计算量大扇区划分和占空比表达式都更复杂适合做算法对比研究。第三类是零序电压注入法。因为SVPWM和载波PWM在数学上等价可以在三相调制波里注入合适的零序分量间接实现中点电压平衡。好处是不用专门写扇区表但需要另外推导补偿量并且对不平衡度的响应有延迟。仿真里我建议先把第一类做通再往第二第三类拓展。毕竟第一类只动一个k系数物理意义清晰不容易把整个系统调崩。3. 闭环控制架构与参数整定思路3.1 双闭环架构是怎么定下来的ANPC是个拓扑闭环策略才是系统的大脑。这次我为两种负载场景准备了两套控制方案。场景一是电机驱动采用经典的双闭环矢量控制。外环是转速环输出指令转矩或电流内环是dq轴电流环采用PI控制加电压前馈解耦。因为三电平的电流谐波较小电流环带宽可以拉到开关频率的十分之一到五分之一动态响应明显好于两电平这一点在波形对比里能直观看到。场景二是并网逆变器采用电压定向矢量控制外面是功率环内环是dq电流环前面加一个锁相环PLL同步电网相位。仿真里我会把电网电压幅值跌落、频率偏移都测一遍观察系统是否失稳。无论哪种场景闭环核心都是在dq旋转坐标系下的PI控制。坐标变换的顺序是三相abc先做Clarke变换得到两相静止αβ再做Park变换得到同步旋转dq。这里有一个高频踩坑点Park变换的角度必须跟参考坐标系严格对齐符号写反或者漏掉初始相位角电流环直接发散波形看起来就是一路狂飙到饱和。3.2 电流环PI参数整定的实操参考PI参数整定我一般不会上来就依赖自动调参工具先把物理模型算清楚再说。电流环的开环传递函数可以近似为KPWM除以Ls加R其中L是交流侧电感R是等效电阻KPWM是PWM等效增益。对SVPWM来说KPWM可以近似取Vdc除以根号3。按零点抵消极点的思路取积分时间常数Ti等于L除以R那么闭环带宽就由KPWM乘以Kp再除以L决定。期望带宽是ωc的话Kp约等于ωc乘以L再除以KPWMKi等于Kp除以Ti。以一组典型参数为例直流母线540V负载电感5mH电阻0.1欧姆开关频率10kHz期望电流环带宽1kHz。可以算出来KPWM约等于540除以1.732约等于312L等于5mH所以ωc等于2π乘以1000约等于6283弧度每秒Kp约等于6283乘以0.005再除以312约等于0.1Ti等于0.05秒Ki约等于2.0。实际仿真中我算完初值后会在上下30%范围内试凑以“加载后电流无明显超调、不振荡”作为最终判据。转速环带宽取电流环的五分之一到十分之一先把内环做稳再往外环走这个顺序不能反。高中低频参数都定下来后有个细节值得做把PI输出的dq参考电压做反Park变换回αβ再做幅值限幅最后才送进SVPWM。如果不做这一步限幅环节容易和SVPWM内部限幅重复、互相干扰出现“明明限了幅波形还是削顶”的怪问题。3.3 SVPWM和零序注入法的等价性验证很多初学者会有一个困惑为什么有的教材说SVPWM本质上就是注入零序分量的SPWM因为SVPWM算出来的三相占空比跟正弦调制波加了一个三次谐波分量后的占空比是完全等价的。因此在仿真里也可以不走“坐标变换加扇区查表”的老路直接计算duty_a 0.5 0.5乘以m乘以cos(θ)加zero_seq其中zero_seq是零序分量可以用三相调制波的最大值和最小值组合算出来。这个等价关系在验证SVPWM代码时特别有用。我经常写一个小脚本同时用扇区法和零序注入法生成占空比序列对比波形。两边不一致十有八九是扇区编号或者作用时间公式写错了这是定位问题非常高效的手段。4. 仿真建模全流程拆解4.1 主电路搭建与器件模型选择我用的是Simulink环境下的电气系统仿真工具库。主电路大致是这样直流源用理想DC源加内阻模拟母线中点接两个等容值的电解电容C1、C2。容量我第一版取2200微法后来为了更明显观察中点平衡算法的动态过程降到1100微法。ANPC桥臂每相6个IGBT加反并联二极管分别命名为S1到S6。器件模型建议选理想开关加导通压降就够千万别一开始就上热模型否则仿真速度会被拖到难以接受。交流侧负载分两种电机负载用三相RL加反电动势并网负载用三相电压源加线路电感。采样与测量模块方面母线电压、中点电压、三相电流、线电压都要单独加测量单元后面调平衡环和PI全指望这些信号。有个关键细节ANPC桥臂里S3、S4必须用背靠背结构才能双向阻断。仿真里可以用两个IGBT反向串联再反并联二极管来搭别图方便用双向开关理想模块替代因为后面要查门极信号时序器件数量对不上会直接导致调试混乱。4.2 单相桥臂的开关时序表ANPC的驱动逻辑比NPC复杂我建议每个相桥臂先把P、O、N三个输出电平对应的开关状态列成表再写代码。以S1到S6为例一张基本状态表是这样的输出电平S1S2S3S4S5S6P通通断断断断O正向电流断通通通断断O负向电流断断通通通断N断断断断通通这张表是混合调制的基础。实际生成PWM时S4在P电平区间高频动作S3在N电平区间高频动作两者切换点必须严格避开死区时间单独加在每对互补管上。我在第一版仿真里就在这里吃过亏后面专门写了个门极信号分配函数把每个开关管的导通区间单独算好再合成。4.3 控制环路与SVPWM模块的编码实现控制部分我习惯分成四个子系统。一是测量与变换子系统做三相电流的Clarke和Park变换角度来自电机测速积分或PLL输出。二是控制核心子系统放两个电流环PI控制器加前馈解耦项把dq轴的参考电压经反Park变换变成Uα、Uβ。这里前馈项的表达式要跟正方向定义严格一致否则电流环会有静差。三是SVPWM子系统输入Uα、Uβ和母线电压输出三相占空比或直接输出12路门极信号。我用MATLAB Function块写m代码扇区判断、时间计算全放在里面。调试阶段这样最方便后期可以替换成C-MEX或者HDL代码。四是中点平衡子系统采样电容电压差输出P型小矢量的时间调整系数k。平衡环的输出限幅在正负0.3之间防止k系数调整过大把占空比序列打乱。4.4 仿真步长与求解器设置仿真参数方面我最终定下的基础配置是直流母线540VC1等于C2等于1100微法交流负载电感5mH、电阻0.1欧姆开关频率10kHz控制周期10kHz也就是一个载波周期更新一次占空比。仿真用离散定步长步长2微秒对应载波周期的五十分之一。为什么步长取2微秒因为10kHz载波下IGBT开关瞬态至少要有20到50个采样点才能看出尖峰步长再大波形就是糊的再小仿真时间指数膨胀。我做了一次步长对比2微秒下跑0.5秒仿真时间大约要40分钟步长放到5微秒只要15分钟但波形毛刺明显变多。这件事建议大家在项目早期就做个步长扫描记录精度和时间的权衡曲线别等到最后才返工。求解器方面既然用了离散模型就锁死离散求解器别让Simulink自动切换连续求解器。自动切换会带来莫名其妙的数值振荡尤其是中点电压这种高频波动信号最容易出问题。5. 调试中的典型问题与排查实录5.1 常见故障速查表我把自己和周围同事在这个项目里踩过的坑整理成一张速查表遇到问题先按表排查基本能覆盖八成场景。现象可能原因处理办法电流波形持续发散Park变换角度不对或dq轴方向定义反了检查θ角的符号和初相锁定正方向中点电压低频振荡平衡系数k没接入或方向反了加平衡环确认中点电流流向相电流出现平顶削波PI输出超限幅进入过调制区入口限幅到0.577倍Vdc并留余量开环正常闭环崩溃PI没做积分限幅积分项饱和加抗饱和计算积分初值置零低速时电流噪声大开关频率偏低或死区过大升频或加死区补偿波形整体不对称门极信号时序和状态表对不上逐相核对P/O/N开关表5.2 几个值得展开讲的坑第一个坑是死区实现。ANPC一个相桥臂6个管子开关状态组合比两电平多得多死区加错位置轻则波形畸形重则直通炸母线电容。我第一版图省事用“一相只有两路PWM”的思路去分配6路门极信号结果S3、S4在切换点同时导通母线电压直接把桥臂短路。后来老老实实按状态表每对互补管单独加2微秒死区才稳定下来。第二个坑是SVPWM区域判断的边界奇异性。参考电压落在两个region交界线上时作用时间公式会出现除零或者极小值导致占空比跳变。解决方法是做容差处理当判断量的绝对值小于某个阈值时强制归到上一个region。阈值我取1e-6太小不起作用太大会引入相位误差。第三个坑是PI的积分限幅。前馈解耦加得不对或者PLL失锁时电流PI输出会迅速饱和dq电压直接顶到限幅值。一旦饱和光调Kp和Ki是没用的必须加积分抗饱和把输出限幅后的误差反馈回积分项同时把积分初值置零。第四个坑是仿真初始时刻的中点电压偏差。直流电容初始电压如果不设一致第一个工频周期中点电位会大幅漂移。正确做法是把C1和C2的初始电压都设置为270V正好是母线电压的一半让平衡算法从头就有合理基准。5.3 仿真波形怎么判读才有价值跑通仿真只是第一步判读波形才是仿真研究里最见功力的环节。我从这个项目总结出一个实用的观察列表。稳态相电流THD用功率分析工具或MATLAB的fft函数算10kHz载波下做到5%以内算及格3%以内算优秀。中点电压波形看是否以六倍基波频率或载波频率做小幅度波动如果出现明显的低频振荡说明平衡环没起作用或k系数方向反了。单周期开关序列把单个开关周期展开检查每相输出是否从P到O再到N连续切换确认没有跳变。动态响应指标给定转速或功率阶跃看电流环响应时间是否跟理论带宽吻合超调量和恢复时间都要有记录。这套列表式验收方式建议每个做仿真的朋友都建立起来。仿真里波形好不好看一目了然但只有对照物理指标去判读才能反推出算法哪里需要优化。6. 个人体会与后续扩展最后说几点总体感受。第一仿真做的是复现不是发明。调试ANPC这类比较成熟的拓扑时不要指望一次把调制、平衡、闭环全做对。建议严格按“开环调制单相验证、开环三相验证、开环中点平衡、闭环电流内环、关闭环外环”的顺序逐步推进。每完成一步就把该模块的结果存档出现问题可以做二分回退这对排查时间成本的影响非常大。第二我对ANPC最看重的是它的调试友好性。因为六个管子全部有源可控调制方式和平衡策略的自由度远高于NPC很多在两电平上很难实现的容错策略比如开关管故障后的重构在ANPC上可以逐步做出来。仿真阶段把状态冗余和容错逻辑验证好对后续样机调试会有不小帮助。第三SVPWM本身不是难点难点是控制对象动态特性的建模。做闭环仿真时花在Park变换、PI限幅、PLL上的调试时间往往比SVPWM本身多得多。建议拿到算法代码后先跑开环模型确认调制正确再闭环保底这能让你少崩溃一大半。后续我打算把这套仿真模型往两个方向扩展一是加入开关管故障注入做容错控制对比二是把这套SVPWM的扇区表改写成FPGA可综合的定点算法为硬件在环测试打基础。到时候再继续记录。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑