u(k)=evalfis([e_1 ec_1],a2);
r2=ddereq(chann,'TAG3'); %从INTOUCH中获取比例因子
u(k)=r2*u(k); %乘以比例因子
if u(k)>20 %加限幅
u(k)=20;
end
if u(k)<-20
u(k)=-20;
end
u_3=u_2;
u_2=u_1;
u_1=u(k);
y_3=y_2; %y(3),y(2),y(1)分别保存最近三次的实际输出
y_2=y_1;
y_1=yout(k);
r3=ddereq(chann,'TAG1'); %从INTOUCH中获取量化因子
e_1=r3*error(k); %乘以量化因子
if e_1>=6 %加限幅
e_1=6;
end
if e_1<=-6
e_1=-6;
end
r4=ddereq(chann,'TAG2'); %从INTOUCH中获取量化因子
ec_1=r4*(error(k)-error_1)/ts; %乘以量化因子
if ec_1>=6 %加限幅
ec_1=6;
end
if ec_1<=-6
ec_1=-6;
end
error_2=error_1; %保存最近两次的误差
error_1=error(k);
r5=ddepoke(chann,'TAG_XY',yout(k));
ddeterm(chann);
end %循环结束
figure(1);
plot(time,rin,'r',time,yout,'k'); %显示输入输出图形
xlabel('Time(second)');ylabel('rin,yout');