三相并联型有源电力滤波器APF仿真(电压外环电流内环均为PI控制),id-iq谐波检测方法,SVPWM调制方法。
最近在实验室搞APF仿真时踩了不少坑,今天把完整的实现流程整理成笔记。这个基于PI双环控制的并联型APF方案实测谐波补偿率能达到90%以上,先看整体仿真架构:
![仿真模型结构图]
(此处应有模型框图,描述电压外环、电流内环、谐波检测、SVPWM等模块的连接关系)

谐波检测是核心中的核心
id-iq法堪称教科书级解决方案,但实际编程时坐标变换容易出问题。我们采用基于锁相环的同步旋转坐标系变换:
matlab
% 三相电流采样
ia = Iabc(1);
ib = Iabc(2);
ic = Iabc(3);
% Clark变换
i_alpha = (2*ia - ib - ic)/3;
i_beta = (ib - ic)/sqrt(3);
% Park变换
theta = PLL_output; % 来自锁相环的相位
id = i_alpha*cos(theta) + i_beta*sin(theta);
iq = -i_alpha*sin(theta) + i_beta*cos(theta);
% 低通滤波提取直流分量
id_dc = LPF(id);
iq_dc = LPF(iq);
% 谐波分量=原始信号-直流分量
ih = [id - id_dc; iq - iq_dc];
这里有个骚操作:在Simulink里用Moving Average模块代替传统巴特沃斯滤波器,窗长取基波周期的整数倍,实测滤波效果更干净。
双环PI调参玄学
电压外环负责维持直流侧电容电压稳定,电流内环要实现快速跟踪。分享我的调参经验:
c
// 电压环PI参数(标幺值)
Kp_v = 0.05;
Ki_v = 2.5;
// 电流环PI参数
Kp_i = 15;
Ki_i = 5000;
注意电流环带宽要比电压环高一个数量级。调试时先关掉电压环,单独调电流环直到跟踪误差<2%,再开启电压环微调。

SVPWM的数字化实现
七段式SVPWM比常规PWM开关损耗更低,关键在扇区判断和矢量作用时间计算:
python
# 计算参考电压矢量
Vα = V_ref[0]
Vβ = V_ref[1]
# 扇区判断
sector = 0
if Vβ > 0:
sector += 1
if (Vα*0.866 - Vβ*0.5) < 0:
sector += 2
if (-Vα*0.866 - Vβ*0.5) < 0:
sector += 4
# 计算作用时间
T1 = (Vα - Vβ/1.732)*Ts
T2 = Vβ*Ts/0.866
T0 = Ts - T1 - T2
# 生成PWM比较值
cmp1 = (T1 + T2 + T0/2)/2
cmp2 = (T2 + T0/2)/2
cmp3 = T0/2
在FPGA里实现时要注意过调制处理,当T1+T2>Ts时要进行比例缩限,避免脉冲丢失。
仿真效果验证
接入非线性负载(三相整流桥+RL负载)后,补偿前后电流THD对比:

![谐波频谱对比图]
(补偿前THD=28.7%,补偿后THD=2.1%)
直流侧电压在负载突变时波动<5%,动态响应时间约0.02s。这个方案在2kHz开关频率下表现良好,但要注意死区时间设置------实测发现死区超过2μs会导致电流畸变明显增大。
最后附上几个调试小技巧:
- 先开环运行验证SVPWM波形
- 用FFT分析器实时监测谐波成分
- 直流侧预充电电阻别忘了加
- 电流采样延时补偿用一阶滞后环节模拟
这套方案已经成功移植到DSP+FPGA平台,下次再聊聊硬件实现中的EMC问题怎么破。
