微分先行的PID控制算法
实验目的
通过上机实践操作,使学生能够直观理解课堂上所讲的内容。学生在计算机上结合课程教学用的Matlab语言或Simulink构建仿真模型实现微分先行的PID控制算法,培养学生的动手实践能力。
实验内容
用Matlab语言或Simulink构建仿真模型实现微分先行的PID控制算法
e?80t题目:控制对象为G0?,采样时间为20s,输入信号为带有高频干
70s?1?t))?0.05sin(0.03?t),执扰的方波信号:r(t)?sign(square(0.0005行机构输出限制在[-10,10],仿真时间为中,kp?0.3,ki?0.006,kd?18,?8000s;其
?0.4.试采用微分先行的PID控制算法
和标准PID控制算法实现后,比较两种控制算法的输入/输出、控制量。
实验原理
微分先行PID控制算法:
uD(k)?c1*uD(k?1)?c2*y(k)?c3*y(k?1)u(k)?kp*e(k)?ki*?e(j)*Tj?0k
式中c1??*Td?*Td?T,c2?Td?TTd,c3?,e(k)?r(k)?uD(k)。
?*Td?T?*Td?T实验程序:
clear all;close all;
ts=20; M=2;
ki=0.006;kd=18;kp=0.3;gama=0.4; sys=tf(1,[70 1],'inputdelay',80); dsys=c2d(sys,ts,'zoh');
[num,den]=tfdata(dsys,'v'); ud_1=0;y_1=0;e_1=0;ei=0;
u_1=0;u_2=0;u_3=0;u_4=0;u_5=0; Td=kd/kp;
c1=gama*Td/(gama*Td+ts);c2=(Td+ts)/(gama*Td+ts);c3=Td/(gama*Td+ts);%微分先行算法中的参数c1,c2,c3 for k=0:1:400
time(k+1)=k*ts;
y(k+1)=-den(2)*y_1+u_5*num(2); %输出量 ud(k+1)=c1*ud_1+c2*y(k+1)-c3*y_1; %控制量 ud_1=ud(k+1);
r(k+1)=sign(sin(0.0005*pi*time(k+1)))+0.05*sin(0.03*pi*time(k+1));
if M==1
e(k+1)=r(k+1)-ud(k+1);
ei=ei+e(k+1)*ts; %积分项累加值 u(k+1)=kp*e(k+1)+ki*ei; %控制量 else
e(k+1)=r(k+1)-y(k+1); ei=ei+e(k+1)*ts;
u(k+1)=kp*e(k+1)+ki*ei+kd*(e(k+1)-e_1)/ts; end
if u(k+1)>10 %控制量限幅 u(k+1)=10;
else if u(k+1)<-10 u(k+1)=-10; end end
y_1=y(k+1);
u_5=u_4;u_4=u_3;u_3=u_2;u_2=u_1;u_1=u(k+1);e_1=e(k+1); end
hold on; if M==1
figure(1);
plot(time,r,'r',time,y,'b');xlabel('时间(单位:s)');ylabel('输入/输出');
legend('输入','微分先行PID输出'); else
figure(1);
plot(time,r,'r',time,y,'b');xlabel('时间(单位:s)');ylabel('输入/输出');
legend('输入','普通PID输出'); end
figure(2);
plot(time,u,'r');xlabel('时间(单位:s)');ylabel('控制量'); legend('微分先行PID控制算法控制量');
实验结果
微分先行PID算法结果:
1.5输入微分先行PID输出1 0.5输入/输出0-0.5-1-1.5 010002000300040005000时间(单位:s)600070008000
1.5微分先行PID控制算法控制量10.5控制量0-0.5-1-1.5 010002000300040005000时间(单位:s)600070008000
普通PID算法结果:
1.5输入普通PID输出1 0.5输入/输出0-0.5-1-1.5 010002000300040005000时间(单位:s)600070008000
2微分先行PID控制算法控制量1.510.5控制量0-0.5-1-1.5-2 010002000300040005000时间(单位:s)600070008000
结果及分析
通过比较两种PID 算法的输出可发现,当输入r(t)具有高频干扰信号时,采用微分先行PID算法,只对输出进行微分,可以避免给定值频繁升降引起的振荡,改善系统动态特性。