《基于MATLAB的控制系统数学建模.ppt》由会员分享,可在线阅读,更多相关《基于MATLAB的控制系统数学建模.ppt(85页珍藏版)》请在三一办公上搜索。
1、MATLAB与控制系统仿真实践,第1章基于MATLAB的控制系统数学建模,本章主要内容,原理要点1.1 控制系统的传递函数模型 1.1.1 系统传递函数模型简述1.1.2 传递函数的MATLAB相关函数1.1.3 建立传递函数模型实例1.2 控制系统的零极点函数模型1.2.1 零极点函数模型简述1.2.2 零极点函数的MATLAB相关函数,1.2.3 建立零极点函数模型实例1.3 控制系统的状态空间函数模型1.3.1 状态空间函数模型简述1.3.2 状态空间函数的MATLAB相关函数1.3.3 建立状态空间函数模型实例1.4 系统模型之间的转换1.4.1 系统模型转换的MATLAB相关函数1.
2、4.2 系统模型之间转换实例,1.5 方框图模型的连接化简1.5.1 方框图模型的连接化简简述1.5.2 系统模型连接化简的MATLAB相关函数1.5.3 系统模型连接化简实例,1.1控制系统的传递函数模型,系统传递函数模型简述传递函数的MATLAB相关函数 1.1.3 建立传递函数模型实例,系统传递函数模型简述,连续系统一般由微分方程来描述。而线性系统又是以线性常微分方程来描述的。设系统的输入信号为u(t),且输出信号为y(t),则系统的微分方程可写成:,在零初始条件下,经Laplace变换后,线性系统的传递函数模型:MATLAB中可以方便地由分子和分母系数构成的两个向量唯一地确定出来,这两
3、个向量分别用num(numerator,分子)和den(denominator,分母)表示。,传递函数的MATLAB相关函数,用不同向量分别表示分子和分母多项式,就可以利用控制系统工具箱的函数表示传递函数变量G:tf函数的具体用法见表1.1。,表1.1 tf函数的具体用法,建立传递函数模型实例,例1:12 s+15-s3+16 s2+64 s+192输入到MATLAB工作空间中。,方式1 num=12 15;den=1 16 64 192;G=tf(num,den),方式2:s=tf(s);%先定义Laplace算子%直接给出系统传递函数表达式 G=(12*s+15)/(s3+16*s2+64
4、*s+192)Transfer function:12 s+15-s3+16 s2+64 s+192分析:可以采用不同方法得到系统传递函数。第一种方式需先求出分子分母多项式,再将其作为tf函数的参数使用。第二种方式需先定义Laplace算子,将传递函数直接赋值给对象G。,例2:已知传递函数模型 将其输入到MATLAB工作空间中。方式1:num=conv(10,2,1);%计算分子多项式 den=conv(1 0 0,1 7 13);%计算分母多项式 G=tf(num,den)%求系统传递函数,Transfer function:20 s+10-s4+7 s3+13 s2方式2:s=tf(s)%
5、定义Laplace算子 Transfer function:s G=10*(2*s+1)/s2/(s2+7*s+13)%直接给出系统传递函 数表达式 Transfer function:20 s+10-s4+7 s3+13 s2,分析:当传递函数不是以标准形式给出时,在应用sys=tf(num,den)前,需将传递函数分子分母转化成多项式。为此可以手工将多项式展开或借助conv函数完成多项式相乘后,再使用tf函数。第2种方式对多项式形式不做要求。这样在得到Laplace算子后,可以直接按照原格式输入传递函数,从而得到系统函数的MATLAB表示。可见第2种方式在处理非标准格式的传递函数时更方便。
6、,例3:设置传递函数模型 时间延迟常数为 e-4s,即系统模型在已有MATLAB模型基础上,设置时间延迟常数。接例2所得系统G。方式1:set(G,ioDelay,4)%为传递函数设置时间延迟 G%显示传递函数,Transfer function:20 s+10exp(-4*s)*-s4+7 s3+13 s2方式2:G.ioDelay=4%设置G的延时 Transfer function:20 s+10exp(-4*s)*-s4+7 s3+13 s2分析:在得到系统的传递函数之后,可以进 一步对其参数进行设置。可通过set函 数设定属性值,也可直接给属性赋值。,例4:已知系统传递函数模型为,提
7、取系统的分子和分母多项式。s=tf(s);%定义Laplace算子 G=(s2+2*s+3)/(s3+3*s+4)/(s+2)%直接给出系统传递 函数表达式 Transfer function:s2+2 s+3-s4+2 s3+3 s2+10 s+8,num1,den1=tfdata(G,v)%得到系统的分子和分母多项 式num1=0 0 1 2 3den1=1 2 3 10 8 get(G)%查看所得系统的所有参数%参数的具体含义请参阅帮助文档中tf的相关内容 num:0 0 1 2 3 den:1 2 3 10 8 ioDelay:0 Variable:s Ts:0 InputDelay:
8、0 OutputDelay:0,InputName:OutputName:InputGroup:1x1 struct OutputGroup:1x1 struct Name:Notes:UserData:num2=G.num1,1%取出G中具体单元值 num2=0 0 1 2 3 den2=G.den1,1%取出G中具体单元值 den2=1 2 3 10 8 G.num%num是以单元数组表示的,这种方式只能看到其结构,ans=1x5 double分析:可以利用tfdata函数取出传递函数的分子分母向量,注意参数v表示以行向量的形式表示。也可通过操作传递函数对象G的参数来获取分子分母向量,此时
9、要注意分子分母在G结构体中是以单元数组的形式存在的,需以操作单元数组的方式获取。,1.2控制系统的零极点函数模型,零极点函数模型简述零极点函数的MATLAB相关函数建立零极点函数模型实例,零极点函数模型简述,零极点模型实际上是传递函数模型的另一 种表现形式,其原理是分别对原系统传递 函数的分子、分母进行分解因式处理,以 获得系统的零点和极点的表示形式。,K为系统增益,zi为零点,pj为极点。显然,对实系数的传递函数模型来说,系统的零极点或者为实数,或者以共轭复数的形式出现。离散系统的传递函数也可表示为零极点模式:,零极点函数的MATLAB相关函数,在MATLAB中零极点增益模型用z,p,K矢量
10、组表示。即:然后调用zpk()函数就可以输入这个零极点模型了。zpk函数的具体用法见表1.2。,表1.2 ZPK函数的具体用法,与零极点增益模型相关的函数见表1.3。,建立零极点函数模型实例,例5:将零极点模型输入MATLAB工作空间 方式1:z1=-5;-5;p1=-1;-2;-2-2*j;-2+2*j;k=4;G1=zpk(z1,p1,k),Zero/pole/gain:4(s+5)2-(s+1)(s+2)(s2+4s+8)方式2:s=zpk(s);%高版本MatLab中符号运算不支持复数零极点%下面的形式在高版本MatLab中不能通过 G2=4*(s+5)2/(s+1)/(s+2)/(s
11、+2+2*j)/(s+2-2*j)Zero/pole/gain:4(s+5)2-(s+1)(s+2)(s2+4s+8),分析:和传递函数的表示一样,可以用不同方法得到系统零极点模型。一种是直接将零极点向量和增益值赋给zpk函数,一种是先定义零极点形式的Laplace算子,再输入零极点模型。另外在低版本MATLAB的零极点模型显示中,如果存在复数零极点,则用二阶多项式来表示这两个因式,而不直接展开成一阶复数因式。例中第二种方式求零极点传递函数时的警告提示了这一点。,例6:已知一系统的传递函数 求取其零极点向量和增益值,并得到系统的零极点增益模型。Gtf=tf(7 2 8,4 12 4 2)%得到
12、系统传递函数 Transfer function:7 s2+2 s+8-4 s3+12 s2+4 s+2 z,p,k=zpkdata(Gtf,v)%得到系统零极点向量和增益值,z=-0.1429+1.0595i-0.1429-1.0595ip=-2.6980-0.1510+0.4031i-0.1510-0.4031ik=1.7500 Gzpk=zpk(z,p,k)%求系统零极点增益模型Zero/pole/gain:1.75(s2+0.2857s+1.143)-(s+2.698)(s2+0.302s+0.1853),p1,z1=pzmap(Gtf)%求取系统零极点p1=-2.6980-0.151
13、0+0.4031i-0.1510-0.4031iz1=-0.1429+1.0595i-0.1429-1.0595i 分析:系统零极点可以由不同方式求取。zpkdata函数需指定参数v,否则得到的是单元数组形式的零极点。pzmap函数带返回值使用时只返回系统的零极点向量,而不绘制零极点分布图。,例7:已知一系统的传递函数 求其零极点及增益,并绘制系统零极点分布图。num=1 4 11;den=conv(1 6 3,1 2 0);G=tf(num,den)%得到系统传递函数 Transfer function:s2+4 s+11-s4+8 s3+15 s2+6 s,z,p,k=zpkdata(G,
14、v)%得到系统零极点向量和增益值z=-2.0000+2.6458i-2.0000-2.6458ip=0-5.4495-2.0000-0.5505k=1 pzmap(G)%得到系统零极点分布图例7得到的系统零极点分布图见图1.1。,分析:由MATLAB既可以求得系统的零极点向量,也可以由图形的方式显示其分布状态。pzmap函数不带返回值使用时,显示系统零极点分布图。当在图上点击各点时,将显示该点的各属性及其值。,图1.1 例7系统零极点分布图,1.3 控制系统的状态空间函数模型,本节主要内容,状态空间函数模型简述状态空间函数的MATLAB相关函数建立状态空间函数模型实例,状态空间函数模型简述,系
15、统的状态空间模型。这种方式是基于系统的内部的状态变量的,所以又往往称为系统的内部描述方法。和传递函数模型不同,状态方程可以描述更广的一类控制系统模型,包括非线性系统。具有n个状态、m个输入和p个输出的线性时不变系统,用矩阵符号表示的状态空间模型是:,状态空间函数的MATLAB相关函数,建立状态空间函数模型实例,例8:将以下系统的状态方程模型输入 MATLAB工作空间中。A=6 5 4;1 0 0;0 1 0;B=1 0 0;C=0 6 7;D=0;G=ss(A,B,C,D)%输入并显示系统状态空间模型,a=x1 x2 x3 x1 6 5 4 x2 1 0 0 x3 0 1 0 b=u1 x1
16、1 x2 0 x3 0 c=x1 x2 x3 y1 0 6 7d=u1 y1 0,例9:已知系统求系统参数。A=0 1;-3-4;B=0 1;C=5 2;D=1;Gss=ss(A,B,C,D)%得到系统状态空间模型,a=x1 x2 x1 0 1 x2-3-4b=u1 x1 0 x2 1c=x1 x2 y1 5 2d=u1 y1 1,aa,bb,cc,dd=ssdata(Gss)%得到系统模型参数aa=0 1-3-4bb=0 1cc=5 2dd=1,get(Gss)%得到对象Gss所有参数列表 a:2x2 double b:2x1 double c:5 2 d:1 e:StateName:2x1
17、 cell InternalDelay:0 x1 double Ts:0 InputDelay:0 OutputDelay:0 InputName:OutputName:InputGroup:1x1 struct OutputGroup:1x1 struct Name:Notes:UserData:,Gss.a%求取一个系统模型参数ans=0 1-3-4分析:系统状态空间模型参数可由不同方式 得到。与tf模型和zpk模型相比不同的 一点是,状态空间模型参数A,B,C,D是矩阵形式,可直接由Gss.a的 方式,此时无需按照单元数组格式获 得其参数。,1.4系统模型之间的转换,本节主要内容,系统模
18、型转换的MATLAB相关函数系统模型之间转换实例,系统模型转换的MATLAB相关函数,系统的线性时不变(LTI)模型有传递函数(tf)模型、零极点增益(zpk)模型和状态空间(ss)模型,它们之间可以相互转换。转换形式如图1.2所示。,模型之间的转换函数可分成2类:第一类是把其它类型的模型转换为函数表示的模型自身见表1.6。,表1.6第一类函数(把其它类型的模型转换为函数表示的模型自身),表1.7 第二类函数(将本类型传递函数参数转换为其它类型传递函数参数),系统模型之间转换实例,例10:已知系统传递函数模型 试求其零极点模型及状态空间模型。num=5;den=conv(1 2,1 2 1);
19、Gtf=tf(num,den)%得到系统多项式传递函数表示,Transfer function:5-s3+4 s2+5 s+2 Gzpk=zpk(Gtf)%将多项式传递函数模型转换为zpk模型 Zero/pole/gain:5-(s+2)(s+1)2 Gss=ss(Gtf)%将多项式传递函数模型转换为ss模型,a=x1 x2 x3 x1-4-2.5-1 x2 2 0 0 x3 0 1 0 b=u1 x1 2 x2 0 x3 0 c=x1 x2 x3 y1 0 0 1.25d=u1 y1 0Continuous-time model.,分析:采用第一类函数进行传递函数类型的 转换,可直接得到转换
20、后的函数表示。例11:已知一系统的零极点模型 求其tf模型及状态空间模型。z=-2-4;p=-1-3;k=5;Gzpk=zpk(z,p,k)%得到系统zpk模型,Zero/pole/gain:5(s+2)(s+4)-(s+1)(s+3)a,b,c,d=zp2ss(z,p,k)%由系统zpk模型转换得到ss模型参数a=-4.0000-1.7321 1.7321 0b=1 0c=10.0000 14.4338d=5,num,den=zp2tf(z,p,k)%得到tf模型分子分母参数num=5 30 40den=1 4 3 num,den=zp2tf(Gzpk)%错误调用,注意应传递参数z,p,k?
21、Input argument p is undefined.Error in=zp2tf at 24den=real(poly(p(:);Gtf=zp2tf(z,p,k)%错误调用,注意应返回分子分母两个参数Gtf=5 30 40,分析:采取第二类函数进行传递函数类型,只得到转换后的系统参数。这一点与第 一类函数调用有很大差别。此外,在第二类函数的调用中要特别注意传入参数和返回参数的使用,否则会报错或得到错误结果。例12:将双输入单输出的系统模型转换为多 项式传递函数模型。,a=0 1;-2-3;b=1 0;0 1;c=1 0;d=0 0;num,den=ss2tf(a,b,c,d,1)%得到
22、第1路输入对应的传递函数参数num=0 1.0000 3.0000den=1 3 2 num2,den2=ss2tf(a,b,c,d,2)%得到第2路输入对应的传递函数参数num2=0 0.0000 1.0000,den2=1 3 2 Gss=ss(a,b,c,d);Gtf=tf(Gss)%直接得到各路传递函数 Transfer function from input 1 to output:s+3-s2+3 s+2 Transfer function from input 2 to output:1-s2+3 s+2,分析:系统传递函数矩阵为 对以上双输入单输出的系统模型,在使用ss2tf函
23、数时需要使用参数iu来指定输入输出对应关系。从例题结果知,对于输入1和输入2(考虑输入1时,设输入2为0。反之亦然),传递函数分别为:,例13:系统传递函数为将其转换为状态空间模型。,num=1 2;den=1 1 2;a,b,c,d=tf2ss(num,den)%转换方式1a=-1-2 1 0b=1 0c=1 2d=0,Gss=ss(tf(num,den)%转换方式2 a=x1 x2 x1-1-2 x2 1 0 b=u1 x1 2 x2 0 c=x1 x2 y1 0.5 1 d=u1 y1 0,Continuous-time model.分析:使用不同方法得到系统的不同状态空 间模型。这也表
24、明具有同一传递函数的系统具有不同的状态空间模型。事实上,状态空间模型是无穷多的。,1.5方框图模型的连接化简,本节主要内容,方框图模型的连接化简简述系统模型连接化简的MATLAB相关 函数系统模型连接化简实例,方框图模型的连接化简简述,在实际应用中,整个控制系统由受控对象和控制装置组成的,有多个环节。由多个单一的模型组合而成。每个单一的模型都可以用一组微分方程或传递函数来描述。基于模型不同的连接和互连信息,合成后的模型有不同的结果。模型间连接主要有串联连接、并联连接、串并联连接和反馈连接等。对系统的不同连接情况,我们可以进行模型的化简。,方框图模型的连接化简简述串联连接的化简,图1.3是一般情
25、况下模型串联连接的结构框图。,1.5.1 方框图模型的连接化简简述并联连接的化简,图1.4是一般情况下模型并联连接的结构框图。单输入单输出(SISO)系统G1(s)和G2(s)并联连接时,合成系统 G:G(s)G1(s)+G2(s)图1.4 并联连接结构框图,1.5.1 方框图模型的连接化简简述反馈连接的化简,(a)正反馈连接结构框图,(b)负反馈连接结构构图,对于如图1.5的正反馈连接 负反馈连接,表1.8 系统模型连接化简函数,MATLAB提供了系统模型连接化简的不同函数,其中主要函数及功能说明见表1.8。,系统模型连接化简实例,例13:已知系统 求G1(s)和G2(s)分别进行串联、并联
26、和反馈连接后的系统模型。,clear num1=1;den1=1 5 23;num2=1;den2=1 4;G1=tf(num1,den1);%得到G1 G2=tf(num2,den2);%得到G2 Gs=G2*G1%进行串联,串联方式1,Transfer function:1-s3+9 s2+43 s+92,Gs1=series(G1,G2)%进行串联,串联方式2,结果与串 联方式1相同 Transfer function:1-s3+9 s2+43 s+92 Gp=G1+G2%进行并联,方式1 Transfer function:s2+6 s+27-s3+9 s2+43 s+92 Gp1=p
27、arallel(G1,G2)%进行并联,并联方式2,结果与并 联方式1相同,Transfer function:s2+6 s+27-s3+9 s2+43 s+92 Gf=feedback(G1,G2)%进行负反馈化简,反馈方式1 Transfer function:s+4-s3+9 s2+43 s+93 Gf1=G1/(1+G1*G2)%进行负反馈化简,反馈方式 2,模 型阶次高于实际阶次Transfer function:s3+9 s2+43 s+92-s5+14 s4+111 s3+515 s2+1454 s+2139,Gf2=minreal(Gf1)%获得系统的最小实现模型,结果与反馈方
28、式1相同Transfer function:s+4-s3+9 s2+43 s+93分析:1.系统串联、并联和反馈连接化简可由不同方式完成。2.注意在串联实现方面,如果传递函数是状态空间形式,结果显然是不相同的。而对于非SISO系统,不一定存在,即使存在也极有可能得不出正确结果来。,3.对于反馈连接,虽然运算式与feedback函数等效,但得到的系统阶次可能高于实际系统阶次,需要通过minreal函数进一步求其最小实现。此外,较早版本的教材中有很多用cloop函数来求系统反馈连接,这一函数在新版本的MATLAB中会提示已过时,并建议用feedback代替之。(CLOOP is obsolete,
29、use FEEDBACK instead.),例14:化简如图1.7的系统,求系统的传递函数。图1.7 例14系统框图,clear G1=tf(1,1 1);G2=tf(1,3 4 1);Gp=G1+G2;%系统并联部分的化简 G3=tf(1,1 0);Gs=series(G3,Gp);%系统串联部分的化简 Gc=Gs/(1+Gs)%系统负反馈连接 Transfer function:9 s6+36 s5+56 s4+42 s3+15 s2+2 s-9 s8+42 s7+88 s6+112 s5+95 s4+52 s3+16 s2+2 s,Gc1=minreal(Gc)%得到系统的最小实现 Transfer function:s+0.6667-s3+1.333 s2+1.333 s+0.6667分析:系统中往往同时含有不同的连接方式。在化简时需正确使用不同的MATLAB化简函数。如果系统连接更复杂的话,可能需要首先进行节点的前移或后移,或者分支点的前移或后移,然后再进行系统化简。,