目录
🎯 一、 核心原理:为什么 PI 控制不够用?
传统 PI 控制的短板
重复控制(RC)的破局点
🛠️ 二、 详细建模步骤
第一步:搭建含谐波的“脏电网”主电路
第二步:构建基础的双闭环控制(dq系)
第三步:植入重复控制器(核心环节)
📊 四、 仿真结果分析
💡 五、 进阶优化:复合控制策略
⚠️ 六、 避坑指南
这是一份基于 Simulink 的双向 DC/AC 逆变器抑制电网谐波的实战教程。
在现实电网中,由于非线性负载的存在,电网电压往往不是完美的正弦波,而是夹杂着 5 次、7 次等背景谐波(即所谓的“脏电网”)。对于普通的双向逆变器,传统的 PI 控制器在旋转坐标系(dq系)下只能无静差跟踪直流分量(基波),面对这些交流谐波分量时往往力不从心,导致并网电流畸变(THD 超标)。
本教程将带你掌握一种工业界常用的“大杀器”——重复控制(Repetitive Control, RC),并采用PI + 重复控制的复合控制策略,让你的逆变器在“脏电网”下依然能输出完美的正弦电流。
🎯 一、 核心原理:为什么 PI 控制不够用?
传统 PI 控制的短板
在同步旋转坐标系(dq系)下,50Hz 的基波被转化为直流分量,PI 控制器可以实现无静差跟踪。但是,电网中的 5 次谐波在 dq 系下表现为 6 倍频的交流分量,7 次谐波表现为 8 倍频的交流分量。PI 控制器对这些特定频率的交流分量增益有限,无法完全消除,最终导致并网电流产生纹波和畸变。
重复控制(RC)的破局点
重复控制基于内模原理。它的核心思想是:如果一个干扰是周期性的,那么只要我们在控制器里嵌入一个相同的周期延时正反馈环节,就能在稳态时对该干扰实现无穷大的增益,从而将其彻底消除。
- 效果:它能无差别地抑制所有基波整数倍的周期性谐波。
🛠️ 二、 详细建模步骤
第一步:搭建含谐波的“脏电网”主电路
为了验证算法,我们需要先模拟一个恶劣的电网环境。
- 使用 Universal Bridge (IGBT) 搭建三相全桥,直流侧接 700V 电压源。
- 交流侧串联滤波电感(例如 3mH),连接到电网。
- 使用三个独立的 AC Voltage Source 串联,或者使用自定义的受控电压源。
- 基波:380V / 50Hz。
- 谐波注入:串联一个 5% 幅值的 250Hz(5次)电压源 和一个 3% 幅值的 350Hz(7次)电压源。
- 这样,PCC(公共连接点)的电网电压就包含了真实的背景谐波。
⚠️ 注意:powergui 设置为 Discrete,采样时间设为 1e-4s (10kHz)。
第二步:构建基础的双闭环控制(dq系)
先搭建一个标准的并网逆变器控制框架。
- 经过 PI 调节器,加上电网电压前馈和解耦项,输出 $V_d, V_q$。
- 反 Park 变换后送入 SVPWM 模块。
第三步:植入重复控制器(核心环节)
重复控制器作为补偿器,与 PI 控制器并联工作。
MATLAB Function 代码 (repetitive_controller.m): 在 Simulink 中,我们可以利用 Unit Delay 模块或者 MATLAB Function 的持久变量来实现周期延时。
function u_rc = repetitive_control(e, N, Q, K_rc)
%#codegen
% e: 电流跟踪误差 (i_ref – i_meas)
% N: 一个周期的采样点数 (例如 200)
% Q: 稳定性系数 (通常取 0.9~0.98 的低通滤波器增益)
% K_rc: 重复控制增益
persistent error_buffer buffer_idx;
if isempty(error_buffer)
error_buffer = zeros(N, 1);
buffer_idx = 1;
end
% — 核心内模原理:周期延时正反馈 —
% 取出 N 拍之前的误差
real_T e_delayed = error_buffer(buffer_idx);
% 重复控制输出 = 上一周期的控制量 * Q + 当前误差 * K_rc
% 这里简化为典型的内模结构
u_rc = Q * e_delayed + K_rc * e;
% — 更新环形缓冲区 —
error_buffer(buffer_idx) = e;
buffer_idx = buffer_idx + 1;
if buffer_idx > N
buffer_idx = 1;
end
end
Simulink 连接逻辑:
📊 四、 仿真结果分析
设置仿真时间 0.5s,在 0.2s 时投入重复控制,观察对比效果。
| 并网电流波形 | 正弦波上叠加了明显的周期性毛刺(5/7次谐波)。 | 完美的光滑正弦波,毛刺被“削平”。 | RC 成功抵消了周期性干扰。 |
| 电流 THD | 较高,通常在 4% ~ 6% 左右。 | 极低,通常能降至 1% ~ 2%。 | 电能质量大幅提升。 |
| 动态响应 | 响应快,无超调。 | 稳态精度极高,但动态响应稍慢(需要1-2个周期来“学习”误差)。 | 验证了 RC 牺牲动态换精度的特性。 |
关键图表: 建议使用 Scope 分屏:
💡 五、 进阶优化:复合控制策略
由于重复控制对突变信号的跟踪有滞后(它需要记住上一个周期的误差),单独使用会导致系统动态响应变差。
最佳实践:
- PI 负责“快”:处理瞬态突变,保证系统的快速响应和稳定性。
- RC 负责“准”:在稳态时介入,专门消除 PI 搞不定的周期性稳态误差。
- 加权切换:在仿真中,可以设计一个逻辑,当系统检测到电流发生大幅阶跃时,暂时降低 RC 的增益,待稳定后再恢复,从而兼顾动态与稳态性能。
⚠️ 六、 避坑指南
- 理论上的内模是 $z^{-N}$(即 $Q=1$),但这会导致系统临界稳定,极易受噪声影响而发散。
- 对策:务必串联一个略小于 1 的系数 $Q$(如 0.95)或低通滤波器,牺牲极少量的稳态精度来换取系统的鲁棒性。
- 在“脏电网”下,PLL 容易受谐波干扰导致锁相抖动,进而影响 Park 变换的准确性。
- 对策:建议在 PLL 前端加一个低通滤波器,或者使用更高级的解耦双同步坐标系锁相环(DDSRF-PLL)。
- 依然推荐使用 ode23tb 或 discrete (no continuous states),确保离散控制算法的精确执行。
通过这个教程,你的双向逆变器就具备了“主动电能质量治理”的能力。无论是在光伏并网、储能 PCS 还是有源电力滤波器(APF)应用中,这都是一个极具工程价值的高级控制技能。
