认识鲁棒控制

认识鲁棒控制(转载)

鲁棒控制课程要写大作业了,顺便总结一下,鲁棒控制已经非常成熟了,也就几个概念。

一般步骤是把方框图转化为标准形式,然后把性能指标转换为权函数,权函数最后都能弄到广义控制对象中,然后用H无穷求出控制器。

广义控制系统

所谓鲁棒控制,从应用的角度讲,就是设计一个控制器,满足一些性能指标。而几乎所有的控制问题都可以转化为下图表示

图 1最一般的控制系统

其中:

W:所有外部输入,如参考输入、扰动、传感器噪声等

Z:被控输出

Y:被测量输出(也就是所有传感器的输出)

U:控制器输出,用于控制广义控制对象

广义控制对象P:除了控制器以外的部分,包括实际控制对象,执行机构,传感器,A/D,D/A等

对于图1所示的情形,有

由w到z闭环传函矩阵为

即为G和K的下线性分式变换

 

系统G的范数:

对于平方可积的输入信号w和输出z,其能量分别定义为

这样就得到G的范数:

 

次优控制问题:

使得闭环传函矩阵范数小于一个给定的常数,即

最优控制问题:

就是最小化闭环传函矩阵范数:

应用中,都是次优控制问题。

 

例如:

混合S/KS问题可用下图来说明

wz的闭环传递函数可以表示为

转换为下图的标准形式:

灵敏度函数

S就是灵敏度函数了,d(干扰)为0时,r到e的传函,或者,输入r为0时,干扰d到输出y的传函

WSWKS为调整参数。一种选择方法为:

其中A<1为允许的最大稳态误差,为期望带宽,M为灵敏度峰值(一般情况下A=0.01,M=2)。

一般权函数是为了保证各个性能指标的

广义过程模型P(s)(见图2)可以表示为

得到P的状态方程形式以后,就可以根据论文

提出的状态方程解法进行求解了。

控制器设计

设计问题是寻找一控制器K,使之稳定系统G,并使下列的H∞范数最小:

有很多种得到H∞控制器的方法,例如hinfsyn,hinfric,hinflmi,这些函数将P作为输入,并以系统矩阵(mu-tools)方式表达。

结果分析

当控制器设计好后,需要对结果进行分析,这时可以利用Control System Toolbox提供的函数,例如利用lsim,step(阶跃响应),bode(伯德图),sigma(奇异值),freqresp(频域响应)等函数对传递函数SKSTKGK进行分析。Mu-tools提供的函数有:trsp(时域响应),frsp(频域响应),vsvd(奇异值),vplot。

matlab仿真:

S/KS问题有些不同。此处用到的模型和权重函数见Skogestad和Postlethwaite,1996

Sks.m

%cretae subsys

G=nd2sys(1,conv([10,1],conv([0.05,1],[0.05,1])),200);

%weights Ws=(s/M+w0)/(s+w0*A),Wks=1

M=1.5;w0=10;A=1.e-4;

Ws=nd2sys([1/M,w0],[1 w0*A]);%sys = nd2sys(num,den,gain)

Wks=1;

 

%建立广义系统P

%-------------------------------------------------------------------------

%方法0:直接方法

%/z1\ /Ws -Ws*G\ /r\

%|z2| =|0 Wks | | |

%\ v/ \I -G / \u/

z1=sbs(Ws,mmult(-1,Ws,G));

z2=sbs(0,Wks);%out = [mat1 mat2 mat3 ... matN]

v=sbs(1,mmult(-1,G));

P0=abv(z1,z2,v);% Stacks VARYING/SYSTEM/CONSTANT matrices above one another:

[a,b,c,d]=unpck(P0);

[aa,bb,cc,dd]=ssdata(balreal(minreal(ss(a,b,c,d))));

P0=pck(aa,bb,cc,dd);

 

%控制器设计

P=P0;

nmeas=1;nu=1;gmn=0.5;gmx=20;tol=0.001;

[K,CL,gam]=hinfsyn(P,nmeas,nu,gmn,gmx,tol);% CL - lft(P,K) (closed-loop system)

 

%利用RCT v3.0.1进行控制器的设计

%通常不需要系统的传递函数表达式,但更需要ss类型

[a,b,c,d]=unpck(G); Gcst=ss(a,b,c,d);

[a,b,c,d]=unpck(Ws); Wscst=ss(a,b,c,d);

[a,b,c,d]=unpck(Wks); Wkscst=ss(a,b,c,d);

[K,CL,gopt]=mixsyn(Gcst,Wscst,Wkscst,[]);

[a,b,c,d]=ssdata(balreal(K)); K=pck(a,b,c,d);

[a,b,c,d]=ssdata(balreal(CL)); CL=pck(a,b,c,d);

 

analysisResult.m

%分析结果

%-------------------------------------------------------------------------

%注意:此处使用mu-tools函数。也可以使用control toolbox指令,例如用series和

�edback进行子系统连接,sigma或freqresp,svd和bode画奇异值

% 异值,step和lsim分析

%时域响应

 

%画(Weighted)闭环系统的奇异值

w=logspace(-4,6,50);

CLw=vsvd(frsp(CL,w));%frsp复频率响应vsvd取奇异值

figure(1)

vplot('liv,m',CLw)

title('singular values of weighted closed loop system')

 

%得到传递函数矩阵

[type,out,in,n]=minfo(G);% Return information about a matrix

I=eye(out);

S=minv(madd(I,mmult(G,K))); %灵敏度函数madd out = mat1 + mat2 + mat3 + ... + matN

%minv Invert a SYSTEM/VARYING/CONSTANT matrix.

T=msub(I,S); %补灵敏度函数

KS=mmult(K,S); %G的输入

GK=mmult(G,K); %回路传递函数

 

%频域的奇异值

Sw=vsvd(frsp(S,w));

Tw=vsvd(frsp(T,w));

Kw=vsvd(frsp(K,w));

KSw=vsvd(frsp(KS,w));

GKw=vsvd(frsp(GK,w));

 

%画奇异值

%注意:如果愿意的话,可以将vplot用plot代替,单位是dB。

figure(2)

vplot('liv,lm',Sw,'-',Tw,'--',GKw,'-.');

title('\sigma(S(jw))(solid),\sigma(T(jw))(dashed) and \sigma(GK(jw))(dashdot),')

xlabel('Frequency [rad/sec]');ylabel('Amplitude')

 

figure(3)

vplot('liv,lm',Kw)

title('\sigma(K(jw))')

xlabel('Frequency [rad/sec]');ylabel('Amplitude')

 

%是否满足设计要求?

Sd=minv(Ws); Sdw=vsvd(frsp(Sd,w)); %期望的灵敏度

KSd=minv(Wks); KSdw=vsvd(frsp(KSd,w)); %期望的输出

figure(4)

vplot('liv,lm',Sw,'-',Sdw,'--');

title('\sigma(S(jw))(solid) and \sigma(Ws^{-1}(jw))(dashed),')

xlabel('Frequency [rad/sec]');ylabel('Amplitude')

 

figure(5)

vplot('liv,lm',KSw,'-',KSdw,'--');

title('\sigma(KS(jw))(solid) and \sigma(Wks^{-1}(jw))(dashed),')

xlabel('Frequency [rad/sec]');ylabel('Amplitude')

 

%最后,阶跃响应

reference=1;tfinal=1;step=0.01;

y=trsp(T,reference,tfinal,step);�lculates the time response of a SYSTEM matrix

u=trsp(KS,reference,tfinal,step);

figure(6)

subplot(2,1,1)

vplot('iv,d',y)

title('Step response');ylabel('y')

subplot(2,1,2)

vplot('iv,d',u)

ylabel('y');xlabel('time')

 

下面根据论文"Robust two-degree-of-freedom control of a seeker scan loop system"说明

应用背景就先不说了,这篇论文使用了二自由度控制,前馈控制器主要用来改善跟踪性能,反馈控制器用来抑制噪声干扰。

首先控制对象具有不确定性

使用输入输出分解技巧,将控制对象变成

也就是将复杂的带有不确定性的框图:

变成:

二自由度控制的一般形式有好多,本篇使用的是

C是前馈,H是反馈

再加入各个权函数,以及对应的噪声得到:

其中,最上边的Tm是期望的回路模型,是用来模型匹配的,从图上看出,它的输出和实际系统的输出的差要足够小,那么实际输出就接近期望输出了。

各个权函数指的是不确定性依赖于频率w的程度。然后转换成标准形式

用matlab求解即可。

posted @ 2016-04-20 14:14  Hand&Head  阅读(3988)  评论(1)    收藏  举报