1、第第8章章 在自动控制中的应用在自动控制中的应用 8.1 控制工具箱中的LTI对象 由6.4节可以看到,一个线性系统可以采取四种不同的方法进行描述,每种方法又需要几个参数矩阵,因此对系统进行调用和计算都很不方便。根据软件工程中面向对象的思想,MATLAB通过建立专用的数据结构类型,把线性时不变系统的各种模型封装成为统一的LTI(Linear Time Invariant)对象,它在一个名称之下包含了该系统的全部属性,大大方便了系统的描述和运算。这一节是本章的基础,即使会用原有控制工具箱的读者,也必须阅读这一节,才能掌握本章。8.1.1 LTI对象的类型和属性 MATLAB控制系统工具箱中规定的
2、LTI对象,包含了以下三种子对象:ss对象、tf对象和zpk对象,他们分别与状态空间模型、传递函数模型和零极增益模型相对应。每个对象都具有其属性和方法,通过对象方法可以存取或者设置对象的属性值。这三种对象的共同属性见表8.1。除了具有LTI的共同的属性(即子对象可以继承父对象的属性)外,还具有一些各自特有的属性。LTI对象的共同属性采样周期Ts:当系统为离散系统时,它给出了系统的采样周期,Ts=0或默认时表示系统为连续时间系统,Ts=-1表示系统是离散系统,但它的采样周期未定。输入时延Td:仅对连续时间系统有效,其值为由每个输入通道的输入时延组成的时延数组,默认表示无输入时延。输入变量名Inp
3、utName和输出变量名OutputName允许用户定义系统输入输出的名称,可默认。说明Notes和用户数据Userdata用以存储模型的其他信息,常用于给出描述模型的文本信息,也可以包含用户需要的任意其他数据,可默认。各LTI对象的特有属性 三种对象的特有属性见表8.2。每一类对象只含有自己的属性,这些属性中绝大部分前面已叙述过。num是6.4节中的f,den是6.4节中的g,只有Variable同属于前两类对象,它是用来显示系统函数中频率变量的。默认时连续系统为s,离散系统为z,对DSP(数字信号处理)式传递函数为z1,p和q留给用户自行规定。ss对象的属性e用于“描述状态空间模型”中左端
4、(导数端)的系数。在标准状态空间模型中,它是单位矩阵eye(n)。ss对象的属性StateName用于定义状态空间模型中每个状态的名称。8.1.2 LTI模型的建立 各种LTI对象模型都可以通过一个相应函数来建立,这种函数有五个,见表8.3。其中dss和ss函数都生成状态空间模型(它包含了描述状态空间模型);filt函数生成的仍然是传递函数模型,它的存储变量仍是num,den,不过自动取z1为显示变量,所以五种函数实际上生成的仍然是前面所说的三种对象模型。表8.3中所列的基本格式给出了最低限度应输入的基本变元,这些变元后面还可以增加对象的属性参数。8.1.3 对象属性的获取和修改1对象属性提取
5、和修改的方法见表8.4 用get和set命令:这种方法可以看到模型中存储的全部属性并可对它们进行修改。用单元阵列的访问方法提取单项属性和对它单独赋值(参阅4.8节).加上8.1.1节中介绍的用tf,zpk,ss等函数重新生成系统。所以共有了三种方法来设置对象属性。2模型类型的参数转换和提取第六章中采用转换命令:ss2tf,sstzp,tf2zp,tf2ss,zp2tf,zp2ss等。用这些命令时,输入变元中要键入系数矩阵,不太方便。在采用LTI模型以后,就不再用这些命令来进行模型变换了,而用能直接调用系统的LTI名称的命令来实现这些转换。这些命令就是dssdata,ssdata,tfdata和
6、zpkdata,它们分别用来获得转换后的系统状态空间、传递函数和零极增益参数。与ss,tf,zpk命令的不同在于这些带data的命令仅仅用来转换参数,但并不生成新的系统。8.1.4 SISO-LTI模型的组合 先假定两环节均为单输入单输出的系统SA和SB。在控制系统工具箱里,合成系统的特性可以用下列语句实现。两环节串联 S=series(SA,SB)或 S=SA*SB 两环节并联 S=parallel(SA,SB)或 S=SA+SB A环节前向,B环节反馈 S=feedback(SA,SB)这几个函数已经在6.4节中介绍过,在这里使用时,只要输入环节的名称,不必输入其参数矩阵。零极增益法模型组
7、合的编程串联:串联:将HA(s)和HB(s)的零极增益式代入H(s)=HA(s)HB(s)中,可以得知,合成系统的零极点为A,B两系统零极点的并集,即z=zA,zB;p=pA,pB;k=kA*kB;并联:并联:将HA(s)和HB(s)的零极增益式代入H(s)=HA(s)+HB(s)中,可以得知,合成系统的极点为A,B两系统极点的并集,即p=pA,pB;但其零点没有简单的表示式,只能把求出的f求根。反馈:反馈:从反馈公式可以观察到,合成系统的零点为系统A的零点加系统B的极点,即z=zA,pB,其极点没有简单的表示式。状态空间法模型组合的编程串联:U=UA,Y=YB,YA=UB,在A,B的状态方程
8、中,消去YA及UB,合成系统的状态方程可表为因此,合成系统的状态方程系数矩阵为:ABBBAABABABABA0000YDXCYYUBBXXAABUAXXXXBABABABABABA,0DDDCCDCDBBBACBAA状态空间法模型组合的编程 并联:在并联系统中,U=UA=UB;Y=YA+YB,在这些方程中,消去YA及YB,合成系统的状态方程系数可表为 反馈:反馈系统有Y=YA=UB;U=YB+UA在DA=DB=0的物理系统中,合成系统的系数阵为:BABABABA,00DDDCCCBBBAAAAABAABAB000C,AB CBABCCDBAMIMO-LTI模型的组合 商品化的软件产品,程序的编
9、写要考虑到多种复杂情况。如在MIMO系统中,调用上述函数还必须增加输入和输出变量的编号。串联:S=series(SA,SB,outputA,inputB)后两个变元为A系统输出和B系统输入编号。并联:S=parallel(SA,SB,InputA,InputB,OutputA,OutputB)输入变元中有两系统输入编号和输出编号。反馈:S=feedback(SA,SB,feedout,feedin,sign)SA,SB后面为A系统输出反馈和B系统输入编号。带时延Td系统的多项式近似 所有LTI对象的运算符是以多项式计算为基础的,因此,难以应用到带时延Td的系统。因此时延环节必须要用一个N次多项
10、式来近似,称为Pade近似。该多项式的分子分母系数向量可用语句numd,dend=pade(Td,N)求得。通常并不需要求出系数,直接把含有时延的环节s1变换一下即可。设近似后的环节为spd1,用的是三次多项式,Td已包含在s1的属性中,无需再输入。因此可键入spd1=pade(s1,3)这样带时延系统的其他特性也都可以分析了。8.1.5 复杂模型的组合:信号流图 遇到由大量环节交叉联接的系统,计算方法之一是画成信号流图,用6.4节给出的公式H=(I-R)1 P来求,这个简明的公式就等价于梅森公式。只要写出P和R,任何复杂系统的传递函数都可用这个简单的式子求出。在6.4节中曾经指出,用这个式子
11、存在的困难是,公式中用到的是普通的矩阵乘法和加法,如何将它推广到传递函数或其他系统函数。现在,利用LTI对象和它的扩展运算符,这个难题也得到了解决。例8.4给出了计算实例。2复杂系统状态方程的合成任意复杂的线性环节组成的系统,可以推导出它的普遍的状态方程表示式。令 合成系统的系数阵为其中P为输入矩阵q为联接矩阵111100000000LLLL,ABCDABCDABCDPDqDIDCqDICPDqDIqIBBCqDIqBAA1111)()()()(MATLAB求复杂系统的函数 MATLAB求复杂系统有五个步骤来。(1)对方框图中的各个环节进行编号,建立它们的对象模型。在有多输入多输出环节时对输入
12、和输出也要按环节的次序分别进行编号,当然它们的编号会大于环节的编号。(2)建立无连接的状态空间模型,append命令可完成这个功能。Sap=append(s1,s2,sL)(3)写出系统的联接矩阵QMATLAB求复杂系统的函数 MATLAB中为联接矩阵Q规定的形式与公式中的q略有不同。q是元素取值为(-1,0,1)的nn阶方阵,而Q则是标注q中非零项的矩阵。(4)选择组合系统中需保留的对外的输入和输出端的编号,并列出:inputs=i1,i2,,outputs=j1,j2,(5)用connect命令生成组合后的系统。sys=connect(sap,Q,inputs,outputs)01 1 0
13、12 30 00 02 000 00 13 400 01 04 03对应于qQ8.1.6 连续和采样系统之间的变换 对于状态方程为的连续系统,对应的采样系统状态方程为其中Ts为采样周期。其逆变换关系为:DuCxyBuAxx)()()()()()1(ddddkkkkkkuDxCyuBxAxDDCCBBAAAd0d)-(dd,deesTtt,ddd1dds,)(),(1n1DDCCABIABAAT连续和采样系统的变换函数 MATLAB控制工具箱提供了三种功能很强的函数来完成这个使命。它们是:c2d(连续系统变为采样系统)、d2c(采样系统变为连续系统)和d2d(采样系统改变采样频率)。c2d函数的
14、调用格式为 sd=c2d(sc,Ts,method)把连续系统以采样周期Ts和method方法,转换为采样系统。method有五种:zoh(零阶保持器),foh(一阶保持器),tustin(双线性变换法),prewarp,matched(根匹配法)8.1.7 典型系统的生成函数 用表8.5列出的函数可以快速地生成所需阶数的线性时不变系统。例如 sys=rss(4,3,2)得出随机产生的四阶的双输入三输出的稳定的状态空间系统sys,rmodel函数用于产生LTI对象的系数,它并不生成LTI对象本身。drss和drmodel的用法相仿,不同点仅仅在于它生成的是离散系统。ord2函数也是用来产生二阶
15、系统的系数的,不能生成系统本身,例8.1 模型转换方法的比较 已知系统的状态空间模型,求出它的传递函数模型、零极增益模型、极点留数模型。解:按上述方程输入状态方程系数矩阵A,B,C,D,注意这是一个单输入双输出系统,D是21阶的。故必须置为0;0。用旧的控制系统工具箱命令和LTI模型变换命令两种方法比较。1111222233311 012 0 002 0 0 1 2 310 41xxxyxxuxyxxx,例8.2 含串联和反馈环节的系统求图示系统的传递函数和极点分布。解:同样用旧的和新的两种控制系统工具箱命令作比较。例8.2(续)用新的LTI对象方法时,根据控制系统工具箱LTI对象运算优先等级
16、为“状态空间零极增益传递函数”的规定,合成系统的系统函数的对象特性应按照环节的最高等级来确定。在本章的例子中,有一个环节使用零极增益,其他两个是传递函数,因此,最后的系统函数就表现为零极增益。可以看出,它的极点与方法1中的第一个结果相同。例8.3 用信号流图解复杂系统 系统信号流图如下:其中 求以u为输入,x8为输出的系统函数。1232341256ssGGGssss,例8.3 用信号流图解复杂系统 解:信号流图的建模方法不再重复,为了得出不同的对象类型,可以在输入环节中重新安排。按照运算的优先级:只要有一个环节用ss对象,结果必是ss对象;如果每个环节都不用ss对象;只要有一个环节用zpk对象
17、,结果必是zpk对象;只有所有环节都用tf对象,结果才是tf对象。由于矩阵R的对象类型取决于其第一个赋值元素的对象类型。在本例中,第一个赋值语句是R(3,2)=G1;因此,G1的对象类型就决定了R的对象类型。为了验证这一点,在程序中设置了可选项。程序的其他部分同例6.19。例8.4 复杂框图的结构图变换 右图:已知:求合成系统的系统模型。9 170.50.5320.50.12 30.0021.813 180.60.3,ABCD例8.4 复杂框图(续)解:按下述的步骤来做。1。对环节及其输入和输出编号,建立对象模型。环节编号 s1,s2(两输入两输出),s3输入编号 u1,u2,u3,u4输出编
18、号 x1,x2,x3,x42。建立无联接的状态空间模型,可用append命令完成这个功能。sap=append(s1,s2,3)例8.4 复杂框图(续)3。写出系统的联接矩阵Q(其前两个全零行可省略)4。选择组合系统中需保留的对外的输入和输出端的编号并列出。inputs=1,2,outputs=2,35。用connect命令生成组合后的系统。sys=connect(sap,Q,inputs,outputs)324430Q例8.5 连续系统变换为离散系统 已知连续系统的传递函数为采样周期为0.2s,试用零阶保持器和双线性变换两种方法求出其离散传递函数。解:本例所用建模方法可参阅8.1.6节的内容
19、,其核心语句为:sd1=c2d(sc,ts)%零阶保持器方法sd3=c2d(sc,ts,t)%双线性变换方法10214)(2ssssH8.2 动态特性和时域分析函数 控制工具箱中的动态特性和时域分析函数参看表8.6。其中分三大类:零极点分析函数根轨迹绘制函数时域动态分析函数 这些函数中凡是以系统名称sys作为输入变元的,都同时适用于连续系统和离散系统。而且也适用于多输入多输出系统。因为这些特征都已包含在系统名称中。S平面的零极点分析 p=pole(sys)p=eig(sys)pr=esort(p)pzmap(sys)k=dcgain(sys)sgrid 生成 s平面网格-5-10-15-20-
20、20 -15 -10 -5z平面的零极点分析 zgrid生成z平面网格 rlocus(sys)impulse(sys)step(sys)lsim(sys,u,t)-0.2-0.4-0.6-0.8-1-1-0.500.51例8.6 阻尼系数对脉冲响应的影响 二阶系统的传递函数为设其固有频率n=10,在阻尼系数=0.1,0.3,0.7,1时,分别画出其脉冲响应函数。将系统在条件Ts=0.1下离散化,并画脉冲响应函数曲线。解:先用ord2函数建立二阶连续系统LTI模型s,用c2d函数转换为离散LTI模型sd,再用impulse函数绘制脉冲响应曲线。不同的zeta=用for循环处理。2 221)(nn
21、sssH例8.6 阻尼系数的影响(图)例8.8 附加极点的影响 含有附加实极点1/Tp的系统的传递函数为设其固有频率n=1,阻尼系数=0.4,设Tp=0.5,1,2,分别画出其脉冲响应函数和极点分布。解:用tf函数建立此三阶连续系统LTI模型s,再用impulse函数绘制脉冲响应曲线。用pzmap函数绘制零极点分布,不同的附加极点用for循环处理。得出结果如后:)1)(2()(222sTsssHpnnn例8.8 附加极点的影响(图)例8.9 系统的多种响应曲线 随机生成一个四阶SISO连续系统,求出它的状态方程,并分别画出它的(1)脉冲响应曲线,(2)初始条件为x0=1,-1,0,2下的零输入
22、响应曲线;(3)在正弦激励下的输出响应曲线;(4)系统的零极点分布图。将此系统离散化后,再分别画以上四种曲线。解:这个例题要用到initial和lsim函数,它们也都同时适用于连续系统和离散系统。同时这里也采用了rmodel函数来随机生成一个稳定的四阶系统参数,所以做起来比较简单。例8.9 系统的多种响应曲线(图)例8.10 带时延环节的系统分析 设系统的开环传递函数为其中,K=0.11/s2,Tm=5s,Td=1s,将系统的环路闭合起来如图8.9-1所示。分析它的极点变化情况,并求闭环系统的脉冲响应和阻尼系数。2e)1()(ssTKsWsTmd例8.10 带时延环节的系统分析 解:首先建立系
23、统在开环状态下的模型,这是一个带时延环节的二阶无静差系统,可写出:s=tf(K*Tm,1,1,0,0,Td,1)为了应用各种工具箱函数,必须把时延环节近似为多项式,设用pade以四阶多项式来近似代替时延环节,开环系统的模型成为spd=pade(s,4),然后再求闭环模型sbpd=feedback(spd,1)。模型正确建立后,即可用有关命令观察系统开闭环极点的特性并求闭环系统的脉冲响应和阻尼系数。例8.10 带时延环节的系统(图)例8.10 带时延环节的系统(续)得出的图形见图,第一个子图说明原始系统在s平面原点有一个双重极点,而在1/Tm处有一个实零点;第二个子图说明近似开环系统多了四个左半
24、平面极点和四个右半平面零点,它们基本上是处在一个半径约为N/2Td的圆上(N为pade的阶数)。这是四阶pade近似造成的。第三个子图说明系统反馈以后的极点,第四个子图为闭环系统的脉冲响应。例8.11 系统的根轨迹绘制 设系统的开环传递函数为画出系统的根轨迹,并求出临界点(即根在虚轴上)的增益。设Ts=0.5,将系统离散化后,做同样的工作。解:先建立系统的LTI连续模型s,然后用rlocus(s)函数画它的根轨迹,再键入rlocfind(s)函数,用鼠标选择根轨与虚轴的交点,即临界点。然后转成系统的LTI离散模型sd,执行同样的程序。sssssH5030121)(234例8.11 系统的根轨迹
25、绘制(图)连续系统根轨(左)和离散化后的系统根轨(右)-1-2-3-4-5-10 -8 -6 -4 -2-2 -1.5 -1 -0.5-0.5-1-1.5-2例8.11 系统的根轨迹绘制(图)要注意连续系统和离散系统根平面之间的映射关系。s平面的左半平面映射为z平面单位圆的内部。s平面上的虚轴映射为z平面单位圆边界,s平面上的原点映射为z平面上的点(1,0),而s平面上的无穷远点映射为z平面上的点(1,0)。掌握这些要点就能够比较出两种情况根轨迹的对应关系。两个k值的微小差别可能有多种原因造成。一般说来,连续系统经过采样以后再闭环,采样器的延时会使系统的稳定性下降。例8.12 带时延环节的系统
26、根轨 系统的结构图同例8.11,设开环传递函数为:其中,K=0.11/s2,Tm=5s,时延Td=1s,要求绘制其根轨迹,找到阻尼系数最大的主导共轭极点并确定此时系统的开环增益K,并绘出其脉冲响应。解:在用根轨迹解决问题的时候,通常要有一个交互的过程,因此不能指望靠一个编好的程序执行到底。而要在命令窗中,根据显示的结果,不断键入新的命令才行。2e)1()(sssTKsWdTm例8.12 带时延的系统根轨(续)首先建立系统在开环状态下的模型,它是一个带时延环节的二阶无静差系统,因为根轨迹函数rlocus不能用于带时延环节的系统,必须把时延环节近似为多项式,即用pade命令。若以六阶多项式来近似代
27、替时延环节,则开环系统的近似多项式模型成为spd=pade(s,6),然后调用根轨迹函数rlocus绘制根轨迹,为了找到阻尼系数最大的主导极点,要用rlocfind函数,用人机交互确定K后,再构成闭环系统并求其脉冲响应。例8.12 带时延的系统根轨(续)系统开环有八个极点,共有八条根轨。例8.12 带时延的系统根轨(续)主导极点附近局部放大后的根轨图8.11-2 局部放大后的根轨迹图8.11-3 K加密后的根轨迹-5-10-15ImagAxis-3 -2 -1-12-10-8 -8-4 -2-1-2-3ImagAxis例8.12 带时延的系统根轨(续)K加密后的主导根轨迹(左)及k=0.973
28、6时的根分布(右)-5-10-15-25 -20 -15 -10 -5 8.3 系统的频域分析函数 bode(sys),mag,phase,w=bode(sys)fres=evalfr(sys,f)H=freqresp(sys,w)Gm,Pm,wcg,wcp=margin(sys)margin(sys)ngrid nichols(sys)nyquist(sys)nichols网格图 由ngrid生成的nichols网格图例8.13 阻尼系数对频率响应的影响 二阶系统的传递函数为设其固有频率n=10,阻尼系数=0.1,0.3,0.7,1,分别画出其bode(波德)图。将系统在条件Ts=0.1下离
29、散化,并做同样的工作。解:先用ord2函数建立二阶连续系统LTI模型s,用c2d函数转换为离散LTI模型sd,再用bode函数绘制对数频率特性曲线。不同的 用for循环处理。注意bode(sys)函数对连续和离散系统是公用的。2221)(nnsssH例8.13 阻尼系数对频响影响(续)阻尼系数对连续(左)和离散(右)系统频率响应的影响例8.13 阻尼系数对频响影响(续)从图中可以看出,二阶连续系统阻尼系数 很小时,其幅频特性在转折频率处出现谐振峰,相频特性在这个频率附近迅速下降。随着 的增大,幅频特性的峰值减小,在 0.7后,幅频特性单调下降。相频特性的下降也趋于平缓。离散系统的频率响应在低频
30、区和连续系统基本相同,在高频区有一个最高极限频率,这个频率是采样频率的一半,这体现了采样定理。在靠近该频率处的频率特性,也和连续系统差别较大,这是由于频率泄漏的效应。例8.14 高阶系统开闭环频率响应 设系统的传递函数为画出其波德图。将系统在条件Ts=0.1下离散化,并做同样的工作。然后把两种系统分别用单位负反馈构成闭合环路,画出其波德图与开环进行比较,并判断其稳定性。解:先用zpk函数建立连续系统LTI模型s,用c2d函数转换为离散LTI模型sd,再用feedback函数得到两种系统的闭环传递函数,最后用bode函数绘制对数频率特性曲线。用damp(sys)函数判稳。2)10)(1()6(2
31、00)(sssssH例8.14 高阶系统开闭环频率响应例8.14 高阶系统开闭环频率响应 由结果可知本题中的连续系统是稳定的,但稳定裕度很小,振幅稳定裕度Gm只有1.7762dB,相位稳定裕度Pm为8.0194。而对应的离散系统则是不稳定的。注意开闭环特性的两点:第一点,在开环的幅频特性远远大于0 dB(例如+20dB以上)的低频区,闭环幅频特性为0 dB,相频特性也近似为零,说明在这个频段,反馈信号很强,这时闭环特性近似于反馈回路特性的逆;第二点,在开环的幅频特性远远小于0 dB(例如20 dB以下)的高频区,闭环与开环幅频特性和相频特性相重合,反馈几乎不起作用。例8.15 奈奎斯特曲线及判
32、稳1 设系统的传递函数为这是一个开环不稳定的系统。画出其Nyquist曲线,判别其闭环稳定性。在此系统上加一个零点(s0.5)后,再做同样的工作,并进行比较讨论。解:先用zpk函数建立系统的LTI模型s1,调用nyquist函数画出其曲线,再用feedback函数得到它的闭环传递函数,用margin函数绘制出简略的对数频率特性曲线。用求闭环脉冲响应的方法再检验判稳的正确性。对系统2做同样的工作。)6)(1)(2.1(50)(ssssH例8.15 奈奎斯特曲线及判稳2例8.15 奈奎斯特曲线及判稳38.4 系统的状态空间分析函数1 第一类函数是关于系统可观性、可控性判别的,(1)可控性矩阵 Co
33、=ctrb(sys)或Co=ctrb(A,B),(2)可观性矩阵 Ob=obsv(sys),Ob=obsv(A,C),(3)Gramian矩阵Wc=gram(sys,c)Wc=gram(sys,o)它是系统可观性、可控性的另一判据,可用于时变系统。8.4 系统的状态空间分析函数2 第二类函数是关于系统相似变换的。(1)通用相似变换函数 sysT=ss2ss(sys,T)(2)变为规范形式的函数 csys=canon(sys,type)(3)把系统分解为可控与不可控两部分的函数 Abar,Bbar,Cbar,T,k=ctrbf(A,B,C)(4)把系统分解为可观与不可观两部分的函数(5)构成最小
34、实现系统rsys的函数。等等例8.16 系统的可控可观结构分解 设系统的状态空间方程为将其作可控性与可观性结构分解。解:先作可控性结构分解,得出状态方程系数矩阵的秩rA和可控矩阵的秩rc。如果rc=rA,则系统完全可控;如果rcrA,则系统有rA-rc个状态不可控,可控阶梯型分解有效。用obscf函数可作可观性结构分解。221102011431111 xxuyx例8.17 系统的相似变换 设系统的状态空间方程为将它变换为两种规范形式。解:用MATLAB中的canon函数。数据中有e-016或e-015的乘子时,可以把它取为零。得出的标准型中只有a阵是唯一的,不同的变换方法得出的b和c可以是不同
35、的。211701020213201 xxxuy8.5 系统的状态空间法设计函数1 状态空间设计有极点配置和二次型性能指标最优设计两种方法。经典设计方法只确定主导闭环极点。状态反馈极点配置方法可确定所有的闭环极点。但它需要有效地测量所有状态变量,其可选的反馈参数不只是输出变量的增益K,而是全部状态的增益K向量。MATLAB中的函数acker和place可用以按极点配置解增益向量K。按极点配置选择增益的MATLAB命令的输入矩阵为A,B和E(期望的极点矢量),调用方式为 K=place(A,B,E)或K=acker(A,B,E)8.5 系统的状态空间法设计函数2 在控制工具箱中,用于最佳调节器设计
36、的命令有lqrd,lqry和dlqr等。测量所有状态变量是难以实现的。要从测得的部分变量获取系统的全部变量X,可在系统中配备状态重构器。最优调节器指采用状态反馈,使X尽快并尽可能准的接近于0而不过多耗能的控制系统。其中线性二次型最优控制器占重要地位。因为一方面指标的物理意义较明确;另一方面它在数学上的处理也较简单。8.5.1 线性平方调节器问题1设受控对象是线性时不变系统今要使系统在tf时的状态达到xf,且在过程中使状态变量x和控制作用u的加权平方误差积分最小,即为此要加进一个负反馈调节器 u(t)=Kx(t)若x是长度为n的列向量,u是长度为r的列向量,则K为rn的增益矩阵。问题是求K的最佳
37、值。在tf取无穷大时,称为无限长时间状态调节器问题,此时K为常数矩阵。0)0(,xxBuAxxf0TTT1 dmin 2ttJtQRNxxuuxu8.5.1 线性平方调节器问题2 若u的权重矩阵N=0,经过推导,这个命题最后归结为求解一个代数黎卡提方程PA+ATP+PBR1BTBQ=0其中未知数只有方差阵P。求得P阵以后,可求得KK=Q1BTP解代数黎卡提方程的专用函数are调用方式 X=are(A,B,C)可以不先求P而直接求K。解平方估计器的函数lqr K,P,E=lqr(A,B,Q,R,N)8.5.2 线性平方估计器问题1 调节器是控制问题,估计器则是观测问题。其目标是在输入干扰和测量干
38、扰下最准确地估计出系统的状态。因此就不能用确定性模型,。在不考虑控制问题时,系统的方程可简化,表为 同时要加一个负反馈 问题是要选择适当的反馈增益L值,使x的测量估计值与实际值x的误差均方值为最小。vCxzGwAxx limminTTPEx(t)-x(t)x(t)-x(t)x=Ax+L(z(t)-Cx(t)8.5.2 线性平方估计器问题2 经过比较冗长的推导,可以证明,这个问题也归结为解下述黎卡提方程AP+PATPCTRn1CP+GQnGT=0在这个方程中,只有P是未知矩阵,因而是可解的。求出P后,就可求出最佳的增益L 可以看出,它与最小平方误差控制器在数学上有对偶性。也可调用解黎卡提方程的函
39、数 X=X=are(A(A,B B,C)C)或调用解线性平方估计器的kalman函数 kestkest,L L,P=P=kalman(sys(sys,QnQn,RnRn,Nn)Nn)例8.18 全状态反馈极点配置设计 设系统的状态方程为要求利用反馈控制u=Kx,将其闭环极点配置成p1,2=-2j4及p3=10。求增益矩阵K。解:极点配置设计的一般步骤如下。(1)确认系统的可控性,用rank(ctrb(A,B)=n。(2)求开环特征多项式的系数向量=poly(A)。(3)求将系统变换为标准型的变换矩阵。T=ctrb(A,B)*L 010000101561 xxu例8.18 全状态反馈极点配置设计
40、2(4)求预期闭环特征多项式的系数=poly(p)。(5)状态反馈增益矩阵K=dab*T1其中dab=(n1n1),(nn),(22)将整个过程组成程序包,它的输入变量应为A,B和p,而待求的输出则为状态反馈增益矩阵K。函数place和acker就集成了这个过程,不过具体的算法不同。结果为 K=79.0000 43.0000 8.0000例8.19 连续系统状态观测器设计1 设系统的状态方程为 要求设计全阶状态观测器,使它的闭环极点配置成p1,2=p3=-5。求状态观测增益矩阵L。解:极点配置设计状态观测器是控制器的对偶,其设计步骤相仿,只是把ctrb换成obsb,或者把A换成A,B换成C。0
41、1000010611611 0 0 xxuyx例8.19 连续系统状态观测器设计2 本题采用直接调用程序包place和acker的方法,它的输入变量应为A,C和p,而待求的输出则为状态观测增益矩阵L。此时函数place和acker的输入变元为A,C 和p。即L=place(A,C,p)或或L=acker(A,C,p)。两个程序运行结果相同,均为 L=3.0000;7.0000;-1.0000例8.20 离散系统状态观测器设计 设离散系统的状态方程为 要设计全阶状态观测器,使它的闭环极点配置成解:极点配置设计离散系统状态观测器的步骤和调用函数与连续系统相仿。此时函数place和acker的输入变
42、元为Ad,Cd和pd。即Ld=place(Ad,Cd,pd)或 Ld=arker(Ad,Cd,pd)(1)()()()()dddkkkkkxA xB uyC x1,230.50.7j,0.1pp 例8.21 二次型最优调节器的设计 设系统的状态方程为性能指标为求黎卡提方程的正定矩阵解P,最佳反馈增益矩阵K和矩阵A-BK的特征值。解:这可以用控制系统工具箱中lqr函数求解。K,P,E=lqr(A,B,Q,R,N)01000010352791 xxu01 0 0(0 1 0)d0 0 1txx+u uJ例8.22 加权对最优调节器的影响1 设系统的状态方程为 性能指标为(其中q与r为标量)试讨论q
43、及r取值不同对最佳反馈增益矩阵K和阶跃响应的影响。0100001014911 0 0u xx,yx 0d221qx+rutJ例8.22 加权对最优调节器的影响2 解:这仍然是二次型最优调节器的典型问题,可以用控制系统工具箱中lqr函数求解。K,P,E=lqr(A,B,Q,R)按本题的要求,应该使用户能随意输入权重参数q和R,因此,程序中应放入两个input语句。由于要比较它们的阶跃响应,故用step语句。对于LTI系统,只要左端变量设置正确,用格式y,t,x=step(sys)可以求出阶跃输入下的系统输出y,以及全部系统状态x随t变化的序列数据。例8.22 加权对最优调节器的影响3 不同加权反馈对最优系统过渡过程的影响-例8.22 加权对最优调节器的影响4 在q=100,R=1的情况下,系统不在乎u的大小,它力求以减小x中的第一个分量x1来减小J,此时,曲线中的u1值就相当大(注意坐标刻度)。同时,过渡过程的时间比原系统大大缩短。由约20s缩短到约5s。在q=10,R=10时,u的大小对J的影响大大增加,最优反馈必须避免太大的控制作用。反映在输出曲线中,u1几乎减小了50倍,同时,过渡过程的时间加长了。特别是稳态误差太大了,本来应该为1,实际输出y约为0.3,这通常是不能接受的。所以,尽管最优控制的理论很严密,但权重系数的选择还是人为的,与工程实际经验有关。