ARTICLE DETAIL

资讯详情

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

单相PWM可控整流器Matlab仿真建模、参数整定与调试解析

单相PWM可控整流器Matlab仿真建模、参数整定与调试解析 说起整流器很多人的第一反应就是那几种纹丝不动的二极管桥堆功能就是把交流变直流简单粗暴。但如果你碰过PFC、做过电机驱动、接触过并网电源迟早会遇到“整流竟然还能反过来控制功率流向、改善波形质量”的玩法这就是单相PWM可控整流器。我在Matlab/Simulink里完整搭过一版单相PWM可控整流器仿真把电压外环、电流内环、锁相、调制全都跑通之后再回头看二极管整流简直就像看老式磁带机和触摸屏手机的差距。这篇文章就是把我的建模过程、参数整定、波形分析和排错经验完整记录下来适合电力电子方向的在校学生、刚入门电源设计的工程师以及任何打算在Matlab里做整流器或逆变器仿真的人参考。1. 单相PWM可控整流器能干什么为什么要选Matlab仿真1.1 从二极管整流到PWM整流的跃迁先搞清楚一个问题传统不控整流为什么不够用。假设你直接用二极管桥把220V交流整流成直流交流侧的电流波形是尖峰状的谐波含量极高功率因数可能只有0.7左右。这在电网侧是“劣质负荷”会影响其他设备还会降低变压器利用率。很多设备为了过电磁兼容测试不得不额外加无源滤波器或PFC电路体积和成本都上去了。单相PWM可控整流器的思路完全不一样。它用四个开关管构成H桥通过对开关管做高频PWM控制让交流侧电流主动跟踪电压波形做到单位功率因数也就是电流和电压同相位波形接近正弦。同时直流侧电压可以稳定在设定的目标值比如400V、600V都可以调。更关键的是这种拓扑是能量双向的既可以把交流整成直流也能把直流逆变成交流回馈电网。你要是做过电机回馈制动或电池充放电测试就知道这个双向能力有多值钱。我把两者放在一起对比过差异非常明显对比项二极管整流单相PWM可控整流器交流侧电流波形尖峰脉冲THD高接近正弦THD可低于5%功率因数约0.7且不可控接近1.0可调无功直流电压不可控随电网波动闭环稳压稳如泰山能量流动单向双向控制复杂度无控制需要电压、电流双闭环与同步锁相所以现在新能源充电桩、电机驱动器前端、UPS、储能变流器里凡是要求功率因数高、谐波小、电压可控的场合基本都会用到PWM整流器或同架构的拓扑。Matlab仿真对这类系统的价值在于你可以在不冒硬件风险的情况下把控制算法、参数、故障状态全试一遍。硬件上烧管子成本不小仿真里随便炸重来就是一条命令的事。1.2 仿真能帮你建立哪些关键认知做这个仿真之前我一直以为控制的核心是“怎么把PWM波形发给开关管”做完才发现PWM生成只是最后那一下把电信号变成开关信号的动作真正的核心在“怎么算出调制波”。整个系统里最考验经验的是如何让交流电流跟上电压的相位和幅值如何让直流电压在被拉偏后快速回稳以及如何让锁相环在畸变的电网电压下不失锁。Matlab里特别适合建立这类认知。你可以把电网、电感、桥臂、电容、负载和控制环拆成子系统每个部分单独观测波形。我调试的时候最喜欢把交流电流和电网电压放到同一个示波器窗口里一旦看到电流相位、幅值不对立刻能判断是锁相问题还是电流环参数问题。这种“看得见摸得着”的反馈是纸上推导控制理论给不了的。配合仿真的还有一点你可以用参数扫描工具一口气跑几十组PI参数看哪组组合下直流电压响应最好。这在硬件上可能要加班熬通宵的事仿真里几分钟就有结论。所以对于刚接触电力电子控制的同学我的建议很直接先仿真跑通再去动硬件。2. 控制架构与关键原理拆解2.1 主电路拓扑与功率路径我先定一个具体的仿真指标后面所有建模都围绕它来电网电压220V / 50Hz额定功率2kW直流母线电压目标值400V开关频率设10kHz。前端是单相交流电源经过一个交流侧串接电感L接入H桥。这个电感可太重要了它既是滤波电感又是储能元件。PWM整流器能工作在升压模式下就是靠这个电感把交流侧的能量“搬运”到直流侧。从电感往右看是四个IGBT/二极管反并联组成的全桥桥臂中点接电感直流侧并联大电容和负载电阻。功率路径你想象成一条双向水渠电网作为水源电感是渠道桥臂是可控闸门电容是蓄水池。控制闸门开关的比例就能决定水流是从电网流向负载还是从负载倒灌回电网。交流电压瞬时值可能低于直流电压但只要H桥的PWM调配合适电感上的压差和电流变化就能保证能量向直流侧流动这就是“整流升压”的直觉理解。我推荐的参数组合是电感L3mH交流侧等效电阻R0.1Ω直流母线电容C2mF满载负载电阻Rload80Ω。根据P Vdc² / Rload400V²除以80Ω正好得到2kW这个负载阻值就对应额定满功率调试起来非常清晰。2.2 双闭环控制的层次关系单相PWM整流器控制系统的骨架是“电压外环电流内环”外面套一个锁相环做同步。直流电压外环的作用很简单维持直流母线等于设定值。如果负载突然加重电容电压会跌落电压环检测到误差后通过PI调节器输出一个“电流幅值指令”给内环。电流内环收到指令后去控制交流电流的大小和相位让电网输入更多有功功率把电容电压“顶”回去。电流内环的响应速度必须远快于电压外环不然两个环互相“呛声”就会振荡。工程上有个经验指标电流环带宽取300800Hz电压环带宽取2050Hz。这个数量级差出来之后再调参数系统稳定性会好非常多。我在仿真里给的电流环PI参数是这样来的先估算开环增益Kp取L乘以目标带宽的角频率再留一点裕度。对3mH电感、带宽约600Hz来说Kp数值大约在410之间Ki则根据积分时间常数调制一般Kp乘以2π×带宽再除以510最终我常用的组合是Kp8、Ki1500。电压环Kp要小几个数量级我一般从Kp0.2、Ki30起步边看波形边收紧。这里有个容易被忽略的细节电压外环的输出不能直接当调制波使它是一个“参考电流幅值”。真正的调制波要在内环算完电流误差后再叠加电网电压前馈和电感压降补偿才能在PWM比较器里和载波生成最终占空比。这个层次关系理解错了仿真结果会非常奇怪。2.3 锁相与正交信号生成单相系统的锁相比三相要麻烦一些。三相可以用Clarke变换直接得到αβ分量单相只有一根电压波形你根本拿不到另一路90°正交信号。没有正交信号就无法做Park变换也就没法把交流量变成类似直流的d轴q轴分量来控制。所以必须自己构造一个虚拟的正交信号我用的方法是SOGI也就是二阶广义积分器。SOGI对输入的单相电网电压做处理输出两个信号一个与原信号同相另一个滞后90度两边合起来就等价于αβ坐标系里的两个分量。有了αβ分量之后锁相环就可以用同步旋转坐标系PLL了也就是SRF-PLL。通过把αβ变换到dq坐标系让q轴电压尽量归零锁相环就能持续追踪电网电压的真实相位θ。这个θ同时供PWM调制和坐标变换使用。仿真里我图省事直接用了Simulink里的单相PLL模块它内部就实现了SOGI加锁相环稍微设置一下初始频率50Hz就能用。不过我建议你还是要能自己用传递函数搭一个SOGI这样才能理解PLL输出为什么在电网频率偏移时还能锁住。2.4 电流控制方式选择单相电流内环可以用两种主流方式一种是静止坐标系下的PR控制器另一种是同步旋转坐标系下的PI控制器。我一开始用的是PR控制器因为它直接对正弦参考信号做谐振调节不用建正交坐标系实现简单。PR控制器的传递函数里有一个谐振项中心频率对准50Hz对50Hz的正弦误差增益极大能实现近似无静差跟踪。但如果电网频率波动明显谐振点偏移控制性能会下滑。后来为了更贴近工程习惯我改用SOGI生成正交电流分量然后再做Park变换把电流变成dq轴下的直流分量来控。d轴对应有功电流q轴对应无功电流想实现单位功率因数就把q轴参考置0让d轴电压环输出去控制有功电流。这种方式下用的就是普通PI控制器跟踪目标都是直流调参时反映非常干脆很适合做负载突加和平滑启动这类动态实验。两种方式在Matlab里都能跑区别在于后续想扩展成三相系统、增加无功补偿或做电网故障穿越时dq坐标系做法迁移更顺。如果只是验证基础整流功能PR控制器能让你把更多精力放在主电路和理解电压电流关系上。这篇文章的仿真选择dq方案因为它在实际产品里出现频率更高。3. 在Matlab/Simulink里从零搭建仿真模型3.1 主电路部分的建模步骤打开Matlab后我建议直接用Simulink的Simscape Electrical来搭主电路因为它提供现成的电力电子器件和电网模块。新建一个模型文件先放交流电压源设置交流峰值幅值为311V对应220V有效值频率50Hz相位0。然后是交流侧阻抗可以用Series RLC Branch模块把R设成0.1ΩL设成3mHC设成inf这样就变成了纯电阻加电感支路。H桥我推荐用Universal Bridge模块它比用四个IGBT搭桥要省事得多还内置了反并联二极管仿真速度也比全分立器件快。在Universal Bridge参数里选“2 arms”就是单相全桥桥臂数量是2每个桥臂包含上下两个开关。器件类型选IGBT/Diode开关管电阻和导通压降保持默认值也行重点是能正常换流。直流侧用电容和负载并联。电容直接双击Series RLC BranchR设为inf、L为0C设2mF。负载电阻我用一个纯RLC并联负载模块Rload为80Ω电感电容无穷大等效成纯电阻。电容容值怎么来的我按单相100Hz功率脉动估算。满载2kW时单相整流器直流侧存在两倍工频的功率振荡电压纹波ΔV近似等于P除以2π×100Hz×C×Vdc。如果我期望纹波控制在4V左右算下来C需要约2mF实测波形也验证了这个数字。电路里还要加电流测量模块和电压测量模块。电流表串在电感和桥臂之间测量交流侧输入电流电压表并在电容两端测直流母线电压。这两个信号是要进控制系统的测量模块的采样率跟着仿真步长走就行。3.2 控制子系统搭建与信号流控制子系统我分成四块锁相与坐标变换、电压外环、电流内环、PWM生成。锁相块我用Simscape Electrical的单相PLL模块输入电网电压输出频率和相位θ。然后把电网电压和电网电流各经过一个SOGI模块得到αβ分量。你可以用传递函数模块手动搭SOGI也可以直接用Simulink里的SOGI模块。SOGI传递函数典型形式是k倍谐振项除以s²加带宽项再乘s带宽系数取1.414响应速度和滤波效果比较均衡。得到αβ电流和αβ电压之后做Park变换转成dq轴分量。旋转变换的矩阵就是标准余弦正弦矩阵你可以用Fcn模块手写也可以用Simulink里的Clarke变换、Park变换模块。d轴电流分量作为反馈量进入电流PIq轴电流分量和q轴参考值0做误差后进入另一个PI。控制信号流我专门理一遍直流母线电压实测值和400V参考值做差进电压环PI输出限幅到020A作为d轴电流参考id_ref。q轴电流参考iq_ref直接给0。电流环两个PI分别算出vd和vq然后要做解耦和前馈补偿把电网电压的d轴分量加到vd上把电网电压的q轴分量加到vq上同时加上电感交叉耦合项。解耦做完之后vd和vq反变换回αβ坐标系得到Vα和Vβ作为调制波的αβ分量。理论上单相逆变换输出一个分量就够了但为了波形更干净我直接把Vα当作调制波送入PWM生成。调制波形状是一个接近正弦又带一些控制补偿的波形频率50Hz幅值在上下桥臂之间变化。PWM发生器用自然采样比较用一个频率10kHz、幅值±1的三角载波和调制波比较输出脉冲序列。3.3 仿真参数设置与求解器选择系统参数汇总到下边这张表你可以直接抄去用参数名数值电网电压220V有效值50Hz交流侧电感L3mH交流侧等效电阻R0.1Ω直流母线电容C2mF负载电阻Rload80Ω母线电压参考值400V开关频率fsw10kHz电流环PIKp8Ki1500电压环PIKp0.2Ki30仿真算法固定步长ordinary differential equation步长1μs仿真算法这里要特别提醒电力电子仿真必须用固定步长求解器模拟步长要远小于开关周期。10kHz的开关周期是100μs步长取1μs也就是一个开关周期内采样100次以上PWM脉宽和电流纹波才能被还原出来。用可变步长的话开关瞬间会产生大量小步长事件仿真慢得你想砸电脑而且结果还不一定更准。4. 仿真结果分析与关键波形解读4.1 启动过程与直流电压建立运行仿真后第一眼要看的是直流母线电压启动曲线。理想情况是启动瞬间电容从0V开始充电电压环输出一个较大的电流指令系统快速给电容充电电压冲上400V后略微过冲然后回稳。如果过冲太大比如冲到450V以上多半是电压环Kp太大或者限幅没做好如果启动很慢半天都到不了400V多半是电压环积分太弱或者限幅太小。我调试时遇到过第一个坑就是启动过电流。开机瞬间电容相当于短路电压环直接甩出最大电流指令电流环忙着追这个指令交流侧电流会出现一个很大的尖峰。解决方法是给电压环输出加一个缓启动限幅最初0.5秒内把id_ref上限限制在5A之后慢慢放宽到20A。这个软启动思路在硬件上也通用。还有一种情况启动失败母线电压停在某个值不动电流波形出现持续振荡。这通常不是参数问题而是PLL失锁或坐标系搞反了。我后文会集中说排查方法这里先记住一个经验启动阶段一切正常的前提是锁相环必须先锁稳。4.2 稳态波形怎么看系统进入稳态后用示波器同时抓电网电压、交流侧电流、直流母线电压三条曲线。电网电压是50Hz正弦波交流电流应该是同频的正弦波而且与电压的相位误差极小。如果电流不是正弦而是有明显的尖峰或畸变说明电感取值偏小或开关频率不够。如果电流相位明显滞后或超前说明q轴电流没有真正锁到0可能是PLL相位不准也可能是解耦项方向错了。直流母线电压稳态时会有两倍工频的纹波也就是100Hz左右的上下波动。按前面的计算2mF电容、2kW负载下理论纹波约4V看到这个数值就说明能量关系是对的。如果纹波大得多先查电容是不是设小了再看电压环带宽是不是调太高。电压环带宽太高会把100Hz纹波放大让电流参考值跟着波动反过来加剧谐波。谐波分析可以用Simulink的Powergui模块里的FFT工具。点击Powergui选择FFT Analysis就能看到交流电流的频谱。我实测的模型在满载时THD大约在3%5%这个水平已经能满足一些苛刻场合的谐波要求。如果你观察到高频谐波峰集中在10kHz附近那是开关纹波的正常表现不是故障。4.3 动态响应的三种实验方法第一种实验是负载突变。仿真到2秒时把负载电阻从80Ω切换到160Ω也就是功率从2kW降到1kW。观察直流母线电压会有一个小上冲因为负载突然变轻电容上的能量短时间内富余了。好的表现是电压上冲幅度在5V以内经过几十毫秒回到400V。如果上冲特别大要降低电压环保带宽并增加积分强度。第二种实验是电网电压扰动。把电网电压从220V阶跃到200V再回到220V看直流母线能否稳住。这个考验的是电压环对输入扰动的抑制能力。正常情况下母线电压会有短暂波动然后重新回稳。如果回稳过程拖着长长的振荡尾巴说明系统阻尼不足电流环比例增益可以适当加大。第三种实验是参考电压阶跃。把400V参考改成450V再改回来观察跟踪速度和过冲。这个实验能快速暴露电压环的极限。我做的时候发现Kp0.2、Ki30的组合下阶跃到目标电压耗时约100ms过冲只有2V以内作为基础调完的状态可以接受。追求更快响应的话可以把Kp提到0.5但代价是稳态噪声变大这个权衡要自己把握。动态响应调好之后你对整套控制系统的信任度会高很多后面再改拓扑、加保护逻辑都有抓手。5. 常见问题与排查技巧实录5.1 快速诊断表我把自己在仿真中实打实遇到过的典型问题整理成一张表每一个都是我亲眼见过的现象不是空泛罗列现象可能原因排查方向直流母线启动过冲超过30V电压环Kp过大、限幅过强调小Kp加软启动限幅交流电流振荡THD飙升电流环增益过低或电感偏小加大电流环Kp检查L参数电流波形畸变且不对称PLL相位不准或SOGI带宽不对检查PLL锁定曲线调整SOGI系数电流与电压相位差90度q轴参考符号或Park变换方向反了检查坐标系正负定义母线电压纹波大于理论值电容过小或电压环带宽过高用纹波公式反算电容调低电压环带宽仿真速度极慢用了可变步长求解器换成固定步长步长调成微秒级开机瞬间电流尖峰巨大软启动缺失或id_ref限幅太大添加启动限幅逻辑调制波饱和失真直流母线电压低于交流峰值确认Vdc目标要高于√2乘以电网有效值5.2 几个高价值排查案例第一个案例关于PLL失锁。我早期仿真时启动阶段电流波形乱成一团看起来像随机震荡。在示波器里加一个PLL输出角度的观测通道发现角度波形在启动前期剧烈跳变导致Park变换严重偏差。问题出在SOGI的初始状态没设置好以及仿真步长太大导致PLL闭环在高频段失稳。把步长从10μs降到1μs之后PLL启动乱象立刻消失。第二个案例关于坐标系符号。有次我调好参数之后功率因数看起来是-1也就是电流和电压完全反相这个状态相当于把整流器跑成了逆变器。原因是我在Park变换里把q轴角度加了90度导致无功电流分量作用方向完全反了。排查办法是在仿真里加一个瞬时功率计算模块P0.5乘以有功分量乘电压Q同理。P为正且Q接近0就说明方向正确。第三个案例关于直流振荡。有段时间电压环无论怎么调都在振荡后来我把电流环和电压环分开调试。先把电压环反馈断掉给一个固定的id_ref只调电流环确认电流跟踪稳定后再接回电压环。这个分环调试法帮我省了大量时间现在每次搭新系统都会这样做。5.3 调试顺序的建议我的调试顺序是先调锁相环再调电流环最后调电压环。锁相环不锁稳后面全都白搭电流环必须独立稳定才能给电压环提供可靠的“执行机构”电压环是最后叠加上去的最外环它的带宽天然不能超过内环的五分之一到十分之一。这个顺序看起来理所当然但我见过太多人上来就同时调三个环参数交叉影响最后抓瞎。另外仿真模型里建议把各个PI输出的限幅值都做成参数比如id_ref_max设成20A调节器输出范围设成±1或±2。限幅的作用不只是保护它还能让PI调节器进入抗饱和逻辑的范围内。Simulink的PI模块自带抗饱和选项我建议开启不然后续调参很容易出现积分饱和导致的超调。6. 扩展从仿真到实际系统的过渡建议仿真跑通只是第一步如果你要做真实硬件有几个必须补的模块死区时间、传感器采样延迟、数字控制量化误差。Simulink仿真里默认开关瞬间完成硬件IGBT/MOSFET却有微秒级死区死区会导致电流波形产生少量低次谐波工程上通过死区补偿来缓解。硬件电流采样和PWM更新也有一个拍或两拍的延迟这个延迟会吃掉相位裕度。建议在仿真里把电流环路径上加上一个单位延迟Z⁻¹模块模拟数字控制器的计算延迟再重新调参数。你可能会发现原来Kp8能稳定加了延迟之后Kp4都振荡这恰好验证了“仿真留裕度”的重要性。从控制结构上说后续扩展空间也很大。可以加入电网电压前馈增强抗扰动能力可以加虚拟阻抗模拟电网强度可以改造成双闭环加母线电压弱磁控制适配电池充放电工况。Matlab仿真最大的好处就是这些修改都是拖拖建建、敲几行代码的事能低成本验证想法。我个人的强烈建议是仿真里留一版“理想模型”再留一版“工程化模型”前者帮你快速理解原理后者帮你贴近实战。两版差距往往就是死区、采样延迟和限幅这些细节也正是这些细节决定了一套控制算法能不能真正落地。
返回列表