单相PWM整流软件控制全解析:从锁相环、DQ变换到双闭环设计 📅 2026/8/7 8:30:00 1. 从硬件到软件单相PWM整流的核心闭环上一节我们聊透了单相PWM整流电路的硬件骨架从全桥拓扑、直流侧支撑电容到驱动隔离算是把“舞台”给搭好了。但硬件只是躯壳真正让这个系统“活”起来能稳定输出高质量直流电压、实现单位功率因数运行甚至能量回馈的是它的“大脑”——软件控制环节。今天我们就接着上一节的内容深入这个大脑的内部看看它如何通过一系列精密的算法指挥硬件完成复杂的能量转换任务。简单来说单相PWM整流器的软件控制目标非常明确第一无论电网电压如何波动、负载如何变化都要让直流母线电压Vdc稳稳地维持在设定值第二要让从电网吸收的电流i_ac与电网电压v_ac同频同相也就是实现单位功率因数PF≈1减少对电网的谐波污染。为了实现这两个目标软件环节通常构建一个双闭环控制系统外环是电压环负责稳定直流电压内环是电流环负责快速、准确地跟踪电流指令。而连接内外环、并让系统能“看懂”交流信号的关键就是锁相环PLL和DQ变换这两大核心技术。接下来我们就逐一拆解这个软件闭环的每一个齿轮是如何咬合运转的。2. 系统的“眼睛”与“指南针”锁相环PLL的实现与调校在交流系统中电压和电流都是随时间正弦变化的量。我们的控制算法尤其是后续的DQ变换需要知道当前电网电压的瞬时相位角θ和频率ω才能进行准确的坐标变换和指令生成。这个实时、精确地获取电网相位信息的工作就交给了锁相环。2.1 单相锁相环的特殊性与常见结构三相系统有三相电压可以利用它们之间的空间关系如αβ变换轻松构造出正交信号来提取相位。但单相系统只有一路电压信号这是一个“单输入”问题无法直接构造正交分量。因此单相锁相环Single-Phase PLL, SPLL的核心挑战就是如何从单一电压信号v_ac中生成一个与之正交的虚拟信号v_β。最经典且广泛应用的结构是基于二阶广义积分器的锁相环SOGI-PLL。它的工作原理非常巧妙正交信号发生器OSGSOGI作为一个自适应滤波器接收电网电压v_ac输出两个信号一个与输入同相v_α‘一个滞后输入90度v_β‘。这实际上就为我们凭空创造出了一个“β轴”分量。相位检测PD将生成的v_α‘和v_β‘进行Park变换DQ变换的一种应用转换到旋转的DQ坐标系下。在理想锁相状态下Q轴分量v_q应当为0。因此v_q的值就直接反映了当前估计相位与真实相位之间的误差。环路滤波器LF通常是一个PI控制器。它接收v_q这个相位误差信号经过比例积分运算输出电网角频率的估计值ω_est。压控振荡器VCO对ω_est进行积分得到连续的相位角θ这个θ就是最终输出的、用于整个控制系统同步的相位信息。这个闭环不断调整ω_est使得v_q趋近于0从而实现相位锁定。SOGI-PLL的优势在于它对电网谐波有一定的滤波能力动态响应也比较好。注意除了SOGI-PLL还有基于传输延迟法、基于反Park变换法等结构的单相PLL。选择SOGI-PLL进行讨论是因为它在动态性能、抗扰性和实现复杂度之间取得了较好的平衡在数字控制器如DSP、STM32中非常常见。2.2 SOGI-PLL的关键参数设计与调试心得在代码中实现SOGI-PLL核心是确定两个参数SOGI的增益k和PI控制器的参数Kp_pll, Ki_pll。SOGI增益k它决定了正交信号发生器的带宽和阻尼特性。k值越大带宽越宽动态响应越快但对噪声和谐波的抑制能力越弱k值越小滤波效果越好但响应变慢。经验上k取√2是一个常用且性能不错的起点此时系统处于临界阻尼状态。在实际电网存在轻微畸变的情况下可以适当减小k值如0.7~1.0以增强滤波。PLL的PI参数这决定了锁相环的跟踪速度和稳定性。我们可以将PLL的闭环系统近似为一个二阶系统来分析。带宽设计PLL的带宽应远低于电网基波频率50/60Hz通常设置在10-20Hz量级以确保对电网频率缓慢波动如±2Hz的跟踪能力同时能有效滤除电网电压中的2次、3次等低次谐波干扰。参数计算一种经典的工程设计方法是“对称优化法”。设PLL的闭环带宽为ω_bwrad/s阻尼比设为ξ0.707最佳阻尼。对于采用PI控制器的典型二阶PLL其PI参数与电网电压幅值V_m、带宽ω_bw和阻尼比ξ有关。简化公式可参考Kp_pll 2 * ξ * ω_bw / V_mKi_pll ω_bw^2 / V_m。这里的V_m需要你通过软件或硬件测量得到的大致电网电压峰值。调试步骤先将Ki_pll设为0逐渐增大Kp_pll直到系统能够锁定但可能伴有轻微振荡或超调。然后逐渐增加Ki_pll以消除稳态相位误差。观察锁相环在电网电压幅值突变、频率阶跃可用信号发生器模拟时的响应。理想的响应应是快速、平滑地跟踪无超调或振荡。最终一定要在电网电压存在谐波畸变可加入少量3次、5次谐波和频率连续变化的场景下测试确保锁相依然稳健。实操心得调试PLL时务必用示波器或上位机软件如VOFA、串口波形打印同时观察电网实际电压v_ac波形和软件生成的相位角θ的sin值波形。当两者完全同步即sin(θ)与v_ac同相时说明锁相成功。另外PLL的初始化相位θ(0)最好设置为0并在软件上电后延迟几个电网周期再启动PLL闭环让SOGI滤波器先建立稳定的输出可以避免启动冲击。3. 化繁为简的魔法DQ变换的原理与单相系统应用得到了精确的相位角θ后我们就可以施展控制算法中最重要的“魔法”——DQ变换亦称Park变换。它的核心思想是将时域中正弦变化的交流量AC变换到与电网电压同步旋转的DQ坐标系下在这个坐标系下交流量就变成了直流量DC。3.1 DQ变换的数学本质与控制优势对于标准的三相系统DQ变换的公式大家都很熟悉。它将静止ABC坐标系下的三相量通过Clarke变换到αβ静止坐标系和Park变换到dq旋转坐标系两步最终得到d轴和q轴分量。在整流器控制中我们通常定义d轴与电网电压矢量方向对齐因此d轴电流i_d代表有功电流用于控制直流侧能量的吞吐从而稳定直流电压。q轴超前d轴90度q轴电流i_q代表无功电流用于调节功率因数。变换到DQ坐标系后最大的好处是对直流量DC的控制远比交流量AC简单。我们可以使用性能优异的PI控制器来对i_d和i_q进行无静差跟踪控制。PI控制器对直流的积分是有效的而对正弦交流的积分则会发散这就是为什么必须在旋转坐标系下才能使用PI控制电流环。3.2 单相系统的DQ变换实现虚拟β轴构造单相系统只有一相电流i_a和电压v_a缺少自然存在的β轴分量。如何应用DQ变换方法就是利用我们上一节中PLL已经做好的工作——构造虚拟正交量。具体操作步骤如下获取正交电压对从SOGI-PLL的输出我们已经得到了与电网电压v_a同相的v_α‘和正交的v_β‘。这构成了一个虚拟的αβ坐标系。构造正交电流对对唯一的实际采样电流i_a我们需要构造一个与之正交的虚拟电流i_β。这里通常采用一种叫“延时法”或“基于SOGI的构造法”。延时法T/4 Delay将采样电流i_a延迟四分之一个电网周期T/4延迟后的信号i_a(t - T/4)在基波上就近似等于原信号的负β轴分量-i_β。这种方法实现简单但在电网频率波动时会有误差。SOGI法将同一个SOGI正交信号发生器与PLL共用或单独一个应用于电流信号i_a生成同相的i_α‘和正交的i_β‘。这种方法与PLL同源对频率适应性更好是更优的选择。执行Park变换现在我们有了虚拟的αβ轴电压v_α‘, v_β‘和电流i_α‘, i_β‘。利用PLL提供的相位角θ对其进行Park变换即可得到旋转坐标系下的直流量v_d, v_q, i_d, i_q。经过这样的处理单相系统就被“等效”成了一个两相旋转系统从而可以套用成熟的三相DQ控制框架。关键细节在单相整流中由于系统功率脉动是两倍频100Hz/120Hz这会导致i_d和i_q指令中存在二次纹波。为了抑制这个纹波对电流环的影响有时会在电流PI控制器后加入陷波器Notch Filter专门滤除两倍频分量使得最终输出的电压指令更平滑。4. 双闭环控制器的设计与参数整定有了相位信息和DQ坐标系下的直流量我们就可以搭建经典的双闭环控制结构了。这是整个软件环节的“决策中枢”。4.1 电压外环能量平衡的守护者电压环是外环也是慢环。它的输入是直流母线电压的设定值Vdc_ref与实际采样值Vdc_fb的误差。输出是d轴电流的指令值i_d_ref。其物理意义是为了维持直流侧电容上的电压稳定需要从电网吸收多少有功电流。控制器通常采用PI控制器。因为电压环控制对象直流侧电容是一个积分环节使用PI可以实现无静差控制。参数整定思路带宽远低于电流环电压环的响应速度必须比电流环慢得多通常带宽在10-20Hz以下。这是为了保证内外环的动态性能解耦避免相互干扰。如果电压环太快它会将直流侧的二次纹波100Hz放大产生畸变的电流指令。工程整定法首先将电流环视为一个理想的“1”因为电流环响应很快那么电压环的控制对象就是直流侧电容C。其传递函数近似为(i_d) - (Vdc)是一个积分环节1/(sC)。针对这个被控对象设计PI参数。可以采用“零极点对消”法将PI控制器的零点去对消被控对象在原点处的极点然后将闭环系统设计成典型的一阶或二阶系统。简化计算一种常用的经验公式是Kp_v C * ω_cvKi_v Kp_v * ω_cv / 3。其中C是直流侧支撑电容值ω_cv是期望的电压环截止角频率ω_cv 2π * f_cv f_cv取5~15Hz。这个公式给出了一个合理的起点。输出限幅i_d_ref必须进行限幅其最大值由功率器件的电流容量和电网侧电感的饱和电流决定。这保护了硬件。4.2 电流内环快速响应的执行者电流环是内环也是快环。它接收来自电压环的i_d_ref指令以及设定的i_q_ref指令通常设为0以实现单位功率因数并快速跟踪这些指令。输出是在DQ坐标系下的电压指令v_d_ref, v_q_ref这个电压指令经过反Park变换和PWM调制后最终生成驱动开关管的PWM波。控制器同样采用PI控制器。在DQ坐标系下电流对电压的传递函数可以简化为一个一阶惯性环节1/(LsR)其中L是网侧电感R是等效电阻。参数整定思路高带宽设计电流环的带宽应尽可能高以实现快速跟踪和抗扰动。通常设计在几百Hz到1kHz以上但需远低于PWM开关频率的一半根据香农采样定理。考虑解耦项在DQ坐标系下d轴和q轴电流存在耦合ωL i_q 和 ωL i_d。为了提高性能通常采用前馈解耦控制。即在PI控制器的输出上加上ωL i_q作为d轴电压补偿加上-ωL i_d作为q轴电压补偿。这样d轴和q轴的控制就近似解耦了可以独立设计PI参数。参数计算对于解耦后的一阶系统可以采用“模最优”或“对称最优”等标准方法整定PI。一个简单的工程方法是Kp_i L * ω_ciKi_i R * ω_ci。其中ω_ci是期望的电流环截止角频率ω_ci 2π * f_ciL和R是网侧电感与等效电阻。f_ci可以设置为开关频率的1/10 ~ 1/5。输出限幅与调制计算出的v_d_ref和v_q_ref需要经过反Park变换得到αβ坐标系下的电压指令v_α_ref和v_β_ref。这两个值决定了最终的空间电压矢量。它们的大小不能超过PWM调制所能产生的最大不失真电压与直流母线电压Vdc和调制比有关因此需要进行幅值限幅通常是圆形限幅或箝位限幅防止过调制。4.3 从指令到PWM空间矢量调制SVPWM的实现对于单相全桥电路其PWM调制策略通常采用单极性调制或双极性调制。但从控制算法输出的v_α_ref在单相系统中β轴分量通常为0或用于其他控制到具体的占空比有一个清晰的过程。以常用的双极性调制为例每个桥臂上下管互补导通经过坐标反变换和限幅后我们得到一个标量化的调制波信号v_ref对应v_α_ref。计算占空比Duty 0.5 v_ref / Vdc。这里假设载波幅值为1Vdc是直流母线电压。当v_ref0时占空比为50%输出平均电压为0。将这个占空比值写入定时器的比较寄存器生成互补的PWM信号驱动H桥的四个开关管。在STM32等MCU中通常使用高级定时器如TIM1, TIM8的互补输出通道并设置中心对齐计数模式来高效地生成死区时间可调的互补PWM波。提示在软件中务必确保PWM更新事件重载ARR与电流采样、控制算法计算严格同步。通常将ADC的触发源设置为PWM定时器的更新事件或对称中心点以确保采样时刻的准确性这是实现高性能数字控制的基础。5. 软件架构与中断服务程序ISR设计一个可靠的单相PWM整流软件离不开清晰、高效的实时程序架构。通常采用基于定时器中断的周期控制。5.1 主循环与中断服务程序的分工主循环Main Loop执行非实时性任务如通讯接收电压/电流指令、发送状态数据、故障检测与保护逻辑判断、人机界面按键、显示扫描、参数在线微调等。初始化所有外设GPIO、ADC、定时器PWM、采样定时、中断等。背景任务如缓慢的LED闪烁指示系统状态。高优先级中断服务程序如PWM周期中断ADC采样读取直流母线电压、网侧电流可能还有网侧电压用于保护或软启动的ADC值。执行控制算法标幺化或换算ADC值为实际物理量安培、伏特。运行锁相环PLL算法更新当前相位角θ和角速度ω。对采样电流进行DQ变换得到i_d, i_q。运行电压外环PI计算更新i_d_ref。运行电流内环PI计算含解耦得到v_d_ref, v_q_ref。进行反Park变换和幅值限幅得到调制波。更新PWM占空比根据计算出的新占空比更新定时器的比较寄存器CCRx。此操作必须在下一个PWM周期开始前完成。清除中断标志。5.2 关键时序与资源管理中断频率选择中断频率即控制频率通常等于PWM开关频率。例如开关频率设为20kHz则控制频率也为20kHz周期50us。这就要求所有控制算法必须在50us内完成对MCU的计算能力有一定要求。ADC采样时刻为了准确测量电流采样时刻必须避开PWM开关的瞬态过程。对于双极性调制通常选择在PWM周期中心点计数器为0或ARR值进行采样此时功率管状态稳定电流纹波较小。浮点运算与Q格式控制算法涉及大量浮点运算。如果使用带FPU的MCU如STM32F4系列直接使用float类型很方便。如果使用无FPU的MCU则需要使用Q格式定点数来提升计算速度。例如Q15格式表示小数点左边1位、右边15位。变量与缓冲区管理在中断和主循环共享的变量如故障标志、目标指令等前需使用volatile关键字声明防止编译器优化。对于ADC采样值通常使用DMA进行搬运避免在中断中长时间等待ADC转换。避坑经验调试阶段务必利用一个GPIO口在中断入口置高、出口置低然后用示波器测量这个脉冲的宽度这就是你算法执行的真实时间。确保它远小于PWM中断周期例如小于70%为系统留出足够的余量。同时注意中断嵌套问题避免在控制中断中被其他低优先级中断长时间打断。6. 启动、保护与抗扰让系统稳定运行一个能工作的原型和一台能可靠工作的产品之间差的就是这些“边缘”逻辑。6.1 软启动策略直流母线电容在初始状态下电压为0。如果直接全压启动相当于电网电压直接短路给电容充电会产生巨大的冲击电流。必须实施软启动预充电通过一个限流电阻或利用拓扑本身对直流母线电容进行预充电使其电压缓慢上升至接近电网峰值电压。控制环渐入在软件控制上启动初期不直接使用电压外环。可以采用“开环启动”先让PLL锁定电网相位然后给定一个从小逐渐增大的d轴电流指令i_d_ref使系统以受控的功率从电网吸收能量逐步建立直流电压。当电压达到设定值的90%-95%时再无缝切换到闭环电压控制模式。6.2 多层次故障保护保护机制必须是硬件和软件协同的“看门狗”。硬件保护应作为第一道防线过流保护OCP通过霍尔传感器或采样电阻检测电流接入比较器一旦超过阈值硬件电路直接关断PWM输出如利用MCU的刹车Break功能。过压/欠压保护OVP/UVP检测直流母线电压通过比较器或ADC监控实现。软件保护作为第二道防线和精细保护ADC采样值监控在每个控制周期检查网侧电流、直流电压是否超过软件设定的安全阈值。PLL失锁检测监控PLL输出的频率是否在合理范围如45-65Hz或v_q是否长期偏离0。一旦失锁应进入故障状态关闭PWM。逻辑互锁确保同一桥臂上下管的驱动信号在软件层面也有死区防止直通。故障恢复设计故障状态机。发生故障后进入保护状态封锁PWM等待故障条件消失后经过一段延时自动或手动重新执行软启动流程。6.3 应对电网扰动电网并非理想环境会有电压跌落、频率波动、谐波干扰等。电压跌落在电网电压瞬间跌落时直流电压会因能量不平衡而下降。电压外环会迅速增大i_d_ref指令以试图维持电压但这可能导致电流指令超限。此时需要加入电流指令限幅的动态调整或者引入电压前馈在检测到电网电压跌落时适当降低电压环的输出限幅值优先保证电流不超过安全范围。谐波干扰如前所述在电流环PI后加入针对100Hz的陷波器可以有效抑制二次纹波对调制的影响。对于PLL选择合适的带宽和SOGI参数也能增强其抗谐波能力。从锁相环的精准定位到DQ变换的坐标魔法再到双闭环PI的精密调节最后通过可靠的软件架构和全面的保护机制将其固化运行——这就是单相PWM整流软件环节的全貌。每一个参数背后都有其物理意义和工程权衡调试过程就是理论与实践反复碰撞、磨合的过程。当你看到直流电压稳稳地锁定在设定值输入电流波形完美地跟随电压正弦波时你会觉得这一切的复杂都是值得的。