ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

单相PWM可控整流器Matlab仿真:双闭环控制与PI参数整定全解析

单相PWM可控整流器Matlab仿真:双闭环控制与PI参数整定全解析 干了几年电力电子仿真见太多人一上来就拖模块、截图发朋友圈说“仿真跑通了”结果一问他“电感为什么取3mH”“电压环带宽为什么这么低”“启动那下电流为什么那么大”全是一脸懵。单相PWM可控整流器在Matlab里的仿真其实特别适合用来把“电力电子控制”这件事真正搞明白——它既有Boost升压的物理本质又有电流内环电压外环这种经典双闭环结构还要处理PLL锁相、SPWM调制、解耦补偿这些工程细节。这篇就把我从搭模型到调参、从炸波形到稳波形的完整过程拆开讲一遍文中所有参数、步骤、坑点都是实际仿真验证过的照着抄能少走很多弯路。1. 先搞懂单相PWM可控整流器到底在做什么——原理与仿真思路1.1 单相PWM可控整流器的本质一个能双向跑的Boost变换器很多人第一次接触到单相PWM可控整流器脑子里还是“整流就是二极管不可控整流桥换成了可控器件”。这个理解方向对但不够。单相PWM可控整流器也叫单相PWM整流器、单相PFC整流器本质上是一个Boost变换器——它的直流侧电压必须高于交流输入电压的峰值否则根本没法正常工作。为什么因为要控制交流侧电流波形和相位就得让交流侧的电感两端产生一个可控的电压差。以220V、50Hz单相电网为例输入电压峰值是311V如果直流侧电压只有250V那电感上的电压降方向就只能由电网单向决定电流自然不可控只有当直流侧电压高于311V比如给定到380V或400VPWM桥臂才能通过占空比调节在交流侧合成一个幅值和相位都可控的电压从而让输入电流和输入电压同相位实现单位功率因数。这个“升压”特性决定了仿真和硬件调试的第一条准则直流电压给定必须高于输入电压峰值否则你调的PI参数再好看也白搭。我见过有同学把直流给定设成300V然后对着示波器说“电流跟前半周是正弦后半周是尖峰”这就是典型的直流母线电压不足导致电感无法续流。1.2 主电路拓扑与仿真建模的坐标选择单相PWM整流器的主电路不复杂交流电源→线路电感L→全桥4个IGBT带反并联二极管→直流侧滤波电容C→负载电阻R。Matlab/Simulink里建模有两种路线第一种是直接用Simscape Electrical以前叫SimPowerSystems里的电力电子元件库拖一个AC Voltage Source、一个Series RLC Branch当电感电阻、一个Universal Bridge或Two-Level MOSFET/IGBT Bridge、一个Capacitor和Resistor这种方法贴近物理实际能看开关纹波适合做波形验证和性能分析。第二种是用平均值模型把全桥等效成一个受控电压源这种方法速度快但看不到真实开关过程工程上一般不用来做验证更多用在控制算法快速验证阶段。我推荐新手老老实实用第一种因为单相PWM整流器的价值恰恰就在于看真实的SPWM调制波形和电流纹波。控制上单相系统没有三相那种自然旋转的d-q坐标系但为了让控制结构和三相系统统一、也为了让PI调节器能对正弦量实现无静差跟踪仿真里普遍用“虚拟d-q变换”——用一个虚拟的q轴滞后d轴90°构造假想两相正交系。这样做的好处是电流环可以在同步旋转坐标系里做前馈解耦控制器的表达式跟三相整流器一模一样以后你从单相切到三相整个控制框架可以直接复用。代价是PLL相位和正交信号构造器的误差会被直接放大这也是很多仿真波形“看起来对、细看不对”的来源。1.3 仿真之前必须想清楚的完整控制链路在Matlab里搭模型之前我强烈建议先在纸上把控制链路画出来。一个完整的单相PWM可控整流器仿真从交流测到直流测的信号流是电网电压和电网电流采样 → PLL提取电网电压相位θ → 用θ构造正交的d-q电流分量的同时把采样到的交流电流变换到d-q同步旋转坐标系 → 电压外环采样直流母线电压和给定Udc比较经PI控制器输出有功电流给定Id→ 电流内环中Id和Id反馈比较经PI调节再加上解耦项和电网电压前馈得到d轴调制电压 → q轴电流给定Iq一般给0控制无功功率为零同理得到q轴调制电压 → d-q调制电压经Park反变换得到SPWM调制波 → 与三角载波比较生成PWM驱动信号 → 驱动全桥四个开关管。这条链路里任何一环出错波形都会崩。我个人的习惯是先开环测试PWM调制和主电路给定一个固定调制波看桥臂输出再单独测试PLL再接电流环最后加电压外环。每加一环先验证这一环别一口吃成胖子。2. Matlab/Simulink仿真模型的搭建从元件选型到子系统封装的完整步骤2.1 软件版本与模型库的选择建议我用过R2018b到R2022b多个版本单相PWM整流器仿真在版本之间差异不大核心库是Simscape Electrical里的Specialized Power Systems即simpowersystems。打开Matlab后在命令行敲powerlib就能看到专门的电气库入口。注意Simscape Electrical有“Simscape”分支和“Specialized Power Systems”分支前者是物理建模语言适合做多物理域联合仿真后者是电气拓扑加控制信号接口SPWM整流器用后者最顺手里面的连续/离散求解器选择也更直接。模型库选择容易踩的坑是版本迁移。老教程里常写“Power System Blockset”2012年以后改名为SimPowerSystems后来并入Simscape Electrical模块名字和路径都有变化如果你打开教程里的路径找不到模块在库浏览器顶部搜索框直接搜模块名比在目录里一层层翻快得多。搜不到的模块十有八九是版本路径变了比如“Universal Bridge”现在在“Simscape Electrical Specialized Power Systems Fundamental Blocks Power Electronics”下面。另外仿真里要放一个Powergui在Specialized Power Systems的库里这是电力电子仿真的“大脑”。双击Powergui可以选择求解器类型一般直接选离散Discrete模式采样步长跟开关周期匹配仿真的速度和稳定性都会明显好于连续模式。我标配是开关频率10kHz、离散步长5e-6秒既能看到调制细节也不会卡死。2.2 主电路参数的计算过程与初始条件设置主电路参数直接决定控制好不好做我用一套实例参数来讲大家改值时看比例就行。以一个4kW、直流400V的单相PWM整流器为例电网电压有效值220V、频率50Hz峰值311V交流侧电感L选3mH电阻内阻Rg按0.1Ω估算直流侧电容C选2200µF负载电阻R按直流功率4kW算R Udc²/P 400²/4000 40Ω电感怎么定的这里有个工程经验公式电感值决定了交流电流的纹波比例和电流跟踪能力。电感太小比如0.5mH开关频率下的电流纹波会高达百分之几十波形毛刺明显且THD超标电感太大比如20mH纹波很小但电感压降大系统动态响应慢而且要达到同样输出功率直流母线电压得抬得更高。工程上电感值一般按交流侧阻抗的3%8%来取220V、4kW等级3mH大概是5%阻抗是个很稳的起点。电容值则按直流纹波要求来定单相整流的直流纹波频率是2倍工频即100Hz电压纹波近似公式是ΔU ≈ P/(2π×100×C×Udc)代入4kW、400V、2200µF算下来纹波约7.2V在1.8%以内符合常规指标。做仿真有一个容易被忽略的参数电容的初始电压。如果设0V启动第一次仿真得经历漫长的预充电过程而且启动冲击电流非常大。我的做法是给电容的Initial Voltage设成290V左右略低于电网峰值311V这样仿真一开始就直接进入了可控整流器的工作状态省掉好几秒的仿真时间。这不算作弊实际硬件有预充电电阻和缓启动电路仿真里用“初始条件近似”是最效率的做法。2.3 控制环路搭建电压外环电流内环的实现方式在Simulink里搭双闭环我建议把控制器装进Subsystem里保持顶层模型清爽。主电路和控制回路分开两个区域放连线用Goto/From标签而不是直接拉线尤其是PLL相位、电流反馈这些信号直接拉线会拉出一团乱麻。电流内环的实现细节是采样得到的交流电流i_s要乘上一个虚拟相移构造q轴分量。具体做法是取电网电压PLL输出相位θ用sinθ、cosθ以及一阶/二阶广义积分器构造出电流的d-q量。对于单相系统最常用的正交构造方法有两种一是直接把电流延时1/4个工频周期5ms当作q轴分量简单但动态性能差二是用SOGI二阶广义积分器对基波有选频特性相位精准且不会造成稳态误差仿真里推荐用SOGI。你可以在Simulink里用二阶传递函数搭一个SOGI结构是输入电流信号输出两个正交信号α跟随输入β滞后90°两个输出再送入Park变换。电压外环的输出是Id*代表有功电流的幅值因此要限幅。限幅上限取决于开关管电流能力和电感能力我这套参数限到18A不推荐限得太死因为限幅会影响PI积分器状态导致启动时电压外环饱和、恢复时间变长。积分限幅Integrator Anti-windup务必打开这是控制仿真里最不起眼但最关键的细节。我见过太多人波形发散查了半天发现是PI没加积分限幅启动时积分器一路飞到场数万的量级。3. 控制策略与调参实战为什么我的波形在振荡、怎么稳住它3.1 SPWM调制与PLL锁相环的实现要点调制环节我直接用SPWM电流环输出的d-q调制电压经过Park反变换得到和电网同步的正弦调制波送入传统“正弦波与三角载波比较”的PWM生成器。三角载波频率即开关频率10kHz幅值设为±1所以电流环输出的调制波要归一化到±1千万别让调制波幅值长时间超出载波范围否则进入过调制区电流波形会明显畸变严重的还会导致系统失控。PLL是单相PWM整流器最容易出问题、也最容易被“差不多糊弄过去”的模块。因为单相只有一个相电压得自己造一个正交虚拟相再用d-q锁相。比较简单粗暴的方式是直接用Simscape库里的“Single-Phase PLL”模块里面封装了正交信号发生器和PI控制器。但我更建议自己搭一次原因在于仿真里用现成模块你不知道延迟和带宽怎么设硬件调试时更是一头雾水。自己搭的核心结构是电网电压Us经过正交发生器得到Uα、Uβ做Park变换得Ud、Uq然后用PI调节器把Uq控制到0PI输出就是角频率的校正量再积分得到相位θ。PI参数按锁相带宽100Hz左右整定Kp取几十、Ki取几千的倍数调好后PLL的动态时间约十几毫秒完全够用。还得注意相位与仿真初始时刻的匹配问题。很多人的波形“看起来越来越飘”其实是PLL在初始阶段追相位的瞬态还没结束你把Scope的时间窗拉到0.5秒以后再看一般就正常了。如果一直追不上十有八九是PLL的PI参数太小。3.2 PI参数的整定过程典型I型系统 vs 典型II型系统调PI是整个仿真里最玄学也最硬核的部分。我的整定思路完全按自动控制原理来不走“碰运气”路线。电流内环整定按典型I型系统来被控对象是电感L和电阻Rg构成的RL一阶惯性环节传递函数近似为1/(LsRg)。电流环PI写成Kp Ki/s后通过零极点对消把对象惯性极点抵消令Ki/Kp Rg/L再进行增益整定。以3mH、0.1Ω为例零点对消条件是Ki/Kp ≈ 33再按电流环带宽要求Kp取815左右Ki取300500实测响应快、超调小。这个“零点对消”就是我前面说的数学依据用起来屡试不爽。要注意的是开关频率10kHz对应控制周期100µs电流环带宽一般取开关频率的1/10到1/5也就是12kHzKp取到15以上时电流环可能出现次谐波振荡需要注意观察追踪波形。电压外环整定按典型II型系统来带宽要比电流环低10倍以上否则两个环路会“打架”。电压环被控对象是直流电容本质是一个积分环节1/(sC)加上电流内环等效的延迟所以电压环PI参数不能照搬电流环的经验带宽。我这套参数里电压环Kp取0.3、Ki取820再配合输出电压反馈滤波一阶低通或Notch滤掉100Hz纹波能获得几百毫秒的建压时间和不到5%的超调。电压环Kp一旦超过0.5直流母线就会以100Hz的频率出现明显振荡这是我在仿真里反复确认过的现象。3.3 仿真中容易踩的坑离散步长、代数环、初始条件第一个坑是求解器步长。很多教程直接让你用Variable-step、ode45结果仿真要么慢得离谱要么在高频开关切换处报“zero crossing”错误。电力电子仿真标配是Powergui设成Discrete固定步长离散求解器ode4或ode5步长设为开关周期的1/10到1/20即1e-6到1e-5秒级别。我常用1e-5秒兼顾速度和精度如果想看更细节的纹波降到5e-6秒。第二个坑是代数环。PLL、Park变换、解耦补偿这些模块之间如果有直接信号反馈路径Simulink运行时会提示“Algebraic Loop”。处理办法有两个一是在反馈路径里加Memory模块或Unit Delay二是给PLL的正交发生器加一个很小的延迟环节。我个人偏好用Unit Delay因为它同时模拟了数字控制器的计算延迟反而更接近真实DSP的实现。第三个坑是初始条件。除了电容电压初始值以外控制器的积分器初始值也要设。电压外环积分器初始值设成0但把电压给定引到PI之前加一个斜坡/限幅环节让给定从0爬升到400V爬升速率设为200V/s1000V/s这样启动时电流不会爆表。不加软启动的话启动瞬间电流冲到几十安甚至上百安仿真不一定会报错但波形会丑到让你怀疑模型错了。4. 仿真结果分析从波形反推系统设计的合理性4.1 稳态波形应该长什么样同相位电流和100Hz纹波仿真跑稳定以后截图第一件事是验证“输入电压与输入电流同相位”。Scope里把电网电压缩小10倍显示或者用比例变换和输入电流放一起看正常情况电流的基波应该和电压过零点对齐没有相位差或只有几度的偏差。如果电流超前或滞后明显说明PLL有误差或者q轴电流给定没有真正控到0。再看直流侧电压稳定后应该精确落在400V附近稳态误差接近于零这就是PI控制器对直流量无静差跟踪的直观体现。但注意400V的波形上叠加了一层100Hz纹波峰峰值在710V左右这是单相PWM整流器的物理规律不是模型错误。你如果用平均值模型这种纹波会被抹掉这也是我坚持用开关模型的原因——能让你真实感受到单相系统的2倍工频功率脉动。交流侧电流还有一个值得看的点开关频率纹波。10kHz开关频率下3mH电感的电流纹波峰峰值大约在12A占基波电流约13A的10%左右属于正常范围。纹波偏大减电感但代价是谐波变多纹波太小说明电感大了动态响应会变慢不要盲目追求纹波极小。4.2 动态性能验证负载突变和电压参考突变仿真模型不能只发“稳态美图”还得做动态测试不然硬件上一定翻车。我最常用的两个动态工况是负载突变在t0.5s时把负载电阻从40Ω切到20Ω相当于功率从4kW跳到8kW。观察直流母线电压理想情况是跌落到370V左右然后电压外环动作300500ms内恢复到400V。电压给定突变在t0.6s时把电压给定从400V阶跃到450V。注意这个实验很考验PI参数——如果电压环Kp太大阶跃瞬间电流内环饱和母线电压会过冲到500V以上再回落波形很难看Kp太小则要到1秒以后才稳定动态太钝。我调好的参数下过冲约20V、调节时间约0.4秒再配合软启动斜坡整个过程电流波形都保持正弦这就算动态性能合格了。动态测试时重点看Idd轴电流的响应。Id应该先瞬间冲到限幅值然后指数回落说明电流内环快速跟踪了电压外环的指令如果Id震荡了好几个来回才稳定说明电压环带宽偏高或积分太强需要回调Kp。4.3 功率因数与THD分析用FFT工具说话稳态波形看着像正弦不代表谐波合格、功率因数达标。Simulink自带Powergui的FFT分析工具先把Scope里的电流数据导出到工作空间或者直接用Powergui里的“FFT Analysis”对记录的数据做频谱分析。操作路径是双击Powergui → Tools → FFT Analysis。把基波设为50Hz分析窗口选0.2秒正好10个周期得到THD值。我这套模型实测THD在2%4%之间这个量级对工程应用非常理想如果THD超过10%大概率先查PLL相位误差和电感参数其次查调制波是否经常过调制。功率因数怎么验证其实不用专门去算只要q轴电流给定为0、PLL锁得准基波功率因数天然接近1。但仿真里有一个容易自欺欺人的细节电流THD包含了开关纹波和谐波分量可很多人的Scope波形只截了半个周期看起来挺干净就下结论“PF0.99”。严谨的做法是用FFT报告里的基波有效值以及有功功率表模块去算位移功率因数不要用THD去替代它两者不是一回事。5. 常见问题与排查技巧实录5.1 启动冲击电流过大怎么缓解这是被问得最多的一个问题。启动瞬间直流电容相当于短路电压外环给定一股脑加到400V电流内环的给定瞬间到限幅值输入电流就会冲出几倍额定值。硬件上这会导致过流保护动作仿真里则是波形爆掉、仿真变慢。解决办法分三层第一是给电压给定加斜坡发生器Rate Limiter或自己搭斜坡从0爬到400V时间设在0.51秒之间第二是PI积分器加限幅电压环输出即Id*限幅到±18A电流环PI输出即调制波限幅到±0.95第三是适当给电流内环加一阶低通限制Id*的变化率。我三招全用上以后实测启动电流能限制在1.5倍额定以内波形在100ms内进入正弦状态不会再有“开机放炮”的效果。5.2 系统振荡/电流畸变是哪里出了问题振荡和畸变的排查路径我按经验概率从高到低列一下现象最常见原因排查方式直流电压振荡电压环Kp过大或电压反馈没有滤掉100Hz纹波给电压采样加低通滤波调小Kp电流波形毛刺严重电感太小或开关频率太低增加电感值确认载波频率电流过零点畸变PLL相位误差或PLL带宽太低检查Uq是否被控到0增大PLL带宽调制波频繁饱和直流母线电压给定不足确认Udc给定高于输入峰值提高直流给定仿真提示发散步长过大或代数环未处理改离散求解器减小步长查找代数环其中“电压反馈没滤100Hz纹波”是最隐蔽的一条。如果你直接把带纹波的Udc反馈给PI电压环输出会在100Hz上抖动叠加到电流给定里交流电流波形两侧就会出现“波浪状”畸变。解决办法是在电压采样后面加一个截止频率30Hz左右的低通滤波器同时注意这个滤波器会引入滞后所以电压环带宽要留余量。5.3 仿真速度慢与波形卡顿的优化方法单相PWM整流器开关模型跑0.5秒仿真时间我的电脑大概要花13分钟这个速度可以接受。如果慢到十分钟以上通常是你用了变步长连续求解器或者步长设置得过小。优化方法Powergui设Discrete求解器用fixed-step、ode4步长设1e-5秒Scope数据记录会吃内存不要一直开高密度记录先跑稳态确认参数再开完整记录做FFT如果只调整控制参数可以把主电路里的开关器件换成理想开关关断时间设得很小仿真速度能提升数倍。还要提一下“示波器看不清PWM细节”的问题。当Scope显示整个0.5秒波形时10kHz的PWM细节当然糊成一片这不是模型问题。想看开关细节把时间窗拖到0.20000.2005秒你就能清楚看到三角载波和PWM脉冲了。5.4 一个容易被忽略的模型规范细节做仿真项目如果想要可持续迭代模型里的信号命名和单位要规范。我见过太多人仿真失败不是因为原理不会而是因为模型里到处都是“Gain1”“Sum2”“Subsystem3”这种默认名字改一次参数就找不到地方。建议每个信号都用标签命名比如Udc_fb、Id_fb、theta_pll、mod_signal命名规则统一用“量_含义”的结构。控制参数集中放进一个InitFcn或者脚本里改参数只改一处不用翻遍了模型去改Gain模块。结尾单相PWM可控整流器的仿真说得玄乎其实就是三件事把主电路参数选对把双闭环PI调稳把PLL和调制细节做干净。我在实际调试中还有一个始终受益的习惯每调整一个参数都要在仿真里制造一次动态扰动验证系统在“安稳”之外还有没有“反应能力”。很多模型稳态波形好看得能发论文一旦切负载就露馅这就是参数整定只考虑了稳态没考虑带宽的典型症状。如果你现在仿真还在振荡建议先把所有PI增益调小到原来的一半甚至四分之一确认系统稳定以后再按带宽需求逐步加大——这条“先稳后快”的路径基本能解决90%的调参噩梦。
返回列表