⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 yanchipid_gaf.m

📁 应用MATILAB编程实现了遗传算法整定PID控制器参数
💻 M
字号:
function [Kpidi,BsJ]=yanchipid_gaf(Kpidi,BsJ)
global rin yout timef

%PID Controller
ts=0.05;
tao=1;
[np,dp]=pade(tao,2);
Gp=tf(np,dp);
G1=tf(15,[5 1]);
G=series(G1,Gp);
Gd=c2d(G,ts,'zoh');
[num,den]=tfdata(Gd,'v');

u_1=0.0;u_2=0.0;u_3=0.0;

y_1=0;y_2=0;y_3=0;

x=[0,0,0]';

error_1=0;
e_1=0.0;
ec_1=0.0;
tu=1;
s=0;
B=0;
P=400;

for k=1:1:P
timef(k)=k*ts;

rin(k)=10;


u(k)=Kpidi(1)*x(1)+Kpidi(2)*x(2)+Kpidi(3)*x(3);

if u(k)>=10
   u(k)=10;
end
if u(k)<=-0.5
   u(k)=-0.5;
end

yout(k)=-den(2)*y_1-den(3)*y_2-den(4)*y_3+num(1)*u(k)+num(2)*u_1+num(3)*u_2+num(4)*u_3;
error(k)=rin(k)-yout(k);
%%%%%%%%%%%%%%Return of PID parameters%%%%%%%%%%%%%%%
   u_3=u_2;
   u_2=u_1;
   u_1=u(k);
   
   y_3=y_2;
   y_2=y_1;
   y_1=yout(k);
   
   x(1)=error(k);                % Calculating P
   x(2)=(error(k)-error_1)/ts;        % Calculating D
   x(3)=x(3)+error(k)*ts;           % Calculating I

   e_1=x(1);
   ec_1=x(2);
   
   error_2=error_1;
   error_1=error(k);

if s==0
   if yout(k)>0.95&yout(k)<1.05
      tu=timef(k);
      s=1;
   end 
end
end

for i=1:1:P
   Ji(i)=0.999*abs(error(i))+0.01*u(i)^2*0.1;
   B=B+Ji(i);   
  if i>1   
   erry(i)=yout(i)-yout(i-1);
   if erry(i)<0
      B=B+100*abs(erry(i));
   end    
  end
end
BsJ=B+0.2*tu*10;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -