1、实验一:专家PID控制一、实验题目:一专家系统的传递函数为Gp(s)= 挈0。采用专家PID控制,输入信1.5s50s号为阶跃信号,取采样时间为1ms,用MATLA助真,画出阶跃响应曲线和误差 变化曲线。二、实验分析:1、PID控制算法分析PID是比例(P)、积分(I)、微分(D)控制算法。但并不是必须同时具备这三种 算法,也可以是PD,PI,甚至只有P算法控制。Kp,Ti,Td三个参数的设定是PID控 制算法的关键问题。一般说来编程时只能设定他们的大概数值,并在系统运行时 通过反复调试来确定最佳值。因此调试阶段程序须得能随时修改和记忆这三个参 数。PID控制算法是实际工业控制中应用最为广泛的
2、控制算法。它具有控制器设计简单、容易实现、控制效果好、鲁棒性强等特点,是迄今为止最稳定的控制方 法。它所涉及的参数物理意义明确,理论分析体系完整。2、专家PID控制过程分析:专家控制(Expert Control)的实质是基于受控对象和控制规律的各种知识,并 以智能的方式利用这些知识来设计控制器。利用专家经验来设计PID参数便构成专家PID控制。对于典型的二阶系统阶跃响应过程作如下分析,根据误差及其变化,可设计专家PID控制器,该控制器可分为五种情况进行设计。令e(k)表示离散化的当前采样时刻的误差值,e(k-1)、e(k-2)、分别表示前一 个和前两个采样时刻的误差值,则有:e(k) =e(
3、k) -e(k -1)e(k -1) =e(k -1) -e(k -2)根据误差及其变化,可设计专家PID控制器,该控制器可分为5种情况设计:I : e(k)| Mi时,实施开环控制。H :当e(k)Ae(k) 0且e(k)M2时由控制器实施较强控制作用,其输出可以为u(k)=u(k-1) k11kpe(k) -e(k -1)1 kie(k) kd e(k) - 2e(k -1) e(k - 2)当e(k)Ae(k) 0且e(k) M 2时控制器实施一般的控制作用,其输出为u(k) =u(k -1) kp e(k) e(k -1)Re(k) kd e(k) -2e(k -1) e(k 2)1
4、m :当 e(k)Ae(k) 0,e(k)Ae(k-1)a0或e(k) = 0时,控制器输出不变。IV:当e(k)Ae(k) 0,e(k)Ae(k 1) 0且e(k)之M 2时,实施较强控制作用,u(k) =u(k -1) kkpem(k)当 e(k)Ae(k) 0,e(k)Ae(k-1) 0且 e(k)(M2时,实施较小控制作用,u(k) =u(k -1) k2kpem(k)V:当|e(k) M2,其中 M1 可取0.8, 0.4, 0.2, 0.01 四值;;=0.001任意小正实数。三、实验过程:1、对传递函数Gp(s)=400离散取样,选取采样时间间隔为1ms;1.5s2 50s2、P
5、ID控制算法的关键问题是其三个参数 Kp,Ti,Td的设定,选取初始值为:kp=0.6; ki=0.03; kd=0.01;3、取阶跃信号rin (k) =1 ;4、写出线性模型及当前采样时刻的误差值:y(k) = -den(2) y(k -1) -den(3) y(k - 2) - den(4) y(k-3) num(1) u(k) num(2) u(k-1) num(3) u(k -2) num(4) u(k -3)e(k) = rin (k) - y(k)5、循环第3和第4步;6、通过Matlab仿真出专家PID控制的阶跃响应曲线图和误差响应曲线图四、实验结果:图1阶跃响应曲线图2误差响
6、应曲线附录:仿真程序%Expert PID Controllerclear all;close all;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;for k=1:1:500 time(k尸k*ts;rin(k)=1.0;%Tracing Jieyue Signalu(k尸kp*x(1)+kd*x(2)+ki*
7、x(3); %PID Controller%Expert control ruleif abs(x(1)0.8 %Rule1:Unclosed control firstly u(k)=0.45;elseif abs(x(1)0.40 u(k)=0.40;elseif abs(x(1)0.20 u(k)=0.12;elseif abs(x(1)0.01 u(k)=0.10;endif x(1)*x(2)0|(x(2)=0)%Rule2if abs(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)
8、|(x(1)=0) %Rule3 u(k)=u(k);endif x(1)*x(2)0&x(2)*x2_1=0.05u(k)=u_1+2*kp*error_1;elseu(k)=u_1+0.6*kp*error_1;endendif abs(x(1)=10u(k)=10;endif u(k)=10 u(k)=10;endif u(k)=-10 u(k)=-10;end yout(k尸-den(2)*y_1-den(3)*y_2+num*u(k)+num(2)*u_1+num(3)*u_2;error(k)=rin(k)-yout(k);%Return of PID parameters%u_3
9、=u_2;u_2=u_1;u_1=u(k);y_3=y_2;y_2=y_1;y_1=yout(k);% Calculating P% Calculating D % Calculating Ix(1)=error(k);x(2)=error(k)-error_1;x(3)=x(3)+error(k);e_1=x(1);ec_1=x(2);error_2=error_1;error_1=error(k);end showrule(a)figure(1);plot(time,rin,b,time,yout,r); xlabel(time(s);ylabel(rin,yout);figure(2);
10、plot(time,error,r) xlabel(time(s);ylabel(error);figure(3);plot(time,u,r);xlabel(time(s);ylabel(u);figure(4);plot(time,kp,r);xlabel(time(s);ylabel(kp);figure(5);plot(time,ki,r);xlabel(time(s);ylabel(ki);figure(6);plot(time,kd,r);xlabel(time(s);ylabel(kd);figure(7);plotmf(a,input,1);figure(8);plotmf(a,input,2);figure(9);plotmf(a,output,1);figure(10);plotmf(a,output,2);figure(11);plotmf(a,output,3); plotfis(a);timers)time(s)time(s)time(s)1.210.80.60.40.20-0.200.050.10.150.20.250.30.350.40.450.5time(s)time(s)图2 ki的隶属度函数曲线图3 kp的隶属度函数曲线NB NM NS Z PS PM PB 10 80 604020图4 ec的隶属度函数曲线