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

📄 chap6_3.m

📁 先进PID控制例程
💻 M
字号:
%Single Neural Net PID Decouple Controller based on Hebb Learning 
%Algorithm to adjust kp,ki,kd
clear all;
close all;

xc1=[0,0,0]';
xc2=[0,0,0]';

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

%Initilizing kp,ki and kd
%Radom Value
%wkp1_1=rand;wki1_1=rand;wkd1_1=rand;
%wkp2_1=rand;wki2_1=rand;wkd2_1=rand;

wkp1_1=0.3150;wki1_1=1.1615;wkd1_1=1.4948;
wkp2_1=0.2067;wki2_1=0.6365;wkd2_1=0.4996;

error1_1=0;error1_2=0;
error2_1=0;error2_2=0;

u1_1=0.0;u1_2=0.0;u1_3=0.0;u1_4=0.0;
u2_1=0.0;u2_2=0.0;u2_3=0.0;u2_4=0.0;

y1_1=0;y2_1=0;

ts=1;
for k=1:1:1500
time(k)=k*ts;

%Step Signal
%R=[1;0];
R=[0;1];

%------------ Calculating practical output --------------%
%Coupling Plant
yout1(k)=1.0/(1+y1_1)^2*(0.8*y1_1+u1_2+0.2*u2_3);
yout2(k)=1.0/(1+y2_1)^2*(0.9*y2_1+0.3*u1_3+u2_2);

error1(k)=R(1)-yout1(k);
error2(k)=R(2)-yout2(k);

%For Variable1
%Adjusting NNC Weight Value by adopting hebb learning algorithm
   wkp1(k)=wkp1_1+xiteP*error1(k)*u1_1*xc1(1);  %P
   wki1(k)=wki1_1+xiteI*error1(k)*u1_1*xc1(2);  %I 
   wkd1(k)=wkd1_1+xiteD*error1(k)*u1_1*xc1(3);  %D
   xc1(1)=error1(k)-error1_1;                   %P
   xc1(2)=error1(k);                            %I
   xc1(3)=(error1(k)-2*error1_1+error1_2);      %D

   wadd1(k)=abs(wkp1(k))+abs(wki1(k))+abs(wkd1(k));
   w111(k)=wkp1(k)/wadd1(k);
   w122(k)=wki1(k)/wadd1(k);
   w133(k)=wkd1(k)/wadd1(k);
   w1=[w111(k),w122(k),w133(k)];
   k1=0.16;
   u1(k)=u1_1+k1*w1*xc1;
   
%For Variable2
%Adjusting NNC Weight Value by adopting hebb learning algorithm
   wkp2(k)=wkp2_1+xiteP*error2(k)*u2_1*xc2(1);  %P
   wki2(k)=wki2_1+xiteI*error2(k)*u2_1*xc2(2);  %I 
   wkd2(k)=wkd2_1+xiteD*error2(k)*u2_1*xc2(3);  %D
   xc2(1)=error2(k)-error2_1;                   %P
   xc2(2)=error2(k);                            %I
   xc2(3)=(error2(k)-2*error2_1+error2_2);      %D

   wadd2(k)=abs(wkp2(k))+abs(wki2(k))+abs(wkd2(k));
   w211(k)=wkp2(k)/wadd2(k);
   w222(k)=wki2(k)/wadd2(k);
   w233(k)=wkd2(k)/wadd2(k);
   w2=[w211(k),w222(k),w233(k)];
   k2=0.16;
   u2(k)=u2_1+k2*w1*xc2;

%-----------Return of PID parameters------------%
%For Variable1
error1_2=error1_1;
error1_1=error1(k);
wkp1_1=wkp1(k);
wkd1_1=wkd1(k);
wki1_1=wki1(k);

u1_4=u1_3;
u1_3=u1_2;
u1_2=u1_1;
u1_1=u1(k);

y1_1=yout1(k);

%For Variable2
error2_2=error2_1;
error2_1=error2(k);
wkp2_1=wkp2(k);
wkd2_1=wkd2(k);
wki2_1=wki2(k);

u2_4=u2_3;
u2_3=u2_2;
u2_2=u2_1;
u2_1=u2(k);

y2_1=yout2(k);
end
figure(1);
plot(time,R(1),'k',time,yout1,'k');
hold on;
plot(time,R(2),'k',time,yout2,'k');
xlabel('time(s)');ylabel('rin,yout');

⌨️ 快捷键说明

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