ARTICLE DETAIL

资讯详情

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

三相级联H桥载波移相仿真:120度相位差原理与模型搭建

三相级联H桥载波移相仿真:120度相位差原理与模型搭建 三相级联H桥的载波移相仿真在电力电子圈里算是个老话题但真正能把“载波相位差120度”这个事从原理到模型完整讲透的干货其实不多。今天就直接点同一相里三个H桥各自的三角载波在相位上依次错开120度输出纹波能被压下去一大截。这篇文章要解决三件事——为什么要错开120度、错开之后纹波是怎么没的、以及从零搭建一套三相三模块CHB仿真模型时哪些参数和细节最容易让人翻车。适合正在做级联变流器、储能PCS、STATCOM或者模块化多电平相关仿真的同学和工程师不管是毕设仿真还是项目预研按这个思路走基本不会跑偏。1. 先看拓扑和原理为什么级联H桥要玩载波错位1.1 三个H桥串联后输出电压到底长什么样级联H桥Cascaded H-BridgeCHB的结构一句话就能说清楚每个功率模块是一个H桥直流侧独立隔离供电交流输出端首尾串联多个模块的电压叠加成最终的相电压。以三相系统为例每相由三个H桥模块串联A相就是模块A1、A2、A3的输出端串在一起B相和C相同理。单个H桥里四个开关管通过不同的开关组合可以输出Vdc、-Vdc和0三种电平。三个模块串联之后相电压理论上就是三个模块输出电压的代数和。如果每个模块都能输出三电平那么三个模块叠加后相电压最多可以出现7个电平也就是±3Vdc、±2Vdc、±1Vdc和0。这个“多电平”的特性非常重要输出电压不再是在两个极值之间来回猛跳而是分成很多小台阶逼近正弦波台阶越多波形越接近理想正弦谐波含量天然就低。我经常用一句话来类比一个H桥输出的是一块一块粗糙的石砖路三个H桥串联起来相当于把路面切成了更多更细的小砖块走起来对负载而言就平顺得多。回到载波移相这个主题上。多电平只是给了我们一个“可以做文章”的舞台真正决定纹波大小的关键是这些模块的开关动作在时间上怎么配合。如果三个模块的载波完全同相三个模块在同一个时刻一起跳变叠加后的输出只是幅度变大跳变频率并没有变纹波该多大还是多大。但如果把每个模块的载波在时间轴上错开让它们轮流跳变输出端看到的开关动作密度就上来了这正是载波移相PWMPS-PWM的核心思路。1.2 载波移相的本质不提高开关频率却把等效频率抬到3倍开关频率和纹波是一对天生的矛盾。提高开关频率纹波减小、滤波器体积变小但开关损耗上升、散热压力变大、对器件驱动要求也更苛刻。级联H桥的载波移相厉害在什么地方它能在每个模块开关频率完全不变的前提下让整个系统的等效开关频率成倍往上翻。以每相三个模块为例。假设每个模块的载波频率都是fcA相三个模块的载波相位分别是0度、120度、240度。从单模块的视角看开关动作还是以fc的节奏发生但从系统输出端看三个模块的跳变时刻被均匀错开了相当于在一个载波周期里出现了3次有效的开关事件等效开关频率就是3fc。这个“等效开关频率”直接决定了输出电感上的纹波电流。纹波电流的大小和电压跳变产生的伏秒面积有关也和谐波分量的频率有关。等效开关频率越高相同的电压谐波幅值作用在电感上产生的谐波电流就会越小因为电感的阻抗随频率升高而增大。说白了载波移相就是用“相位编排”白嫖了3倍的等效频率既没有多烧一分开关损耗又拿到了纹波大幅下降的好处。我实测下来的经验是在同样的直流母线电压、同样的负载电感、同样的模块开关频率下三相三模块CHB用载波移相之后电感电流纹波的峰峰值通常能降到载波同相方案的几分之一。效果非常直观Scope里一眼就能看出来。1.3 120度从哪来360度除以模块数这个120度一点也不神秘。每相有三个模块载波是周期信号一个周期对应360度电角度。想让三个模块的开关动作在时间轴上均匀错开自然就是把360度平均分成3份每份120度。推广到一般情况每相N个模块载波相位差就是360度/N。N等于5就是72度N等于7就大约是51.43度。这里有一个容易踩的坑必须单独拎出来讲120度是同一相里三个模块“载波”的相位差不是三相调制波的相位差。三相调制波A、B、C之间也差120度那是为了产生对称的三相基波电压属于调制波层面的东西。载波移相解决的是“同一相内部多个模块如何交错开关”的问题调制波解决的是“三相电压如何形成旋转磁场”的问题。两者完全不是一个维度仿真的时候如果混在一起波形会非常怪异。为什么一定要“均匀”错开因为均匀分布的相位能够最大程度地让部分谐波分量在叠加时相互抵消。如果相位分布不均匀比如只有两个模块错开90度、第三个模块却和第一个同相那么某些谐波不仅不会抵消还可能在输出端叠加增强纹波该降的没降不该有的谐波反而冒出来了。2. 相位错开之后纹波是如何一点点被压下去的2.1 谐波频谱视角低次簇抵消高次簇外推要理解载波移相为什么有效最直观的方式是看频谱。PWM调制本质上是在用载波对调制波进行斩波输出波形里除了50Hz基波还有一堆分布在载波频率整数倍附近的谐波簇。对于单模块SPWM谐波主要集中在载波频率fc及其边带附近比如fc±2f0、2fc±f0这些位置。当三个模块的载波相位分别错开120度之后情况发生了一个很微妙的变化。对某些谐波次数三个模块对应的谐波分量在矢量上是均匀分布的叠加结果刚好等于零这些谐波就被“抵消”掉了而对另一部分谐波叠加结果不为零会保留下来。整体结果就是fc附近的低次谐波簇幅度大幅下降比较明显的谐波能量被推到了3fc附近也就是N倍载波频率的位置。谐波从低频段被挪到高频段这个意义非常大。一方面低频谐波更难被无源滤波器滤除需要更大的电感电容另一方面谐波频率一旦翻倍同样的LC滤波器衰减能力就大幅提升。所以载波移相不仅降低了纹波幅度还改变了谐波的“面貌”让后级滤波变得更轻松。可能有人会问那3fc附近多出来的谐波怎么办实际上再往后还有5fc、7fc这些更远的谐波簇但它们的幅度逐级衰减而且频率已经很高对电流纹波的影响远不如原来的fc附近谐波。从工程角度讲这是非常划算的交换。2.2 滤波视角电感对高频纹波的天然衰减从时域纹波的角度再捋一遍。负载电感上电流纹波的大小可以近似用这个关系理解电感两端的高频电压分量除以该频率下的电感阻抗XL2πfL就得到高频电流分量。频率越高感抗越大同样的电压谐波产生的电流自然越小。载波同相时三个模块同时开关输出电压在±3Vdc之间大跨度跳变跳变频率只有fc。载波移相后虽然每个模块的开关频率还是fc但三个模块轮流动作输出电压跳变的节奏变成了3fc跳变幅度也被分散成更小的台阶。高频谐波的幅值降低了频率又抬高了双重作用之下电感电流纹波被压得死死的。我习惯用一个比喻一群人搬东西进门如果所有人同时迈步整个队伍上下颠簸得很凶如果三个人轮流出脚把节奏错开虽然每个人的步频没变但队伍整体平稳得多。载波移相做的就是这件事——把能量注入的节奏匀开瞬时冲击就被抹平了。2.3 一张表和一句比喻效果对比把载波同相和载波移相N3的关键差异放到一张表里看起来更清楚。对比项载波同相载波移相120度每模块开关频率fcfc不变系统等效开关频率fc约3fc首个明显谐波簇位置fc附近3fc附近谐波电流幅值同电感、同母线基准明显下降输出纹波电流基准显著减小开关损耗基准不变这张表里最值得记住的是中间两行等效频率翻了3倍谐波簇从fc被推到了3fc。开关频率没有增加一分钱成本纹波却实打实降了下来。级联H桥在中高压大功率场合这么吃香载波移相是最大的功臣之一原因就在这里。3. 从零搭建三相三模块CHB载波移相仿真模型3.1 工具选型与仿真框架为什么我选Simulink定步长仿真工具方面MATLAB/Simulink是最主流的方案PLECS做功率器件损耗分析更精细PSIM也有人在用。我的建议是如果你是做算法验证和波形预研Simulink就足够了自带的powergui可以做FFT分析电气库里有现成的电力电子器件文档也多。这里我以Simulink为例展开。模型搭建之前先定一个非常重要的框架仿真类型选定步长离散仿真不要一上来就开变步长ode15s去解PWM。原因是PWM比较器输出是开关逻辑变步长求解器为了捕捉开关动作会把步长切得非常细仿真速度慢得离谱。定步长下仿真步长需要比载波周期小两个数量级左右后面参数章节我会给出具体数值。模型的顶层结构可以这样规划三相调制波模块、九路载波模块每相三路共三组、每路PWM比较器、三个H桥子模块每相、三相负载和测量模块。A相三个模块的载波相位分别是0度、120度、240度B相和C相同样各自配置三路相位0、120、240度的载波只是调制波相位分别滞后或超前120度。ABOUT 载波这里提一句三相各相同序号的载波相位可以保持一致这是最常见的配置方式。3.2 三个120度错位载波怎么生成载波生成是很多人第一步就卡住的地方。最干净的做法是用MATLAB Function模块生成三角波函数直接内部带相位入参。下面这个函数我一直在用载波频率和相位偏移都可以外部设定function y triCarrier(t, T_sw, theta_deg) % t : 仿真时间 % T_sw : 载波周期比如1/1e3 % theta_deg: 载波相位偏移单位度 t_shift mod(t T_sw * theta_deg / 360, T_sw); if t_shift 0.5 * T_sw y 2 * t_shift / T_sw; else y 2 - 2 * t_shift / T_sw; end end这个函数的输出是一个幅值0到1的三角载波theta_deg设为0、120、240时恰好对应三个错开120度的载波。需要注意载波周期T_sw必须和仿真时钟对上相位偏移的计算规则是正的theta_deg表示滞后载波的起点在时间轴上向右平移theta_deg/360个周期。如果你不想用MATLAB Function也可以用Repeating Sequence生成一个标准三角波然后用Transport Delay分别延迟T_sw/3和2T_sw/3。这个方法的好处是纯Simulink积木搭建无需写代码缺点是延迟模块会占用不少内存而且延迟时间不能随意改成与载波周期解耦灵活性差一些。我自己更推荐函数法参数化能力好换个载波频率只需要改一个常数。3.3 调制波、PWM比较和H桥开关逻辑调制波就是标准三相正弦波。载波幅值通常是1所以调制波幅值设为调制比M比如0.9频率50Hz。A相是0.9sin(2pi50t)B相相位滞后120度C相相位超前120度或者滞后240度效果一样。PWM逻辑这里要分双极性和单极性两种情况说。双极性调制最简单三角载波大于调制波时输出1小于时输出0H桥开关管按1输出Vdc、0输出-Vdc。它的优点是实现简单一个比较器就搞定但缺点也很明显每个模块输出只有±Vdc两个电平三个模块串联后的相电压电平数少纹波相对大。级联H桥工程上更常用的是单极性调制。每个模块的左右两个桥臂分别与调制波和反相调制波比较左桥臂用载波和M比较右桥臂用载波和-M比较。这样输出电压可以在Vdc、0、-Vdc三个状态之间切换三个模块叠加才能得到7电平相电压。具体到H桥开关管的映射逻辑可以这样梳理载波小于M时左边桥臂的上管导通模块输出端电位被抬高。载波小于-M时右边桥臂的下管导通模块输出端电位被拉低。两个桥臂配合起来正半周输出Vdc和0交替负半周输出-Vdc和0交替。在Simulink里如果不关心开关管的导通损耗细节可以不做完整的IGBT桥臂而是用一个受控电压源模拟模块输出模块的PWM状态决定受控源输出Vdc、0还是-Vdc然后把三个受控源串联。这样仿真速度快算法验证阶段足够用了。等需要分析损耗和开关应力时再升级成完整的电力电子开关模型。3.4 H桥串联、三相连接与负载设置每个模块的输出端按首尾串联的方式连接上一模块的正输出端接下一模块的负输出端A相三个模块串完得到一个相输出端口。B相、C相同理。三相负载可以采用Y型连接三相相端口分别接三个电感电感末端接在一起形成中性点或者接成三角形看你的应用场景。负载电感的选择和纹波设计有关。一般可以先按额定电流和允许纹波系数算一个初值。举例来说母线模块电压Vdc200V等效开关频率3kHz纹波电流峰峰值目标控制在额定电流的10%以内电感量大致在几毫亨到十几毫亨量级。仿真时电阻负载可以选10欧姆左右电感选5mH左右起步观察纹波是否在接受范围内再根据结果调整。仿真时间不需要太长。载波1kHz、基波50Hz的情况下跑0.2秒能看到四个完整基波周期足够观察稳态波形和FFT分析了。如果想看启动暂态那就从0时刻开始把0到0.2秒全部录下来。4. 参数定不出好结果先按这套基准值跑通4.1 载波频率1kHz起步等效3kHz看效果载波频率的选择是仿真里第一个要定的参数。太低比如200Hz等效后只有600Hz电感电流纹波会非常大波形看起来全是锯齿太高比如20kHz固定步长必须压到很小仿真耗时成倍增长而且工程上也不需要这么高。我建议仿真验证阶段先取fc1kHz。这个频率下三个模块错开120度后等效开关频率3kHz输出电感上的纹波已经比较好看同时仿真步长可以放宽到1微秒级别跑0.2秒也就几十秒的事。等你把整个系统逻辑全部跑通再尝试把fc提到5kHz或10kHz观察纹波变化趋势。具体到步长设置定步长建议取载波周期的1%到2%1kHz载波就是10到20微秒。如果你观察到的PWM波形边缘有锯齿或毛刺说明步长偏大往下降到5微秒再看。这个步长下一个10毫秒的基波周期有500到1000个采样点波形精度和仿真速度可以平衡得很好。4.2 死区与单极性调制从理想仿真走向硬件仿真模型可以把死区忽略掉这在算法验证阶段是完全合理的。但如果你想模拟更接近真实硬件的情况就必须加入死区。死区的作用是防止H桥同一桥臂上下管直通典型值1到3微秒。在Simulink里最简单的做法是在PWM信号后面加一个On-Off Delay模块上升沿延时死区时间下降沿不延时这样就能模拟出“开关动作滞后”的效果。必须提醒的是死区不是无害的。加了死区之后输出电压波形会出现低次谐波畸变电流过零点附近尤其明显。很多人在仿真里看到纹波突然变大、波形出现削顶排查半天发现就是死区时间设置过长。我的建议是先不加死区把整体方案跑通再加死区评估它对波形的影响两者分开做别混在一起掩盖问题。单极性调制的实现细节也值得多写两句。单极性下每个模块的输出状态是三电平的但如果桥臂开关管的逻辑写反很容易出现某个模块永远输出单极性电平、模块间电压不均的情况。调试的时候可以单独观察每个模块的输出电压波形确认每个模块都在正半周输出Vdc和0负半周输出-Vdc和0这就是正常现象。如果某个模块输出方向反了多半是左右桥臂的上管逻辑写反了。4.3 调制比与母线电压锁定线性调制区调制比M直接决定输出基波电压的幅值也决定了调制是否工作在线性区。M0.9时调制波峰值0.9三角载波峰值1所有过零点都发生在载波范围内调制波形完整谐波最小。如果M超过1就进入过调制区调制波峰值超出载波范围输出波形会出现明显的削顶和低次谐波急剧增大这是工程上尽量要避免的。直流母线电压Vdc的选择要结合目标输出电压来定。三个模块串联每个模块Vdc200V单极性调制下相电压基波峰值理论上最大可以接近3×200600V。如果你想仿真一个线电压690V的场合可以反推每个模块的母线电压。仿真验证阶段Vdc取整数、方便计算最好200V、300V、400V都可以。母线电压在仿真里建议先用理想直流源不要急着加直流电容和等效电阻。原因很简单理想直流源能让调制算法在“干净”条件下先跑通输出的问题只和PWM逻辑有关而一旦接入电容直流侧电压波动会耦合到输出侧波形分析难度就变大了。等PWM逻辑全部验证没问题再把直流源替换成整流电容模型考察直流电压纹波对输出的影响。5. 仿真结果怎么自查电平数、纹波和FFT5.1 数数电压台阶7电平是最好用的试金石仿真跑起来之后第一步不是看FFT而是先看相电压波形。三相三模块、单极性调制、载波移相正常工作时A相输出电压在稳态下应该能明显看到7个电平台阶±3Vdc、±2Vdc、±1Vdc和0。数电平台阶是排查PWM逻辑错误的最好方法如果模数有限大概率是某个模块的开关逻辑不对或者模块间的串联顺序接反了。线电压的电平数比相电压更多三模块下单极性调制的线电压理论上有13个电平。线电压台阶数更多人眼不好数我更推荐直接看相电压。如果相电压看不到7个台阶而是只有4个台阶±3Vdc、±1Vdc说明你的模块工作在了双极性模式下要么是调制方式设置成了双极性要么是模块的0电平状态没有通过正确的桥臂组合产生。这时候不要急回到PWM生成部分检查左右桥臂的比较逻辑。5.2 纹波测量对比同相与移相才看得出差距纹波电流在示波器里看是一条包络不平滑的电流波形。要量化纹波大小可以把电流信号导入到MATLAB工作区用max和min函数取稳态区间的峰峰值。具体操作电流信号经To Workspace模块存入变量再用一段脚本从数据里取出最后一个基波周期的最大值和最小值两者的差就是纹波电流峰峰值。要真正理解载波移相的贡献建议把模型复制一份把三路载波相位全部改成0度其他参数完全不变分别跑一遍。对比两个模型的电感电流纹波你就能得到一条清晰的量化结论移相方案的纹波通常只有同相方案的一半甚至更低。这个对比实验非常值得做做完之后对整个技术的理解会深很多。注意一个细节做对比实验时除了载波相位其他一切都要一模一样包括仿真步长、负载、Vdc。否则你看到的纹波差异可能是参数不同造成的不是载波移相本身的效果。5.3 FFT分析看谐波簇位置判断移相是否成功Simulink里的powergui自带FFT分析工具这是验证载波移相效果最直接的手段。使用方法是把待分析信号相电压或电流先送到Scope或者To Workspace然后在powergui里选择FFT Analysis设置基波频率为50Hz最大频率建议取5到10倍的等效开关频率比如15kHz。FFT结果出来之后重点观察两个位置一是fc附近1kHz是否还有明显的谐波尖峰二是3fc附近3kHz是否有集中的谐波簇。正常的载波移相结果应该是1kHz附近的谐波幅度大幅下降主要谐波能量集中在3kHz附近。如果1kHz附近还是耸着一个大尖峰说明三路载波的相位没有真正错开或者载波没有同步。FFT分析还有一个常见误区仿真时间太短导致频谱分辨率不够。FFT的分辨率和仿真时长成反比如果你只仿了0.02秒频率分辨率只有50Hz1kHz和3kHz附近的谐波在频谱上是糊成一团的。建议FFT分析时仿真时长至少0.2秒这样频谱分辨率达到5Hz谐波簇的位置能看得很清楚。6. 载波移相仿真路上的常见坑与排查实录6.1 载波不同步波形发乱的第一号嫌疑仿真中最常见的现象就是输出波形杂乱无章台阶数对不上FFT频谱上该压的谐波根本没压下去。这种时候第一件事就是检查载波。把三个载波信号接到同一个Scope里三条三角波应该均匀错开120度也就是相邻两条的峰值之间相差三分之一个载波周期。如果发现三个载波在仿真一开始是错位的但跑了几毫秒之后相位关系乱了多半是三角波函数里的时间基准处理不当。用我前面写的triCarrier函数时所有载波必须使用同一个仿真时钟t并且载波周期T_sw参数保持一致。如果某个载波里不小心把T_sw写成其他值相位关系当然会乱。6.2 仿真步长和求解器PWM仿真的隐形杀手PWM波形对仿真步长极其敏感。定步长设得太大会导致三角载波被“采样”成粗糙的阶梯波和调制波比较时输出的PWM脉冲宽度失真谐波分析结果自然不可信。我见过有人用1毫秒的步长仿真1kHz载波跑出来的波形惨不忍睹还以为是算法写错了。我的经验值是仿真步长不超过载波周期的1%1kHz载波就用10微秒以下。如果模型里还有死区1到3微秒步长更要进一步缩小到死区时间的一半以下否则死区效果根本模拟不出来。求解器记得选Discrete别让变步长求解器去解PWM逻辑不然仿真速度会让你怀疑人生。6.3 120度相位混淆载波和调制波各错各的这个坑非常经典尤其是刚从三相逆变器转到级联H桥的人特别容易犯。三相逆变器只有一组载波三相调制波互差120度级联H桥里调制波依然是三相互差120度但同一相的多个模块还有各自错开的载波。有人把“三相调制波差120度”迁移到载波上做成A相载波0度、B相载波120度、C相载波240度但同一相内部的三个模块载波完全同相——这样仿出来的波形的确不是单模块水平但纹波并没有被真正压下去因为同一相里三个模块还在同一时刻一起跳变。判断这个问题的办法很简单看A相内部三个模块的载波是否分别是0、120、240度再确认B相和C相的载波配置和A相同构只是调制波相位不同。两层相位关系各管各的不要去混。6.4 直流侧电压波动与发散问题把理想直流源换成带电容的实际电源模型后可能会出现两个新问题。一个是电容电压低频波动耦合到输出FFT里低频分量明显变大纹波异常另一个是仿真正式开始前电容初始电压为零启动瞬间流过很大的充电电流可能导致仿真发散。解法也简单实际电容模型的初始电压直接设为目标值Vdc别从零开始充直流电容的容值按工程经验先取一个较大值削弱低频波动对输出的影响。如果仿真仍然发散检查每个模块的直流源是否是独立源模块间是否存在意外的电流回路。级联H桥每个模块直流侧是隔离的如果仿真里不小心把多个模块的直流地连在一起必然出问题。6.5 问题速查表现象可能原因排查顺序相电压台阶数不对调制方式设成双极性、模块串联顺序错误先看PWM逻辑再看拓扑连接1kHz谐波没压下去载波相位未错开、载波不同步先把三个载波放一个Scope里对比波形全是毛刺仿真步长过大、求解器类型不对步长降到载波周期1%以下死区后波形畸变死区时间过大、过零点畸变确认死区与载波周期比例合理仿真发散直流侧非独立、电容无初值检查模块直流地隔离、电容初始电压启动电流巨大直流电容初始电压为零电容初始值设为目标Vdc按这个表去排查绝大多数载波移相仿真的坑都能在十分钟内定位。最后分享一点我自己的实操体会。载波移相这个技术本身不复杂最容易出问题的反而在仿真模型那些容易被忽略的细节里——步长设置、载波同步、相位混淆、直流源隔离。我每次搭好模型都是先数相电压的台阶数台阶对了才做FFT分析。哪怕FFT结果再漂亮台阶不对也说明底层逻辑有问题先别急着改参数。还有如果你想验证移相到底带来了多少收益就老老实实跑一个载波同相对比组让数字说话。仿真嘛真正值钱的不是你跑通了一次而是你能在反复对比中确认每个现象背后的物理逻辑都说得通。
返回列表