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

📄 pid2.m

📁 基于二次型性能指标的单神经元pid控制程序
💻 M
字号:
%Single Neural Net PID Controller based on Second Type Learning Algorithm 
clear all; 
close all; 

xc=[0,0,0]'; 

K=0.02;P=2;Q=1;d=6; 

xiteP=120; 
xiteI=4; 
xiteD=159; 

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

wkp_1=0.34; 
wki_1=0.32; 
wkd_1=0.33; 

error_1=0;error_2=0; 
y_1=0;y_2=0; 
u_1=0.1726;u_2=0;u_3=0;u_4=0;u_5=0;u_6=0;u_7=0; 

ts=0.001; 
for k=1:1:250 
time(k)=k*ts; 
rin(k)=1.0; %Tracing Step Signal 

ym(k)=0; 
if k==100 
ym(k)=0.10; %Disturbance 
end 
yout(k)=0.368*y_1+0.26*y_2+u_6+0.632*u_7+ym(k); 
error(k)=rin(k)-yout(k); 

wx=[wkp_1,wkd_1,wki_1]; 
wx=wx*xc; 

b0=yout(1); 
% b0=0.05; 
K=0.0175; 
wkp(k)=wkp_1+xiteP*K*[P*b0*error(k)*xc(1)-Q*K*wx*xc(1)]; 
wki(k)=wki_1+xiteI*K*[P*b0*error(k)*xc(2)-Q*K*wx*xc(2)]; 
wkd(k)=wkd_1+xiteD*K*[P*b0*error(k)*xc(3)-Q*K*wx*xc(3)]; 

xc(1)=error(k)-error_1; %P 
xc(2)=error(k); %I 
xc(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*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_7=u_6;u_6=u_5;u_5=u_4;u_4=u_3; 
u_3=u_2;u_2=u_1;u_1=u(k); 

wkp_1=wkp(k); 
wkd_1=wkd(k); 
wki_1=wki(k); 

y_2=y_1;y_1=yout(k); 
end 
figure(1); 
plot(time,rin,'r',time,yout,'b'); 
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 + -