一、小信号建模
参考相关资料,可以建立2个基本等式:
----------------------公式1
-------------------------公式2
假设扰动为0,则可以推导
得到系统控制框图如下:
进一步计算电感电流扰动到输出电压扰动之间的传递函数关系。
假设的扰动为0,由公式①和②可得
二、控制环
2.1 电流内环控制
电流环采用PI控制器
补偿后的开环传递函数
设计指标,期望穿越频率为开关频率的二十分之一,设置相位裕度为75°,由此可以得到
解方程
基本思路是角度相加,模相乘。
求解方程的matlab代码如下:
clear;clc;
format long
syms Kip Kii w
Vg=100;
Vo=200;
L=1000e-6;
C=1000e-6;
R=10;
% boost matlab求解PI控制器参数
fc=5e3;
w=2*pi*fc;%穿越频率
D=1-Vg/Vo;
PM=75;
Vm=200;%载波幅值
s=w*1j;
%% 参数求解过程
G1PI=(Kip*s+Kii)/(s);
Gid=(Vo*C*s+2*Vo/R)/(Vm*(L*C*s^2+(L/R)*s+(1-D)^2));
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=[Vo*C 2*Vo/R];
den2=[L*C L/R (1-D)^2];
G1=tf(num2,den2)
Gopen=Gpi/Vm*G1;
%bode(PIi,Iden,[100,10e6]);
bode(Gpi,G1,Gopen);
legend('Gpi','G1','Gopen');
grid
电流环PI控制算法:
float iPI(float REF , float FB)
{
I.REF = REF;
I.FB = FB;
I.ERROR = I.REF-I.FB;
I.P = I.KP*I.ERROR;
//向前欧拉法,h是控制周期值,比如100kHz的控制频率则是10us
I.I = I.I+I.KI*I.LAST ERROR*I.h;
I.I = sat(I.I,0,P1.PRD*O.85);
I.tAST_ERROR = I.ERROR;
return sat(I.I+I.P,O,P1.PRD*O.85);
}
2.2 电压外环控制
电压环PI控制算法
电压环被控对象:
用matlab语言来计算和整理:
% 说明:
% 该内容用于计算boost电压环控制对象
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=(Vo*C*s+2*Vo/R)/(Vm*(L*C*s^2+(L/R)*s+Dp^2));
Gvi=(Dp^2*R-L*s)/(Dp*R*C*s+2*Dp);
%% 电压环内容
GvPI=(Kvp*s+Kvi)/(s);
G1=Gid*GiPI
G2=G1/(1+G1)
G3=G2*Gvi
%整理,以s为未知数合并同类项
collect(G3,s)
整理出来就是这样子的:
下面的matlab代码用于计算电压环参数:
clear;clc;
format long
syms Kvp Kvi w
Vg=100;
Vo=200;
L=310e-6;
C=33e-6;
R=20;
% boost matlab求解boost 电压环PI控制器参数
fc=1e3;
w=2*pi*fc;%穿越频率
D=1-Vg/Vo;
Dp=1-D;
PM=75;
Vm=200;%载波幅值
s=w*1j;
Kip=9.247;
Kii=63458;
%% 参数求解过程
GiPI=(Kip*s+Kii)/(s)
Gid=(Vo*C*s+2*Vo/R)/(Vm*(L*C*s^2+(L/R)*s+Dp^2));
Gvi=(Dp^2*R-L*s)/(Dp*R*C*s+2*Dp);
GvPI=(Kvp*s+Kvi)/(s);
a1=(Gvi*Gid*GiPI)/(1+Gid*GiPI);
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)
num2=[(-Kip*L*Vo) (Kip*R*Vo*Dp^2 - Kii*L*Vo) Dp^2*Kii*R*Vo];
den2=[C*Dp*L*R*Vm (Dp*L*Vm + C*Dp*Kip*R*Vo) (2*Dp*Kip*Vo + Dp^3*R*Vm + C*Dp*Kii*R*Vo) 2*Dp*Kii*Vo];
G1=tf(num2,den2)
Gopen=Gpi*G1;
%bode(PIi,Iden,[100,10e6]);
bode(Gpi,G1,Gopen);
legend('Gpi','G1','Gopen');
grid
float vPI(float REF ,float FB)
{
V.REF=REF;
V.FB=FB;
V.ERROR=V.REF-V.FB;
V.P=V.KP*V.ERROR;
V.I=V.I+V.KI*V.LAST ERROR*V.h;//向前欧拉法
v.I=sat(v.I,0,30);//上限设在稳态值的1.5倍
V.LAST ERROR = V.ERROR;
return sat(V.I+V.P,0,30);
}
参考文献:
1:电力电子系统建模及控制,作者:徐德鸿;
2:开关变换器的建模及控制,作者:张卫平;
3:基于Boost电路的有源功率因数校正(论文),作者:陈伟(指导教师:陈德容)
4:电压控制型Boost变换器系统的分析与设计(硕士论文),作者:郭俊峰