先聊几句题外话。做电力电子仿真的朋友应该都有体会三相整流这块最开始接触的都是二极管不控整流后来加了晶闸管再到两电平PWM整流器一般课程和教材也就讲到这个层面。但真正研一跟项目或者做毕业设计的时候突然发现好多课题都在提三电平整流器什么NPC拓扑、三电平SVPWM、中点电位平衡一时半会儿确实容易懵。这篇文章想写的就是基于三相三电平整流器、PI双闭环控制、Simulink仿真这个组合的完整思路。我默认你至少熟悉两电平PWM整流器的基本控制框架但即使没接触过按着步骤也能把模型搭起来。文章里会涵盖三电平拓扑为什么值得用、双闭环结构怎么拆、Simulink里每一步怎么搭、PI参数怎么试、以及我最想分享的——那些仿真里非常容易踩、但书上从来不会写的坑。1. 三电平整流器到底解决了什么问题值得多花这么多功夫很多人第一次看到三电平整流器脑子里蹦出来的问题是两电平PWM整流器不是已经能调功率因数了吗谐波也不大为什么还要搞三电平这个问题想明白了后面看拓扑和控制心里就有底。1.1 从中高压、大功率场景说起两电平PWM整流器在中低压小功率场合380V几十千瓦以下确实够用。但是到中高压、大功率比如矿井提升、大型风机变频的网侧变流器、城市轨道交通的牵引整流、船舶电力系统直流母线电压动不动就是几百伏甚至上千伏。这时候两电平拓扑的短板就很明显了开关管承受的电压是整个直流母线电压母线电压一上去开关管的选型就很难受要么并联IGBT要么用高压IGBT成本高、可靠性也难保证。三电平整流器通常指二极管中点钳位型NPC每个功率管只需承受直流母线电压的一半。这个特性直接决定了它能用在更高电压等级、更大功率的场合。所以说三电平本质上不是把控制做复杂了找罪受而是为了在高压大功率场景下绕开器件耐压瓶颈这是它的第一个核心价值。1.2 谐波性能更好这可不是玄学很多人印象里PWM整流器的电流谐波已经很小了但三电平还能进一步往下降。原因在输出电压的电平数两电平整流器交流侧每个桥臂输出电压只有正负两种电平三电平则有正、零、负三个电平。波形接近正弦的程度更高电流谐波含量THD就更低。更直白一点说在同样的开关频率和电感量下三电平的电流纹波通常只有两电平的一半左右。这意味着什么意味着你可以用更小的交流滤波电感设备体积重量降下来成本也跟着降。这个指标在工程上很关键尤其是对体积敏感的车载变流器、对重量敏感的船用设备。我见过有人在仿真里用手算级联的正弦波加谐波源来模拟三电平整流器输入电流再用FFT看谐波谱这个方法做预研可以但它代替不了完整的开关模型仿真。谐波到底好不好跟调制方式、开关频率、电感取值都有关系只有把主电路控件搭在一起跑起来才能算数。1.3 为什么偏偏要“整流器”不只是“逆变器加前端”谈到三电平很多人的直觉是先想到逆变器。确实目前三电平逆变器用得已经很成熟了。但整流器这一端的控制要比逆变器多一层心思逆变器盯的主要是输出侧波形整流器则必须管住输入侧功率因数、直流电压稳定还要考虑能量能不能回馈电网。电网电压通常不是理想正弦谐波、不平衡、频率波动都可能出现。如果整流器控制得不好直流电压会抖输入电流会畸变严重时还会触发保护。这也是我为什么建议做这个题目它把坐标变换、PI控制、调制、主电路拓扑全串起来了做完一轮电力电子控制的基本功和整体系统观都会上一个台阶。2. 双闭环PI控制的架构拆解电压外环和电流内环各司其职三电平整流器本身不复杂它的难点很大程度上在于控制策略。很多人搭模型的时候图简单就用传统的dq旋转坐标系下PI双闭环这对三相三线制对称系统其实够用而且只要各环节配合得当效果并不差。2.1 控制目标与坐标系选择先明确控制目标一共三个直流母线电压Udc稳在给定值比如直流侧500V并且负载突变时能快速恢复。网侧电流正弦化功率因数大致为单位功率因数。能量双向流动整流时网侧向直流侧送能量制動时反过来。为了达到这三个目标通常把三相静止坐标系abc下的正弦交流量通过坐标变换变成两相同步旋转坐标系dq下的直流量。直流量对PI控制最友好因为PI对直流量可以做到无静差跟踪。这里面用到的是Park变换前后还有一个Clark变换Simulink里都有现成模块但你要清楚alpha到dq轴方向的夹角要锁定在电网电压矢量方向上这就是锁相环PLL干的事。实际建模时电网A相电压过零点一般作为Park变换的参考角度起点。如果角度对准了稳态时d轴电流对应有功分量q轴电流对应无功分量。所以要让功率因数等于1就是把iq的指令给到0id由电压外环的输出决定。2.2 电压外环管的是能量平衡不是电压方程电压外环的输入是Udc给定与实际Udc的误差输出是d轴电流指令id_ref。这里有一个初学者容易绕进去的误区直流电压的动态是由母线上功率进出不平衡决定的而不是简单由某个方程直接决定。整流器向直流侧输送功率多了电容上电荷堆积电压才升输送少了电压就跌。所以电压外环本质上是调节“送多少有功进直流侧”这件事是个功率型的调节器。正因为如此电压外环的响应速度通常不能太快。原因有三点第一直流电容本身是一个大惯性环节你要求它响应太快PI输出容易撞上限第二电压环带宽如果高于电流环或者跟电流环接近两个环路之间会出现交互振荡第三电网侧还要考虑到对PFC功率因数校正特性的影响电压环调得过于激进输入电流会跟着出现明显的畸变甚至振荡。经验做法是电压环带宽取电流环带宽的1/5到1/10也就是说电压环响应是电流环里最慢的那一等分之一。我在仿真里常用开关频率5kHz、电流环带宽500~800Hz、电压环带宽100Hz左右这个组合跑下来稳定性还不错。2.3 电流内环PI之外还要做解耦和电压前馈先写三相对称系统在dq坐标系下的电压方程[ v_d -R i_d - L \frac{di_d}{dt} \omega L i_q e_d ] [ v_q -R i_q - L \frac{di_q}{dt} - \omega L i_d e_q ]从这个方程里可以看到d轴和q轴的电流之间存在交叉耦合项ωLiq、-ωLid。如果不管它当q轴电流变化时d轴会受影响两个通道互相牵扯控制效果会变差甚至导致系统不稳定。于是电流环里做了两件常规但很关键的事用PI调节器的输出加上交叉解耦项把d/q轴拆成两条相对独立的通道。再叠加上电网电压前馈项e_d、e_q这样电网电压的波动不会直接作为扰动打到环路上PI只需要处理偏差部分负担轻得多。Simulink里搭的时候解耦项和前馈项都是直接在控制回路的计算链上用加/减模块完成的。有一点要注意解码项放的位置和符号别搞错。你是在把“控制量”转成“调制电压指令”所以应为调制电压d轴指令 PI_d输出 - ωLiq ed调制电压q轴指令 PI_q输出 ωLid eq符号错了解耦会变成增耦输出会明显振荡。2.4 调制层的选择先跑载波再上SVPWM控制算出来的调制电压指令vd*、vq*要先逆变换回静止坐标系再生成制造脉冲。三电平调制有几种路线载波调制同相层叠/反相层叠/交替反相层叠、空间矢量调制SVPWM还有新一点的载波移相或最近三矢量法。从工程落地角度我强烈建议第一次搭模型时先做载波调制准确说用“两个三角载波同相层叠”的方式。它实现最简单两个幅值相同、相位相同的三角波一个偏在正半部分一个偏在负半部分把调制波和这两个载波分别比较就能得到对应的四组互补开关驱动。这样做能先把主电路和双闭环控制跑通把PI调试的逻辑理清楚再来实现SVPWM。等载波调制跑通了再上SVPWM原因有三第一SVPWM直流电压利用率比SPWM高约15%对母线电压要求可以降低第二三电平SVPWM可以直接用冗余小矢量做中点电位平衡调速能力比载波调制自然一些第三找工作、做项目简历里写“熟悉三电平SVPWM”和写“会SPWM载波调制”含金量不一样。3. Simulink建模实操从主电路到控制链路一步步搭起来Simulink自带的demo里其实有三电平整流器的参考模型但很多人直接打开看一脸懵换版本还容易找不着。我建议按下面这个步骤自己搭每搭一步都清楚那部分干什么用。3.1 模块版本与参数准备我用的是较新版本的Simulink电气部分用Simscape Electrical原来叫SimPowerSystems。建议先建一个MATLAB的初始化脚本把所有参数集中放在一起方便后面传参和批量试参。下面是我常用的初始化脚本片段你可以按需修改%% 三相三电平整流器主电路参数 fs 5e3; % 开关频率 5kHz Ts 1/fs/1000; % 仿真采样周期离散化步长1e-7 s 量级 L 3e-3; % 交流侧滤波电感 H R 0.05; % 电感等效电阻 ohm模拟铜损 C1 2e-3; % 直流母线电容上臂 F C2 2e-3; % 直流母线电容下臂 F Udc_ref 500; % 直流电压给定 V Ugrid_rms 220; % 网侧线电压有效值 V freq 50; % 电网频率 Hz R_load 20; % 直流侧负载电阻 ohm约12.5kW %% 电流环PI kp_id 3.0; ki_id 200; kp_iq 3.0; ki_iq 200; %% 电压环PI kp_udc 0.5; ki_udc 20; %% 三电平SVPWM相关后面扩展用 Ts_pwm 1/fs; Vdc Udc_ref;有几个参数要注意开关频率5kHz是常规工业值。开关频率越高谐波越小但开关损耗增大仿真步长也要求更小仿真时间更长。做验证用5k~10kHz都不算跑偏。电容容值两个电容串联每个取2mF等效到中点看上下两半都比较大一方面能扛住负载突变另一方面中点电压也相对稳定。实际工程里还要根据电压纹波要求和掉电保持时间来算仿真中主要看动态响应。电感量3mH对应大概10%的基波阻抗在50Hz下约0.94Ω这个量级在小功率仿真里比较合适。电感太大电流响应慢太小纹波大、THD不好看。3.2 主电路部分怎么搭主电路从电网侧到直流侧一共五段三相交流电源 → 交流电感 → 三电平桥臂 → 直流电容中点 → 直流负载。交流电源用Three-Phase Source设成理想电压源即可中点不需要接地因为三线制系统没有中线接地会引入错误回路。三电平桥臂两个选择一是直接用Simscape Electrical里的“Three-Level Bridge”参数里选NPC拓扑二是用六个带反并联二极管的IGBT和六个钳位二极管自己搭。我建议初学阶段直接用现成模块因为自己搭IGBT需要设置管子型号、散热、开关损耗等一堆东西很容易在接口上出错等你把装置原理完全吃透了再自己搭功率管细节也不迟。直流电容部分特别提醒一下NPC拓扑要求直流母线有上下两个电容它的中点M是交流桥臂的钳位点不接到电源中性线。直流负载就并在两个电容两端。负载我一般用可变电阻或者干脆用阶跃信号控制一个三相断路器在仿真中途切电阻模拟负载突变这样可以看到电压环的动态。3.3 控制链路加进去控制链路从采样到发出驱动顺序是这样的采样三相电流ia/ib/ic、直流电压Udc、直流中点电压Vn用于中点平衡。三相电压ea/eb/ec进PLL得到电网角度theta。Clarke变换把abc转到αβ再Park变换转到dq。电压外环PI输出id_ref电流内环两路PI加解耦加前馈得到vd*、vq*。反Park变换把dq指令变回αβ静止坐标交给调制模块。调制模块产生12路驱动脉冲NPC三分叉每相4组互补送到底层IGBT。Simulink里坐标变换模块我习惯自己搭数学公式不用内置的“abc_to_dq0”变换构造成d轴对齐A相电压矢量。这样角度关系、符号约定都了然于心调试时也不会被模块内部的相位关系坑住。我自己搭的倒是不多但至少你得知道θ的零点到底对应哪一相电压峰值。需要注意控制回路采样频率要和PWM载波同步这里我直接用离散控制系统步长取1e-5秒跟5kHz开关周期200μs相比Tustin近似精度足够。3.4 调制部分两种实现都写一下载波调制方式第一次跑通推荐思路是三电平SPWM需要两个三角载波一个在0~1之间一个在-1~0之间这里范围为调制波标幺后的结果。把调制波和上下载波分别比较输出四组控制信号的组合。SVPWM方式在后面加上三相指令电压经扇区判断根据扇区选择小矢量、中矢量、大矢量以及冗余小矢量再配合中点电位平衡规则计算各矢量作用时间。这一步代码量不算小但逻辑清晰。Simulink里可以用MATLABFunction写也可以用Stateflow写但Java不太适合MATLABFunction最直接。4. PI参数整定与仿真调试中的关键细节模型搭完按下仿真按钮会发现各种问题。波形不对先别急着改参数先确认接线和角度对不对。我的经验是分三级先看“通不通”——有没有发散再看“正不正”——直流电压能不能稳定在500V最后才是“好不好看”——纹波、THD、动态超调。4.1 整定顺序电流内环先行PI整定顺序一定是先内环后外环。电流环先整给了它一个可靠的落点电压环才有基础。电流环整定的粗略办法是先把积分系数设置一个小值比如50把比例系数从0.5开始逐步往上加观察d/q轴电流对阶跃指令的跟踪速度。电流响应比较容易观测在控制回路里给iq_ref直接切一个阶跃比如0→10A看实际iq是不是在几个毫秒内跟上且不振荡。如果跟踪慢加大kp如果出现振荡减小kp或适当增大ki。当一个kp值下系统刚好不振荡、响应又够快时再把ki慢慢往上抬用来消除稳态误差。这里有个直觉法则电流环闭环等效时间常数大约取开关周期/载波比×裕量工程上整到电流阶跃响应时间5~10ms以内就够用了不用追求过猛过猛带来的问题是容易激发开关纹波。4.2 电压环整定的快慢调节电压环整定可以等电流环稳了之后再做。在直流侧接一个负载电阻给一个额定负载先调kp比如0.2看Udc超调大小再慢慢加ki改善稳态。最典型的调试过程是这样的电压环kp给太小Udc爬升非常慢达到500V用了好几秒而且带载后电压会塌陷kp给太大启动瞬间Udc冲上去很高可能冲到600~700V甚至有脉冲尖峰。ki太大容易产生低频振荡Udc在目标值附近以几Hz的频率来回摆。这种情况下我一般先固定kp0.3ki10跑一遍看Udc稳态波形。之后每次把kp往上加0.1直到带载后电压恢复时间你觉得可以接受然后再小幅加ki观察电压环振荡临界点留30%裕量取那个临界值偏小。4.3 三电平特有点中点电位平衡怎么调两电平没有中点三电平有。NPC拓扑对中点电压很敏感如果上下电容电压不一致会造成交流输出波形畸变器件电压应力不均长期运行还可能损坏电容。仿真里最常见的现象是Udc1和Udc2差出二三十伏。中点不平衡的原因本质是由矢量作用时的中点电流不为零引起的。控制手段主要有两个用冗余小矢量调节三电平SVPWM里有正小矢量和负小矢量它们在输出线电压上效果一样但对中点电流的作用相反。通过选择合适的小矢量可以把中点电压拉回来。叠加零序电压调节在载波调制里给三相调制波叠加一个合适的共模分量也能改变中点电流流向。仿真调试时先看中点电压是不是长期偏置如果只是周期性波动属于正常情况如果长时间单向偏移多半是SVPWM里小矢量配比没处理好。可以先把中点电流加到观察窗口里看它和三相调制波之间的关系再调整控制策略。4.4 数据显示和FFT分析Simulink跑完除了Scope看波形最好用Powergui的FFT工具看输入电流谐波谱。我的习惯是取电流稳态段不要取启动段。设置基波50Hz最大谐波次数一般看到几千赫兹以内比如50次谐波。看THD数值和低频段的突出谐波。三电平在5kHz开关频率附近会有开关边带谐波群这是正常的。如果THD明显偏高比如超过10%检查方向一般是一是电感量不够电流纹波大二是载波比不合适三是电流环参数过猛导致电流波形出现包络抖动。4.5 软启动和预充电直接上电启动整流器会遇到一个大问题直流侧电容从0充电瞬间冲击电流巨大不仅仿真里波形难看实际装置里还会烧整流桥、触发保护。所以工程上必须做预充电/软启动。仿真里最简单的实现方式是在直流侧加一个接触器控制的预充电电阻或者给Udc_ref一个斜坡信号让电压外环的输出限制住初始冲击电流。我仿真时习惯给Udc_ref一个二阶斜坡从0在0.5秒内升到500V这样启动冲击电流被限制在额定值的1.5倍以内波形很温和。这个细节虽然不影响最终稳态结果但它决定了你的仿真到一个新平台后会不会“启动即炸”强烈建议保留。5. 三电平SVPWM的核心逻辑与往深里走的方向如果只是把载波调制版本跑通这篇内容的仿真价值已经到位了。但标题既然写了“三相三电平整流器”我默认你早晚要上SVPWM所以这块单独拿出一节讲透。5.1 三电平SVPWM为什么比两电平复杂两电平SVPWM只有8个开关状态6个非零矢量和2个零矢量三电平有27个开关状态对应19个基本矢量。开关状态增多意味着矢量选择更灵活但扇区判断和矢量作用时间计算也复杂很多。理解三电平SVPWM比较好的切入角度就是把它拆成许多个小六边形。三电平空间矢量图里存在六个扇区每个扇区能进一步划分成四个小三角区域。落在某个小三角里的参考矢量用该三角形三个顶点的矢量来合成再用伏秒平衡算出作用时间。需要选“顶点”里两个冗余小矢量时中点电位调节就额外插进来分配它们的占空比。5.2 实现方式和常用代码结构我建议用MATLABFunction写扇区判断和七段式时间计算输出为“开关状态编码→管驱动”的组合逻辑函数。骨架逻辑是把参考电压矢量映射到第一个扇区判断它落在该扇区的哪个三角形查找对应三个矢量的作用时间和开光表按中点平衡规则调整正/负小矢量占比生成三相状态序列并按时序派发给IGBT驱动信号。这步实现要多花点时间但完成后你不仅能画整个三电平空间矢量图对冗余矢量的理解也会从“背概念”变成“看得见摸得着”。5.3 往深里走的几个方向这个题做完可以继续往下面任选一个方向深入不平衡电网下的控制当电网电压不平衡时dq轴电流会有2次谐波分量。常用的解法有正负序分离、在平衡控制策略中增加负序抑制环或者用比例谐振控制器替代PI只处理特定频率的波动。比PI更高级的控制PI是线性控制器遇到负载大范围变化、参数不确定性较强的场景鲁棒性有限。比较自然的一条路是把电压外环换成模型预测控制MPC或者滑模控制电流环保持PI或全换MPC另一条路是加扰动观测器进行前馈补偿。参数在线辨识和失配分析整定PI时认为电感L、电阻R是准确的但实际系统里L会饱和、R会随温度变化。可以加入龙伯格观测器或递推最小二乘估计这些参数然后在线修正PI参数——这已经是“参数自适应控制”的方向了。硬件在环测试仿真验证完成后如果手头有实时仿真器比如常见的RT平台把控制器搬到HIL平台里跑可以发现很多纯离线仿真发现不了的问题比如计算延迟、离散化误差、接口饱和等。这个方向对找工作帮助非常大。6. 常见的仿真异常及排查思路速查表仿真调试占据了这个题目大部分的时间下面这些异常我都实测遇到过给出一份排障速查。故障表现可能原因排查与解决启动时电流巨大尖峰直流侧未预充电、Udc_ref给阶跃加斜坡启动或加预充电电阻回路直流电压振荡1~5Hz低频摆动电压环PI太强或带宽与电流环接近减小电压环kp/ki或提高电流环带宽电流发散成锯齿状电流环PI过大/采样频率不够/离散步长过大减小PI增益缩小Ts如到1e-6检查PWM采样保持电流波形上下半波不对称三相电感不平衡或电网电压含直流偏置检查电感参数是否三相对称电源里去掉直流分量中点电压垮塌向一侧SVPWM冗余小矢量未用/零序电压补偿不对调整中点平衡策略检查小矢量配比直流电压纹波很大直流电容容值过小/负载功率过大加大电容或降低负载功率观察纹波是否按容值反比改善波形看起来“毛刺”很重仿真步长过大/开关噪声混入采样信号缩小步长对采样信号加调理滤波但注意滤波会引入延迟THD很高且在低频有明显奇次谐波电流环响应慢、id/iq耦合未完全解耦检查解耦项符号和参数L取值是否匹配排查总原则一次只动一个变量改完先看现象有没有方向性变化不要同时调三个PI参数然后靠运气。7. 关于仿真项目管理的一些个人体会最后这部分算不上技术但属于我踩过不少坑之后觉得值得分享的东西。结果记录非常关键。仿真参数一多调完可能过两天就忘了当时为什么取这个值。我后来养成一个习惯每跑出一组可接受的波形就在脚本里手动记下参数组合和对应波形特征启动超调量、电流THD、电压恢复时间用文件名带版本号比如run_20250114_L3mH_kpId_3_kpUdc_05这样保存。等回头优化参数时这组记录能帮自己快速定位哪些改动是有效的。仿真时间不需要一上来就设很长。很多人一开始就仿真0.5秒结果等到天荒地老。我建议先跑0.05秒看趋势再决定要不要拉长时间。尤其是开关级仿真步长1e-6秒时0.5秒就是50万个步长跑起来非常慢。先用0.05~0.1秒验证逻辑确认没问题了再跑长时长。波形观测点要提前放好。别等仿真跑完了再翻信号。我一般至少放这些存储点三相线电压、三相电流、直流电压Udc、中点电压差、PLL输出的theta、电流环PI输出、SVPWM调制波。事后数据分析时这些信号一个都少不了。和别人交流时把“我调PI调好了”这句话换成“我电流环整到带宽800Hz电压环整到100Hz有30%稳定裕量”专业感完完全全不一样。做仿真不是玄学调参每一步最好都能用闭环带宽、稳定裕量、谐波指标这些词描述清楚这才算真正掌握了。三电平整流器这个题目从原理到仿真再到调参跑通一轮之后你对三相PWM变换器的理解就是“整体”的而不是“片段”的。后续无论是继续做研究还是做工程应用这套基本功都能直接复用。如果你在搭模型的过程中卡住了先把这几点排查一遍角度有没有对齐、解耦符号对不对、采样步长够不够小、启动有没有预充电处理。这四项是仿真翻车的重灾区。最后分享一个我自己实测很好用的小技巧在调试电流环的时候暂时不要接直流负载只让整流器工作在轻载状态把iq_ref直接作为输入给一个小阶跃专门观察电流环的阶跃响应。这样隔离出来调比一边带载一边调快很多。
阅读完成 · 觉得有帮助?