实验11Word文档下载推荐.docx
《实验11Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《实验11Word文档下载推荐.docx(33页珍藏版)》请在冰豆网上搜索。
本次实验的内容主要为对PID参数进行优化以及用前馈控制系统。
通过本次实验掌握PID参数的优化方法以及前馈控制系统的特性和优点。
2、实验方案内容
1.PID参数优化
1)PID参数整定
选定一对象,
,由经验公式初步确定参数。
,
。
得到kp=0.833,ki=0.0833。
2)穷举法优化PID参数
根据初步得到的PID参数,选定合适的搜索范围,由穷举法整定PID参数。
PID参数由指标
评价。
评价代码如下
function[Q,t,y,dt]=Qpid(kp,ki,k,T,n,r,tao)
dt=T/10;
st=8*n*T;
lp=fix(st/dt);
y=[0];
t=[0];
x(1:
n)=0;
u=0;
a=exp(-dt/T);
b=1-a;
cu=[0];
kiu=0;
Q=0;
fori=1:
lp
e=r-x(n);
Q=Q+abs(e)*dt;
kpu=kp*e;
kiu=kiu+ki*e*dt;
u=kpu+kiu;
x
(1)=a*x
(1)+k*b*u;
ifn>
=2
x(2:
n)=a*x(2:
n)+b*x(1:
n-1);
end
y=[yx(n)];
t=[ti*dt];
cu=[cuu];
end
穷举法代码如下
clc;
clearall;
closeall;
k=2;
T=10;
n=2;
kp=0.833;
ki=0.0833;
pmax=kp*10;
pmin=kp/10;
imax=ki*10;
imin=ki/10;
step=100;
r=1;
QB=10e40;
fori=pmin:
(pmax-pmin)/step:
pmax
forj=imin:
(imax-imin)/step:
imax
[Q,t,y,dt]=Qpid(i,j,k,T,n,r,0);
if(Q<
QB)
QB=Q;
pB=i;
iB=j;
tB=t;
yB=y;
[Q,t,y]=Qpid(kp,ki,k,T,n,r,0);
[v1,v2,v3,v4,v5,v6,v7]=value(y,dt);
[v1,v2,v3,v4,v5,v6,v7b]=value(yB,dt);
kps=num2str(kp);
kis=num2str(kis);
pbs=num2str(pB);
ibs=num2str(iB);
v7=[v7,'
kp='
kps,'
ki='
kis];
v7b=[v7b,'
pbs,'
ibs];
plot(t,y,'
b'
t,yB,'
r--'
)
legend(v7,v7b,4);
title('
穷举法优化PID参数'
);
3)随机法优化PID参数
根据初步得到的PID参数,选定合适的搜索范围,由随机法整定PID参数。
代码如下
pmax=kp*5;
pmin=kp/5;
imax=ki*5;
imin=ki/5;
step
forj=1:
kpr=(pmax-pmin)*rand()+pmin;
kir=(imax-imin)*rand()+imin;
[Q,t,y,dt]=Qpid(kpr,kir,k,T,n,r,0);
pB=kpr;
iB=kir;
kis=num2str(ki);
随机法优化PID参数'
4)混沌法优化PID参数
根据初步得到的PID参数,选定合适的搜索范围,由混沌法整定PID参数。
d1=rand();
d2=rand();
forj=1:
d1=d1*4*(1-d1);
d2=d2*4*(1-d2);
kpr=(pmax-pmin)*d1+pmin;
kir=(imax-imin)*d2+imin;
混沌法优化PID参数'
5)粒子群算法优化PID参数
根据初步得到的PID参数,选定合适的搜索范围,由粒子群法整定PID参数。
c1=0.7;
c2=1.4;
c3=1.4;
ifn==1
delta=0.5*k;
else
delta=0.92*k*sqrt(n);
ti=0.5*n*T;
Best_Q=1.0e20;
Best_PSO=[delta,ti];
[Best_Q,y0,cu0,t,dt]=Obj_Sim(Best_PSO
(1),Best_PSO
(2),k,T,n,r,0);
[a,b,c,d,e,f,g0]=value(y0,dt);
Tti=num2str(Best_PSO
(2));
Tdelta=num2str(Best_PSO
(1));
g0=[g0,'
Initialparameters,delta='
Tdelta,'
ti='
Tti];
Q_T1=num2str(Best_Q);
Min=[delta*.1ti*.1];
Max=[delta*10ti*10];
Span=Max-Min;
Max_V=(Max-Min)/10;
Num=30;
bPSO=[];
Num
PSO(i,1)=Min
(1)+Span
(1)*rand();
PSO(i,2)=Min
(2)+Span
(2)*rand();
PSO_V(i,1)=Max_V
(1)*(rand()-0.5);
PSO_V(i,2)=Max_V
(2)*(rand()-0.5);
Better_Q(1:
Num)=1.0e20;
Sol_Q=1.0e20;
Sol_PSO=Best_PSO;
Better_PSO=PSO;
forqq=1:
100
fori=1:
[Q(i)]=Obj_Sim(PSO(i,1),PSO(i,2),k,T,n,r);
ifQ(i)<
Better_Q(i)
Better_PSO(i)=PSO(i);
Better_Q(i)=Q(i);
Best_Q=Q
(1);
Best_PSO=PSO(1,:
fori=2:
Best_Q
Best_Q=Q(i);
Best_PSO=PSO(i,:
ifSol_Q>
Sol_Q=Best_Q;
Sol_PSO=Best_PSO;
ifSol_Q<
10
break;
PSO_V(i,:
)=c1*PSO_V(i,:
)+c2*rand()*(Better_PSO(i,:
)-PSO(i,:
))+c3*rand()*(Best_PSO-PSO(i,:
));
ifPSO_V(i,1)>
Max_V
(1)PSO_V(i,1)=Max_V
(1);
ifPSO_V(i,1)<
-Max_V
(1)PSO_V(i,1)=-Max_V
(1);
ifPSO_V(i,2)>
Max_V
(2)PSO_V(i,2)=Max_V
(2);
ifPSO_V(i,2)<
-Max_V
(2)PSO_V(i,2)=-Max_V
(2);
PSO(i)=PSO(i)+PSO_V(i);
ifPSO(i,1)>
Max
(1)PSO(i,1)=Max
(1);
ifPSO(i,1)<
Min
(1)PSO(i,1)=Min
(1);
ifPSO(i,2)>
Max
(2)PSO(i,2)=Max
(2);
ifPSO(i,2)<
Min
(2)PSO(i,2)=Min
(2);
bPSO=[bPSO;
Sol_PSO];
[Sol_Q,y1,cu0,t,dt]=Obj_Sim(Sol_PSO
(1),Sol_PSO
(2),k,T,n,r);
[a,b,c,d,e,f,g3]=value(y1,dt);
Tti=num2str(Sol_PSO
(2));
Tdelta=num2str(Sol_PSO
(1));
Q_T2=num2str(Sol_Q);
g3=[g3,'
Optimizedparameters,delta='
Q_T=['
InitialQualityis:
'
Q_T1,'
OptimizedQualityis:
Q_T2];
figure
(1);
plot(t,y0,'
t,y1,'
k-'
'
LineWidth'
2);
gridon;
legend(g0,g3);
title(Q_T);
figure
(2);
plot(bPSO(:
1),bPSO(:
2),'
2.输入前馈控制
控制对象为
,采用不同的控制方案控制该对象。
1)P控制与前馈控制
采用P控制和P控制与静态前馈控制控制对象。
2)加入扰动后P控制与前馈控制
加入0.2点扰动,采用P和前馈控制控制系统。
修改代码d=0.2
3)PI控制与静态前馈补偿
采用PI控制和PI控制与静态前馈控制控制对象。
4)PI控制与动态前馈补偿
采用PI控制与动态前馈控制控制对象。
5)静态模型失衡
采用PI控制与静态前馈控制控制对象,并更改前馈控制的k值。
6)动态模型失衡
采用PI控制与动态前馈控制控制对象,并更改前馈控制的k值和T值。
%前馈控制
k1=2;
T1=10;
kp=1.096;
%ki=0.046;
ki=0;
d=0;
%扰动
st=100;
dt=0.01;
lp=st/dt;
y=0;
qian=0;
xi=0;
r0=0;
f10=0;
x=zeros(1,n);
t=[];
Y=[];
a1=exp(-dt/T1);
b1=1-a1;
e=r-y;
xp=e*kp;
xi=xi+ki*e*dt;
f1=r+(r-r0)*T1/dt/k1;
f2=f1+(f1-f10)*T1/dt;
f10=f1;
r0=r;
%u=xp+xi+f2;
%动态前馈补偿
%u=xp+xi+r/k1;
%静态前馈补偿
u=xp+xi;
%无前馈补偿
x
(1)=x
(1)*a+k*b*u;
1
n)=x(2:
n)*a+x(1:
n-1)*b;
y=x(n)+d;
Y=[Yy];
[v1,v2,v3,v4,v5,v6,v7]=value(Y,dt);
plot(t,Y);
legend(v7,4);
无前馈P控制'
3.扰动前馈控制
,扰动的传递函数为
分别用不同的控制方案控制对象。
2)加入干扰后P控制与前馈控制
%前馈控制减温水
kp=3.57;
%ki=0.0316;
k=0.4;
T=70;
KD=0.2;
TD=30;
st=1000;
dt=0.1;
dd=zeros(1,lp);
%fori=fix(0.5*lp):
%dd(i)=1;
%end
ad=exp(-dt/TD);
bd=1-ad;
fd=zeros(1,4);
fd0=0;
fd1=0;
x=zeros(1,2);
D=zeros(1,2);
xi=xi+e*ki*dt;
d=dd(i);
fd
(1)=fd
(1)*ad-KD*bd*d;
fd
(2)=fd
(2)*ad+bd*fd
(1);
fd(3)=fd
(2)+(fd
(2)-fd0)*T/dt/k;
fd(4)=fd(3)+(fd(3)-fd1)*T/dt;
fd0=fd
(2);
fd1=fd(3);
%u=xp+xi+fd(4);
%动态补偿
%u=xp+xi-KD/k;
%静态补偿
%无补偿
x
(1)=a*x
(1)+b*k*u;
x
(2)=a*x
(2)+b*x
(1);
D
(1)=ad*D
(1)+b*KD*d;
D
(2)=ad*D
(2)+b*D
(1);
y=x
(2)+D
(2);
3、实验结果及分析
经过优化后,系统的各项指标变好,控制效果得到优化。
7)小结
静态前馈补偿的P控制能消除静态误差,但有干扰时不能消除静态误差。
静态补偿输出的值U恰好能使系统达到给定值。
若模型准确,动态补偿能使系统瞬间达到给定值。
有干扰时,静态动态补偿都会使P控制有静态误差,PI控制无静态误差。
静态模型K失衡时,P控制有静态误差,PI控制无静态误差。
动态模型K失衡时,P控制有静态误差,PI控制无静态误差。
系统瞬间达到某一值。
动态模型T失衡时,P控制无静态误差,PI控制也无静态误差,系统瞬间达到某一值,该值与给定值有一定差距。
加入前馈补偿能改善系统的动态特性。
2)PI控制与前馈补偿
3)静态模型失衡
4)动态模型失衡
4.前馈控制的特点
1.前馈控制器时基于扰动来消除扰动对被控量的影响。
2.扰动发生后,前馈控制器“及时”动作,对抑制被控量由于扰动引起的动、静态偏差比较有效。
3.前馈控制属于开环控制,所以只要系统中各环节是稳定的,则控制系统必然稳定。
4.只适合用来克服“可测不可控”的扰动,而对于系统中其他扰动无抑制作用。
因此前馈补偿具有指定性补偿的局限性。
5.前馈控制器的控制规律,取决于被控对象的特性,因此,控制规律往往比较复杂。
6.前馈控制难以完全补偿。
7.前馈控制器只能克服可测不可控的扰动。
四、实验中遇到的问题
1.PID控制效果的指标Q不好确定,四种评判方法得到的结果有不小的差别,并且Q值小的时候超调量反而较大(kp较大时Q较小,超调量较大),控制效果变差。
2.减温水的动态前馈控制效果没有PI的好。
并且动态前馈控制的波动比静态前馈控制大。
3.减温水的扰动D造成的影响不太明显。
4.前馈控制未能消除减温水的扰动D。