clear all;
close all;
Ts=0.5;%采样周期0.5s
Tr=1;H=10;%参考轨迹时间常数为1,预测时域优化长度为10
Km=3;Tm=3;%预测模型的参数
beta=exp(-Ts/Tr);
alph=exp(-Ts/Tm);
%对象离散化
sys=tf(3,[3,1]);
dsys=c2d(sys,Ts,'z');
[num,den]=tfdata(dsys,'v');
%预测模型离散化
sysm=tf(Km,[Tm,1]);
dsysm=c2d(sysm,Ts,'z');
[numm,denm]=tfdata(dsysm,'v');
u_1=0;
y_1=0;
ym_1=0;
c=1;%设定值
for k=1:1:100
time(k)=k*Ts;
%经z变换后的离散化对象
y(k)=-den(2)*y_1+num(2)*u_1;
ym(k)=-denm(2)*ym_1+numm(2)*u_1;
%修正后的过程输出值ypav(k)=y(k)
ypav(k)=y(k)
%控制器输出
u(k)=((c-ypav(k))*(1-beta^H)+ym(k)*(1-alph^H))/(Km*(1-alph^H));
%参数更新
u_1=u(k);
y_1=y(k);
ym_1=ym(k);
end
figure(1);
plot(time,c,'b',time,y,'r');
axis([0 50 0 1.2])
xlabel('time(s)');ylabel('c,y');
- 1
- 2
前往页