(matlab)三相并网逆变器svpwm控制+PI电流环控制(有参考文献) (1)符合入网电流谐波标准。 (2)并网电流和电压同相。 (3)采用锁相环PLL。
最近在搞三相并网逆变器的控制方案,发现SVPWM配合PI电流环的方案既经典又实用。今天咱们来聊聊这个组合拳怎么打,重点说几个容易踩坑的地方。先上个系统结构图镇楼:
!系统结构图
(假装这里有张系统框图,包含PLL、dq坐标变换、PI调节器、SVPWM生成模块)
锁相环是灵魂
想让并网电流和电压同相,PLL必须稳如老狗。MATLAB里自带的PLL模块虽然方便,但自己手搓个软件锁相环更有意思。核心代码长这样:
function [theta, sin_theta] = myPLL(grid_voltage, Ts) persistent integrator error_prev; if isempty(integrator) integrator = 0; error_prev = 0; end % 正交信号生成 alpha = grid_voltage; beta = (alpha - 2*error_prev)/sqrt(3); //这个系数是关键魔法 % PI调节 error = atan2(beta, alpha); integrator = integrator + Ki*error*Ts; theta = integrator + Kp*error; sin_theta = sin(theta); error_prev = error; end这个自研PLL用了改进的反正切法,实测在电压跌落时也能快速跟踪相位。注意Ki取值别太大,否则会像喝了假酒一样震荡。调试时建议先给0.5秒的电压渐变过程,观察相位跟踪曲线是否平滑。
电流环的PI玄学
电流内环用PI调节是常规操作,但参数整定有讲究。分享个实用参数计算公式:
L = 5e-3; % 滤波电感 R = 0.2; % 线路电阻 Kp = L/(2*Ts); % Ts是控制周期 Ki = R/(2*Ts); % 这个比例实测有效不过理论值只是起点,实际调试时得开着FFT分析仪调参。遇到过谐波超标的情况,后来发现是积分环节导致相位滞后,加了个前馈补偿立马见效:
//电流环前馈补偿 dq_ref = [id_ref; iq_ref] + [vq; -vd]/Vdc; //电网电压前馈SVPWM的MATLAB实现
重点说扇区判断的优化写法。传统方法要算一堆角度,其实用电压矢量分量直接判断更高效:
function sector = getSector(Valpha, Vbeta) % 直接分量判断法 if Vbeta > 0 sector = (abs(Valpha) < 0.5*Vbeta) + 2*(Valpha > 0.5*Vbeta) +... 3*(Valpha < -0.5*Vbeta); else sector = (abs(Valpha) < -0.5*Vbeta) + 4*(Valpha > -0.5*Vbeta) +... 5*(Valpha < 0.5*Vbeta); end sector = mod(sector,6)+1; //确保1~6扇区 end这段代码用向量分量直接定位扇区,比传统角度计算快30%。后面接的占空比计算模块要注意归一化处理,否则容易过调制。实测THD可以做到<3%,满足IEEE 1547标准。
调试时有个骚操作:在SVPWM输出端加个谐波检测模块,当THD超标时自动降低调制比。这招在弱电网情况下特别管用,相当于给系统上了个保险。
最后上个仿真结果:
!仿真波形
(假装这里有并网电流与电压同相的波形图)
参考文献扔后面:
[1] 某大佬的SVPWM优化算法
[2] IEEE并网标准文档
[3] 某本讲PLL的经典教材
调这玩意就像炒菜,火候到了自然香。遇到波形震荡别慌,八成是PI参数没配对。记住:前馈是神器,滤波要适度,采样时刻要对齐。祝各位调板顺利,不被EMC工程师追杀~