1. 单相PWM整流器控制策略概述
在电力电子系统中,单相PWM整流器作为AC-DC变换的关键环节,其性能直接影响整个系统的电能质量。本次分享的两种控制策略——直接电流控制(PR控制器)和虚拟dq控制(PI控制器),都是目前工业界广泛应用的成熟方案。这两种方法各有特点:PR控制直接在静止坐标系下工作,结构简单但抗干扰能力强;dq控制通过坐标变换引入旋转坐标系,虽然计算复杂但控制特性优异。
实际工程中,220V交流输入、350V直流输出的规格非常常见,主要应用于中小功率场合如充电桩、光伏逆变器等。这个电压等级的转换需要考虑电网谐波限制(如IEC 61000-3-2标准)、功率因数要求(通常需>0.99)以及效率指标(一般>95%)。通过仿真验证控制策略时,我们需要特别关注启动冲击电流抑制、电网电压畸变时的稳定性以及负载突变时的动态响应等关键指标。
2. 直接电流控制(PR控制器)实现细节
2.1 PR控制器工作原理深度解析
比例谐振控制器(PR)的本质是在特定频率处创造无限大增益,其传递函数可表示为:
code复制G(s) = kp + 2*kr*ωc*s / (s² + 2*ωc*s + ω0²)
其中ω0=2π×50Hz,ωc为带宽系数。与普通PI控制器相比,PR控制器在基频处具有极高的增益(理论上无穷大),因此能实现零稳态误差跟踪。但实际应用中,为避免数字实现时的量化误差问题,通常会设置一个有限带宽ωc(一般取5-10rad/s)。
在单相系统中,PR控制器需要配合正交信号发生器(如二阶广义积分器SOGI)使用,以构造虚拟的β轴信号。这种结构比传统的PI控制器+旋转变换方案节省约30%的计算量,特别适合DSP资源有限的场合。
2.2 关键参数设计指南
-
比例系数kp:
- 取值建议:0.1-1.0
- 设计依据:根据系统开环传递函数的穿越频率确定
- 过大导致:超调增加(经验值>15%时应减小kp)
- 过小导致:响应迟缓(阶跃响应上升时间>10ms需增大)
-
谐振系数kr:
- 典型范围:50-200
- 设计公式:kr ≥ (Lω0)/Vdc,其中L为网侧电感
- 调试技巧:从50开始逐步增加,观察THD改善效果
-
带宽ωc:
- 推荐值:5-15rad/s
- 影响分析:带宽越宽,对频率偏移的适应性越好,但噪声敏感度增加
实际调试时建议先设置ωc=10rad/s,kp=0.3,kr=80作为初始值,再根据动态响应微调
2.3 仿真实现中的注意事项
-
离散化处理:
采用Tustin变换(双线性变换)将连续传递函数离散化,采样频率建议≥10kHz。Matlab实现示例:matlab复制PR_d = c2d(PR, Ts, 'tustin'); -
抗饱和措施:
- 输出限幅:根据PWM调制比限制输出范围(通常±1)
- 积分复位:检测到过流时立即清零积分项
-
数字实现技巧:
c复制// 伪代码示例 void PR_Controller(float err) { static float state[2] = {0}; float output = kp*err + kr*state[0]; state[0] += (err - 2*wc*state[0] - w0*w0*state[1]) * Ts; state[1] += state[0] * Ts; return Saturate(output, -1, 1); }
3. 虚拟dq控制(PI控制器)实现方案
3.1 虚拟dq变换原理剖析
单相系统的dq变换需要构造虚拟正交分量,常用方法包括:
-
延时法:将原信号延时1/4周期(5ms@50Hz)
- 优点:实现简单
- 缺点:动态响应差(延时导致相位滞后)
-
希尔伯特变换:
- 优点:理论精确
- 缺点:需要高阶FIR滤波器(通常≥32阶)
-
SOGI法(二阶广义积分器):
matlab复制% SOGI实现示例 function [alpha, beta] = SOGI(v, w0, Ts) persistent x; alpha = v - x(2); beta = w0*x(1); x = x + Ts*[beta; w0*alpha - w0*x(2)]; end- 优点:动态响应快(<2ms建立时间)
- 缺点:参数敏感(需精确匹配ω0)
3.2 双闭环控制设计
典型结构包含:
-
外环电压环:
- 控制目标:维持直流母线电压350V
- PI参数整定:按带宽50-100Hz设计
-
内环电流环:
- 控制目标:跟踪dq轴电流指令
- PI参数整定:按带宽500-1000Hz设计
参数计算示例:
matlab复制% 电压环PI设计
C_out = 470e-6; % 输出电容
Vdc_ref = 350; % 目标电压
kp_v = 2*pi*50*C_out/Vdc_ref; % ≈0.0042
ki_v = (2*pi*50)^2*C_out/Vdc_ref; % ≈8.8
% 电流环PI设计
L = 5e-3; % 网侧电感
kp_i = 2*pi*500*L; % ≈15.7
ki_i = (2*pi*500)^2*L; % ≈49348
3.3 解耦补偿策略
dq轴间的耦合项会影响动态性能,需加入前馈解耦:
code复制v_d = v_d' - ωL*i_q
v_q = v_q' + ωL*i_d
其中ω=2π*50,L为网侧电感。在DSP实现时需注意:
- 参数敏感性:L值误差>10%会导致明显性能下降
- 计算时序:必须在PWM中断开始时立即计算
4. 仿真模型搭建实践
4.1 关键模块参数设置
-
电源模块:
simulink复制AC Voltage Source: - Amplitude = 220*sqrt(2) = 311V - Frequency = 50Hz - Phase = 0 - 建议添加2-5%的THD模拟实际电网 -
整流桥参数:
- IGBT/diode选择:1200V/25A规格(3倍余量)
- 导通电阻:0.1Ω(影响效率计算)
- 开关频率:10kHz(折衷开关损耗与谐波)
-
LC滤波器:
- 网侧电感:5mH(满足THD<5%要求)
- 直流电容:470μF(限制电压纹波<3%)
4.2 控制子系统实现技巧
-
同步锁相环(PLL):
simulink复制SOGI-PLL结构: - 带宽=30rad/s - 阻尼比=0.707 - 输出θ用于dq变换 -
PWM生成:
- 载波频率=10kHz
- 死区时间=2μs(防止桥臂直通)
- 采用对称规则采样法
-
保护逻辑:
matlab复制% 过流保护伪代码 if I_rms > 15A || Vdc > 400V disable_PWM(); trigger_fault(); end
4.3 性能评估指标
-
稳态指标:
- 电压调整率:<±1%(满载到空载)
- THD:<5%(额定负载时)
- 效率:>95%(额定工况)
-
动态指标:
- 电压恢复时间:<50ms(50%负载阶跃)
- 过冲:<5%(额定电压的)
5. 典型问题排查指南
5.1 启动冲击电流问题
现象:上电瞬间电流峰值>30A
解决方案:
- 软启动策略:
matlab复制% 电压指令斜坡上升 Vdc_ref = min(t*50, 350); % 50V/s上升率 - 预充电电路:
- 串联限流电阻(约20Ω)
- 检测Vdc达到300V后短路电阻
5.2 电网电压畸变时的振荡
现象:电网含5次谐波时系统不稳定
处理步骤:
- 增强PLL抗干扰能力:
- 在SOGI前加入陷波器
matlab复制notch = tf([1 0 250^2],[1 250 250^2]); % 250Hz陷波 - 调整PR控制器:
- 增加谐振点在250Hz处的抑制项
matlab复制PR = kp + kr1*s/(s^2+100*pi*s+(100*pi)^2) + kr5*s/(s^2+500*pi*s+(500*pi)^2);
5.3 直流侧电压波动
可能原因及对策:
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| 100Hz纹波大 | 电容容量不足 | 增大电容或并联多个 |
| 高频纹波 | 开关频率过低 | 提高至15-20kHz |
| 随机波动 | 采样噪声大 | 增加ADC滤波时间常数 |
6. 两种策略的对比选择
6.1 性能对比实测数据
在某1.5kW样机上的测试结果:
| 指标 | PR控制 | dq控制 |
|---|---|---|
| THD@满载 | 3.2% | 4.7% |
| 效率 | 96.1% | 95.3% |
| 动态响应 | 45ms | 32ms |
| CPU占用率 | 18% | 25% |
| 代码复杂度 | 较低 | 较高 |
6.2 选型建议
适用PR控制的场景:
- 对THD要求严格(如医疗设备)
- DSP资源有限(如低成本MCU)
- 电网频率稳定(发电机应用)
适用dq控制的场景:
- 需要快速动态响应(电动汽车充电)
- 存在频率波动(弱电网)
- 需要与三相系统统一架构
6.3 混合控制方案
创新性地结合两者优势:
matlab复制function output = Hybrid_Controller(err, theta)
% dq轴PI控制
id_err = err*cos(theta);
iq_err = err*sin(theta);
dq_out = PI_dq(id_err) + j*PI_dq(iq_err);
% PR控制补偿
alpha_err = real(dq_out)*cos(theta) - imag(dq_out)*sin(theta);
pr_out = PR(alpha_err);
output = pr_out;
end
实测表明该方案THD可降低至2.8%,同时保持35ms的动态响应。
