DMC仿真算例Word文档下载推荐.docx

上传人:b****8 文档编号:22437514 上传时间:2023-02-04 格式:DOCX 页数:13 大小:138.63KB
下载 相关 举报
DMC仿真算例Word文档下载推荐.docx_第1页
第1页 / 共13页
DMC仿真算例Word文档下载推荐.docx_第2页
第2页 / 共13页
DMC仿真算例Word文档下载推荐.docx_第3页
第3页 / 共13页
DMC仿真算例Word文档下载推荐.docx_第4页
第4页 / 共13页
DMC仿真算例Word文档下载推荐.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

DMC仿真算例Word文档下载推荐.docx

《DMC仿真算例Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《DMC仿真算例Word文档下载推荐.docx(13页珍藏版)》请在冰豆网上搜索。

DMC仿真算例Word文档下载推荐.docx

控制时域长度M在优化性能指标中表示所要确定的未来控制量的改变数目,即优化变量的个数。

在预测时域长度P已知的情况下,控制时域长度M越小,越难保证输出在各采样点紧密跟踪期望输出值,系统的响应速度比较慢,但容易得到稳定的控制和较好的鲁棒性;

控制时域长度M越大,控制的机动性越强,能够改善系统的动态响应,增大了系统的灵活胜和快速性,提高控制的灵敏度,但是系统的稳定性和鲁棒性会变差。

因此,控制时域长度的选择应兼顾快速性和稳定性。

5、实验控制算法实例仿真

被控对象模型为

分别用MAC和DMC算法进行仿真。

无论是MAC还是DMC算法,它们都适用于渐进稳定的线性对象,先对该对象进行MAC算法仿真,MAC预测模型为

,j=1,2,3,……,P.。

写成矩阵形式为

,即

预测误差为

,参考轨迹

流程图如下

1.算法实现

由于DMC算法是一种基于模型的控制,并且运用了在线优化的原理,与PID算法相比,显然需要更多的离线准备工作

(1)测试对象的阶跃响应要经过处理及模型验证后得到的模型系数a1,……aN。

在这里,应该强调模型动态响应必须是光滑的,测量噪声和干扰必须滤除

(2)利用仿真程序确定优化策略,计算出控制系数d1……dp。

(3)选择校正系数h1……hN。

这三组动态系数确定后,应置入固定内存单元,以便实时调用。

2.参数选择

当DMC算法在线实施时,只涉及模型参数ai,控制参数di和校正参数hi。

但其中除了hi可以由设计者自由选择外,ai取决于对象阶跃响应特性及采样周期的选择,di取决于ai及优化性能指标,他们都是设计的结果而非直接可调参数。

在设计中,真正要确定的参数应该是

(1)采样周期T

(2)滚动优化参数的初值,包括预测时域长度P,控制时域长度M,误差权矩阵Q和控制权矩阵R

(3)误差校正参数hi。

3.用DMC算子进行仿真,得出

 

结合matlab中simulink框图和程序对对象进行仿真,得出的结果如下图所示,

结论:

图中曲线为使用DMC控制后系统的阶跃响应曲线。

从图中可看出:

采用DMC控制后系统的调整时间小,响应的快速性好,而且系统的响应无超调。

该结果是可以接受的。

优化时域P表示我们对k时刻起未来多少步的输出逼近期望值感兴趣。

控制时域M表示所要确定的未来控制量的改变数目。

模型算法控制(MAC)方案设计图

模型算法控制(MAC)由称模型预测启发控制(MPHC),与MAC相同也适用于渐进稳定的线性对象,但其设计前提不是对象的阶跃响应而是其脉冲响应。

它的原理结构图如下图所示:

图模型算法控制原理结构图

附录

clc

clear

Num1=[0.2713];

den=[10.9];

numm=[0.2713];

denm=[11];

%定义对象及模型的传递函数

n=40;

t1=0:

0.1:

n/10;

g=1*impulse(Num1,den,t1)'

;

gm=1*impulse(numm,denm,t1)'

fori=1:

n

g(i)=g(i+1);

end

gm(i)=gm(i+1);

a=g;

am=gm;

N=40;

p=15;

M=1;

m=M;

G=zeros(p,m);

p

forj=1:

m

ifi==j

G(i,j)=g

(1);

elseifi>

j

G(i,j)=g(1+i-j);

elseG(i,j)=0;

end

ifi>

s=0;

fork=1:

(i-m+1)

s=s+g(k);

G(i,m)=s;

end

F=zeros(p,n-1);

k=1;

forj=(n-1):

-1:

1

F(i,j)=g(n);

j

F(i,j)=0;

elseF(i,j)=g(i+k);

k=k+1;

end

R=1.0*eye(m);

Q=0.9*eye(p);

H=0.3*ones(p,1);

%定义各系数矩阵

e=zeros(4*N,4);

y=e;

ym=y;

U=zeros(4*N,4);

w=1;

Yr=zeros(4*N,4);

b=[0.1;

0.4;

0.6;

0.9];

fori=1:

4

fork=N+1:

4*N

y(k,i)=a(1:

N)*U(k-1:

k-N,i);

%求解对象输出

ym(k,i)=am(1:

%求解模型输出

e(k)=y(k)-ym(k);

forj=1:

p

Yr(k+j,i)=b(i)^(j)*y(k)+(1-b(i)^(j))*w;

dt=[1zeros(1,m-1)]*inv(G'

*Q*G+R)*G'

*Q;

U(k,i)=dt*(Yr(k+1:

k+p,i)-F*U(k-N+1:

k-1,i)-H*e(k));

t=0:

11.9;

subplot(2,1,1);

plot(t,y(N:

N+119,1))

holdon;

N+119,2))

holdon

N+119,3))

N+119,4))

%t,y(N:

N+119,3),t,y(N:

N+119,4),t,Yr(N:

N+119,1),t,w*ones(1,120));

%gridon

%legend('

输出1'

'

输出2'

输出3'

输出4'

柔化曲线'

期望曲线'

);

%title('

PlotofMAC'

%plot(U);

%gridon;

%DMC.m动态矩阵控制(DMC)

Num1=0.2713;

den=[1-0.83510000];

G=tf(Num1,den,’Ts’.0.4);

%连续系统

Ts=0.4;

%采样时间Ts

G=c2d(G,Ts);

%被控对象离散化

[Num1,den,]=tfdata(G,'

v'

N=60;

%建模时域N

[a]=step(G,1*Ts:

Ts:

N*Ts);

%计算模型向量a

M=2;

%控制时域

P=15;

%优化时域

M

P-j+1

A(i+j-1,j)=a(i,1);

end%动态矩阵A

Q=1*eye(P);

%误差权矩阵Q

R=1*eye(M);

%控制权矩阵R

C=[1,zeros(1,M-1)];

%取首元素向量C1*M

E=[1,zeros(1,N-1)];

%取首元素向量E1*N

d=C*(A'

*Q*A+R)^(-1)*A'

%控制向量d=[d1d2...dp]

h=1*ones(1,N);

%校正向量h(N维列向量)

I=[eye(P,P),zeros(P,N-P)];

%Yp0=I*YNo

S=[[zeros(N-1,1)eye(N-1)];

[zeros(1,N-1),1]];

%N*N移位阵S

sim('

DMCsimulink'

)%运行siumlink文件

%图形显示

plot(y,'

LineWidth'

2);

plot(w,'

:

r'

xlabel('

\fontsize{15}k'

ylabel('

\fontsize{15}y,w'

legend('

输出值'

设定值'

gridon;

subplot(2,1,2);

plot(u,'

g'

\fontsize{15}u'

附2DMC程序代码

%DMC控制算法

num=0.2713;

G=tf(num,den,’Ts’.0.4);

[num,den,]=tfdata(G,'

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

当前位置:首页 > 解决方案 > 学习计划

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

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