clear all
num=10;den=[100,20,1];
[a1,b,c,d]=tf2ss(num,den);
x=[0;0];
T=0.01;h=T;
td=1
Nd=td/T; %纯延时环节;
N=1000;
R=1*ones(1,N);
%PID部分
e=0;de=0;ie=0;Td=7/3.5;Ti=30
kp=2.5;kd=kp*Td/T;ki=kp*T/Ti;
for k=1:N
uu1(1,k)=-(kp*e+kd*de+ki*ie);
%延迟环节
if k<=Nd
u1=0;
else
u1=uu1(1,k-Nd);
end
k0=a1*x+b*u1;
k1=a1*(x+h*k0/2)+b*u1;
k2=a1*(x+h*k1/2)+b*u1;
k3=a1*(x+h*k2)+b*u1;
x=x+(k0+2*k1+2*k2+k3)*h/6;
y=c*x+d*u1;
%计算误差,微分和积分
e1=e;
e=y(1,1)-R(1,k);
de=(e-e1)/T;
ie=e*T+ie;
yy1(1,k)=y;
plot(yy1)
end
这是M文件,但是simulink图我不会发,其实就是单纯的PID控制器然后一个系统传函,一个延迟,一个单位负反馈,就这么简单,请高手赐教!!!!!!补充一点,就是系统延时是1,而且我估计问题就出在延时环节上,希望高手解答
附件为SIMULINK文件