智能控制之专家系统的设计.docx
《智能控制之专家系统的设计.docx》由会员分享,可在线阅读,更多相关《智能控制之专家系统的设计.docx(5页珍藏版)》请在冰点文库上搜索。
1.题目
题目一、需要对专家控制规则做出明确的设计、编写控制器程序并作解释。
已知典型二阶系统的单位阶跃响应输出曲线和误差曲线如图1所示。
假设某二阶系统的的传递
函数为G(s)=
133
s2+25s
,对象采样时间为1ms,试设计一个专家PID控制器,根据其响应误差制定专
家控制规则,以改善响应特性,并进行Matlab仿真。
2.专家PID控制过程分析
专家控制的实质是基于受控对象和控制规律的各种知识,并以智能的方式利用这些知识来设计控制器。
利用专家经验来设计PID参数便构成了专家PID控制。
(1)首先通过传递函数离散取样,采样时间间隔为1ms。
(2)然后取PID初始值:
kp=0.6;ki=0.03;kd=0.01;
(3)二阶系统阶跃过程分析如下,取阶跃信号rin(k)=1
令e(k)表示离散化的当前采样时刻的误差值,e(k-1)、e(k-2)、分别表示前一个和前两个采样时刻的误差值,则有
De(k)=e(k)-e(k-1)
De(k-1)=e(k-1)-e(k-2)
根据误差及其变化,对二阶系统单位阶跃响应误差曲线做如下定性分析:
首先定义如下参数:
误差界限,M1>M2>0;其中M1可取0.8,0.6,0.4,三值,M2=0.1
增益抑制系数,0增益放大系数,k1>1;k1=2
第k次和第k-1次控制器输出u(k),u(k-1);
e=0.001—————任意小正实数。
Ⅰ.e(k)>0.8时,说明误差的绝对值已经很大。
不论误差变化趋势如何,都应考虑控制器按定值
0.7输出。
以达到迅速调整误差,使得误差绝对值以最大速度减小,同时避免超调。
此时,它相当于开环控制。
同理,当e(k)>0.6,定值输出0.5;当e(k)>0.4,定值输出0.2。
Ⅱ.当e(k)De(k)>0或e(k)³M2,说明误差很大,并且在朝着误差绝对值增大方向变化,这时可以考虑由控制器实施较强的控制作用,使得误差绝对值朝减小方向变化,迅速减小误差的绝对值,控制器的输出为u(k)=u(k-1)+k1kpe(k)
当e(k)De(k)>0且e(k)Ⅲ.当e(k)De(k)<0,De(k)De(k-1)>0或e(k)=0时,即e(k)此时可以考虑保持控制器输出不变。
u(k)=Kp*e(k)+Kd*(e(k)-e(k-1))/ts+Ki*(e(k)+e(k)*ts)。
Ⅳ.当e(k)De(k)<0,De(k)De(k-1)<0且e(k)³M2时,即e(k-1)>e(k)且e(k-1)>e(k-2)且
e(k)³M2,说明误差处于极值状态并且误差绝对值较大,可以考虑实施较强的控制作用,即
u(k)=u(k-1)+k1kpe(k)
当e(k)De(k)<0,De(k)De(k-1)<0且e(k)u(k)=u(k-1)+k2kpe(k)
Ⅴ.当e(k)£e(精度)时,说明误差绝对值很小,此时加入积分环节,减小稳态误差。
此时控制器输出为:
u(k)=kp*e(k)+ki*(e(k)+e(k)*ts)。
综上所述,(0,t1),(t2,t3),(t4,t5)这几个区域,误差朝绝对值减小的方向变化,此时
可以采取等待措施,相当于实施开环控制;(t1,t2),(t3,t4)这几个区域,误差朝着绝对值增大的方向变化,根据误差的大小分别实施较强或者一般的控制作用,以抑制动态误差。
、
(4)最后写出线性模型及当前采样时刻的误差值:
y(k)=-den
(2)´y(k-1)-den(3)´y(k-2)+num
(1)´u(k)+num
(2)´u(k-1)+num(3)´u(k-2)
e(k)=rin(k)-y(k)
(5)循环以上(3)—(4)步,循环次数为1000次。
(6)画出专家PID控制阶跃响应曲线图(a)和误差响应曲线(b)。
专家PID控制系统阶跃响应曲线图(a)
误差响应曲线(b)
(7)程序部分
%ExpertPIDControllerclearall
closeall
ts=0.001; %采样周期
sys=tf(133,[1,25,0]); %tf表示给出分子和分母系数生成一个传递函数sysdsys=c2d(sys,ts,'z'); %将连续形式sys转化为离散形式dsys,采样周期为1ms,z表
示零阶保持器
[num,den]=tfdata(dsys,'v'); %num表示分子,den表示分母,tfdata表示取离散形式dsys的
分子分母,v表示取出的数据保存为行向量的形式
u_1=0;u_2=0;y_1=0;y_2=0;
x=[0,0,0]'; %x
(1)x
(2)x(3)分别对应PID中比例、微分、积分项x2_1=0;
kp=1.64;
ki=0.03;kd=0.01;k1=2;k2=0.5;
error_1=0;
fork=1:
1:
1000time(k)=k*ts;
r(k)=1; %单位阶跃输入
u(k)=kp*x
(1)+kd*x
(2)+ki*x(3); %PIDController
%Expertcontrolrule
ifabs(x
(1))>0.8 %规律一u(k)=0.7;
elseifabs(x
(1))>0.60
u(k)=0.5;
elseifabs(x
(1))>0.40u(k)=0.20;
end
if(x
(1)*x
(2)>0)|(x
(2)==0) %规律二ifabs(x
(1))>=0.1
u(k)=u_1+k1*kp*x
(1);
else
u(k)=u_1+k2*kp*x
(1);
end
end
if(x
(1)*x
(2)<0&x
(2)*x2_1>0)|(x
(1)==0) %规律三u(k)=kp*x
(1)+kd*x
(2)+ki*x(3);
end
if(x
(1)*x
(2)<0)&(x
(2)*x2_1<0) %规律四ifabs(x
(1))>=0.1
u(k)=u_1+k1*kp*x
(1);
else
u(k)=u_1+k2*kp*x
(1);
end
end
ifabs(x
(1))<=0.001 %规则五u(k)=0.5*x
(1)+0.01*x(3);
end
%Restrictingtheoutputofcontroller防止程序跑飞ifu(k)>=10
u(k)=10;
end
ifu(k)<=-10u(k)=-10;
end
%Linearmodel
y(k)=-den
(2)*y_1-den(3)*y_2+num
(1)*u(k)+num
(2)*u_1+num(3)*u_2;%系统的差分方程error(k)=r(k)-y(k);
%----------Returnofparameters %完成叠代
u_2=u_1;u_1=u(k);y_2=y_1;y_1=y(k);
x
(1)=error(k); %CalculatingPx2_1=x
(2);
x
(2)=(error(k)-error_1)/ts; %CalculatingDx(3)=x
(1)+error(k)*ts; %CalculatingI
error_1=error(k);end
figure
(1);plot(time,r,'b',time,y,'r');
xlabel('time(s)');ylabel('r,y');figure
(2);
plot(time,r-y,'r');xlabel('time(s)');ylabel('error');