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

📄 singlpid.m

📁 用MATLAB编写的单神经元PID仿真程序,可以在具体控制实例中加以验证
💻 M
字号:
function singlpid()
%Single Neural Adaptive PID Controller
clear all; 
close all; 

x=[0,0,0]'; 

xiteP=0.40; 
xiteI=0.35; 
xiteD=0.40; 

%Initilizing kp,ki and kd 
wkp_1=0.10; 
wki_1=0.10; 
wkd_1=0.10; 
%wkp_1=rand; 
%wki_1=rand; 
%wkd_1=rand; 

error_1=0; 
error_2=0; 
y_1=0;y_2=0;y_3=0; 
u_1=0;u_2=0;u_3=0; 

ts=0.001; 
for k=1:1:10000 
   time(k)=k*ts; 
   rin(k)=sign(abs(sin(2*2*pi*k*ts))); 
   %yout(k)=-0.016899*y_1-8e-5*y_2+50.003062*u_1+0.2002933*u_2;
   yout(k)=0.668*y_1-0.26*y_2+0.29*u_1+0.282*u_2; 
   error(k)=rin(k)-yout(k); 
    
   %Adjusting Weight Value by hebb learning algorithm 
   M=1; 
   if M==1              %No Supervised Heb learning algorithm 
       wkp(k)=wkp_1+xiteP*u_1*x(1);  %P 
       wki(k)=wki_1+xiteI*u_1*x(2);  %I 
       wkd(k)=wkd_1+xiteD*u_1*x(3);  %D 
       K=0.06;   
   elseif M==2          %Supervised Delta learning algorithm 
       wkp(k)=wkp_1+xiteP*error(k)*u_1;  %P 
       wki(k)=wki_1+xiteI*error(k)*u_1;  %I 
       wkd(k)=wkd_1+xiteD*error(k)*u_1;  %D 
       K=0.12;   
   elseif M==3          %Supervised Heb learning algorithm 
       wkp(k)=wkp_1+xiteP*error(k)*u_1*x(1);  %P 
       wki(k)=wki_1+xiteI*error(k)*u_1*x(2);  %I 
       wkd(k)=wkd_1+xiteD*error(k)*u_1*x(3);  %D 
       K=0.12;   
   elseif M==4          %Improved Heb learning algorithm 
       wkp(k)=wkp_1+xiteP*error(k)*u_1*(2*error(k)-error_1); 
       wki(k)=wki_1+xiteI*error(k)*u_1*(2*error(k)-error_1); 
       wkd(k)=wkd_1+xiteD*error(k)*u_1*(2*error(k)-error_1); 
       K=0.12;   
   end 
    
   x(1)=error(k)-error_1;             %P 
   x(2)=error(k);                     %I 
   x(3)=error(k)-2*error_1+error_2;   %D 
    
   wadd(k)=abs(wkp(k))+abs(wki(k))+abs(wkd(k)); 
   w11(k)=wkp(k)/wadd(k); 
   w22(k)=wki(k)/wadd(k); 
   w33(k)=wkd(k)/wadd(k); 
   w=[w11(k),w22(k),w33(k)]; 
    
   u(k)=u_1+K*w*x;     %Control law 
    
   if u(k)>10 
       u(k)=10; 
   end   
   if u(k)<-10 
       u(k)=-10; 
   end   
    
   error_2=error_1; 
   error_1=error(k); 
    
   u_3=u_2;u_2=u_1;u_1=u(k); 
   y_3=y_2;y_2=y_1;y_1=yout(k); 
    
   wkp_1=wkp(k); 
   wkd_1=wkd(k); 
   wki_1=wki(k); 
end 
figure(1); 
plot(time,rin,'b',time,yout,'r'); 
xlabel('time(s)');ylabel('rin,yout'); 
axis([0 1 0 1.3]);
hold on
step([3e4 7e5],[1 156 4e4 7e5],'--');
axis([0 1 0 1.2]);
figure(2); 
plot(time,error,'r'); 
%xlabel('time(s)');ylabel('error'); 
figure(3); 
plot(time,u,'r'); 
xlabel('time(s)');ylabel('u'); 

⌨️ 快捷键说明

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