模型算法控制.docx

上传人:b****7 文档编号:10169869 上传时间:2023-02-09 格式:DOCX 页数:13 大小:53.20KB
下载 相关 举报
模型算法控制.docx_第1页
第1页 / 共13页
模型算法控制.docx_第2页
第2页 / 共13页
模型算法控制.docx_第3页
第3页 / 共13页
模型算法控制.docx_第4页
第4页 / 共13页
模型算法控制.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

模型算法控制.docx

《模型算法控制.docx》由会员分享,可在线阅读,更多相关《模型算法控制.docx(13页珍藏版)》请在冰豆网上搜索。

模型算法控制.docx

模型算法控制

MATLAB环境下模型算法控制实验

 

1.考虑如下的双输入双输出纯时延对象,其传递函数矩阵为:

解:

MATLAB程序如下:

%将传递函数模型转换为阶跃响应模型

g11=poly2tfd(12.8,[16.71],0,1);

g12=poly2tfd(6.6,[10.91],0,7);

g21=poly2tfd(-18.9,[21.01],0,3);

g22=poly2tfd(-19.4,[14.41],0,3);

delt=3;

ny=2;

tfinal=90;

model=tfd2step(tfinal,delt,ny,g11,g12,g21,g22);

%进行模型预测控制器设计

plant=model;

%预测时域长度为6

p=6;m=2;

ywt=[];uwt=[11];

%设置输入约束和参考轨迹等控制器参数

r=[11];

tend=30;%仿真时间为30

ulim=[-0.1-0.10.50.50.1100];

ylim=[];

[y,u,ym]=cmpc(plant,model,ywt,uwt,m,p,tend,r,ulim,ylim);

plotall(y,u,delt)

闭环系统的输出和控制量变化曲线如图所示:

2.设系统的传递函数矩阵为:

解:

MATLAB程序如下:

g11=poly2tfd(12.8,[16.71],0,1);

g12=poly2tfd(6.6,[10.91],0,7);

g21=poly2tfd(-18.9,[21.01],0,3);

g22=poly2tfd(-19.4,[14.41],0,3);

delt=3;

ny=2;

imod=tfd2mod(delt,ny,g11,g12,g21,g22);

pmod=imod;

p=6;m=2;

ywt=[];uwt=[11];

tend=30;

r=[01];

ulim=[-inf-0.15infinf0.1100];

ylim=[];

[y,u,ym]=scmpc(pmod,imod,ywt,uwt,m,p,tend,r,ulim,ylim);

plotall(y,u,delt)

闭环系统的输出和控制量变化曲线如图所示:

在添加对输出变量的约束后,再利用以下程序对系统进行模型预测控制器的设计

ulim=[-inf-0.15infinf0.1100];

ylim=[00infinf];

[y,u,ym]=scmpc(pmod,imod,ywt,uwt,m,p,tend,r,ulim,ylim);

plotall(y,u,delt)

得到闭环控制系统输出响应和控制量变化曲线如图:

3.考虑有如下传递函数距阵的多变量系统的状态空间模型预测控制器设计问题

解:

MATLAB程序如下:

%在进行模型预测控制器设计之前,首先将系统模型转换为状态空间形式

T=2;

g11=poly2tfd(12.8,[16.71],0,1);

g12=poly2tfd(6.6,[10.91],0,7);

g21=poly2tfd(-18.9,[21.01],0,3);

g22=poly2tfd(-19.4,[14.41],0,3);

umod=tfd2mod(T,2,g11,g12,g21,g22);

%定义扰动模型

g13=poly2tfd(3.8,[14.91],0,8)

g23=poly2tfd(4.9,[13.21],0,3)

dmod=tfd2mod(T,2,g13,g23);

%建立叠加了扰动的混合系统模型

pmod=addumd(umod,dmod);

%考虑精确建模的情况

imod=pmod;

ywt=[];uwt=[];

%预测时域和控制时域均为5

P=5;

M=P;

Ks=smpccon(imod,ywt,uwt,M,P);

tend=30;

r=[10];

[y,u]=smpcsim(pmod,imod,Ks,tend,r);

plotall(y,u,T)

 

得到闭环控制系统输出响应和控制量变化曲线如图:

增加预测时域长度,同时减少控制时域长度后,再利用以下程序

P=10;

M=3;

Ks=smpccon(imod,ywt,uwt,M,P);

tend=30;

r=[10];

[y,u]=smpcsim(pmod,imod,Ks,tend,r);

plotall(y,u,T)

可得闭环系统的输出和控制量变化曲线如图所示:

 

进一步改变控制时域长度,采用控制量分块的形式,即再利用以下程序

P=10;

M=[234];

tend=30;

r=[10];

Ks=smpccon(imod,ywt,uwt,M,P);

[y,u]=smpcsim(pmod,imod,Ks,tend,r);

plotall(y,u,T)

可得到的闭环系统的输出和控制量变化曲线:

增加输入控制量的加权矩阵系数,即再利用以下程序

uwt=[11];

P=5;

M=P;

Ks=smpccon(imod,ywt,uwt,M,P);

tend=30;

r=[10];

[y,u]=smpcsim(pmod,imod,Ks,tend,r);

plotall(y,u,T)

 

可得模型预测闭环控制系统输出控制量变化曲线如下图所示:

再利用以下程序将输出设定值均设为0,

ulim=[];Kest=[];

z=[];

v=[];

w=[1];

[y,u]=smpcsim(pmod,imod,Ks,tend,r,ulim,Kest,z,v,w);

plotall(y,u,T)

绘制闭环系统的输出和控制量变化曲线,如图所示:

 

利用以下程序采用估计器进一步改善系统性能

[Kest,newmod]=smpcest(imod,[15,15],[33]);

Ks=smpccon(newmod,ywt,uwt,M,P);

[y,u]=smpcsim(pmod,newmod,Ks,tend,r,ulim,Kest,z,v,w);

plotall(y,u,T)

对应的系统输出和控制量变化曲线如图所示:

 

4.考虑如下的多变量系统

解:

MATLAB程序如下:

g11=poly2tfd(12.8,[16.70],0,1);

g12=poly2tfd(6.6,[10.91],0,7);

g21=poly2tfd(-18.9,[21.01],0,3);

g22=poly2tfd(-19.4,[14.41],0,3);

delt=1;

ny=2;

imod=tfd2mod(delt,ny,g11,g12,g21,g22);

gw1=poly2tfd(3.8,[14.91],0,8)

gw2=poly2tfd(4.9,[13.21],0,3)

pmod=addumd(imod,tfd2mod(delt,ny,gw1,gw2));

%设计模型预测控制器

P=6;M=2;

ywt=[];uwt=[11];

Ks=smpccon(imod,ywt,uwt,M,P);

r=[];

ulim=[];

z=[];

v=[];

w=[1];

wu=[];

tend=30;

[y3,u3]=smpcsim(pmod,imod,Ks,tend,r,ulim,[],z,v,w,wu);

%设计状态估计器

Kest1=smpcest(pmod,1,0.001*eye(ny));

Ks1=smpccon(pmod,ywt,uwt,M,P);

[y1,u1]=smpcsim(pmod,pmod,Ks1,tend,r,ulim,Kest1,z,v,w,wu);

plotall(y1,u1,delt)

采用了状态估计器的闭环系统输出和控制量变化曲线如图所示:

下面进行简化的状态估计器设计

tau=[1010];

signoise=[33];

[Kest2,newmod]=smpcest(imod,tau,signoise);

Ks2=smpccon(newmod,ywt,uwt,M,P);

[y2,u2]=smpcsim(pmod,pmod,Ks1,tend,r,ulim,Kest1,z,v,w,wu);

plotall(y2,u2,delt)

 

采用简化的状态估计器的闭环系统输出和控制量曲线如图所示:

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1