一、建模
原理图:
交流小信号建模:
进而可以推得占空比d与电感电流i的传递函数:
二、电流环
采用PI控制器,计算代码如下:
%说明:该内容用于计算buck电路电流环参数%
%日期:2023年11月6日
clear;clc;
format long
syms Kip Kii w
Vg=50;
Vo=12;
L=19e-6;
C=1000e-6;
R=0.6;
% buck matlab求解PI控制器参数
fc=5e3;%5kHz
w=2*pi*fc;%穿越频率
D=Vo/Vg;
PM=75;
Vm=200;%载波幅值
s=w*1j;
%% 参数求解过程
G1PI=(Kip*s+Kii)/(s);
Gid=Vg*(C*s+1/R)/(Vm*(L*C*s^2+(L/R)*s+1));
a1=Gid
a=sqrt((Kip*w)^2+(Kii)^2)/w
b=atan(Kip*w/Kii)-pi/2
ab=abs(a1)
an=angle(a1)
exp1=[ab*a==1,b+an==-(180-PM)/(180/pi)]
solu=vpasolve(exp1,[Kip,Kii])
[solu.Kip,solu.Kii]
%% 波特图绘制
num1=[double(solu.Kip) double(solu.Kii)];
den1=[1 0];%电流环pi
Gpi=tf(num1,den1)
num2=[Vg*C Vg/R];
den2=[L*C L/R 1];
G1=tf(num2,den2)
Gopen=Gpi/Vm*G1;
%bode(PIi,Iden,[100,10e6]);
bode(Gpi,G1,Gopen);
legend('Gpi','G1','Gopen');
grid
三、电压环
电感电流i到输出电压的传递函数为:
用Matlab计算电压环控制对象:
(Kip*R*Vg*s + Kii*R*Vg)/(C*L*R*Vm*s^3 + (L*Vm + C*Kip*R*Vg)*s^2 + (Kip*Vg + R*Vm + C*Kii*R*Vg)*s + Kii*Vg)
% 说明:
% 该内容用于计算buck电压环控制对象
clear;clc;
format long
syms Kip Kii w Kvp Kvi Vg C L R T K s Vo D Vm Dp
%% 电流环内容
GiPI=(Kip*s+Kii)/(s);
Gid=Vg*(C*s+1/R)/(Vm*(L*C*s^2+(L/R)*s+1));
Gvi=R/(R*C*s+1);
%% 电压环内容
GvPI=(Kvp*s+Kvi)/(s);
G1=Gid*GiPI
G2=G1/(1+G1)
G3=G2*Gvi
%整理,以s为未知数合并同类项
collect(G3,s)
用Matlab计算电压环的控制参数:
%% calculate buck v-loop
clear;clc;
format long
syms Kvp Kvi w
Vg=50;
Vo=12;
L=19e-6;
C=1000e-6;
R=0.6;
% buck matlab求解 buck 电压环PI控制器参数
fc=1e3;
w=2*pi*fc;%穿越频率
D=Vo/Vg;
Dp=1-D;
PM=75;
Vm=200;%载波幅值
s=w*1j;
Kip=2.18;
Kii=18586;
%% 参数求解过程
GiPI=(Kip*s+Kii)/(s)
Gid=Vg*(C*s+1/R)/(Vm*(L*C*s^2+(L/R)*s+1));
Gvi=R/(R*C*s+1);
GvPI=(Kvp*s+Kvi)/(s);
a1=(Gvi*Gid*GiPI)/(1+Gid*GiPI);
%a1=collect((Gvi*Gid*GiPI)/(1+Gid*GiPI),s);
ab=abs(a1) %a1的模
an=angle(a1) %a1的相角
a=sqrt((Kvp*w)^2+(Kvi)^2)/w %pi控制器的模
b=atan(Kvp*w/Kvi)-pi/2 %pi控制器的相角
%解方程组
exp1=[ab*a==1,b+an==-(180-PM)/(180/pi)]
solu=vpasolve(exp1,[Kvp,Kvi])
[solu.Kvp,solu.Kvi]
%% 波特图绘制
num1=[double(solu.Kvp) double(solu.Kvi)];
den1=[1 0];%电流环pi
Gpi=tf(num1,den1)
% 电压环
% (Kip*R*Vg*s + Kii*R*Vg)/(C*L*R*Vm*s^3 + (L*Vm + C*Kip*R*Vg)*s^2 + (Kip*Vg + R*Vm + C*Kii*R*Vg)*s + Kii*Vg)
num2=[Kip*R*Vg Kii*R*Vg];
den2=[C*L*R*Vm (L*Vm + C*Kip*R*Vg) (Kip*Vg + R*Vm + C*Kii*R*Vg) Kii*Vg];
G1=tf(num2,den2)
Gopen=Gpi*G1;
%bode(PIi,Iden,[100,10e6]);
bode(Gpi,G1,Gopen);
legend('Gpi','G1','Gopen');
grid
四、电压环改成MPPT用的Vpv
电感电流平均值为输出电流io,io又与PV电流成比例关系
观察IV曲线,
在最大功率点处 k≈1,在两端k从很大到很小。我们取k=1.
那么
电压控制环
D为占空比
k为光伏板IV特性曲线(注意:此处k<0,为计算方便可以先假设k是正值然后再在程序里将Vref-Vo变成Vo-Vref即可)。
用Matlab计算电压环控制对象:
(C*Kip*R*Vg*k_solar*D*s^2 + (Kip*Vg*k_solar*D + C*Kii*R*Vg*k_solar*D)*s + Kii*Vg*k_solar*D)/(C*L*R*Vm*s^3 + (L*Vm + C*Kip*R*Vg)*s^2 + (Kip*Vg + R*Vm + C*Kii*R*Vg)*s + Kii*Vg)
有了控制对象就可以用Matlab计算电压环控制参数。