
北京科技大学控制实验报告.docx
62页实验三利用MATLAB进行时域分析一、实验目的(1)学会使用MATLA褊程绘制控制系统的单位阶跃响应曲线;(2)研究二阶控制系统中,?、?n对系统动态特性和时域指标的影响;(3)掌握准确读取动态特性指标的方法;(4)分析二阶系统闭环极点和闭环零点对系统动态性能的影响;(5)研究三阶系统单位阶跃响应及其动态性能指标与其闭环极点的关系;(6)研究闭环极点和闭环零点对高阶系统动态性能的影响;(7) 了解高阶系统中主导极点与偶极子的作用;(8) 了解系统阶跃响应、脉冲响应和斜坡响应输出曲线之间的联系与差别二、实验原理及内容1.求系统的特征根若已知系统的特征多项式D⑸,利用roots()函数可以求其特征根若已知系统的传递函数,利用eig()函数可以直接求出系统的特征根2、求系统的闭环根、I和3n函数damp()可以计算出系统的闭环根、I和?n3、零极点分布图可利用pzmap()函数绘制连续系统的零、极点图,从而分析系统的稳定性,调用格式为:pzmap(num,den)【范例3-1]给定传递函数:4433_2-G(s)3s2s5s4s6s53s44s32s27s2利用下列命令可自动打开一个图形窗口,显示该系统的零、极点分布图,如错误!未找到引用源。
所示>>num=[3,2,5,4,6];den=[1,3,4,2,7,2];pzmap(num,den)title(1Pole-ZeroMap1)%图形标题P中趾ism1帏励SysleTi:.灯日Pda-177-127i口Cflii3□versFitKl:(%):1J5F-tfl-|i>enc-^(radftBD),2.10-2-154』5005图3-1MATLAB函数零、极点分布图4、求系统的单位阶跃响应step()函数可以计算连续系统单位阶跃响应(impulse()函数可以计算连续系统单位脉冲响应):step(sys)或step(sys,t)或step(num,den)函数在当前图形窗口中直接绘制出系统的单位阶跃响应曲线,对象sys可以由tf(),zpk()函数中任何一个建立的系统模型第二种格式中t可以指定一个仿真终止时间,也可以设置为一个时间矢量(如t=0:dt:Tfinal,即dt是步长,Tfinal是终止时刻)如果需要将输出结果返回到MATLABT作空间中,则采用以下调用格式:c=step(sys)此时,屏上不会显示响应曲线,必须利用plot()命令查看响应曲线多个给定的向量绘制二维图形。
25【范例3-2】已知传递函数为:G(s)一25——s24s25利用以下MATLA跄令可得阶跃响应曲线如错误!未找到引用源plot可以根据两个或所示>>num=[0,0,25];den=[1,4,25];step(num,den)grid%绘制网格线title(1Unit-StepResponseofG(s)=25/(sA2+4s+25)1)%图像标题Tinei(Esc;i图3-2MATLAB绘制的响应曲线还可以用下面的语句来得出阶跃响应曲线>>G=tf([0,0,25],[1,4,25]);t=0::5;%从0到5每隔取一个值c=step(G,t);%动态响应的幅值赋给变量cplot(t,c)%绘二维图形,横坐标取t,纵坐标取cCss=dcgain(G)%求取稳态值系统显示的图形类似于上一个例子,在命令窗口中显示了如下结果Css=15、求阶跃响应的性能指标MATLAB提供了强大的绘图计算功能,可以用多种方法求取系统的动态响应指标首先介绍一种最简单的方法一一游动鼠标法对于例2,在程序运行完毕后,在曲线中空白区域,单击鼠标右键,在快捷菜单中选择"characteristics”,包含:Peakresponse(峰值);settlingtime(调节时间);Risetime(上升时间);steadystate(稳态值);在相应位置出现相应点,用鼠标单击后,相应性能值就显示出来。
用鼠标左键点击时域响应曲线任意一点,系统会自动跳出一个小方框,小方框显示了这一点的横坐标(时间)和纵坐标(幅值)这种方法简单易用,但同时应注意它不适用于用plot()命令画出的图形自我实践1】若已知单位负反馈前向通道的传递函数为:G(s)-100-,试作出其单位s25s阶跃响应曲线,准确读出其动态性能指标,并记录数据另一种比较常用的方法就是用编程方式求取时域响应的各项性能指标与游动鼠标法相比,编程方法稍微复杂,但可以获取一些较为复杂的性能指标若将阶跃响应函数step()获得系统输出量返回到变量y中,可以调用如下格式[y,t]=step(G)该函数还同时返回了自动生成的时间变量t,对返回变量y和t进行计算,可以得到时域性能指标① 峰值时间(timetopeak)可由以下命令获得:[Y,k]=max(y);timetopeak=t(k)② 最大(百分比)超调量(percentovershoot)可由以下命令得到:C=dcgain(G);[Y,k]=max(y);percentovershoot=100*(Y-C)/Cdcgain()函数用于求取系统的终值③上升时间(risetime)可利用MATLA讣控制语句编制M文件来获得。
要求出上升时间,可以用while语句编写以下程序得到:C=dcgain(G);n=1;whiley(n)
及性能指标数据>>G=zpk([],[-1+3*i,-1-3*i],3);%计算最大峰值时间和超调量C=dcgain(G)[y,t]=step(G);piot(t,y)grid[Y,k]=max(y);timetopeak=t(k)percentovershoot=100*(Y-C)/C%计算上升时间n=1;whiley(n)
IsibG)阶跃响应曲线:自我实践2:>>num=100;i=0;forsigma=0::den=[12*sigma*10100];damp(den)sys=tf(num,den);i=i+1;step(sys,2)holdonendEigenvalueDampingFreq+000++001i+000+001+000-+001i+000+001EigenvalueDampingFreq+000++000i+001+000-+000i+001EigenvalueDampingFreq+000++000i+001+000-+000i+001EigenvalueDampingFreq+000++000i+001+000-+000i+001(rad/s)(rad/s)(rad/s)(rad/s)EigenvalueDampingFreq.(rad/s)+001+000+001+001+000+001。
