专家PID控制Word下载.docx
《专家PID控制Word下载.docx》由会员分享,可在线阅读,更多相关《专家PID控制Word下载.docx(11页珍藏版)》请在冰豆网上搜索。
当式中,—————误差e的第k个极值;
)ke(m—-分别为第k次和第k-1次控制器输出;
)1(),uku(k=2——————增益放大系数,;
1kk11=0.6—————增益抑制系数,;
10kk22——设定的误差界限,,MM,M0.05M2121其中可取0.8,0.4,0.2,0.01四值;
M1=0.001—————任意小正实数。
三、实验过程:
3500)(sGp离散取样,选取采样时间间隔为1ms;
1、对传递函数
250ss1.52、PID控制算法的关键问题是其三个参数Kp,Ti,Td的设定,选取初始值为:
kp=0.6;
ki=0.03;
kd=0.01;
3、取阶跃信号;
1(k)rin4、写出线性模型及当前采样时刻的误差值:
y(k)den
(2)y(k1)den(3)y(k2)den(4)y(k3)num
(1)u(k)num
(2)u(k
1)num(3)u(k2)num(4)u(k3)e(k)rin(k)y(k)
5、循环第3和第4步;
6、通过Matlab仿真出专家PID控制的阶跃响应曲线图和误差响应曲线图。
四、实验结果:
图1阶跃响应曲线
误差响应曲线2图
附录:
仿真程序
%ExpertPIDControllerclearall;
closeall;
ts=0.001;
sys=tf(3.5e003,[1.5,50,0]);
dsys=c2d(sys,ts,'
z'
);
[num,den]=tfdata(dsys,'
v'
u_1=0.0;
u_2=0.0;
u_3=0.0;
y_1=0;
y_2=0;
y_3=0;
x=[0,0,0]'
;
x2_1=0;
kp=0.6;
ki=0.03;
kd=0.01;
error_1=0;
fork=1:
1:
500
time(k)=k*ts;
rin(k)=1.0;
%TracingJieyueSignal
u(k)=kp*x
(1)+kd*x
(2)+ki*x(3);
%PIDController
%Expertcontrolrule
ifabs(x
(1))>
0.8%Rule1:
Unclosedcontrolfirstly
u(k)=0.45;
elseifabs(x
(1))>
0.40
u(k)=0.40;
0.20
u(k)=0.12;
0.01
u(k)=0.10;
end
ifx
(1)*x
(2)>
0|(x
(2)==0)%Rule2
=0.05u(k)=u_1+2*kp*x
(1);
else
u(k)=u_1+0.4*kp*x
(1);
if(x
(1)*x
(2)<
0&
x
(2)*x2_1>
0)|(x
(1)==0)%Rule3u(k)=u(k);
ifx
(1)*x
(2)<
x
(2)*x2_1<
0%Rule4
=0.05u(k)=u_1+2*kp*error_1;
u(k)=u_1+0.6*kp*error_1;
ifabs(x
(1))<
=0.001%Rule5:
IntegrationseparationPIcontrol
u(k)=0.5*x
(1)+0.010*x(3);
end%Restrictingtheoutputofcontrollerifu(k)>
=10
u(k)=10;
endifu(k)<
=-10u(k)=-10;
%Linearmodel
yout(k)=-den
(2)*y_1-den(3)*y_2+num
(1)*u(k)+num
(2)*u_1+num(3)*u_2;
error(k)=rin(k)-yout(k);
%ReturnofPIDparameters%
u_3=u_2;
u_2=u_1;
u_1=u(k);
y_3=y_2;
y_2=y_1;
y_1=yout(k);
x
(1)=error(k);
%CalculatingPx2_1=x
(2);
x
(2)=(error(k)-error_1)/ts;
%CalculatingDx(3)=x(3)+error(k)*ts;
%CalculatingI
error_1=error(k);
endfigure
(1);
plot(time,rin,'
b'
time,yout,'
r'
xlabel('
time(s)'
ylabel('
rin,yout'
figure
(2);
plot(time,rin-yout,'
error'
%FuzzyTunningPIDControlclearall;
a=newfis('
fuzzpid'
%Parametere
a=addvar(a,'
input'
'
e'
[-3,3]);
a=addmf(a,'
1,'
NB'
zmf'
[-3,-1]);
NM'
trimf'
[-3,-2,0]);
NS'
[-3,-1,1]);
Z'
[-2,0,2]);
PS'
[-1,1,3]);
PM'
[0,2,3]);
PB'
smf'
[1,3]);
ec'
%Parametereca=addmf(a,'
2,'
a=addmf(a,'
%Parameterkpa=addvar(a,'
output'
kp'
[-0.3,0.3]);
[-0.3,-0.1]);
[-0.3,-0.2,0]);
[-0.3,-0.1,0.1]);
[-0.2,0,0.2]);
[-0.1,0.1,0.3]);
[0,0.2,0.3]);
[0.1,0.3]);
%Parameterkia=addvar(a,'
ki'
[-0.06,0.06]);
[-0.06,-0.02]);
[-0.06,-0.04,0]);
[-0.06,-0.02,0.02]);
[-0.04,0,0.04]);
[-0.02,0.02,0.06]);
[0,0.04,0.06]);
[0.02,0.06]);
kd'
3,'
rulelist=[1171511;
1271311;
1362111;
1462111;
1553111;
1644211;
1744511;
2171511;
2271311;
2362111;
2453211;
2553211;
2644311;
2734411;
3161411;
3262311;
3363211;
3453211;
3544311;
3635311;
3735411;
4162411;
4262311;
4353311;
4444311;
4535311;
4626311;
4726411;
5152411;
5253411;
5344411;
5435411;
5535411;
5626411;
5727411;
6154711;
6244511;
6335511;
6425511;
6526511;
6627511;
6717711;
7144711;
7244611;
7325611;
7426611;
7526511;
7617511;
7717711];
a=addrule(a,rulelist);
a=setfis(a,'
DefuzzMethod'
centroid'
writefis(a,'
a=readfis('
%PIDController
sys=tf(3500,[1.5,50,0]);
dsys=c2d(sys,ts,'
tustin'
y_1=0;
e_1=0.0;
ec_1=0.0;
kp0=0.40;
kd0=1.0;
ki0=0.0;
rin(k)=1;
%UsingfuzzyinferencetotunningPID
k_pid=evalfis([e_1,ec_1],a);
kp(k)=kp0+k_pid
(1);
ki(k)=ki0+k_pid
(2);
kd(k)=kd0+k_pid(3);
u(k)=kp(k)*x
(1)+kd(k)*x
(2)+ki(k)*x(3);
ifk==300%Addingdisturbance(1.0vattime0.3s)u(k)=u(k)+1.0;
ifu(k)>
ifu(k)<
=-10
u(k)=-10;
endyout(k)=-den
(2)*y_1-den(3)*y_2+num
(1)*u(k)+num
(2)*u_1+num(3)*u_2;
%%%%%%%%%%%%%%ReturnofPIDparameters%%%%%%%%%%%%%%%u_3=u_2;
%CalculatingP
%CalculatingD
%CalculatingI
x
(2)=error(k)-error_1;
x(3)=x(3)+error(k);
e_1=x
(1);
ec_1=x
(2);
error_2=error_1;
endshowrule(a)figure
(1);
plot(time,rin,'
plot(time,error,'
figure(3);
plot(time,u,'
xlabel('
u'
figure(4);
plot(time,kp,'
figure(5);
plot(time,ki,'
figure(6);
plot(time,kd,'
figure(7);
plotmf(a,'
1);
figure(8);
2);
figure(9);
figure(10);
figure(11);
3);
plotfis(a);
time(s}
time(s)
1.4
I
-TII
III
1.2
≡*
1
•
-
0.8
■
n0.6
0.4
0.2
-0.2(
U∖
∖
IL
∖∖
⅝
]
IIII
11I
0.05
0.10.150.20.250.30.350.40.450.5
的隶属度函数曲线ki2图
图3kp的隶属度函数曲线
图4ec的隶属度函数曲线