新闻  |   论坛  |   博客  |   在线研讨会
基于二次型性能指标的单神经元pid控制程序
hanjinbao | 2007-12-27 08:55:31    阅读:2827   发布文章

%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');

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
高永辉 [ 匿名]  2008-10-06 22:03:29 

想开发PID调节器,联系一下13908645396

gehao [ 匿名]  2008-05-27 20:04:25 

能把程序解释以下吗

最近文章
PID的原理
2007-12-29 09:23:53
PID控制简介
2007-12-27 08:57:15
推荐文章
最近访客