您好,欢迎访问三七文档
实验一:专家PID控制一、实验题目:一专家系统的传递函数为sssGp505.13500)(2。采用专家PID控制,输入信号为阶跃信号,取采样时间为1ms,用MATLAB仿真,画出阶跃响应曲线和误差变化曲线。二、实验分析:1、PID控制算法分析PID是比例(P)、积分(I)、微分(D)控制算法。但并不是必须同时具备这三种算法,也可以是PD,PI,甚至只有P算法控制。Kp,Ti,Td三个参数的设定是PID控制算法的关键问题。一般说来编程时只能设定他们的大概数值,并在系统运行时通过反复调试来确定最佳值。因此调试阶段程序须得能随时修改和记忆这三个参数。PID控制算法是实际工业控制中应用最为广泛的控制算法。它具有控制器设计简单、容易实现、控制效果好、鲁棒性强等特点,是迄今为止最稳定的控制方法。它所涉及的参数物理意义明确,理论分析体系完整。2、专家PID控制过程分析:专家控制(ExpertControl)的实质是基于受控对象和控制规律的各种知识,并以智能的方式利用这些知识来设计控制器。利用专家经验来设计PID参数便构成专家PID控制。对于典型的二阶系统阶跃响应过程作如下分析,根据误差及其变化,可设计专家PID控制器,该控制器可分为五种情况进行设计。令e(k)表示离散化的当前采样时刻的误差值,e(k-1)、e(k-2)、分别表示前一个和前两个采样时刻的误差值,则有)1()()(kekeke)2()1()1(kekeke根据误差及其变化,可设计专家PID控制器,该控制器可分为5种情况设计:Ⅰ:1)(Mke时,实施开环控制。Ⅱ:当2)(0)()(Mkekeke且时由控制器实施较强控制作用,其输出可以为)2()1(2)()()1()()1()(1kekekekkekkekekkkukudip当2)(0)()(Mkekeke且时控制器实施一般的控制作用,其输出为)2()1(2)()()1()()1()(kekekekkekkekekkukudipⅢ:当0)(0)1()(,0)()(kekekekeke或时,控制器输出不变。Ⅳ:当2)(0)1()(,0)()(Mkekekekeke且时,实施较强控制作用,)()1()(1kekkkukump当2)(0)1()(,0)()(Mkekekekeke且时,实施较小控制作用,)()1()(2kekkkukumpⅤ:当)(ke时,此时加入积分,减小稳态误差。式中,)(kem—————误差e的第k个极值;)1(),(kuku—-分别为第k次和第k-1次控制器输出;1k=2——————增益放大系数,11k;2k=0.6—————增益抑制系数,102k;05.0,21MM——设定的误差界限,21MM,其中1M可取0.8,0.4,0.2,0.01四值;=0.001—————任意小正实数。三、实验过程:1、对传递函数sssGp505.13500)(2离散取样,选取采样时间间隔为1ms;2、PID控制算法的关键问题是其三个参数Kp,Ti,Td的设定,选取初始值为:kp=0.6;ki=0.03;kd=0.01;3、取阶跃信号1)(krin;4、写出线性模型及当前采样时刻的误差值:)3()4()2()3()1()2()()1()3()4()2()3()1()2()(kunumkunumkunumkunumkydenkydenkydenky)()()(kykrinke5、循环第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:500time(k)=k*ts;rin(k)=1.0;%TracingJieyueSignalu(k)=kp*x(1)+kd*x(2)+ki*x(3);%PIDController%Expertcontrolruleifabs(x(1))0.8%Rule1:Unclosedcontrolfirstlyu(k)=0.45;elseifabs(x(1))0.40u(k)=0.40;elseifabs(x(1))0.20u(k)=0.12;elseifabs(x(1))0.01u(k)=0.10;endifx(1)*x(2)0|(x(2)==0)%Rule2ifabs(x(1))=0.05u(k)=u_1+2*kp*x(1);elseu(k)=u_1+0.4*kp*x(1);endendif(x(1)*x(2)0&x(2)*x2_10)|(x(1)==0)%Rule3u(k)=u(k);endifx(1)*x(2)0&x(2)*x2_10%Rule4ifabs(x(1))=0.05u(k)=u_1+2*kp*error_1;elseu(k)=u_1+0.6*kp*error_1;endendifabs(x(1))=0.001%Rule5:IntegrationseparationPIcontrolu(k)=0.5*x(1)+0.010*x(3);end%Restrictingtheoutputofcontrollerifu(k)=10u(k)=10;endifu(k)=-10u(k)=-10;end%Linearmodelyout(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;%CalculatingIerror_1=error(k);endfigure(1);plot(time,rin,'b',time,yout,'r');xlabel('time(s)');ylabel('rin,yout');figure(2);plot(time,rin-yout,'r');xlabel('time(s)');ylabel('error');%FuzzyTunningPIDControlclearall;closeall;a=newfis('fuzzpid');a=addvar(a,'input','e',[-3,3]);%Parameterea=addmf(a,'input',1,'NB','zmf',[-3,-1]);a=addmf(a,'input',1,'NM','trimf',[-3,-2,0]);a=addmf(a,'input',1,'NS','trimf',[-3,-1,1]);a=addmf(a,'input',1,'Z','trimf',[-2,0,2]);a=addmf(a,'input',1,'PS','trimf',[-1,1,3]);a=addmf(a,'input',1,'PM','trimf',[0,2,3]);a=addmf(a,'input',1,'PB','smf',[1,3]);a=addvar(a,'input','ec',[-3,3]);%Parametereca=addmf(a,'input',2,'NB','zmf',[-3,-1]);a=addmf(a,'input',2,'NM','trimf',[-3,-2,0]);a=addmf(a,'input',2,'NS','trimf',[-3,-1,1]);a=addmf(a,'input',2,'Z','trimf',[-2,0,2]);a=addmf(a,'input',2,'PS','trimf',[-1,1,3]);a=addmf(a,'input',2,'PM','trimf',[0,2,3]);a=addmf(a,'input',2,'PB','smf',[1,3]);a=addvar(a,'output','kp',[-0.3,0.3]);%Parameterkpa=addmf(a,'output',1,'NB','zmf',[-0.3,-0.1]);a=addmf(a,'output',1,'NM','trimf',[-0.3,-0.2,0]);a=addmf(a,'output',1,'NS','trimf',[-0.3,-0.1,0.1]);a=addmf(a,'output',1,'Z','trimf',[-0.2,0,0.2]);a=addmf(a,'output',1,'PS','trimf',[-0.1,0.1,0.3]);a=addmf(a,'output',1,'PM','trimf',[0,0.2,0.3]);a=addmf(a,'output',1,'PB','smf',[0.1,0.3]);a=addvar(a,'output','ki',[-0.06,0.06]);%Parameterkia=addmf(a,'output',2,'NB','zmf',[-0.06,-0.02]);a=addmf(a,'output',2,'NM','trimf',[-0.06,-0.04,0]);a=addmf(a,'output',2,'NS','trimf',[-0.06,-0.02,0.02]);a=addmf(a,'output',2,'Z','trimf',[-0.04,0,0.04]);a=addmf(a,'output',2,'PS','trimf',[-0.02,0.02,0.06]);a=addmf(a,'output',2,'PM','trimf',[0,0.04,0.06]);a=addmf(a,'output',2,'PB','smf',[0.02,0.06]);a=addvar(a,'output','kd',[-3,3]);%Parameterkpa=addmf(a,'output',3,'NB','zmf',[-3,-1]);a=addmf(a,'output',3,'NM','trimf',[-3,-2,0]);a=addmf(a,'output',3,'NS','trimf',[-3,-1,1]);a=addmf(a,'output',3,'Z','trimf',[-2,0,2]);a=addmf(a,'output',3,'PS','trimf',[-1,1,3]);a=addmf(a,'output',3,'PM','trimf',[0,2,3]);a=addmf(a,'output',3,'PB','smf',[1,3]);rulelist=[1171511;1271311;1362111;1462111;1553111;1644211;1744511;2171511;2271311;2362111;2453211;2553211;2644311;2734411;3161411;3262311;3363211;3453211;3544311;3635311;37
本文标题:专家PID控制
链接地址:https://www.777doc.com/doc-5609210 .html