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

📄 复件shupidwcandcontrolpid1psd1.m

📁 自适应PSD神经元控制,用于伺服电机的调速度,比单神经元有跟好的鲁帮性
💻 M
字号:
%常规pid控制
clear all; 
close all; 
kp=0.30;
ki=0.0002;
kd=2.2;
error_1=0;
error_2=0;
y_1=0;
y_2=0;
u_1=0;
u_2=0;
ts=0.01024; 
for k=1:1:30
   time(k)=k*ts;  
   rin(k)=1; 
        %Tracing Step Signal  
    yout(k)=1.8799*y_1-0.8799*y_2+1.0*0.06*u_1+1.0*0.05785*u_2; 
    error(k)=rin(k)-yout(k);  
   u(k)=u_1+kp*(error(k)-error_1)+ki*error(k)+kd*(error(k)-2*error_1+error_2);  
    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_2=u_1;u_1=u(k); 
    y_2=y_1;y_1=yout(k);
   end
%神经元PSD控制
xc=[0,0,0]';
K_1=4;
Tv_1=500;
xiteP=1000.;
xiteI=0.01; 
xiteD=8000.00; %Initilizing kp,ki and kd wkp_1=rand; wki_1=rand; wkd_1=rand; 
wkp_1=0.11;
wki_1=0.11; 
wkd_1=0.11;
error_1=0;
error_2=0; 
y_1=0;y_2=0;
u_1=0.00;u_2=0;
ts=0.01024; 
wx_1=0;
for k=1:1:30
    time(k)=k*ts;    
    rin(k)=1; 
         %Tracing Step Signal 
  youts(k)=1.8799*y_1-0.8799*y_2+1.0*0.06*u_1+1.0*0.05785*u_2;
    error(k)=rin(k)-youts(k); 
    wx=[wkp_1,wkd_1,wki_1]; 
    wx(k)=wx*xc; 
    b(k)=sign((youts(k)-y_1)/(wx(k)-wx_1+0.00000000000001)); 
    if sign(error(k))~=sign(error_1),K(k)=0.75*K_1;else K(k)=K_1+0.05*K_1/Tv_1;end   
    wkp(k)=wkp_1+xiteP*K(k)*error(k)*(2*error(k)-error_1)*b(k);
    wki(k)=wki_1+xiteI*K(k)*error(k)*(2*error(k)-error_1)*b(k);
    wkd(k)=wkd_1+xiteD*K(k)*error(k)*(2*error(k)-error_1)*b(k);       
    xc(1)=error(k)-error_1;               %P  
    xc(2)=error(k);       %I   
    xc(3)=error(k)-2*error_1+error_2;   %D  
     Tv(k)=Tv_1+0.1*sign(abs(xc(1))-Tv_1*abs(xc(3)));
    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(k)*w*xc;  
       % 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_2=u_1;u_1=u(k);   
       wkp_1=wkp(k); wkd_1=wkd(k); wki_1=wki(k);  wx_1=wx(k);K_1=K(k);Tv_1=Tv(k);
       y_2=y_1;y_1=youts(k); end 
    hold on
         plot(time,rin,'b',time,yout,'r');
         plot(time,rin,'b',time,youts,'--g');
  hold off
   %xlabel('time(s)');ylabel('rin,yout');
   %figure(2); 
   %plot(time,u,'r'); xlabel('time(s)');ylabel('u'); 
   %figure(3);
  % subplot(311);
   %plot(time,wkp,'r'); xlabel('time(s)');ylabel('wkp'); 
   %subplot(312); 
   %plot(time,wki,'r'); xlabel('time(s)');ylabel('wki'); 
   %subplot(313); 
  % plot(time,wkd,'r'); xlabel('time(s)');ylabel('wkd'); 

⌨️ 快捷键说明

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