专家PID控制系统Matlab仿真摘要:分析了一个速度控制器的控制仿真。其传递函数为:ssssG104735.87523500)(23使用专家PID控制系统,输入信号为阶跃信号,取采样时间为1ms,画出阶跃响应曲线和误差变化曲线。0引言专家控制(ExpertControl)的实质是基于受控对象和控制规律的各种知识,并以智能的方式利用这些知识来设计控制器。利用专家经验来设计PID参数便构成专家PID控制。典型的二阶系统单位阶跃响应误差曲线如图1、2所示。对于典型的二阶系统阶跃响应过程作如下分析,根据误差及其变化,可设计专家PID控制器,该控制器可分为五种情况进行设计。1设计根据误差及其变化,可设计专家PID控制器,该控制器可分为以下五种情况进行设计:(1)当1M|e(k)|时,说明误差的绝对值已经很大,不论误差变化趋势如何,都应考虑控制器的输出应按最大〔或最小)输出,以达到迅速调整误差,使误差绝对值以最大速度减小。此时,它相当于实施开环控制。(2)当0)(e(k)ke时,说明误差在朝误差绝对值增大方向变化,或误差为某一常值,未发生变化。此时,如果2M|e(k)|,说明误差也较大,可考虑由控制器实施较强的控制作用,以达到扭转误差绝对值朝减小方向变化,并迅速减小误差的绝对值。此时,如果2M|e(k)|,说明尽管误差朝绝对值增大方向变化,但误差绝对值本身并不很大,可考虑控制器实施一般的控制作用,只要扭转误差的变化趋势,使其初误差绝对值减小方向变化。(3)当0)(e(k)ke,01)-(e(k)ke或0e(k)时,说明误差的绝对值朝减小的方向变化,或者已经达到平衡状态。此时,可考虑采取保持控制器输出不变。(4)当0)(e(k)ke,01)-(e(k)ke时,说明误差处于极值状态。如果此时误差的绝对值较大,可考虑实施较强的控制作用。(5)当|e(k)|时,说明误差的绝对值很小,此时加入积分,减少稳态误差。2仿真图图1阶跃响应曲线图2误差曲线3程序%ExpertPIDControllerclearall;closeall;ts=0.001;sys=tf(5.235e005,[1,87.35,1.047e004,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-den(4)*y_3+num(1)*u(k)+num(2)*u_1+num(3)*u_2+num(4)*u_3;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');参考文献:[1]董海鹰.智能控制理论及应用[M].中国铁道出版社:北京.2006,47-48(页)模糊PID控制系统Matlab仿真摘要:分析了一个速度控制器的控制仿真。其传递函数为:ssssG104735.87523500)(23使用模糊PID控制系统,输入信号为阶跃信号,取采样时间为1ms,画出阶跃响应曲线和误差变化曲线。0引言模糊PID控制算法以误差E和Ec为输入,利用模糊控制规则在线对PID参数进行修改,以满足不同时刻的E和Ec对PID参数的要求,输出为Kp,Ki,Kd。de/dt模糊推理PID调节器对象给定值输出EECKpKiKd图1模糊控制原理图该模糊推理控制系统是一个两输入三输出的形式,输入变量为E和Ec,输出变量为Kp,Ki和Kd,其调整原则为:(1)当误差|E|较大时,为使系统具有较好的快速跟踪性能,不论误差的变化趋势如何,都应该取较大的Kp和较小的Kd,同时为避免系统响应出现较大的超调,应对积分作用加以限制,取较小的Ki值。(2)当误差|E|处于中等大小时,为使系统响应具有较小的超调,Kp应取得小些,同时为保证系统的响应速度,Ki和Kd的大小要适中,其中Kd的取值对系统响应的影响较大。(3)当误差|E|较小时,为保证系统具有较好的稳态性能,Kp和Ki应取得大些,同时为避免系统在设定值附近出现振荡,并考虑系统的抗干扰性能,当|E|较小时,Kd可取大些;当|E|较大时,Kd应取小些。1建立控制规则表输入变量E,Ec和Kd语言值的模糊子集取为{负大,负中,负小,零,正小,正中,正大},并简记为{NB,NM,NS,ZO,PS,PM,PB},论域为{-3,-2,-l,0,1,2,3}。Ki论域为{-0.06,-0.04,-0.02,0,0.02,0.04,0.06},Kp论域为{-0.3,-0.2,-0.l,0,0.1,0.2,0.3}。隶属函数采用三角形函数,根据对已有控制系统设计经验的总结,得到PID三个控制参数的模糊控制规则表,见表1~表3。表1Kp的模糊规则表eΔkpdeNBNMNSZOPSPMPBNBPBPBPMPMPSZOZONMPBPBPMPSPSZONSNSPMPMPMPSZONSNSZOPMPMPSZONSNMNMPSPSPSZONSNSNMNMPMPSZONSNMNMNMNBPBZOZONMNMNMNBNB注:NB、NM、NS、ZO、PS、PM、PB分别表示负大、负中、负小、零、正小、正中、正大。表2Ki的模糊规则表eΔkideNBNMNSZOPSPMPBNBNBNBNMNMNSZOZONMNBNBNMNSNSZOZONSNBNMNSNSZOPSPSZONMNMNSZOPSPMPMPSNMNSZOPSPSPMPBPMZOZOPSPSPMPBPBPBZOZOPSPMPMPBPB表3Kd的模糊规则表eΔkddeNBNMNSZOPSPMPBNBPSNSNBNBNBNMPSNMPSNSNBNMNMNSZONSZONSNMNMNSNSZOZOZONSNSNSNSNSZOPSZOZOZOZOZOZOZOPMPBNSPSPSPSPSPBPBPBPMPMPMPSPSPB2仿真结果图2ki的隶属度函数曲线图3kp的隶属度函数曲线图4ec的隶属度函数曲线图5e的隶属度函数曲线图6kd的曲线图7ki的曲线图7kp的曲线图8u的输出曲线图9e的曲线图10阶跃响应的曲线图11规则输入输出3输出49条规则ans=1.If(eisNB)and(ecisNB)then(kpisPB)(kiisNB)(kdisPS)(1)2.If(eisNB)and(ecisNM)then(kpisPB)(kiisNB)(kdisNS)(1)3.If(eisNB)and(ecisNS)then(kpisPM)(kiisNM)(kdisNB)(1)4.If(eisNB)and(ecisZ)then(kpisPM)(kiisNM)(kdisNB)(1)5.If(eisNB)and(ecisPS)then(kpisPS)(kiisNS)(kdisNB)(1)6.If(eisNB)and(ecisPM)then(kpisZ)(kiisZ)(kdisNM)(1)7.If(eisNB)and(ecisPB)then(kpisZ)(kiisZ)(kdisPS)(1)8.If(eisNM)and(ecisNB)then(kpisPB)(kiisNB)(kdisPS)(1)9.If(eisNM)and(ecisNM)then(kpisPB)(kiisNB)(kdisNS)(1)10.If(eisNM)and(ecisNS)then(kpisPM)(kiisNM)(kdisNB)(1)11.If(eisNM)and(ecisZ)then(kpisPS)(kiisNS)(kdisNM)(1)12.If(eisNM)and(ecisPS)then(kpisPS)(kiisNS)(kdisNM)(1)13.If(eisNM)and(ecisPM)then(kpisZ)(kiisZ)(kdisNS)(1)14.If(eisNM)and(ecisPB)then(kpisNS)(kiisZ)(kdisZ)(1)15.If(eisNS)and(ecisNB)then(kpisPM)(kiisNB)(kdisZ)(1)16.If(eisNS)and(ecisNM)then(kpisPM)(kiisNM)(kdisNS)(1)17.If(eisNS)and(ecisNS)then(kpisPM)(kiisNS)(kdisNM)(1)18.If(eisNS)and(ecisZ)then(kpisPS)(kiisNS)(kdisNM)(1)19.If(eisNS)and(ecisPS)then(kpisZ)(kiisZ)(kdisNS)(1)20.If(eisNS)and(ecisPM)then(kpisNS)(kiisPS)(kdisNS)(1)21.If(eisNS)and(ecisPB)then(kpisNS)(kiisPS)(kdisZ)(1)22.If(eisZ)and(ecisNB)then(kpisPM)(kiisNM)(kdisZ)(1)23.If(eisZ)and(ecisNM)then(kpisPM)(kiisNM)(kdisNS)(1)24.If(eisZ)and(ecisNS)then(kpisPS)(kiisNS)(kdisNS)(1)25.If(eisZ)and(ecisZ)then(kpisZ)(kiis