《模糊自适应PID控制器.doc》由会员分享,可在线阅读,更多相关《模糊自适应PID控制器.doc(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精品文档,仅供学习与交流,如有侵权请联系网站删除模糊自适应PID控制器的设计模糊自适应PID控制器的设计一、 模糊自适应原理模糊控制是以模糊集合论、模糊语言变量和模糊逻辑推理为基础的一种计算机控制方法,作为智能控制的一个重要分支,在控制领域获得了广泛应用,模糊控制与传统控制方式相比具有以下突出优点:不需要精确的被控对象的数学模型;使用自然语言方法,控制方法易于掌握;鲁棒性好,能够较大范围的适应参数变化;与常规PID控制相比,动态响应品质优良。常规模糊控制器的原理如图1所示:Fuzzy化Fuzzy控制算法Fuzzy判决被控过程d/dt+ r-eecuyec图1 模糊控制系统框图PID控制规律:
2、式中: -比例系数; -积分时间常数; -微分时间常数。在工业生产中过程中,许多被控对象随着负荷变化或干扰因素影响,其对象特性参数或结构发生改变。自适应控制运用现代控制理论在线辨识对象特征参数,实时改变其控制策略,使控制系统品质指标保持在最佳范围内,但其控制效果的好坏取决于辨识模型的精确度,这对于复杂系统是非常困难的。因此,在工业生产中过程中,大量采用的仍然是PID算法,PID参数的整定方法很多,但大多数都以对象特性为基础。随着计算机技术的以展,人们利用人工智能的方法将操作人员的调整经验作为知识存入计算机中,根据现场实际情况,计算机能自动调整PID参数,这样就出现了智能PID.这种控制器把古典
3、的PID控制与先进的专家系统相结合,实现系统的最佳控制。这种控制必须精确地确定模型,首先将操作人员长期实践积累的经验知识用控制然后运用推理便可对PID参数实现最佳调整。由于操作者经验不易精确描述,控制过程中各种信号量及评价指标不易定量表示,模糊理念是解决这一问题的有效途径,所以人们运用学的基本理论和方法,把规则的条件、操作用模糊集表示,并把这些模糊有关信息作为知识存入计算机知识库中,然后计算机根据控制系统的实际响应情况,运用模糊推理,即可自动实现对PID参数的最佳调整,这就是模糊自适应PID控制,目前模糊自适应PID控制器有多种结构,但其工作原理基本一致。自适应模糊PID以误差e和误差变化率e
4、c作为输入,可以满足不同时刻的e和ec对PID参数自整定的要求,利用模糊控制规则在线对PID参数进行修改,便构成了自适应模糊PID控制器,其结构如图2所示.de/dtPID调节器模糊推理对象rinerrorkp ki kd kdyout图2 自适应模糊控制器结构PID参数模糊自整定是找出PID三个参数与e和ec之间的模糊关系,在运行中通过不断检测e和ec,根据模糊控制原理对三个参数进行在线修改,以满足不同e和ec对控制参数的不同要求,而使被控对象有良好的动、静态性能。从系统的稳定性、响应速度、超调量和精度等各方面来考虑,kp.ki,kd的作用如下:(1) 比例系数kp的作用是加快系统的响应速度
5、,提高系统的调节精度。kp越大,系统的响应速度越快,系统的调节精度越高,但易产生超调,甚至会导致系统不稳定。kp取值过小,则会降低调节精度,使响应速度缓慢,从而延长调节时间,使系统的动态静态特性变坏。(2) 积分作用系数ki的作用是消除系统的稳态误差。ki越大,的静态误差消除越快,但ki过大,在响应过程的初期会产生积分饱和现象,从而引起响应过程的较大超调。若ki过小,将使系统静态误差难以消除,影响系统的调节精度。(3) 微分作用系数kd的作用是改善系统的动态特性,其作用主要是在响应过程中抑制偏差向任何方向的变化,对偏差变化进行提前预报。但kd过大,会使响应过程提前制动,从而延长调节时间,而且会
6、降低系统的抗干扰性能二、自适应模糊PID控制的设计思路PID参数的整定必须考虑到在不同时刻三个参数的作用及相互之间的关系。在线实时模糊自整定PID算法的基础上,通过计算当前系统e和误差变化率ec,利用模糊规则进行模糊推理,查询模糊矩阵表进行参数调整。核心是总结工程设计人员的技术知识和实际操作经验,建立合适的模糊规则表,得到针对kp,ki,kd三个参数分别整定的模糊控制表(表1,表2,和表3)。表1 kp模糊控制规则表kp eceNBNMNSZOPSPMPBNBPBPBPMPMPSZOZONMPBPBPMPSPSZONSNSPMPMPMPSZONSNSZOPMPMPSZONSNMNMPSPSPS
7、ZONSNSNMNMPMPSZONSNMNMNMNBPBZOZONMNMNMNBNB表2 ki模糊控制规则表ki eceNBNMNSZOPSPMPBNBNBNBNMNMNSZOZONMNBNBNMNSNSZOZONSNBNMPSNSZOPSPSZONMNMNSZOPSPMPMPSNMNSZOPSPSPMPBPMZOZOPSPSPMPBPBPBZOZOPSPMPMPBPB表3 kd模糊控制规则表kd eceNBNMNSZOPSPMPBNBPSNSNBNBNBNMPSNMPSNSNBNMNMNSZONSZONSNMNMNSNSZOZOZONSNSNSNSNSZOPSZOZOZOZOZOZOZOPM
8、PMNSPSPSPSPSPBPBPBPMPMPMPSPSPBkp,ki,kd的控制规则表建立好后,可根据如下方法kp,ki,kd的自适应校正。将系统e和误差变化率ec变化范围定义为模糊集上的论域。e,ec =-5,-4,-3,-2,-1,0,1,2,3,4,5其模糊子集为e,ec=NB,NM,NS,ZO,PS,PM,PB子集中元素分别代表负大,负中,负小,零,正小,正中,正大。根据各模糊子集的隶属度赋值表和各参数模糊控制模型,应用模糊合成推理设计PID参数的模糊矩阵表,查出修正参数,代入下式计算:在线运行过程中,控制系统通过模糊逻辑规则的结果处理、查表和运算,完成对PID参数的在线自校正。其工
9、作流程如图3所示:取当前采样值入口e(k)=r(k)-y(k)ec(k)=e(k)-e(k-1)返回PID控制器输出计算当前kp,ki,kd模糊整定kp,ki,kde(k),ec(k)的模糊化e(k-1)=e(k)图3 在线自校正工作流程图三、仿真结果被控对象为:采样时间为1ms,采用模糊PID控制进行跃响应,在第300个采样时间控制器输出加1.0的干扰,相应的响应结果如图所示:a) 模糊PID控制阶跃响应 b) 模糊PID控制误差响应c) 控制器输出u d) kp的自适应调整 e) ki的自适应控制调整 e) kd的自适应控制调整图4 仿真结果其中,e,de,kp,ki,kd的隶属度函数:a
10、) 误差的隶属度函数 b) 误差变化率的隶属度函数c) kp的隶属度函数 d) ki的隶属度函数e) kd的隶属度函数图5 各变量的隶属度函数图6 模糊PID控制系统构成得到的模糊规则有以下49条:MATLAB下运行showrule(a),可得到以下49条模糊规则:1. If (e is NB) and (ec is NB) then (kp is PB)(ki is NB)(kd is PS) (1) 2. If (e is NB) and (ec is NM) then (kp is PB)(ki is NB)(kd is NS) (1) 3. If (e is NB) and (ec i
11、s NS) then (kp is PM)(ki is NM)(kd is NB) (1) 4. If (e is NB) and (ec is Z) then (kp is PM)(ki is NM)(kd is NB) (1) 5. If (e is NB) and (ec is PS) then (kp is PS)(ki is NS)(kd is NB) (1) 6. If (e is NB) and (ec is PM) then (kp is Z)(ki is Z)(kd is NM) (1) 7. If (e is NB) and (ec is PB) then (kp is Z
12、)(ki is Z)(kd is PS) (1) 8. If (e is NM) and (ec is NB) then (kp is PB)(ki is NB)(kd is PS) (1) 9. If (e is NM) and (ec is NM) then (kp is PB)(ki is NB)(kd is NS) (1) 10. If (e is NM) and (ec is NS) then (kp is PM)(ki is NM)(kd is NB) (1)11. If (e is NM) and (ec is Z) then (kp is PS)(ki is NS)(kd is
13、 NM) (1) 12. If (e is NM) and (ec is PS) then (kp is PS)(ki is NS)(kd is NM) (1)13. If (e is NM) and (ec is PM) then (kp is Z)(ki is Z)(kd is NS) (1) 14. If (e is NM) and (ec is PB) then (kp is NS)(ki is Z)(kd is Z) (1) 15. If (e is NS) and (ec is NB) then (kp is PM)(ki is NB)(kd is Z) (1) 16. If (e
14、 is NS) and (ec is NM) then (kp is PM)(ki is NM)(kd is NS) (1)17. If (e is NS) and (ec is NS) then (kp is PM)(ki is NS)(kd is NM) (1)18. If (e is NS) and (ec is Z) then (kp is PS)(ki is NS)(kd is NM) (1) 19. If (e is NS) and (ec is PS) then (kp is Z)(ki is Z)(kd is NS) (1) 20. If (e is NS) and (ec i
15、s PM) then (kp is NS)(ki is PS)(kd is NS) (1)21. If (e is NS) and (ec is PB) then (kp is NS)(ki is PS)(kd is Z) (1) 22. If (e is Z) and (ec is NB) then (kp is PM)(ki is NM)(kd is Z) (1) 23. If (e is Z) and (ec is NM) then (kp is PM)(ki is NM)(kd is NS) (1) 24. If (e is Z) and (ec is NS) then (kp is
16、PS)(ki is NS)(kd is NS) (1) 25. If (e is Z) and (ec is Z) then (kp is Z)(ki is Z)(kd is NS) (1) 26. If (e is Z) and (ec is PS) then (kp is NS)(ki is PS)(kd is NS) (1) 27. If (e is Z) and (ec is PM) then (kp is NM)(ki is PM)(kd is NS) (1) 28. If (e is Z) and (ec is PB) then (kp is NM)(ki is PM)(kd is
17、 Z) (1) 29. If (e is PS) and (ec is NB) then (kp is PS)(ki is NM)(kd is Z) (1) 30. If (e is PS) and (ec is NM) then (kp is PS)(ki is NS)(kd is Z) (1) 31. If (e is PS) and (ec is NS) then (kp is Z)(ki is Z)(kd is Z) (1) 32. If (e is PS) and (ec is Z) then (kp is NS)(ki is PS)(kd is Z) (1) 33. If (e i
18、s PS) and (ec is PS) then (kp is NS)(ki is PS)(kd is Z) (1) 34. If (e is PS) and (ec is PM) then (kp is NM)(ki is PM)(kd is Z) (1) 35. If (e is PS) and (ec is PB) then (kp is NM)(ki is PB)(kd is Z) (1) 36. If (e is PM) and (ec is NB) then (kp is PS)(ki is Z)(kd is PB) (1) 37. If (e is PM) and (ec is
19、 NM) then (kp is Z)(ki is Z)(kd is PS) (1) 38. If (e is PM) and (ec is NS) then (kp is NS)(ki is PS)(kd is PS) (1)39. If (e is PM) and (ec is Z) then (kp is NM)(ki is PS)(kd is PS) (1) 40. If (e is PM) and (ec is PS) then (kp is NM)(ki is PM)(kd is PS) (1)41. If (e is PM) and (ec is PM) then (kp is
20、NM)(ki is PB)(kd is PS) (1)42. If (e is PM) and (ec is PB) then (kp is NB)(ki is PB)(kd is PB) (1)43. If (e is PB) and (ec is NB) then (kp is Z)(ki is Z)(kd is PB) (1) 44. If (e is PB) and (ec is NM) then (kp is Z)(ki is Z)(kd is PM) (1) 45. If (e is PB) and (ec is NS) then (kp is NM)(ki is PS)(kd i
21、s PM) (1)46. If (e is PB) and (ec is Z) then (kp is NM)(ki is PM)(kd is PM) (1) 47. If (e is PB) and (ec is PS) then (kp is NM)(ki is PM)(kd is PS) (1)48. If (e is PB) and (ec is PM) then (kp is NB)(ki is PB)(kd is PS) (1)49. If (e is PB) and (ec is PB) then (kp is NB)(ki is PB)(kd is PB) (1)四、小结人们利
22、用人工智能的方法将操作人员的调整经验作为知识存入计算机中,根据实际情况,计算机能自动调整PID参数,这样就实现了模糊自适应PID控制器。但是,通过实验表明,这种方法对操作人员的调整经验有很高的要求,如果初值的加入和控制规则建立的不正确,将会给校正带来很大的不便,甚至很难达到稳定。五、仿真程序清单%模糊自适应PID控制器程序clear all; %清除所有变量close all; %关闭所有窗口clc; %清屏 %模糊控PID控制系统a=newfis(fuzzpid); %创建一个FIS (Fuzzy Inference System )对象a=addvar(a,input,e,-3,3); %
23、第1个输入型模糊变量e;a=addmf(a,input,1,NB,zmf,-3,-1); %第1个输入模糊语言名称NB,隶属度函数是zmf,范围为-3到-1a=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
24、,ec,-3,3); %第2个输入模糊变量ec a=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); %第1个输出
25、变量 kpa=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,k
26、i,-0.06,0.06); %第2个输出变量kia=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,P
27、B,smf,0.02,0.06);a=addvar(a,output,kd,-3,3); %第3个输出变量kda=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);%
28、模糊规则,每行7个元素:2个输入变量和3个输出变量的语言名称的索引, %以及该条规则的权重和条件的关系(1表AND,2表示OR)rulelist=1 1 7 1 5 1 1; 1 2 7 1 3 1 1; 1 3 6 2 1 1 1; 1 4 6 2 1 1 1; 1 5 5 3 1 1 1; 1 6 4 4 2 1 1; 1 7 4 4 5 1 1; 2 1 7 1 5 1 1; 2 2 7 1 3 1 1; 2 3 6 2 1 1 1; 2 4 5 3 2 1 1; 2 5 5 3 2 1 1; 2 6 4 4 3 1 1; 2 7 3 4 4 1 1; 3 1 6 1 4 1 1; 3
29、2 6 2 3 1 1; 3 3 6 3 2 1 1; 3 4 5 3 2 1 1; 3 5 4 4 3 1 1; 3 6 3 5 3 1 1; 3 7 3 5 4 1 1; 4 1 6 2 4 1 1; 4 2 6 2 3 1 1; 4 3 5 3 3 1 1; 4 4 4 4 3 1 1; 4 5 3 5 3 1 1; 4 6 2 6 3 1 1; 4 7 2 6 4 1 1; 5 1 5 2 4 1 1; 5 2 5 3 4 1 1; 5 3 4 4 4 1 1; 5 4 3 5 4 1 1; 5 5 3 5 4 1 1; 5 6 2 6 4 1 1; 5 7 2 7 4 1 1; 6
30、1 5 4 7 1 1; 6 2 4 4 5 1 1; 6 3 3 5 5 1 1; 6 4 2 5 5 1 1; 6 5 2 6 5 1 1; 6 6 2 7 5 1 1; 6 7 1 7 7 1 1; 7 1 4 4 7 1 1; 7 2 4 4 6 1 1; 7 3 2 5 6 1 1; 7 4 2 6 6 1 1; 7 5 2 6 5 1 1; 7 6 1 7 5 1 1; 7 7 1 7 7 1 1;a=addrule(a,rulelist); %将糊推理规则加入模糊系统a=setfis(a,DefuzzMethod,centroid); %解模糊writefis(a,fuzzpid
31、); %把模糊对象保存到文件fuzzpid.fis里 a=readfis(fuzzpid); %从文件中读出模糊对象%PID控制器ts=0.001; %采样周期0.001秒sys=tf(5.235e005,1,87.35,1.047e004,0); %被控对象的传递函数dsys=c2d(sys,ts,tustin); %将时域系统离散化,获得H(z)num,den=tfdata(dsys,v); %快速获取传递函数的分子分母数据%PID输出、系统输出以及P、I、D的初始值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;error_1=0;
32、 %偏差的初始值e_1=0.0; %误差的初始值ec_1=0.0; %偏差变化率的初始值kp0=0.40; %kp的初始值kd0=1.0; %kd的初始值ki0=0.0; %ki的初始值for k=1:1:500 time(k)=k*ts; %采样时刻 rin(k)=1; %输入为阶跃信号%使用自适应模糊推理PID控制调节k_pid=evalfis(e_1,ec_1,a); %给定输入,进行模糊推理,得到kp,ki,kd修正量 kp(k)=kp0+k_pid(1); %新的kp ki(k)=ki0+k_pid(2); %新的ki kd(k)=kd0+k_pid(3); %新的kdu(k)=kp
33、(k)*x(1)+kd(k)*x(2)+ki(k)*x(3); %PID控制器输出 if k=300 %在0.3秒时加1.0的干扰 u(k)=u(k)+1.0; end if u(k)=10 u(k)=10; end if u(k)=-10 u(k)=-10; end yout(k)=-den(2)*y_1-den(3)*y_2-den(4)*y_3+num(1)*u(k)+num(2)*u_1+num(3)*u_2+num(4)*u_3; %经过z变化后的离散化对象输出 error(k)=rin(k)-yout(k); %偏差信号%Return of PID parameters%PID的返
34、回参量%为下一采样时刻的计算作准备 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); % 比例P x(2)=error(k)-error_1; % 微分I x(3)=x(3)+error(k); % 积分D e_1=x(1); ec_1=x(2); error_2=error_1; error_1=error(k);end %一次调整过程结束%显示仿真结果%showrule(a) %显示模糊规则figure(1); %画出模糊PID控制阶跃响应plot(time,rin,b,time,yout,r
35、);xlabel(time(s);ylabel(rin,yout);figure(2); %画出模糊PID控制的误差响应plot(time,error,r);xlabel(time(s);ylabel(error);figure(3); %画出系统控制器的输出plot(time,u,r);xlabel(time(s);ylabel(u);figure(4); %画出kp的各次自适应调整plot(time,kp,r);xlabel(time(s);ylabel(kp);figure(5); %画出ki的各次自适应调整plot(time,ki,r);xlabel(time(s);ylabel(ki
36、);figure(6); %画出kd的各次自适应调整plot(time,kd,r);xlabel(time(s);ylabel(kd);figure(7); %画出e的隶属度函数plotmf(a,input,1);figure(8); %画出ec的隶属度函数plotmf(a,input,2);figure(9); %画出kp的隶属度函数plotmf(a,output,1);figure(10); %画出ki的隶属度函数plotmf(a,output,2);figure(11); %画出kd的隶属度函数plotmf(a,output,3);figure(12); %可以由此进入MATLAB动态仿真环境plotfis(a);fuzzy fuzzpid %得到模糊PID控制系统构成六、参考资料1董红书 模糊自适应PID控制器的设计,兰州工业高等专科学校2. 苏明,陈伦军等,模糊PID控制及其MATLAB仿真,贵州工业大学机械与自动化学院3. 方千山,王永初,模糊PID控制器及其应用,厦门大学学报(自然科学版) ,第40卷增刊 2001年8月【精品文档】第 12 页