MATLAB自动控制论文资料.doc

上传人:sccc 文档编号:4970568 上传时间:2023-05-26 格式:DOC 页数:27 大小:254.03KB
返回 下载 相关 举报
MATLAB自动控制论文资料.doc_第1页
第1页 / 共27页
MATLAB自动控制论文资料.doc_第2页
第2页 / 共27页
MATLAB自动控制论文资料.doc_第3页
第3页 / 共27页
MATLAB自动控制论文资料.doc_第4页
第4页 / 共27页
MATLAB自动控制论文资料.doc_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《MATLAB自动控制论文资料.doc》由会员分享,可在线阅读,更多相关《MATLAB自动控制论文资料.doc(27页珍藏版)》请在三一办公上搜索。

1、作者:王冠博专业:自动化学校:大连海洋大学1.MATLAB简介概述MATLAB是由美国Mathworks公司推出的产品,1984年,Cleve Moler和John Little成立了Mathworks公司,在前期编写的求解线性方程的Fortran程序集的基础上,编写了接口程序,经过不断完善形成了MATLAB初始版本,1993年推出4.0版本,1997年推出5.0版本,2002年推出6.5版本。MATLAB是一种集数值计算、符号运算、可视化建模、仿真控制与图形、图像处理多功能于一体的软件,是科技工作者、工程技术人员常用的工具。MATLAB辅以强大的工具箱,可应用于控制系统、信息处理、数据分析、

2、通信系统、数理科学、生物信息、图形图像处理等若干领域。MATLAB系统的窗口以及菜单简介这里我们不介绍系统的安装,只介绍一下系统的窗口和菜单。MATLAB系统启动后,会自动展开主界面,如图,如果启动后不出现这种形式的界面,可以在主菜单View下拉菜单找到Defaut菜单项,单击后,恢复默认主界面窗口。主界面有三个子窗口,其中右边的是Command Window(命令窗口),其作用是供系统程序执行结果输出以及用户与系统交互简单指令;左上子窗口有两个选项卡:Workspace是工作间,用于显示工作间的文件名称,另一个选项卡是显示文件路径;左下是显示系统运行时的命令信息,即Command Histo

3、ry窗口所显示的内容。除此之外,还有重要的M文件编程窗口,在主菜单File下的子菜单New项,单击弹出。M文件的种类及格式MATLAB的文件统称M文件,分为文本文件、函数文件。文本文件程序是编写完成一项特定任务的程序代码;函数文件是为多次执行某一任务而编制的函数子程序,可以重复调用。文本文件程序编好后保存文件名filename,系统自动添加”.m”作为扩展名,保存后可以使用编程窗口中的Debug下来菜单中的Run命令执行该文件,执行结果在Command Window中显示出来。函数文件第一行必须以function开头,保存文件名必须是函数名,系统自动添加”.m”作为其扩展名。下面是一个函数文件

4、的例子。function y=fun(x)y=x2+sin(x)保存文件名”fun”以后系统自动添加”.m”并显示”fun.m”。上面function是关键字,y是输出函数,fun是文件名,x为输入函数(变量),利用函数文件定义的函数和系统的库函数一样可以随时调用。MATALB的函数名可以是由字母、数字、下划线构成的字符串。其中,必须以字母开头,函数名不能是系统的关键字。帮助系统MATLAB提供了详细的帮助系统,通过主界面中Help项的下拉菜单中的Full Product FamilyHelp菜单项,可以得到完整的帮助系统信息;另外也可以在Command Window下键入:help+所需帮助

5、的主题,回车后系统会在Command Window中弹出相应主题的帮助信息。2.MATLAB在控制系统中的应用用MATLAB建立传递函数模型有理函数模型线性系统的传递函数模型可一般地表示为:将系统的分子和分母多项式的系数按降幂的方式以向量的形式输入给两个变量和,就可以轻易地将传递函数模型输入到MATLAB环境中。命令格式为:;在MATLAB控制系统工具箱中,定义了tf() 函数,它可由传递函数分子分母给出的变量构造出单个的传递函数对象。从而使得系统模型的输入和处理更加方便。该函数的调用格式为:Gtf(num,den)例1一个简单的传递函数模型:可以由下面的命令输入到MATLAB工作空间中去。

6、num=1,5;den=1,2,3,4,5;G=tf(num,den)运行结果:Transfer function: s + 5-s4 + 2 s3 + 3 s2 + 4 s + 5这时对象G可以用来描述给定的传递函数模型,作为其它函数调用的变量。例2一个稍微复杂一些的传递函数模型:可以由下面的命令输入到MATLAB工作空间中去。 num=6*1,5;den=conv(conv(1,3,1,1,3,1),1,6);tf(num,den)运行结果:Transfer function: 6 s + 30-s5 + 12 s4 + 47 s3 + 72 s2 + 37 s + 6其中conv()函数

7、(标准的MATLAB函数)用来计算两个向量的乘积,多项式乘法当然也可以用这个函数来计算。该函数允许任意地多层嵌套,从而表示复杂的计算。零极点模型线性系统的传递函数还可以写成极点的形式:将系统增益、零点和极点以向量的形式输入给三个变量、Z和P,就可以将系统的零极点模型输入到MATLAB工作空间中,命令格式为:在MATLAB控制工具箱中,定义了zpk()函数,由它可通过以上三个MATLAB变量构造出零极点对象,用于简单地表述零极点模型。该函数的调用格式为:G=zpk(Z,P,KGain)例3某系统的零极点模型为:可以由下面的命令输入到MATLAB工作空间中去。 KGain=6;z=-1.9294;

8、-0.0353+0.9287j;-0.0353-0.9287j;p=-0.9567+1.2272j;-0.9567-1.2272j;0.0433+0.6412j;0.0433-0.6412j;G=zpk(z,p,KGain)运行结果:Zero/pole/gain: 6 (s+1.929) (s2 + 0.0706s + 0.8637)-(s2 - 0.0866s + 0.413) (s2 + 1.913s + 2.421)注意:对于单变量系统,其零极点均是用列向量来表示的,故Z、P向量中各项均用分号(;)隔开。反馈系统结构图模型设反馈系统结构图如图所示:控制系统工具箱中提供了feedback(

9、)函数,用来求取反馈连接下总的系统模型,该函数调用格式如下:G=feedback(G1,G2,sign);其中变量sign用来表示正反馈或负反馈结构,若sign=-1表示负反馈系统的模型,若省略sign变量,则仍将表示负反馈结构。G1和G2分别表示前向模型和反馈模型的LTI(线性时不变)对象。例4若反馈系统中的两个传递函数分别为:,则反馈系统的传递函数可由下列的MATLAB命令得出。 G1=tf(1,1,2,1);G2=tf(1,1,1);G=feedback(G1,G2)运行结果:Transfer function: s + 1-s3 + 3 s2 + 3 s + 2若采用正反馈连接结构输入

10、命令: G1=tf(1,1,2,1);G2=tf(1,1,1);G=feedback(G1,G2,1)则得出如下结果:Transfer function: s + 1-s3 + 3 s2 + 3 s例5若反馈系统为更复杂的结构如图所示。其中,则闭环系统的传递函数可以由下面的MATLAB命令得出: G1=tf(1,7,24,24,1,10,35,50,24);G2=tf(10,5,1,0);H=tf(1,0.01,1);G_a=feedback(G1*G2,H)得到结果:Transfer function: 0.1 s5 + 10.75 s4 + 77.75 s3 + 278.6 s2 + 36

11、1.2 s + 120-0.01 s6 + 1.1 s5 + 20.35 s4 + 110.5 s3 + 325.2 s2 + 384 s + 120有理分式模型与零极点模型的转换有了传递函数的有理分式模型之后,求取零极点模型就不是一件困难的事情了。在控制系统工具箱中,可以由zpk()函数立即将给定的LTI对象G转换成等效的零极点对象G1。该函数的调用格式为:G1=zpk(G)例6给定系统传递函数为:对应的零极点格式可由下面的命令得出 num=6.8, 61.2, 95.2;den=1, 7.5, 22, 19.5, 0;G=tf(num,den);G1=zpk(G)显示结果:Zero/pol

12、e/gain: 6.8 (s+7) (s+2)-s (s+1.5) (s2 + 6s + 13)可见,在系统的零极点模型中若出现复数值,则在显示时将以二阶因子的形式表示相应的共轭复数对。同样,对于给定的零极点模型,也可以直接由MATLAB语句立即得出等效传递函数模型。调用格式为:G1=tf(G)例7给定零极点模型:可以用下面的MATLAB命令立即得出其等效的传递函数模型。输入程序的过程中要注意大小写。 Z=-2,-7;P=0,-3-2j,-3+2j,-1.5;K=6.8;G=zpk(Z,P,K);G1=tf(G)结果显示:Transfer function: 6.8 s2 + 61.2 s +

13、 95.2-s4 + 7.5 s3 + 22 s2 + 19.5 s利用MATLAB进行时域分析线性系统稳定性分析线性系统稳定的充要条件是系统的特征根均位于S平面的左半部分。系统的零极点模型可以直接被用来判断系统的稳定性。另外,MATLAB语言中提供了有关多项式的操作函数,也可以用于系统的分析和计算。a.直接求特征多项式的根设p为特征多项式的系数向量,则MATLAB函数roots()可以直接求出方程p=0在复数范围内的解v,该函数的调用格式为:v=roots(p)例8已知系统的特征多项式为:特征方程的解可由下面的MATLAB命令得出。 p=1,0,3,2,1,1;v=roots(p)结果显示:

14、v = 0.3202 + 1.7042i 0.3202 - 1.7042i -0.7209 0.0402 + 0.6780i 0.0402 - 0.6780i利用多项式求根函数roots(),可以很方便的求出系统的零点和极点,然后根据零极点分析系统稳定性和其它性能。b.由根创建多项式如果已知多项式的因式分解式或特征根,可由MATLAB函数poly()直接得出特征多项式系数向量,其调用格式为:p=poly(v)如上例中:v=0.3202+1.7042i;0.3202-1.7042i; -0.7209;0.0402+0.6780i; 0.0402-0.6780i; p=poly(v)结果显示:p

15、=1.0000 -0.0000 3.0000 2.0000 1.0000 1.0000由此可见,函数roots()与函数poly()是互为逆运算的。c.多项式求值在MATLAB 中通过函数polyval()可以求得多项式在给定点的值,该函数的调用格式为:polyval(p,v)对于上例中的p值,求取多项式在x点的值,可输入如下命令: p=1,0,3,2,1,1;x=1polyval(p,x)结果显示:x = 1ans = 8d.部分分式展开考虑下列传递函数:式中,但是和中某些量可能为零。MATLAB函数可将展开成部分分式,直接求出展开式中的留数、极点和余项。该函数的调用格式为:则的部分分式展开

16、由下式给出:式中, ,为极点,, 为各极点的留数,为余项。例9设传递函数为:该传递函数的部分分式展开由以下命令获得: num=2,5,3,6; den=1,6,11,6;r,p,k=residue(num,den)命令窗口中显示如下结果:r = -6.0000 -4.0000 3.0000p = -3.0000 -2.0000 -1.0000k = 2由此可得出部分分式展开式:该函数也可以逆向调用,把部分分式展开转变回多项式之比的形式,命令格式为:num,den=residue(r,p,k)对上例有: num,den=residue(r,p,k)结果显示num=2.0000 5.0000 3.

17、0000 6.0000den=1.0000 6.0000 11.0000 6.0000应当指出,如果p(j)=p(j+1)=p(j+m-1),则极点p(j)是一个m重极点。在这种情况下,部分分式展开式将包括下列诸项:例10设传递函数为:则部分分式展开由以下命令获得: v=-1,-1,-1num=0,1,2,3;den=poly(v);r,p,k=residue(num,den)结果显示:v = -1 -1 -1r = 1.0000 0.0000 2.0000p = -1.0000 -1.0000 -1.0000k = 其中由poly()命令将分母化为标准降幂排列多项式系数向量den, k=为空

18、矩阵。由上可得展开式为:e.由传递函数求零点和极点在MATLAB控制系统工具箱中,给出了由传递函数对象G求出系统零点和极点的函数,其调用格式分别为:Z=tzero(G)P=G.P1注意:式19中要求的G必须是零极点模型对象,且出现了矩阵的点运算“.”和大括号表示的矩阵元素.例11已知传递函数为:输入如下命令: num=6.8,61.2,95.2;den=1,7.5,22,19.5,0;G=tf(num,den);G1=zpk(G);Z=tzero(G)P=G1.P1结果显示:Z = -7.0000 -2.0000P = 0 -3.0000 + 2.0000i -3.0000 - 2.0000i

19、 -1.5000 f.零极点分布图在MATLAB中,可利用pzmap()函数绘制连续系统的零、极点图,从而分析系统的稳定性,该函数调用格式为:pzmap(num,den)例12给定传递函数:利用下列命令可自动打开一个图形窗口,显示该系统的零、极点分布图. num=3,2,5,4,6;den=1,3,4,2,7,2;pzmap(num,den)title(Pole-Zero Map)系统动态特性分析a.时域响应解析算法-部分分式展开法用拉氏变换法求系统的单位阶跃响应,可直接得出输出c(t)随时间t变化的规律,对于高阶系统,输出的拉氏变换象函数为:对函数c(s)进行部分分式展开,我们可以用num,

20、den,0来表示c(s)的分子和分母。例13给定系统的传递函数:用以下命令对进行部分分式展开: num=1,7,24,24den=1,10,35,50,24r,p,k=residue(num,den,0)输出结果为:num = 1 7 24 24den = 1 10 35 50 24r = -1.0000 2.0000 -1.0000 -1.0000 1.0000p = -4.0000 -3.0000 -2.0000 -1.0000 0k = 输出函数c(s)为:拉氏变换得:b.单位阶跃响应的求法控制系统工具箱中给出了一个函数step()来直接求取线性系统的阶跃响应,如果已知传递函数为:则该函

21、数可有以下几种调用格式:step(num,den) step(num,den,t)或 step(G)step(G,t) 该函数将绘制出系统在单位阶跃输入条件下的动态响应图,同时给出稳态值。对于式step(num,den,t)和step(G,t),t为图像显示的时间长度,是用户指定的时间向量。式step(num,den)和step(G)的显示时间由系统根据输出曲线的形状自行设定。如果需要将输出结果返回到MATLAB工作空间中,则采用以下调用格式:c=step(G)此时,屏上不会显示响应曲线,必须利用plot()命令去查看响应曲线。plot 可以根据两个或多个给定的向量绘制二维图形.例14已知传递

22、函数为:利用以下MATLAB命令可得阶跃响应曲线: num=0,0,25;den=1,4,25;step(num,den)grid % 绘制网格线title(Unit-Step Response of G(s)=25/(s2+4s+25)我们还可以用下面的语句来得出阶跃响应曲线: G=tf(0,0,25,1,4,25);t=0:0.1:5;% 从0到5每隔0.1取一个值c=step(G,t);% 动态响应的幅值赋给变量cplot(t,c)% 绘二维图形,横坐标取t,纵坐标取cCss=dcgain(G)% 求取稳态值在命令窗口中显示了如下结果:Css = 1c.求阶跃响应的性能指标MATLAB提

23、供了强大的绘图计算功能,可以用多种方法求取系统的动态响应指标。我们首先介绍一种最简单的方法-游动鼠标法。在程序运行完毕后,用鼠标左键点击时域响应图线任意一点,系统会自动跳出一个小方框,小方框显示了这一点的横坐标(时间)和纵坐标(幅值)。按住鼠标左键在曲线上移动,可以找到曲线幅值最大的一点-即曲线最大峰值,此时小方框中显示的时间就是此二阶系统的峰值时间,根据观察到的稳态值和峰值可以计算出系统的超调量。系统的上升时间和稳态响应时间可以依此类推。这种方法简单易用,但同时应注意它不适用于用plot()命令画出的图形。另一种比较常用的方法就是用编程方式求取时域响应的各项性能指标。与上一段介绍的游动鼠标法

24、相比,编程方法稍微复杂。我们可以用阶跃响应函数step( )获得系统输出量,若将输出量返回到变量y中,可以调用如下格式:y,t=step(G)该函数还同时返回了自动生成的时间变量t,对返回的这一对变量y和t的值进行计算,可以得到时域性能指标。c1.峰值时间(timetopeak)可由以下命令获得:Y,k=max(y);timetopeak=t(k)应用取最大值函数max()求出y的峰值及相应的时间,并存于变量Y和k中。然后在变量t中取出峰值时间,并将它赋给变量timetopeak。c2.最大(百分比)超调量(percentovershoot)可由以下命令得到:C=dcgain(G);Y,k=m

25、ax(y);percentovershoot=100*(Y-C)/Cdcgain( )函数用于求取系统的终值,将终值赋给变量C,然后依据超调量的定义,由Y和C计算出百分比超调量。c3.上升时间(risetime)可利用MATLAB中控制语句编制M文件来获得。首先简单介绍一下循环语句while的使用。while循环语句的一般格式为:while循环体end其中,循环判断语句为某种形式的逻辑判断表达式。当表达式的逻辑值为真时,就执行循环体内的语句;当表达式的逻辑值为假时,就退出当前的循环体。如果循环判断语句为矩阵时,当且仅当所有的矩阵元素非零时,逻辑表达式的值为真。为避免循环语句陷入死循环,在语句内

26、必须有可以自动修改循环控制变量的命令。要求出上升时间,可以用while语句编写以下程序得到:C=dcgain(G);n=1;while y(n)Cn=n+1;endrisetime=t(n)在阶跃输入条件下,y 的值由零逐渐增大,当以上循环满足y=C时,退出循环,此时对应的时刻,即为上升时间。对于输出无超调的系统响应,上升时间定义为输出从稳态值的10%上升到90%所需时间,则计算程序如下:C=dcgain(G);n=1;while y(n)0.1*Cn=n+1;endm=1;while y(n)0.98*C)&(y(i) G=zpk( ,-1+3*i,-1-3*i ,3);% 计算最大峰值时间

27、和它对应的超调量。C=dcgain(G)y,t=step(G);plot(t,y)gridY,k=max(y);timetopeak=t(k)percentovershoot=100*(Y-C)/C% 计算上升时间。n=1;while y(n)0.98*C)&(y(i) G=tf(1,conv(1,1,1,2),0);rlocus(G);gridtitle(Root_Locus Plot of G(s)=K/s(s+1)(s+2)xlabel(Real Axis)% 给图形中的横坐标命名。ylabel(Imag Axis)% 给图形中的纵坐标命名。K,P=rlocfind(G)用鼠标点击根轨迹

28、上与虚轴相交的点,在命令窗口中可发现如下结果:Select a point in the graphics windowselected_point = -0.9668 + 0.9068iK = 1.6536P = -2.4603 -0.2699 + 0.7741i -0.2699 - 0.7741i所以,要想使此闭环系统稳定,其增益范围应为0K G=tf(1,conv(1,1,1,2),0);hold off;% 擦掉图形窗口中原有的曲线。t=0:0.2:15;Y= ;for K=0.1:0.1:1,2:5GK=feedback(K*G,1);y=step(GK,t);Y=Y,y; endp

29、lot(t,Y)对于for循环语句,循环次数由K给出。系统画出的图形如图17所示。可以看出,当K的值增加时,一对主导极点起作用,且响应速度变快。一旦K接近临界K值,振荡加剧,性能变坏。注:自动控制原理暂时学到根轨迹,所以到此结束。3.参考文献MATLAB程序设计与应用李盛德 大连海事大学出版社MATLAB与仿真系统实验指导书崔新忠 大连海洋大学 2007年基于MATLAB的系统分析与设计-控制系统楼顺天 西安电子科技大学出版社自动控制原理孟华 机械工业出版社MATLAB与控制系统仿真实践赵广元 北京航空航天大学出版社自动控制原理的MATLAB实现黄忠霖 国防工业出版社MATLAB语言与自动控制系统设计魏新亮 机械工业出版社 27

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号