单相PWM整流器仿真:双闭环直接电流控制与PI参数整定全解析
这段时间一直在折腾单相PWM整流器的仿真目标很明确交流220V输入直流侧稳定输出350V用两种控制策略分别实现然后对比波形和动态性能。这个题目看着不算复杂但真正把模型搭起来、参数调下去里面值得抠的细节非常多。尤其是“直接电流控制”这种双闭环结构很多新手容易卡在PI参数整定和PWM调制这两块。我把自己从零开始搭建、调参、踩坑的完整过程整理出来给正在做电力电子仿真或者准备课程设计、毕业设计的同学一个可以直接参考的路线。先说清楚这个项目能解决什么问题单相PWM整流器是电力电子里面一个很典型的“AC-DC变换”拓扑它不同于传统的二极管不控整流或者晶闸管相控整流能够实现交流侧电流正弦化、单位功率因数以及直流电压的稳定可控。仿真验证的价值在于不用搭真实硬件就能把控制算法、参数设计的可行性验证清楚等硬件上板子的时候心里有底。适合谁看主要是做电力电子方向的学生、刚入门电源设计的工程师以及想把Simulink仿真作为第一块试验田的开发者。1. 单相PWM整流器仿真项目整体拆解1.1 为什么选这个拓扑和参数单相PWM整流器的核心拓扑是单相全桥结构也就是四个开关管IGBT或者MOSFET组成的H桥交流侧通过一个电感接到220V电网直流侧接一个大电容和负载电阻。交流220V是有效值峰值差不多是311V直流侧要稳定到350V这里有一个必须重视的约束PWM整流器本质上是个Boost型变换器直流侧电压必须高于交流侧峰值电压否则桥臂无法把能量从交流侧“泵”到直流侧。350V大于311V留了大约39V的裕量这个方案是可行的。不过要提醒一句350V的直流电压相对交流峰值来说裕量并不算大对应的SPWM调制比大约是0.89311V除以350V也就是说调制波峰值已经接近三角载波峰值了线性调制区间内工作。如果电网电压往上波动到240V峰值就是339V调制比就变成0.97接近过调制的边缘。所以做仿真时最好把电网电压波动也算进去看看350V这个设定点是否还能稳住。这也是这个项目里很值得花时间验证的点。1.2 PWM整流相对传统整流的优势传统不控整流电路里直流电压往往靠电容充放电来维持交流侧电流是脉冲状的谐波大、功率因数低大概在0.6到0.8之间。晶闸管相控整流虽然能调压但会向电网注入大量低次谐波而且在触发角大的时候功率因数显著变差。PWM整流器之所以重要是因为它用高频PWM开关动作替代了低频的工频换相让交流侧电流可以主动控制成和电压同相位的正弦波。打个比方传统整流像是“被动接水”水流来多少你就接多少水位波动大PWM整流像是“主动泵水”通过对开关管的精确控制可以决定交流侧电流的相位和大小从而既控制直流侧电压又让交流侧看起来像一个纯电阻负载。这个“虚拟电阻”的特性在工程上非常有价值尤其在UPS、充电桩、储能变流器这类要求能量双向流动或者对网侧电能质量有严格要求的场合。1.3 直接电流控制与间接电流控制的整体对比这个项目里要实现的两种控制策略分别对应电流控制的两种思路。间接电流控制的核心思想是不直接采集交流侧电流作为反馈量而是通过控制调制比m和调制波相位开环地让电流跟踪期望值。这种方式结构简单但电流动态响应慢对参数变化和电网扰动比较敏感实际工程中很少单独使用。直接电流控制则完全不同它实时采集交流侧电流和参考电流做比较用电流闭环把实际电流“拽”到参考值上。由于引入了电流反馈动态响应快、鲁棒性强是目前工程应用最广泛的方案。项目标题里明确提到了直接电流控制所以我把它作为主攻方向同时用间接电流控制做对比这样两种策略的优缺点在波形上一目了然。无论哪一种最终的落脚点都是电压外环和电流内环的双闭环结构区别在于电流环的参考量是怎么生成的。2. 主电路参数设计电感电容怎么算出来的2.1 交流侧电感的设计思路交流侧电感是单相PWM整流器最关键的元件之一它承担着三个任务储能、滤波和限制电流变化率。如果电感太小开关频率下的电流纹波会非常大谐波含量超标如果电感太大电流响应速度变慢系统动态性能变差。实际设计中电感量通常在保证纹波要求的前提下尽可能取小。估算电感量时最常用的是基于电流纹波的公式。开关频率取10kHz一个开关周期Ts就是100微秒。纹波电流取峰值电流的15%到20%假设额定功率是2kW输入电流有效值大概是9.1A峰值大约12.9A按15%取就是大约2A纹波。在交流电压峰值附近占空比d约等于(Vdc减去|vs|)除以Vdc也就是(350-311)/350约等于0.11。按照L约等于(Vdc减|vs|)乘以d乘以Ts再除以纹波电流来算结果是0.216mH左右。不过这个数值是最低要求工程上通常会留足裕量我最终取的是3mH既保证了纹波抑制效果又不会让电流环响应过慢。实测下来这个取值是合理的。2.2 直流侧电容的设计思路直流侧电容的作用是稳定直流电压、吸收瞬态能量。单相整流的特殊性在于瞬时功率不是恒定的而是以两倍工频波动所以电容必须足够大把100Hz的电压波动控制在允许范围内。若允许纹波电压是3.5V即直流电压的1%在2kW负载下电容量可以通过P除以(2ω乘以Vdc乘以ΔV)来估算算出来大约是2600微法。考虑到工程裕量和动态响应要求我最后用了4700微法这样启动冲击和负载突变时的电压跌落都会更平缓。这里要特别说明一个容易忽略的点电容太大也不是好事。电容越大启动时充电电流越猛给软启动电路带来压力同时电压环的响应带宽会被拉低动态过程变慢。所以选电容是个折中过程要在纹波要求和动态性能之间找平衡而不是一味求大。2.3 一个可复用的参数计算实例为了方便直接套用我把自己最终确定的仿真参数整理成了一张表参数数值说明交流电压220V RMS / 50Hz单相电网直流电压参考350V电压外环给定额定功率2kW负载R约61Ω开关频率10kHzPWM载波频率交流侧电感3mH参数详见2.1节直流侧电容4700uF参数详见2.2节负载电阻61Ω对应2kW功率这个参数组合我反复跑过稳态波形、动态响应、谐波含量都在可接受范围内。如果你要改功率等级可以按照上面的公式重新算一遍不要直接照搬因为电感电容和功率强相关。比如功率降到1kW电流减半同样的纹波要求下电感可以适当减小电容也可以按比例缩小。3. 直接电流控制的仿真实现双闭环是核心3.1 控制结构拆解直接电流控制最常见的工程实现是电压外环加电流内环的双闭环结构。电压外环的输入是直流电压参考值和实际反馈值的误差经过PI调节器后输出一个代表交流侧电流幅值的信号。这个幅值信号要和交流电压的相位信息相乘才能得到电流参考波形。为什么要乘相位因为PWM整流器想要实现单位功率因数电流波形必须和电压同频同相。相位信息可以通过锁相环PLL获取或者在仿真里直接用已知的交流电压相位来生成正弦函数。电流内环的输入是电流参考值和实际交流电流的误差经过另一个PI调节器后输出调制波信号。这个调制波再和三角载波比较产生四个开关管的PWM脉冲。这里面的物理含义是电压外环管“要多少能量”电流内环管“怎么把能量搬过去”。外环输出的是有功电流的幅值内环负责把这个幅值落实到具体的电流波形上这种分层控制的好处是两者职责清晰各自的设计可以解耦。3.2 电流内环设计与PI参数整定电流内环的被控对象是交流侧电感的电气方程可以简化成一阶惯性环节。工程上常用零极点对消法来设计PI参数把PI控制器的零点对消掉被控对象的极点这样闭环系统就变成一阶系统带宽直接由Kp和电感L的比值决定。比如期望电流环带宽是2kHz大概是开关频率的五分之一那么Kp可以按L乘以带宽再乘以2π来估算3mH对应大概是37左右。Ki的取值和电感寄生电阻有关工程上通常让Ki/Kp等于R/LR很小的时候Ki取几百到几千都不奇怪。我实际调参时发现理论值只能作为起点最终还是要靠仿真波形修正。我的经验是先把Ki设得很小比如500然后逐渐加大Kp观察电流波形是否出现高频振荡。如果电流纹波明显变大且带有振铃说明Kp过大了。然后固定Kp缓慢增加Ki消除电流稳态误差。比较幸运的是这个系统的电流内环相对容易调因为被控对象就是一阶惯性不像LC滤波器那样容易谐振。3.3 电压外环设计与PI参数整定电压外环比电流内环难调一些原因在于直流侧电容的电压动态本质上是一个积分过程而且因为瞬时功率存在100Hz纹波电压反馈信号里天然带有2倍频成分。如果电压环带宽设得太高PI调节器会对这个100Hz纹波产生响应导致电流参考幅值波动进而把谐波引入交流电流。所以电压环的带宽必须明显低于100Hz一般取电流环带宽的十分之一甚至更低。我最终用的电压环Kp大约1.5Ki在80左右。调参方法是这样的先断开电流内环直接给一个固定的电流参考幅值看直流电压能不能稳定在期望值附近确认主电路没问题之后再把电压环接上。接上以后如果电压出现明显的等幅振荡多半是Kp太大如果电压稳态误差大则增加Ki。电压环调的最终标志是负载突加或突减时电压能在一两百毫秒内恢复且波动范围在10V以内。注意观察电压波形里不要有明显的100Hz正弦波动被放大。3.4 Simulink模型搭建步骤我在Simulink里搭建这个模型的步骤可以给还没上手的人一个参考。第一步建主电路交流电压源、电感、Universal Bridge选IGBT二极管桥臂、直流电容、负载电阻依次连接其中Universal Bridge的桥臂数选2对应单相全桥。第二步加测量模块交流侧电流、直流电压、交流电压都通过电压电流测量模块引出。第三步搭控制部分先把直流电压参考值350和反馈值相减过电压外环PI再生成正弦函数信号这里我直接用Simulink的Sine Wave模块设置为50Hz幅值为1相位和电网电压一致。第四步电流内环。把外环输出和正弦信号相乘得到电流参考减去实际电流过电流环PI输出就是调制波。第五步PWM生成。我一开始用的是自带PWM Generator模块但后来发现直接用“调制波和三角载波比较”的方式更直观用Repeating Sequence生成10kHz三角波调制波大于三角波时输出高电平这个比较结果直接作为左边桥臂上管的驱动取反后作为下管驱动。注意同一桥臂上下管需要加死区我用的方法是给PWM信号加一个Transport Delay延迟1微秒简单有效。第六步把右边桥臂的调制波设成与左边反相这是单相全桥双极性调制的基本要求。3.5 仿真波形分析与结果解读模型搭好之后仿真时间设0.5秒选择变步长求解器最大步长不超过10微秒。观察交流侧电压和电流波形你会看到电流基本是光滑的正弦波相位和电压几乎重合这就说明实现了单位功率因数。再看直流电压波形从0开始有一个上升过程最终稳定在350V附近稳态纹波大约1V左右。有一个值得注意的现象系统启动瞬间电流会有一个很大的冲击可能到几十安培。这是因为电容初始电压为0启动时电压环输出饱和电流参考幅值被限制在最大值但仍然会剧烈充电。我在模型里给外环输出做了一个限幅把电流幅值限制在30A以内这样冲击电流被钳住了。实际硬件上还需要配合软启动电路比如预充电电阻或者继电器延时切入。这些细节在做纯仿真时容易被忽略但如果你之后要走向硬件这里就是关键。4. 间接电流控制实现与两种策略对比4.1 间接电流控制的原理与实现间接电流控制的思路很巧妙它不从交流侧电流取反馈而是通过对调制比m和相位角的控制让交流侧电流自然达到期望值。从电路方程来看如果忽略电感电阻网侧电压和桥臂输入端电压的差值除以电感阻抗就是电流。也就是说只要控制桥臂输入端电压的幅值和相位就能间接控制电流的幅值和相位。这个思路的开环特性很明显它依赖电路模型一旦电感参数偏移或者电网波动电流波形就会失真。在仿真里实现间接电流控制核心是计算调制波信号。直流电压参考值和交流电压峰值的比值决定了调制比的稳态值。为了达到350V直流输出调制比m约等于311除以350即0.89。相位方面要让交流侧电流和电压同相调制波需要比电网电压滞后一个角度这个角度由电感和功率大小共同决定。为了简化我直接通过功率关系反算相位偏移角然后用这个相位延迟生成调制波。当然这只是一种简化实现方式更完整的间接电流控制还需要加入电流幅值前馈和电压补偿但作为对比演示已经够用了。4.2 仿真结果对比把同样的参数用在间接电流控制下仿真结果和直接电流控制的差异非常明显。稳态情况下间接控制的交流电流也能大致保持正弦但总谐波畸变率THD比直接电流控制高出不少我拆过波形主要低次谐波集中在3次、5次这些奇次谐波上。直接电流控制由于有电流反馈低次谐波被环路抑制THD明显更低。动态性能上的差异更直观。我给系统加了一个负载突增的扰动直接电流控制的直流电压只跌落了不到5V大约100毫秒内恢复间接电流控制电压跌落超过15V恢复时间也拉长到300毫秒以上而且电流波形在这段时间里明显畸变。原因很简单直接电流控制有电流负反馈负载变化会立刻反映到电流误差上内环快速纠正而间接电流控制没有对电流的闭环约束动态过程中电流只能靠自然响应慢慢过渡。4.3 两种控制策略的工程选择建议关于工程选型我的建议是如果对稳态性能和动态性能都有要求直接电流控制是主流选择没有悬念。它付出的代价是多了一个电流传感器控制逻辑也更复杂一点但在如今的芯片算力面前这个代价几乎可以忽略。间接电流控制真正的价值是教学演示和底层原理理解它让你明白PWM整流器的核心变量就是调制比和相位所有更高级的控制策略都绕不开这两个基本量。在项目汇报或者课程设计里把两种策略放在同一个平台下对比用波形说明它们各自的特点往往比只做一种控制更有说服力。这也是我当初选择“两种控制策略实现”作为项目标题的原因对比本身就是价值。5. 仿真中常见问题与排查实录5.1 仿真不收敛或步长崩溃Simulink仿真PWM整流器时最常遇到的问题就是“步长崩溃”报错提示Tolerance too small之类的信息。这种情况多半是因为开关切换瞬间的电流变化率太大或者模型中存在代数环。我排查的步骤是先检查功率电路的参数是否合理特别是电感值有没有小到导致di/dt过大然后把求解器的最大步长调小到5微秒或者1微秒看看是否改善如果还不行就把PWM比较模块换成自带PWM Generator有时候自己搭的比较电路会因为过零检测太灵敏导致数值问题。另外一个容易忽视的原因是多速率采样问题。如果你用了离散PI控制器而采样时间设置和PWM载波周期不匹配也会导致不稳定。我建议把整个控制部分统一成离散系统采样时间设为载波周期的整数分之一比如1微秒或者10微秒和PWM保持同步。5.2 启动冲击电流过大启动冲击电流几乎是必现问题只是严重程度不同。原因如前面说的电容初始电压为零电压外环误差很大PI输出饱和导致电流参考幅值冲到最大值。解决方式有两个方向一是把电压外环PI输出限幅压低比如我限制在30A以内二是给参考电压做斜坡设置让350V不是一步到位而是用0.1秒的时间慢慢爬上去。第二种方式对电压环冲击更小波形也更接近实际硬件中软启动的效果。5.3 PI参数振荡我踩过比较大的坑是电压外环Kp太高导致的100Hz谐振。当时直流电压波形看上去像叠加了一个明显的100Hz正弦波动一开始我还以为是电容不够大把电容加到10000微法也没完全解决。后来才意识到是电压环带宽太高了对直流电压纹波产生了放大作用。把Kp从5降到1.5之后问题立刻消失。这种问题不看原理图很难定位因为方向完全跑偏。电流内环的振荡表现又不一样典型的特征是电流波形上叠加了密集的高频振铃尤其是在电流过零点附近。这个基本上是Kp太大导致的适当降低Kp、增大Ki能改善。如果两种参数怎么都调不出来可以检查一下PWM的死区时间是不是设置过大死区过大开关切换期间电流会失真。5.4 测量与示波器细节仿真过程中的测量细节也值得一提。Simulink自带Scope看波形没问题但要做FFT分析谐波时必须先把标幺值和基波频率设置好直接用Powergui模块里的FFT分析工具更可靠。另外测量交流侧功率因数时不能只看电压电流波形的相位差还要把电流畸变的影响考虑进去用有功功率除以视在功率算总功率因数才准确。这里给一个实用建议把示波器数据导出到工作区用MATLAB脚本统一画图比直接在Scope里截图专业得多。我在写项目报告时用了一个简单的FFT脚本一键生成谐波频谱图效果比Simulink自带界面好很多。最后再分享一个个人体会做这类仿真项目最忌讳的是拿过来一个模型直接跑跑出波形就觉得万事大吉。我建议你每一步都尽可能手算一遍参数再和仿真结果对比哪怕只是粗略估算。这个习惯能帮你建立“理论参数”和“仿真参数”之间的映射关系等真正做硬件的时候你会有一种一切尽在掌握的踏实感。这个项目做完之后还可以往两个方向扩展一是加上电网电压畸变工况测试两种控制的抗扰能力二是把控制算法离散化后生成C代码为嵌入式实现做验证。仿真只是个开始后面的路还长。