num=20; den=[8 6 1]; [a1,b1,c1,d]=tf2ss(num,den); T=0.01;h=T; N=500; R=1.5*ones(1,N); %pid e=0;de=0;ie=0; kp=4;ki=0.5;kd=1.5; x=[0;0]; for k=1:N u1=-(kp*e+ki*ie+kd*de); k0=a1*x+b1*u1; k1=a1*(x+h*k0/2)+b1*u1; k2=a1*(x+h*k1/2)+b1*u1; k3=a1*(x+h*k2)+b1*u1; x=x+(k0+2*k1+2*k2+k3)*h/6; y=c1*x+d*u1; e1=e; e=y-R(1,k); de=(e-e1)/T; ie=e*T+ie; yy2(1,k)=y; end a=newfis('simple1'); a=addvar(a,'input','e',[-5 5]); a=addmf(a,'input',1,'NB','trapmf',[-5,-5,-5,-4]); a=addmf(a,'input',1,'NM','trapmf',[-5,-4,-3,-2]); a=addmf(a,'input',1,'NS','trapmf',[-3,-2,-1,0]); a=addmf(a,'input',1,'ZE','trimf',[-1,0,1]); a=addmf(a,'input',1,'PS','trapmf',[0,1,2,3]); a=addmf(a,'input',1,'PM','trapmf',[2,3,4,5]); a=addmf(a,'input',1,'PB','trapmf',[4,5,5,5]); a=addvar(a,'input','de',[-5 5]); a=addmf(a,'input',2,'NB','trapmf',[-5,-5,-5,-4]); a=addmf(a,'input',2,'NM','trapmf',[-5,-4,-3,-2]); a=addmf(a,'input',2,'NS','trapmf',[-3,-2,-1,0]); a=addmf(a,'input',2,'ZE','trimf',[-1,0,1]); a=addmf(a,'input',2,'PS','trapmf',[0,1,2,3]); a=addmf(a,'input',2,'PM','trapmf',[2,3,4,5]); a=addmf(a,'input',2,'PB','trapmf',[4,5,5,5]); a=addvar(a,'output','kp',[-5 5]); a=addmf(a,'output',1,'NB','trapmf',[-5,-5,-5,-4]); a=addmf(a,'output',1,'NM','trapmf',[-5,-4,-3,-2]); a=addmf(a,'output',1,'NS','trapmf',[-3,-2,-1,0]); a=addmf(a,'output',1,'ZE','trimf',[-1,0,1]); a=addmf(a,'output',1,'PS','trapmf',[0,1,2,3]); a=addmf(a,'output',1,'PM','trapmf',[2,3,4,5]); a=addmf(a,'output',1,'PB','trapmf',[4,5,5,5]); rulelist1=[1 1 7 1 1;1 2 7 1 1;1 3 6 1 1;1 4 6 1 1;1 5 5 1 1;1 6 4 1 1; 1 7 4 1 1;2 1 7 1 1;2 2 7 1 1;2 3 6 1 1;2 4 5 1 1;2 5 5 1 1;2 6 4 1 1; 2 7 3 1 1;3 1 6 1 1;3 2 6 1 1;3 3 6 1 1;3 4 5 1 1;3 5 4 1 1;3 6 3 1 1; 3 7 3 1 1;4 1 6 1 1;4 2 6 1 1;4 3 5 1 1;4 4 4 1 1;4 5 3 1 1;4 6 2 1 1; 4 7 2 1 1;5 1 5 1 1;5 2 5 1 1;5 3 4 1 1;5 4 3 1 1;5 ...