被控对象为一延迟对象:
采样时间为20s,延迟时间为4个采样时间,即 80s,被控对象离散化为:
y(k) =-den(2)y(k- 1)+num(2)u(k - 5)
由于方波信号的速度、加速度不连续,当位置跟踪指令为方波信号时,如采用滤波器对指令信号进行滤波,将滤波输出作为给定信号,可使方波响应及执行器的动作更加平稳,在工程上具有一定意义。
为了保证滤波后幅值不变,取三阶离散滤波器为:
取方波信号为yd(t)=sgn(sin(0.0001*pi*t)),滤波器参数取a1 =0.10,a,2=0.80。
分两种情况进行仿真:M =1时,为普通方波指令信号,方波响应结果如图1所示;M=2时,为加滤波的方波指令信号,方波响应结果如图2所示。
可见,将方波指令信号加滤波后,方波响应更加平稳,控制输入信号的抖动消除。
图1 普通方波指令信号的PID响应和控制输入(M=1)
图2 带滤波器的方波指令信号PID响应和控制输入
仿真程序:
clear all;
close all;
ts=20;
sys=tf([1],[60,1]. inputdelay',80);
dsys-c2d(sys,ts,'zoh');
[num,den]=tfdata(dsys,'v');
u_1=0;u_2=0;u_3=0;u_4=0;u_5=0;y _l=0;
error_1=0;
ei=0;
yd_1=0;yd_2=0;
for k=1:1:1500
time(k)=k*ts;
yd(k)=1.0*sign(sin(0.00005*2*pi*k*ts));
M=1;
switch M;
case 1
yd(k)=yd(k);
case 2
yd(k)=0.10*yd(k)+0.80*yd_1+0.10*yd_2;
end
%Linear model
y(k)=-den(2)*y _1 +num(2)*u_5;
kp=0.80;
kd=10;ki=0.002;
error(k)=yd(k)-y(k);
ei=ei+error(k)*ts;
u(k)=kp*error(k)+kd*(error(k)-error_1)/ts+ki*ei;
%Update parameters
u_5=u_4;u_4=u_3;u_3=u_2;u_2=u_1;u_1=u(k);y_1=y(k);
error_2=error_1;
error_1=error(k);
yd_2=yd_1;yd_1-yd(k);
end
figure(1);subplot(211);
plot(time,yd,'r',time,y,'k:','linewidth',2);xlabel('time(s)';ylabel('yd.y');
legend('ldeal position signal', Position tracking';subplot(212);
plot(time,u,'r,linewidth',2);
xlabel('time(s)';ylabel('Control input');