尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

单相变流器d-q解耦控制与UDQ正弦PWM实现单位功率因数

单相变流器d-q解耦控制与UDQ正弦PWM实现单位功率因数 1. 项目概述与核心价值最近在做一个关于单相变流器功率因数校正的项目客户对电网侧电流的波形质量和功率因数有非常严格的要求传统的控制方法要么动态响应慢要么在非理想电网条件下性能下降得厉害。折腾了一圈最后还是决定深入研究一下基于同步旋转坐标系d-q轴的不平衡控制策略配合UDQ正弦PWM来实现单相统一功率因数运行。说白了就是想让一个单相的电压源型逆变器VSI或者交直变流器不论负载怎么变、电网电压有没有畸变都能像“模范市民”一样从电网吸收或向电网注入纯粹的有功电流让功率因数始终保持在1附近同时保证电流波形是漂亮的正弦波。这个课题听起来有点学术但在新能源并网、不间断电源UPS、有源电力滤波器以及高性能电机驱动的前端整流环节里实用性非常高。你想想一个光伏逆变器如果功率因数控制不好不仅白浪费了电缆和变压器的容量还可能给电网带来额外的谐波污染严重了甚至会被电网公司罚款。而采用d-q解耦控制理论上可以实现对有功和无功电流的独立、快速调节是实现高性能并网控制的“标准答案”之一。但单相系统比三相系统麻烦因为它缺少一个自然存在的、相互垂直的“静止坐标系”。直接套用三相的d-q变换公式是行不通的。所以这个项目的核心就在于如何为单相系统“构造”出一个虚拟的两相正交系统并在这个基础上实现同步旋转坐标变换进而应用成熟的三相不平衡d-q控制思想。整个研究过程我是在Simulink里搭建模型、写S函数、调试参数一步步走过来的踩了不少坑也总结了一些在仿真和实际工程中都非常有用的技巧。2. 核心思路为单相系统构建d-q控制舞台单相系统只有一根火线和一根零线我们只能测量到一个电压和一个电流。而在d-q控制理论中我们需要在α-β静止坐标系下有两个正交的分量。所以第一步不是变换而是“创造”。2.1 从单相到两相静止坐标系α-β的构造最经典的方法是使用基于二阶广义积分器SOGI的正交信号发生器QSG或者使用一个简单的90度移相器例如Hilbert变换或全通滤波器。在Simulink里我更喜欢用SOGI因为它不仅能生成正交信号还自带滤波功能对电网电压中的谐波有一定的免疫力。SOGI-QSG的原理简述它的结构像一个锁相环的“前级”核心是一个谐振频率锁定在电网基波频率比如50Hz的二阶系统。输入单相电压u它会输出两个信号u_alpha与原信号同相和u_beta滞后u_alpha90度。这样我们就得到了虚拟的α轴和β轴分量。这个环节的传递函数决定了它的带宽和选择性参数k阻尼系数的选取至关重要k太小动态响应慢k太大对频率偏移敏感且滤波效果变差。经过多次调试对于50Hz系统k取值在0.7到1.4之间是比较折中的选择。注意SOGI的输出相位滞后是必须考虑的。在设计电流环控制器时这个滞后会被包含在控制对象模型中。忽略它会导致控制器相位裕度不足系统容易振荡。有了u_alpha和u_beta我们就可以像三相系统一样进行派克Park变换了。但这里有个关键我们需要一个准确的角度θ这个角度来自电网电压的相位。因此一个稳健的锁相环PLL是必不可少的。我采用基于SOGI的QSG-PLL结构它能在电网电压不平衡或畸变时依然较准确地锁住正序基波分量的相位这为后续的d-q变换打下了坚实基础。2.2 同步旋转坐标系d-q下的控制目标定义坐标变换的目的是把交流量变成直流量来控制。在同步旋转坐标系下我们定义d轴与电网电压空间矢量方向对齐。因此d轴电流分量i_d代表有功电流。q轴超前d轴90度。因此q轴电流分量i_q代表无功电流。对于“统一功率因数”模式我们的控制目标非常明确i_q_ref 0强制无功电流参考值为零从而实现单位功率因数电网电压和电流同相位。i_d_ref由外环决定这个外环通常是直流母线电压控制环。i_d_ref的大小决定了从电网吸收整流模式或向电网注入逆变模式的有功功率大小以维持直流侧电压稳定。这样一来复杂的交流电流跟踪问题就被简化成了对两个直流分量i_d和i_q的调节问题可以使用响应更快的PI控制器。2.3 “不平衡d-q控制”在此场景下的含义在三相系统中“不平衡d-q控制”通常指针对正序、负序分量分别进行解耦控制以应对电网电压不平衡的工况。但在我们这个单相系统研究中“不平衡”更多指的是控制结构本身对d轴和q轴采用独立且可能不同的控制器参数以应对d轴和q轴通道可能存在的不同动态特性。虽然单相系统没有真正的负序但通过构造的α-β坐标系我们依然可以借鉴这种独立控制的思想实现对有功和无功分量的精准、解耦控制。这是本项目控制器设计的核心思路。3. 系统建模与Simulink仿真框架搭建理论清晰后就要在Simulink里把它实现出来。整个仿真模型可以分为几个核心子系统。3.1 主电路拓扑与参数设计我以最常见的单相全桥电压源型变流器为例进行建模。电网220Vrms, 50Hz理想电压源串联一个小的电网电感例如1mH来模拟线路阻抗。全桥电路由四个IGBT/MOSFET和反并联二极管组成。直流侧一个直流母线电容如1000μF和一个电阻负载或可控电流源作为负载来模拟功率变化。LCL滤波器变流器输出侧采用LCL滤波器来滤除开关谐波。参数设计是关键需要权衡滤波效果、系统稳定性和成本。我使用的参数是逆变器侧电感L13mH电容C_f10μF网侧电感L21mH。谐振频率f_res需要仔细计算确保在开关频率比如10kHz的1/2以下同时远高于基频50Hz我这里的f_res大约在1.3kHz。在Simulink中我使用Simscape Electrical库中的IGBT/Diode模块搭建全桥用Series RLC Branch搭建滤波器和电网阻抗。直流母线电容的初始电压要设为参考值如400V否则仿真启动瞬间冲击电流会很大。3.2 信号检测与坐标变换链的实现这个部分是软件层的核心我将其封装成一个独立的子系统。电压电流采样从主电路测量电网电压u_g和网侧电流i_g。SOGI-QSG将u_g输入SOGI模块生成u_alpha和u_beta。这里我强烈建议将SOGI模块用S-Function或MATLAB Function块实现而不是用多个传递函数拼凑。这样结构清晰参数调整方便也便于代码生成。核心代码逻辑就是实现SOGI的状态方程。PLL将u_alpha和u_beta输入PLL模块输出同步角度θ和电网频率ω。我采用基于反切函数的PLL结构简单可靠。电流坐标变换同样将i_g通过另一个SOGI模块或使用与电压相同的正交信号这里有个选择生成i_alpha和i_beta。然后进行Park变换i_d i_alpha * cosθ i_beta * sinθi_q -i_alpha * sinθ i_beta * cosθ在Simulink中直接用Trigonometric Function和Product、Sum模块搭建即可。实操心得为了保证一致性电流变换使用的角度θ必须和电压PLL输出的角度严格一致。我最初曾尝试用电流信号自己过SOGI再计算一个角度结果引入了额外的相位差导致d-q轴电流无法解耦控制完全失效。这是一个非常隐蔽的坑。3.3 双闭环控制器设计控制器是大脑我采用经典的电流内环、电压外环结构。电压外环输入是直流母线电压Vdc与其参考值Vdc_ref的误差经过一个PI控制器输出作为有功电流d轴的参考值i_d_ref。这个PI的作用是维持直流电压稳定。其输出限幅应根据变流器的最大允许电流来设定。电流内环这是核心。输入是i_d_ref、i_q_ref设为0与实际的i_d、i_q的误差分别经过两个PI控制器输出d轴和q轴的电压指令v_d_ref和v_q_ref。解耦项在计算v_d_ref和v_q_ref时必须加上前馈解耦项ωL * i_q和-ωL * i_d以及电网电压前馈项u_d因为d轴与电压对齐所以u_d就是电压幅值u_q0。这是实现d-q轴独立控制的关键。公式如下v_d_ref (PI_d输出) - ωL * i_q u_dv_q_ref (PI_q输出) ωL * i_d其中L是总电感L1 L2ω是PLL输出的实时频率。坐标反变换将d-q轴下的电压指令v_d_ref和v_q_ref通过反Park变换回α-β静止坐标系v_alpha_ref v_d_ref * cosθ - v_q_ref * sinθv_beta_ref v_d_ref * sinθ v_q_ref * cosθ得到的v_alpha_ref和v_beta_ref就是我们要合成的目标电压空间矢量在α-β轴上的分量。3.4 UDQ正弦PWM调制模块的实现这是将控制器输出的连续电压指令转化为开关器件的驱动信号的关键环节。v_alpha_ref和v_beta_ref是时变的交流信号。我们需要用它们来生成占空比。计算调制波对于单相全桥我们通常使用双极性调制。调制波m(t)可以取v_alpha_ref因为α轴分量与我们构造的“主”轴对齐。但更通用的方法是将v_alpha_ref和v_beta_ref视为一个空间矢量的分量。这个空间矢量的幅值V_ref sqrt(v_alpha_ref^2 v_beta_ref^2)角度φ atan2(v_beta_ref, v_alpha_ref)。UDQ正弦PWM的本质它其实就是一种基于空间矢量思想的SPWM。我们不需要像三相SVPWM那样合成矢量而是直接利用这个计算出来的V_ref和φ。但在这里有一个简化技巧对于单位功率因数控制在稳态时我们期望电流与电压同相。理论上控制器输出的v_alpha_ref和v_beta_ref应该与电网电压u_alpha和u_beta成比例关系。因此在实践中我常常直接使用经过比例缩放和限幅后的v_alpha_ref作为调制波m(t)送入PWM发生器。这个比例系数与直流母线电压和调制比有关。PWM发生在Simulink中使用Repeating Sequence或Sine Wave块生成一个三角载波频率如10kHz将调制波m(t)与三角载波比较产生两路互补的PWM信号分别驱动全桥的对角线开关管。务必注意设置死区时间我使用PWM Generator (2-Level)这个模块它能方便地设置频率、死区时间和输出模式。注意事项调制波m(t)的幅值必须归一化到[-1, 1]之间对应双极性调制的-Vdc/2到Vdc/2。V_ref的计算值需要除以(Vdc/2)进行标幺化。如果标幺化后的值超过1就会发生过调制波形失真。因此必须在生成调制波前加入幅值限幅环节。4. 控制器参数整定与仿真调试实录参数整定是让系统从“能跑”到“跑得好”的关键。我采用从内环到外环的调试顺序。4.1 电流内环PI参数整定电流环是速度最快的环我们希望它能无静差地跟踪参考值。被控对象可以简化为一个带反电势电网电压的RL电路滤波器电感电网电感。经过前馈解耦和电网电压前馈后d轴和q轴可以视为两个独立的一阶惯性环节G(s) 1 / (Ls R)其中R是电感的寄生电阻和线路电阻。对于一阶系统典型的PI控制器整定方法有零极点对消法。将PI控制器的零点(Ki/Kp)对准被控对象的极点(R/L)即令Ki/Kp R/L。这样开环传递函数就变成了Kp/(Ls)是一个纯积分环节。然后根据所需的带宽来设计Kp。电流环带宽通常取开关频率的1/10到1/5这里开关频率是10kHz我目标带宽BW_current设为1000Hz (6283 rad/s)。对于纯积分开环穿越频率ω_c Kp/L。令ω_c BW_current则Kp L * ω_c。我的总电感L L1 L2 4mH计算得Kp ≈ 4e-3 * 6283 ≈ 25。然后Ki Kp * (R/L)。假设R0.5Ω则Ki ≈ 25 * (0.5/0.004) ≈ 3125。在Simulink中我将这些计算值作为初始参数。先只运行电流环将电压外环断开i_d_ref直接给一个阶跃信号观察i_d的阶跃响应。调整Kp主要影响响应速度调整Ki影响消除静差的速度和超调。通过观察波形我将参数微调为Kp30, Ki3500此时阶跃响应快速且超调很小。4.2 电压外环PI参数整定电压环控制的是直流母线电容上的能量被控对象是一个积分环节C * s。其动态远比电流环慢带宽通常取电流环带宽的1/10到1/20我设为50Hz (314 rad/s)。电压环的开环传递函数近似为(Kp_v * Ki_v) / (C * s^2)经过一些简化。按照典型II型系统整定或采用更工程化的试凑法。我的经验是电压环的Ki值需要非常小因为它的作用是消除直流电压的稳态误差响应太快容易和电流环耦合引起振荡。我设置的初始参数为Kp_v0.5, Ki_v10。在仿真中给直流侧负载一个阶跃变化例如负载电阻突然减小观察直流电压Vdc的恢复过程。目标是电压跌落小、恢复快、无振荡或轻微振荡。经过调试最终参数定为Kp_v0.8, Ki_v15。外环参数整定一定要在内环调好且闭合的情况下进行。4.3 仿真场景设计与结果分析我设计了几个典型工况来测试系统性能稳态单位功率因数运行系统启动后达到稳态。测量电网电压u_g和电流i_g。从波形上看两者几乎同相位。通过FFT分析电流总谐波畸变率THD在LCL滤波器的加持下可以轻松低于3%满足并网标准。功率因数表显示值非常接近1。负载阶跃扰动在t0.3秒时突然增大直流负载模拟功率需求增加。观察结果直流电压Vdc有一个瞬间的下垂约5V但电压外环迅速动作在0.1秒内恢复到参考值400V。i_d_ref随之阶跃上升电流内环快速跟踪i_d实际值紧紧跟随参考值。i_q在整个过程中始终维持在零附近波动极小证明了解耦控制的有效性。电网电流幅值增大但始终保持与电压同相位功率因数维持为1。电网电压小幅跌落在t0.5秒时模拟电网电压瞬时跌落10%。观察结果PLL能够快速跟踪新的电压相位角度θ平滑过渡。由于采用了电网电压前馈v_d_ref中包含了跌落后的电压信息因此系统动态冲击较小。为了维持直流电压和输出功率i_d_ref会略有增加电流环随之响应。在整个暂态过程中i_q仍然被很好地控制在零附近系统保持了单位功率因数运行。这些仿真结果充分验证了基于不平衡d-q控制和UDQ正弦PWM的单相统一功率因数变流器控制策略的有效性、快速动态响应能力和强鲁棒性。5. 深入问题排查与工程实践技巧仿真不是一帆风顺的尤其是在参数敏感和交互复杂的环节。下面记录几个我遇到的典型问题及解决方法。5.1 问题一系统启动时直流电压或电流冲击过大现象仿真开始时直流母线电容电压从0开始充电或者控制器初始输出不为零导致巨大的冲击电流甚至触发仿真报错代数环或数值爆炸。原因与解决控制器积分器饱和PI控制器的积分项在启动前积累了很大的误差因为初始状态和参考值相差甚远。一但开始仿真积分器输出巨大导致调制比瞬间饱和。解决在Simulink的PI控制器模块中启用抗积分饱和Anti-windup功能并设置合理的输出上下限。更佳实践是在系统启动逻辑中先使能PLL待锁相稳定、角度θ正常后再逐步使能电流环和电压环。可以通过一个受控的斜坡函数来给定初始的i_d_ref实现“软启动”。主电路初始状态不匹配直流电容初始电压设为0但控制器期望它立刻达到400V。解决将直流母线电容的初始电压参数设置为接近参考值如390V。在Simulink的电容模块中直接设置Initial voltage参数。PLL启动失锁如果PLL在启动时未能正确锁相输出的角度θ是混乱的导致坐标变换错误进而产生错误的电压指令。解决确保PLL的输入电压u_alpha, u_beta在启动时是有效的。可以给PLL模块也添加一个使能信号或者检查SOGI-QSG在启动瞬态的输出是否正常。有时需要在仿真最初几个周期给一个小的初始相位角。5.2 问题二稳态运行时电流波形存在固定相位偏移或畸变现象功率因数接近1但不到1或者电流THD偏高波形在过零点附近有畸变。原因与解决坐标变换角度不一致这是最常见的原因。电流Park变换使用的角度θ_current和电压Park变换/反变换使用的角度θ_voltage不是同一个信号存在微小的相位差或延迟。解决在整个控制系统中只使用一个唯一的、由电网电压PLL产生的角度信号θ。确保所有sinθ和cosθ都来源于此信号。SOGI-QSG引起的相位滞后未补偿SOGI本身对输入信号有相位滞后且滞后量随频率偏移而变化。如果电流和电压使用相同的SOGI参数滞后相同在理论上会被抵消。但如果参数有微小差异或PLL基于的电压SOGI与电流通道的响应不同就会引入误差。解决尽量保证电压和电流信号处理通道的一致性。可以采用基于电压SOGI产生的正交信号来构造电流的β分量即i_beta SOGI_for_Voltage 输出的正交信号与 i_g 的某种关系更准确的做法是电流也经过一个独立的SOGI但确保两个SOGI的核心参数k,ω完全一致。更高级的补偿方法是在控制器设计时将SOGI的滞后相位作为被控对象的一部分进行补偿但这比较复杂。PWM死区效应死区时间是为了防止上下管直通但会引入电压损失和波形畸变尤其是在低调制比轻载时。解决死区效应无法完全避免但可以补偿。有软件补偿算法比如根据电流方向来修正调制波。在仿真中可以尝试减小死区时间观察效果但不能为零。在实际工程中需根据开关器件的特性设置合理的死区。5.3 问题三动态响应过程中系统振荡或不稳定现象在负载突变或电网扰动时直流电压或交流电流出现持续振荡甚至发散。原因与解决控制器参数过于激进电流环或电压环的Kp、Ki值太大导致系统相位裕度不足。解决回归到参数整定的基本原则降低比例增益Kp。特别是电压外环的Ki它对稳定性影响很大应优先减小Ki值。可以使用Simulink的线性化分析工具在某个工作点线性化模型然后查看开环波特图检查幅值裕度和相位裕度通常要求相位裕度45°幅值裕度6dB。解耦项不准确解耦公式ωL * i_q和-ωL * i_d中的电感L取值不准例如忽略了滤波器电容支路的影响或电感饱和或者角频率ω不是实时值用了固定50Hz。解决L应取总串联电感值。ω必须使用PLL实时输出的频率值而不是固定的2*pi*50。在Simulink中检查ω信号是否正确跟随电网频率变化。LCL滤波器谐振未抑制LCL滤波器本身存在谐振峰如果不加以阻尼很容易被控制器激发导致高频振荡。解决这是采用LCL滤波器时必须处理的问题。可以在电容支路串联一个小的阻尼电阻无源阻尼但这会引入损耗。更常用的方法是有源阻尼即在控制算法中引入虚拟阻抗。例如在调制波计算中减去一个与电容电流微分或比例相关的项。需要在控制模型中增加电容电流的反馈并设计合适的虚拟电阻算法。5.4 仿真性能与模型优化技巧代数环问题当模型中存在信号双向即时依赖时Simulink会报代数环错误。这在包含复杂反馈和前馈的电力电子模型中很常见。解决在关键的反馈回路或前馈通路中插入**Unit Delay** 模块。例如在电流反馈到PI控制器的路径上或者在解耦项的计算回路中。延迟一个仿真步长Ts可以打破代数环且对系统动态影响微乎其微。务必确保所有插入延迟的地方采样时间一致通常设为与控制器执行周期相同如PWM周期。仿真速度慢详细的开关模型如IGBT仿真非常耗时。解决在调试控制算法时可以使用平均模型来代替详细的开关模型。即用受控电压源代替全桥其输出电压等于调制波 * Vdc/2。这能极大加快仿真速度。在验证PWM和开关细节时再切换回详细模型。另外合理设置仿真求解器为ode23tb或ode15s适用于刚性系统并调整最大步长。数据记录与分析为了分析THD、功率因数等需要记录完整的周期数据。解决使用Simulink的To Workspace模块将关键信号如u_g,i_g,Vdc以数组格式保存到MATLAB工作区。仿真结束后使用MATLAB的power_fftscope函数或自己编写FFT脚本进行分析。使用powergui块的FFT Analysis工具也很方便。通过以上系统的建模、控制器设计、参数整定和问题排查我们可以在Simulink环境中较为真实地复现和验证单相统一功率因数变流器的控制性能。这套基于不平衡d-q控制和UDQ正弦PWM的框架不仅清晰揭示了高性能功率因数校正的内在原理其模块化的设计思路也为从仿真到实际数字控制器如DSP或FPGA的代码移植打下了坚实的基础。在实际工程化时还需要考虑采样延迟、计算延迟、ADC量化误差、保护逻辑等更多细节但仿真是通往成功的第一步也是最关键的一步。
返回列表