一、鲁棒控制概述鲁棒控制(Robust Control )的研究始于20 世纪50 年代。
所谓“鲁棒性” ,是指控制系统在一定的参数摄动下,维持某些性能的特性。
根据对性能的不同定义,可以分为稳定鲁棒性和性能鲁棒性。
以闭环系统的鲁棒性作为目标设计得到的固定控制器成为鲁棒控制器。
由于工作情况变动、外部干扰以及建模误差的缘故,实际工业过程的精确模型很难得到,而系统的各种故障也将导致模型的不确定性,因此可以说模型的不确定性在控制系统中广泛存在。
如何设计一个固定的控制器,使具有不确定性的对象满足控制品质,也就是鲁棒控制,成为国内科研人员的研究课题。
鲁棒控制的早期研究,主要针对单变量系统(SISO在微小摄动下的不确定性,具有代表性的是Zames提出的微分灵敏度分析。
然而,实际工业过程中故障导致系统中参数的变化,这种变化是有界扰动而不是无穷小摄动。
因此产生了以讨论参数在有机摄动下系统性能保持和控制为内容的现代鲁棒控制。
现代鲁棒控制是一个着重控制算法可靠性研究的控制器设计方法。
其设计目标是找到在实际环境中为保证安全要求控制系统最小必须满足的要求。
一旦设计好这个控制器,它的参数不能改变而且控制性能能够保证。
主要的鲁棒控制理论有:(1)Kharitonov 区间理论;(2)H控制理论;(3)结构奇异值理论(卩理论)等等。
二、H鲁棒控制理论H 鲁棒控制理论是在H 空间(即Hardy 空间),通过某些性能指标的无穷范数优化而获得具有鲁棒性能的控制器的一种控制理论。
它的基本思想是:当利用研究对象的数学模型G 来设计控制器时由于参数的不确定性与变化性以及人们为了便于设计与计算往往把对象的模型简化使得对象的数学模型G 存在误差G。
H控制的目的为:当存在模型误差G时如何利用名义模型G来设计控制器K,使得K在稳定被控对象的同时使某一目标函数S的H范数最小。
H 控制方法引入输出灵敏度函数作为系统评价的指标,主要考虑了这样的一个设计问题,即要求设计一个控制器,不但使得闭环系统稳定,而且在可能发生“最坏扰动”的情况下,使系统误差在无穷范数意义下达到极小,从而将干扰问题转化为求解闭环系统稳定的问题。
传递函数的H 范数描述了输入有限能量到输出能量的最大增益,如果能使其达到最小,那么干扰对系统误差的影响将会降到最低程度。
许多实际的控制问题,如灵敏度极小化问题、鲁棒稳定问题、混合灵敏度优化问题、跟踪问题、模型匹配问题等,都可以归结为标准H 控制问题来研究。
H 标准控制问题如图1 所示图1标准控制问题P(S)是一个线性是不变系统,由以下的状态空间描述:& AxB"B 2uz C 1x D 11w D 12U y C 2x D 21W D 22U其中,x R n 是状态向量,u R m 是控制输入,y R p 是测量输出, z R r 是被调输出,W R q 是外部扰动,这里考虑的外部扰动是不确定的,但具 有有限能量,即W L 2, K 为需要设计的控制器。
用状态空间方程表示的传递函数矩阵 P(s)的实现形式为输入输出关系可以描述为u本文的主要问题就是设计一个控制器 质:闭环系统是内部稳定的,即闭环系统状态矩阵的所有特征值均在左 半开复平面中。
从扰动输入W 到被调输出z 地闭环传递函数T z (s)的H 范数小于1, 即卩|T z (s)|| 1具有这样性质的控制器u Ky 成为图1系统的一个H 控制器。
通过将系统模型中的系数矩阵分别乘以一个合适的常数, 可以使得 闭环系统具有给定的H 性能,即使得||T z (s)||的H 控制问题转化为使得 T z (s) 1的标准H 控制问题。
具有给定H 性能的H 控 制器称为系统(图1)的-次优H 控制器。
进一步,通过对 的搜索, 可以求取使得闭环系统的扰动抑制度 最小化的控制器, 这样的控制问 题称为图 1 系统的最优 H 控制问题,由最优 HAB 1B 2Ci D11 D12C2D 21 D 22A CR 1 P 2 C 1 p(s ) P P c ® A)21222B 1 B 2D11 D12 D21 D22R lP21p2 p>2KyKy ,使得闭环系统满足以下的性H控制问题得到的H 控制器称为系统的最优H 控制器。
H 控制分为状态反馈和输出反馈两种情况。
三、应用 matlab 进行H 鲁棒控制器设计在实际的工程应用中,按照传统的方法进行H 鲁棒控制器设计是很困难的,因为计算量非常大,过程很繁琐。
而且用到的数学工具也比较艰深,所以在高性能计算机出现以前,工程技术人员要将H 鲁棒控制理论应用于实际工程中是非常困难的。
现在高性能微机的普及使许多软件包相继面世如美国MathWork公司开发的matlab软件中的鲁棒控制工具箱;Integrated System公司开发Matrixx 的软件包以及Xmath软件包等。
这些软件包的研制成功使H鲁棒控制理论成为真正实用的工程设计理论。
本文使用MathWork公司开发的Matlab软件中的鲁棒控制工具箱进行H 鲁棒控制器设计,从而大大减小了复杂的计算量。
下面对文中用到的函数进行一简单说明:out = frsp(sys,omega,T,balflg), 其中omega 为横坐标角频率rad/sec ;sys 为系统表达式;T 为零代表是连续系统,为1 代表离散系统,默认0;balflg 默认0;out 输出为系统sys 的频幅响应值。
vplot([plot_type],vmat1,vmat2,vmat3, …),vmat1, vmat2…是所画曲线的坐标值,根据plot_type (取值情况查看matlab 的help 文件)的值画出对应的曲线。
[k,g,gfin] = hinfsyn(G,nmeas,ncon,gmin,gmax,tol) 该函数用的是“ DGK文献”中的算法,G:系统的广义对象;nmeas:连接到控制器的测量输出的个数;ncon: 控制输入的个数;gmin: 的下界;gmax: 的上界;tol: 的迭代精度;k: H 最优控制器;g: 闭环控制系统;gfin: 最终的值四、鲁棒控制器设计实例对计算机硬盘磁头驱动系统,若仅考虑硬盘磁头的钢体部分,即所谓的标称系统,那么该系统的传递函数实际上是有两个串联积分器组成的,考虑到干扰的影响,实际系统是一个不确定性系统,设实际对象含乘法摄动。
另外硬盘高速转动引起的空气涡流对磁头来讲是必须考虑的干扰。
设计目标是抑制住风的影响,将磁头准确地定位于指定的磁头上。
为此,选择了图2所示的一般反馈控制系统模型。
1图2硬盘的一般反馈控制系统图中2和Z2是用于保证对乘法摄动鲁棒性的评价信号;Z3是控制输入u的评价信号;1和Z1是用于干扰响应评价的信号;W2表示乘法摄动的大小;W i表示干扰的动态特性;W3适用于调节的参数,主要用于调整响度速度;W4是用来调整输入大小的加权函数。
进一步把风的干扰作为阶跃信号处理,经反复实验,确定如下加权函数:W(s) s 125.7 …l4 * 0.5 s 1.0*10W2(s) (弓「O*1。
)阳*10}*?^s2 1.2*10 4s 4.04* 108W3(s) 0.1W4(s) s 2.5*104…5 *10 s 5.0* 105构造不确定性系统,设计H控制器,相应的M文件见附件1。
乘法摄动的加权函数W2 (高通)、干扰加权函数W i (低通)和输入加权函数W4 (高通)如图所示:frequency!rad/s]图3加权函数的Bode图设计出的H控制器Bode图如图所示。
图4 H控制器Bode图另外,单位阶跃输入干扰的输出响应及对应的控制输入如图所示:图5阶跃干扰响应及控制器输入附件1:M 文件:clear clcformat short ew=logspace(-2,6,100);%generates n pointsbetweendecades10A a and 10A b.%设一般被控对象 %定义控制对象和加权函数 Psys=nd2sys([1],[1 0 0],3.87e7); W1sys=nd2sys([1 125.7],[1 1e-4],5e-1); W2n um1=[1 1e+4 5.7e+7]; W2de n1=[1 1.2e+4 4.04e+8]; W2sys1= nd2sys(W2 num1,W2de n1); W2sys=mmult(W2sys1,W2sys1,23.9); W3sys=0.1;W4sys=nd2sys([10 10*0.5*0.5e4],[1 10*5e4]); %显示加权函数的Bode 图 W1fr=frsp(Psys,w); W2fr=frsp(W2sys,w); W3fr=frsp(W3sys,w);16105OJ p .-2-dluyStep di&turbarice response0.01 0020.D3 0.04 0.06 0.06 0.07 Tima[s] Input0 06 0.090L1435 =-10 0.001 0.002 0.003 D.00J 0,005 0.005 0.007 0.00B 0 009 001W4fr=frsp(W4sys,w);figure(1); vplot('liv,lm',W1fr,W2fr,W3fr,W4fr); title('Weighting Functions')xlabel('frequency[rad/s]') ylabel('Gain') legend('W1fr','W2fr','W3fr','W4fr'); grid;%设一般被控对象,描述整个系统systemnames='Psys W1sys W2sys W3sys W4sys'; inputvar='[w1;w2;u]'; outputvar='[W1sys;W2sys;W4sys;w2+Psys]'; input_to_W3sys='[w1]';input_to_Psys='[u+W3sys]'; input_to_W1sys='[Psys+w2]';input_to_W2sys='[Psys]'; input_to_W4sys='[u]'; sysoutname='Gpsys';cleanupsysic='yes';sysic;%设计控制器disp(['H00 controller Desigh with hinfsyn']); K=[];glow=0;ghigh=10;tol=1e-2; while isempty(K)==1&ghigh<1e6;[K,CL,gopt]=hinfsyn(Gpsys,1,1,glow,ghigh,tol); if isempty(K)==1&ghigh<1e6;ghigh=ghigh*10; tol=ghigh*1e-3;endclear CL ghigh glow tolend;%显示控制器的Bode 图Kfr=frsp(K,w)';figure(2); subplot(2,1,1) vplot('liv,lm',Kfr');title('Bode plot of Controller') xlabel('frequency[rad/s]') ylabel('Gain') grid;subplot(2,1,2) vplot('liv,p',Kfr'); xlabel('frequency[rad/s]')ylabel('Phase(degrees)')grid;%仿真systemnames='Psys K'; inputvar='[w;r]'; outputvar='[Psys+r;K]'; input_to_Psys='[K+w]';input_to_K='[Psys+r]'; sysoutname='Clsys'; cleanupsysic='yes'; sysic;%仿真(控制器)[pa,pb,pc,pd]=unpck(Psys); [ka,kb,kc,kd]=unpck(K);[da,db,dc,dd]=unpck(sel(Clsys,1,1)); [ua,ub,uc,ud]=unpck(sel(Clsys,2,1)); %干扰响应t=[0:0.0001:0.1]; [y,x,t]=step(da,db,dc,dd,1,t); [u,x,t]=step(ua,ub,uc,ud,1,t); figure(3)subplot(2,1,1) plot(t,y) axis([0 0.1 0 16]) xlabel('Time[s]') ylabel('Amplitude') title('Step disturbance response') grid on;%控制输入subplot(2,1,2) plot(t,u) axis([0 0.01 -1.7 0]) xlabel('Time[s]') ylabel('u[V]') title('Input') grid on。