1、H设计的设计的m函数函数目目 录录 广义对象的求取广义对象的求取 连续系统连续系统H设计的设计的m函数函数 离散系统离散系统H设计的设计的m函数函数标准的H问题的框图如图所示,图中G为系统的广义对象,K为控制器。G(s)K(s)wzyu图1求解图中对象G的方法有两种:1. m函数调用法2. 直接求取法一广义对象的求取一广义对象的求取图2 加权灵敏度问题下面通过图2所示的加权灵敏度问题的例子来看一下如何通过m函数调用来求取系统的广义对象G。KyuPWwzyp1. m函数调用法函数调用法系统除去控制器K以外的部分就是广义对象G,它是两入两出的,输入信号是w和u,输出信号是z和y。可用传递函数表示为
2、11122122GGW WPGGGIPzwGyz 20( ),(20)(1)sP sss100( )1W ss设图2中的对象P和灵敏度权函数W分别为将参数代入,可以得到广义对象G为2100100(20)(1)(20)(1)(20)1(20)(1)sWWPsssGIPsssG送进去以后,调用下面的三个m函数,就可以得到广义对象G的状态空间实现A,B,C,D=ssdata(sys)sys=minreal(ss(G)yuwzKPWyp图2 加权灵敏度问题G通过下面的函数送进去G=tf(0 100,1 1),tf(-100 2000,1 22 41 20);1,tf(-1 20,1 21 20)G=l
3、tisys(A,B,C,D)这个这个G就是我们求解问题时所用的就是我们求解问题时所用的G,它是这样送进去的。它是这样送进去的。用上面的函数调用法来求取G的状态实现,是非常简单的。但是从上面的结果可以看出,用这种方法得到的状态变量纯粹是数值上的运算,脱离了物理概念。本例中得到的广义对象G0.8813.44356.63164.42590.63683.792418.92965.69782.70292.64452.87472.25872.19055.55940.77545.65364.652711.2247000.50590.32770.243410ABGCD图2 加权灵敏度问题KyuPWwzyp根据
4、结果只能知道这个广义对象的输入输出之间的关系,这几个状态变量之间的关系与实际的物理系统之间的状态没有直接联系,没有物理意义。下面我们仍用上面的例子,用直接建立状态变量的方法来求取广义对象G的状态空间实现(A,B,C,D)。首先来求对象P的状态空间实现。设被控对象P的状态变量为x1和x2,根据P的传递函数可以得到如下的状态方程:1122122040pppxxuxxxuyxppppppppppxA xB uyC xD u2. 直接求取法直接求取法20401( )1(20)(1)(20)(1)sP sssss20040111010ppppABCD设权函数W的状态变量为x3,根据W的传递函数,可以得到
5、权函数W的状态空间实现1 10010WWWWABCD100( )1W ss根据图2中各信号的关系,进一步可以得到广义对象G的状态空间实现为图2 加权灵敏度问题KyuPWwzyp20000400011001001001 10000000010001001010ppWpWWWpABB CABABGCCDC前面讲的这部分内容是关于广义对象G如何送进去,这里我们讲了两种方法:1. m函数调用法;2. 直接求取法。接下来要讲的是第二部分的内容:连续系统H设计的m函数。1. 函数函数 hinfsyn该函数用来计算系统的 H控制器k,函数的调用形式为: k,g,gfin = hinfsyn(G,nmeas,
6、ncon,gmin,gmax,tol) 该函数用的是“DGKF文献”中的算法:(1) Doyle, J.C., K. Glover, P. Khargonekar, and B. Francis, State-space solutions to standard H2 and Hcontrol problems, IEEE Transactions on Automatic Control, vol. 34, no. 8, pp. 831-847, August 1989.(2) Glover, K., and J.C. Doyle, State-space formulae for all
7、 stabilizing controllers that satisfy an H norm bound and relations to risk sensitivity, Systems and Control Letters, vol. 11, pp. 167-172, 1988.二连续系统二连续系统H设计的设计的m函数函数该函数用来计算系统的 H控制器k,函数的调用形式为: k,g,gfin= hinfsyn(G,nmeas,ncon,gmin,gmax,tol) 其中输入变量中的G为如下定义的两入两出的广义对象,也是我们第一部分内容里所讲的用G=ltisys(A,B,C,D)送进去
8、的G。1. 函数函数 hinfsyn12111122212220000401100101001 10000010001010ABBABGCDDCDCDDnconnmeasGwzyu G: 系统的广义对象;nmeas: 连接到控制器的测量输出的个数;ncon: 控制输入的个数;gmin: 的下界;gmax: 的上界;tol: 的迭代精度;k: H最优控制器;g: 闭环控制系统;gfin: 最终的值;k,g,gfin=hinfsyn(G,nmeas,ncon,gmin,gmax,tol)k,g,gfin=hinfsyn(G,nmeas,ncon,gmin,gmax,tol)算例:算例: PS/T混
9、合灵敏度问题混合灵敏度问题本例的H问题是要求解如下的有约束的优化设计问题KPW1wuy+z1z2W2图3PS/T问题220.01(1)(0.0051)( )(0.0021)ssW ss21( )(0.001)P ss1( )0.001W ss图3中参数如下:12minstabKWPSWT图中除去K以外的部分就是广义对象G按照我们第一部分内容所讲的方法把参数送进去以后,得到系统广义对象G的状态空间实现矩阵如下:0.00100001000244.140600,010240000000.001000010.001A6610100128001100B1000 0078.027323.8228 0 0
10、,0000 1C0.000001 0.00000100012.5D由于调用函数hinfsyn时对象要满足假设中秩的要求,设计中取Dp=10-6,以后第4章讲DGKF法时还要提到。广义对象G由下面的函数送进去:G=ltisys(A,B,C,D)本例中函数的调用形式如下: hinfsyn(G,nmeas,ncon,gmin,gmax,tol)k,g,gfin=hinfsyn(G,1,1,0.1,2,0.0001)函数调用中的迭代过程如下:函数调用中的迭代过程如下:gamma hamx_eig xinf_eig hamy_eig yinf_eig nrho_xy p/f 2.000 6.8e+000
11、 1.2e-016 1.0e-003 -1.9e-017 0.0000 p 1.050 6.7e+000 1.2e-016 1.0e-003 -1.9e-017 0.0000 p 0.575 6.6e+000 1.2e-016 1.0e-003 -1.9e-017 0.0000 p 121111222122ABBABGCDDCDCDD设计中权函数W1中的是可变的,要取尽可能的最大值,这里给出的是当取1000时的迭代过程。1( )0.001W ss0.338 6.2e+000 1.2e-016 1.0e-003 -1.9e-017 0.0000 p 0.219 5.3e+000 -3.3e-00
12、3# 1.0e-003 -1.9e-017 0.0000 f 0.278 5.9e+000 -2.9e-002# 1.0e-003 -1.9e-017 0.0000 f 0.308 6.1e+000 -4.4e-001# 1.0e-003 -1.9e-017 0.0000 f 0.323 6.1e+000 1.2e-016 1.0e-003 -1.9e-017 0.0000 p 0.315 6.1e+000 1.2e-016 1.0e-003 -1.9e-017 0.0000 p 0.312 6.1e+000 1.2e-016 1.0e-003 -1.9e-017 0.0000 p 0.310
13、 6.1e+000 -1.3e+000# 1.0e-003 -1.9e-017 0.0000 f 0.311 6.1e+000 -1.6e+002# 1.0e-003 -1.9e-017 0.0000 f 0.311 6.1e+000 1.2e-016 1.0e-003 -1.9e-017 0.0000 p 0.311 6.1e+000 1.2e-016 1.0e-003 -1.9e-017 0.0000 p 0.311 6.1e+000 1.2e-016 1.0e-003 -1.9e-017 0.0000 p 0.311 6.1e+000 1.3e-016 1.0e-003 -1.9e-01
14、7 0.0000 p Gamma value achieved: 0.3107 1逐渐增大,当增大到100000时,这就是最终的设计结果。1.0067函数调用中的迭代过程如下:函数调用中的迭代过程如下:gamma hamx_eig xinf_eig hamy_eig yinf_eig nrho_xy p/f 2.000 2.1e+001 4.6e-013 1.0e-003 0.0e+000 0.0000 p 1.050 1.9e+001 4.7e-013 1.0e-003 0.0e+000 0.0000 p 0.575 1.4e+001 -9.1e-004# 1.0e-003 0.0e+000
15、 0.0000 f 0.813 1.8e+001 -3.5e+000# 1.0e-003 0.0e+000 0.0000 f 0.931 1.9e+001 -1.4e+001# 1.0e-003 0.0e+000 0.0000 f 0.991 1.9e+001 -7.9e+001# 1.0e-003 0.0e+000 0.0000 f 1.020 1.9e+001 4.7e-013 1.0e-003 0.0e+000 0.0000 p 1.005 1.9e+001 -1.1e+003# 1.0e-003 0.0e+000 0.0000 f 1.013 1.9e+001 4.7e-013 1.0
16、e-003 0.0e+000 0.0000 p 1.009 1.9e+001 4.7e-013 1.0e-003 0.0e+000 0.0000 p 1.007 1.9e+001 4.7e-013 1.0e-003 0.0e+000 0.0000 p 1.006 1.9e+001 -4.2e+003# 1.0e-003 0.0e+000 0.0000 f 1.007 1.9e+001 4.7e-013 1.0e-003 0.0e+000 0.0000 p 1.007 1.9e+001 -1.6e+004# 1.0e-003 0.0e+000 0.0000 f 1.007 1.9e+001 4.
17、7e-013 1.0e-003 0.0e+000 0.0000 p 1.007 1.9e+001 -5.1e+004# 1.0e-003 0.0e+000 0.0000 fGamma value achieved: 1.0067设计所得的H控制器:2626144143605589.224(500)(500)(47.071049)( )(1.646*10 )(231.2)(0.001)(0.0021*10 )ssssK ssssss设计所得的闭环系统的奇异值Bode图如图4所示,图4闭环系统奇异值Bode图10-2100102104106108-35-30-25-20-15-10-505Sing
18、ular ValuesFrequency (rad/sec)Singular Values (dB)2. 函数函数 hinf函数的调用形式为:sscp,sscl = hinf(G, ssu) 该函数用的是下面文献中的算法,对于D11不为0的情形,可以用该函数求解。M. G. Safonov, D. J. N. Limebeer and R. Y. Chiang, Simplifying the H Theory via Loop Shifting, Matrix Pencil and Descriptor Concepts, Int. J. Contr., vol. 50, no. 6, pp
19、. 2467-2488, 1989.函数的输入变量G为如下定义的广义对象:121111222122ABBGCDDCDD图5G(s)K(s)u1y1y2u2U(s)F(s)函数的输入变量中的ssu对应的就是图5中的U(s),是个可调参数。一般都取默认值0,此时所求得的H控制器是中心控制器。sscp,sscl = hinf(Gsscp,sscl = hinf(G, , ssu)ssu) 输出变量中的sscp表示控制器F(s),sscl表示闭环传递函数 。1 1( )y uTs算例:算例:S/KS/T问题问题图中参数如下:图6 33.16(1/300)( )(1/10)sW ss329000( )3
20、07001000P ssss212(1/30)( )0.01(1)sW ss_uKPW2wyz2z1W1W3z32( )0.0001W s 本例的H问题是要求解如下的有约束的优化问题123minstabKWSW KSWT调用函数hinf时,其输入变量G有自己的调用形式,要用如下的几个函数调用来送进去:W1= /900 /15 ;0.01 0.02 0.01;W2=0.0001;W3=0.1 1;3.16/300 3.16;P=ss(ap,bp,cp,dp);G=augtf(P,W1,W2,W3);其中ap,bp,cp,dp为对象P的状态空间实现21222(1/30)( )0.01(1)/900
21、/150.010.020.01sW sssssssscp,sscl = hinf(Gsscp,sscl = hinf(G, , ssu)ssu) 329000( )307001000P ssss3010.93750.4883 26400003200002.19730ap bpcp dp_uKPW2wyz2z1W1W3z3图6 本例中函数hinf的调用形式为:22259551212.8629(300)(10.53)(1.523)(28.48656.6)( )(1237)(702.1)(1) (0.01)(10369.91*10 )sssssF sssssss图7 闭环系统的奇异值Bode图131
22、0-2100102104-10-8-6-4-20Singular ValuesFrequency (rad/sec)Singular Values (dB)sscp,sscl = hinf(G)当时,闭环系统的H范数为0.8916。当时,闭环系统的H范数为0.9998,设计所得的H控制器为: hinf(G,ssU)该函数用的是下列文献中的算法:(1) Doyle, J.C., K. Glover, P. Khargonekar, and B. Francis, State-space solutions to standard H2 and Hcontrol problems, IEEE Tr
23、ansactions on Automatic Control, vol. 34, no. 8, pp. 831-847, August 1989.(2) P. Gahinet, A. Nemirovskii, A. J. Laub, M. Chilali. The LMI Control Toolbox. Proc. of the IEEE Conf. on Dec. and Control. 1994: 2038-2041 3. 函数函数 hinfric函数的调用形式为:其中输入变量中的G为如下定义的广义对象:121111222122ABBGCDDCDD输入变量中的r是2维列向量, r(1
24、) 表示量测输出的个数, r(2)表示控制输入的个数。输出变量gopt表示最优的H性能,输出变量k表示H中心控制器。gopt,k = hinfric(G,r) 该函数用的是基于该函数用的是基于Riccati方程的算法,是解析法。方程的算法,是解析法。其最优控制器是在任意阶其最优控制器是在任意阶控制器中寻优的,所以优控制器中寻优的,所以优化效果比较好。函数对对化效果比较好。函数对对象的秩的要求比较低。象的秩的要求比较低。 算例:算例:S/KS/T问题问题图中参数如下:图8350( )5000sW ss222100( )0.02100P sss11( )0.001W ss2( )0.01Ws +u
25、KPW2wyz2z1W1W3z3本例的H问题是要求解如下的有约束的优化问题123minstabKWSW KSWT函数调用时的广义对象G由下面的函数送进去:22479644.7322(5000)(0.0210000)( )(967.6)(0.01)(1.118*105*10 )sssK sssss hinfric(G,r)G=ltisys(A,B,C,D)gopt,k = hinfric(G,1;1)H优化设计所得的闭环系统的最终值为0.1011,所得的H中心控制器为:本例中函数的调用形式如下:10-2100102104106-90-80-70-60-50-40-30-20-10Singular
26、 ValuesFrequency (rad/sec)Singular Values (dB)图9 加权闭环系统的奇异值Bode图该函数用的是下面文献中的算法,是基于LMI的算法,对对象的秩的要求也比较低。(1) P. Gahinet, P. Apkarian. A Linear Matrix Inequality Approach to H Control. Int. J. of Robust and Nonlinear control. 1994, 4: 421-448 函数的调用形式为:其中输入变量中的G为如下定义的广义对象:121111222122ABBGCDDCDD输入变量中的r是2维
27、列向量, r(1) 表示量测输出的个数, r(2)表示控制输入的个数。输出变量gopt表示最优的H性能,输出变量k表示H中心控制器。gopt,k = hinflmi(G,r) 4. 函数函数 hinflmi算例:算例:S/KS/T问题问题图10+uKPW2wyz2z1W1W3z3图中参数如下:350( )5000sW ss2100( )0.02100P sss11( )0.001W ss2( )0.01Ws 本例的H问题是要求解如下的有约束的优化问题123minstabKWSW KSWT函数调用时的广义对象G由下面的函数送进去:21122558.7657(5016)(0.02100)( )(1
28、81000)(5014)(108.5)(0.00985)sssK sssss hinflmi(G,r)G=ltisys(A,B,C,D)gopt,k = hinflmi(G,1;1)H优化设计所得的闭环系统的最终值为0.1064,所得的H中心控制器为:本例中函数的调用形式如下:图11 加权闭环系统的奇异值Bode图10-2100102104106-60-55-50-45-40-35-30-25-20-15Singular ValuesFrequency (rad/sec)Singular Values (dB)5. 函数函数 hinfnorm该函数用来计算系统的H范数 ,函数的调用形式为: o
29、ut = hinfnorm(sys,tol,iiloc)sys: 为系统矩阵,当已知系统的传递函数T时,调用如下的函数可得到sys A,B,C,D=ssdata(T) sys=ltisys(A,B,C,D) out = hinfnorm(sys,tol,iiloc)tol: 为H范数的上下界之间的相对精度。iiloc: 为假定的范数值所对应的初始频率点。out是一个 的行向量。分别表示的下界,上界以及下界所对应的频率。1 3算例:算例:200.20.2A首先调用函数ltisys将系统矩阵sys送进去, sys=ltisys(A,B,C,D) 如下调用函数hinfnorm hinfnorm(sy
30、s,tol,iiloc) out=hinfnorm(sys,0.000001,0)求得的out=1 1 0。40.2B01C 0D 设系统的状态空间实现为下界上界下界对应频率6. 函数函数 norminf该函数的调用形式为 gain,peakf=norminf(sys,tol)输入变量中的sys为系统矩阵,tol为相对精度,输出变量gain为求得的峰值增益,peakf为该范数值对应的频率。1. 函数函数dhfsyn(对应的连续函数为hinfsyn)的调用形式 k,g,gfin =dhfsyn(G,nmeas,ncon,gmin,gmax,tol,h)输入变量中的h为采样时间,G为离散的广义对象
31、,其它变量说明同函数hinfsyn。函数dhfsyn计算时是先把离散对象变成连续对象,在连续域进行设计,得到连续的控制器k后,再进行离散化。2.函数函数dhinfric(对应的连续函数为hinfric)的调用形式 gopt,K = dhinfric(G,r)输入变量中的G为离散的广义对象,其它变量说明同函数hinfric。函数dhinfric是直接在离散域进行设计。H三离散系统三离散系统H设计的设计的m函数函数3. 函数函数dhinflmi(对应的连续函数为hinflmi)的调用形式 gopt,K = dhinflmi(G,r)输入变量中的G为离散的广义对象,其它变量说明同函数hinflmi。
32、函数dhinflmi是直接在离散域进行设计。4. 函数函数dhfnorm(对应的连续函数为hinfnorm)的调用形式 out = dhfnorm(sys,ttol,h,iiloc)输入变量中的sys为离散的系统矩阵,h为采样时间,其它变量说明同函数hinfnorm。5. 函数函数dnorminf(对应的连续函数为norminf)的调用形式 gain,peakf=dnorminf(sys,tol)输入变量中的sys为离散的系统矩阵,其它变量说明同函数norminf。这里总共讲了这里总共讲了6个连续个连续H设计的函数及设计的函数及5个离个离散散H设计的函数。设计的函数。连续函数:连续函数:1. 函数hinfsyn2. 函数hinf3. 函数hinfric4. 函数hinflmi5. 函数hinfnorm6. 函数normhinf离散函数:离散函数:1. 函数dhfsyn2. 函数dhinfric3. 函数dhinflmi4. 函数dhfnorm5. 函数dnorminf