1. 为什么单相系统需要PR控制器?
在电力电子领域,单相PWM整流器、光伏并网逆变器、UPS等应用场景中,我们经常面临一个关键挑战:如何让系统电流精确跟踪正弦指令信号。传统PI控制器在直流系统中表现出色,但在交流系统中却存在固有缺陷——它无法实现对交流信号的无静差跟踪。
我曾在多个工业项目中实测发现,使用PI控制器的单相系统在稳态运行时总存在明显的相位偏移和幅值误差。比如在某型号5kW UPS项目中,采用PI控制时输出电流THD(总谐波失真)高达8.2%,而改用PR控制器后直接降至3.1%。这种差异源于两类控制器的本质特性:
- PI控制器:仅对直流信号(频率为0)具有无限大增益,对交流信号增益有限
- PR控制器:在特定谐振频率点(如50Hz/60Hz)具有接近无限大的增益,能实现零稳态误差
关键发现:当系统需要跟踪频率为ω₀的正弦信号时,PR控制器通过在ω₀处设置谐振峰,理论上可实现该频率点的无限大增益,从而完全消除稳态误差。
2. PR控制器原理深度解析
2.1 基础传递函数
理想PR控制器的传递函数形式为:
code复制G_pr(s) = Kp + Ki·s/(s²+ω₀²)
其中:
- Kp:比例系数,决定系统动态响应
- Ki:谐振系数,决定谐振峰高度
- ω₀:谐振频率(rad/s),对应电网基频
在实际项目中,我通常先用这个公式进行理论计算。例如设计50Hz系统时:
matlab复制w0 = 2*pi*50; % 314.16 rad/s
Kp = 0.5; % 通过波特图调试确定
Ki = 200; % 影响谐振带宽
2.2 实用型PR(带带宽)
理想PR控制器存在一个工程实践难题:对频率偏移极度敏感。当电网频率波动±0.5Hz时,控制性能就会显著下降。通过多个项目迭代,我发现采用带带宽的改进型PR更为实用:
code复制G_pr(s) = Kp + (2Ki·ωc·s)/(s²+2ωc·s+ω₀²)
新增参数:
- ωc:截止频率,决定谐振峰宽度
- 经验值:ωc=5~15 rad/s(对应0.8~2.4Hz带宽)
在某地铁牵引供电项目中,我们这样设置参数:
matlab复制wc = 10; % 约1.6Hz带宽
sys_pr = tf([2*Ki*wc, 0], [1, 2*wc, w0^2]);
bode(sys_pr); % 验证频率特性
3. 系统架构设计与实现
3.1 整体控制框图
经过多个版本迭代,我总结出单相整流器的经典控制结构:
code复制[电压外环PI] → [电流指令生成] → [PR电流控制] → [SPWM调制]
↑
[电网电压锁相] ← [电网电压采样]
关键设计要点:
- 电压外环:维持直流母线电压稳定,输出电流幅值指令
- 电流内环:PR控制器实现电流跟踪,是性能核心
- 锁相环:提供同步基准,通常用SRF-PLL
3.2 Simulink建模要点
3.2.1 主功率电路建模
使用Simscape Electrical库搭建:
- 单相桥臂:Universal Bridge模块
- 直流侧:电容+负载电阻
- 交流侧:LCL滤波器(L1=3mH, C=10μF, L2=1mH)
实测技巧:先验证开环SPWM波形质量,THD应<5%再闭环
3.2.2 PR控制器实现
方法一:Transfer Fcn模块
code复制分子系数: [2*Ki*wc, 0]
分母系数: [1, 2*wc, w0^2]
优点:简单直观
缺点:参数修改需重新编译
方法二:MATLAB Function(推荐)
matlab复制function u = PR_Controller(e, w0, Kp, Ki, wc)
persistent x1 x2;
if isempty(x1), x1=0; x2=0; end
% 状态空间实现
dx1 = e - 2*wc*x1 - w0^2*x2;
dx2 = x1;
u = Kp*e + 2*Ki*wc*x1;
% 更新状态
x1 = x1 + dx1*Ts;
x2 = x2 + dx2*Ts;
end
优势:
- 支持在线参数调整
- 可添加抗饱和等高级功能
- 便于数字实现移植
4. 仿真对比与结果分析
4.1 稳态性能(800W负载)
| 指标 | PI控制 | PR控制 |
|---|---|---|
| THD | 7.8% | 2.3% |
| 相位误差 | 5.2° | 0.8° |
| 幅值误差 | 4.1% | 0.3% |
4.2 动态响应(400W→800W阶跃)
- PI控制:调节时间120ms,超调15%
- PR控制:调节时间80ms,无超调
波形分析技巧:
- 关注电流过零点平滑度
- 检查突加负载时的瞬时跟踪误差
- 用FFT分析谐波分布
5. 工程实践关键要点
5.1 电网频率自适应
在实际电网中,频率可能波动(49.5-50.5Hz)。我的解决方案:
matlab复制% 实时更新w0
w0 = 2*pi*PLL_Output;
5.2 数字实现注意事项
- 离散化方法:推荐Tustin变换(双线性变换)
matlab复制
[num_d, den_d] = bilinear(num, den, Fs); - 计算顺序:
- 先计算比例项
- 再更新谐振项状态变量
- 抗饱和处理:增加输出限幅和积分复位
5.3 多谐振PR(MR-PR)
针对谐波补偿,可叠加多个谐振点:
code复制G_mrpr(s) = Σ [2Ki_h·ωc·s/(s²+2ωc·s+(h·ω₀)²)]
典型应用:
- 3次谐波:h=3
- 5次谐波:h=5
6. 扩展应用方向
6.1 准PR(Quasi-PR)
通过调整谐振峰形状,在保持性能的同时增强鲁棒性:
code复制G_qpr(s) = Kp + [Ki·(2ωc·s+ωc²)]/[s²+2ωc·s+(ω₀²+ωc²)]
6.2 与重复控制结合
在周期性扰动场景下,可采用:
- 外环:重复控制(消除周期性误差)
- 内环:PR控制(快速跟踪)
6.3 单相并网逆变器应用
只需将电流指令改为:
code复制i_ref = I*sin(θ) % θ来自PLL
在最近一个10kW光伏项目中,我们采用PR+重复控制的复合策略,使THD降至1.8%以下,完全满足IEEE 1547标准要求。实现过程中有几个关键发现:
- 谐振系数Ki过大会导致系统振荡,建议从Kp/10开始调试
- 离散化采样频率至少是谐振频率的20倍
- 实际调试时,先用扫频法确认谐振峰位置
