资源描述:
《3_用MATLAB进行控制系统的频域分析.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、湖南工学院教案——《计算机仿真技术实验》实验三用MATLAB进行控制系统的频域分析[实验目的]1.掌握MATLAB平台下绘制典型环节及系统开环传递函数的Bode图和Nyquis图(极坐标图)绘制方法;2.掌握利用Bode图和Nyquis图对系统性能进行分析的理论和方法。[实验指导]一、绘制Bode图和Nyquis图1.Bode图绘制采用bode()函数,调用格式:①bode(sys);bode(num,den);系统自动地选择一个合适的频率范围。②bode(sys,w);其中w(即ω)是需要人工给出频率范围,一般由语
2、句w=logspace(a,b,n)给出。logspace(a,b,n):表示在10a到10b之间的n个点,得到对数等分的w值。③bode(sys,{wmin,wmax});其中{wmin,wmax}是在命令中直接给定的频率w的区间。以上这两种格式可直接画出规范化的图形。④[mag,phase,ω]=bode(sys)或[m,p]=bode(sys)这种格式只计算Bode图的幅值向量和相位向量,不画出图形。m为频率特性G(jω)的幅值向量;p为频率特性G(jω)的幅角向量,单位为角度(°)。w为频率向量,单位为[弧度
3、]/秒。在此基础上再画图,可用:subplot(211);semilogx(w,20*log10(m)%对数幅频曲线subplot(212);semilogx(w,p)%对数相频曲线⑤bode(sys1,sys2,…,sysN);⑥bode((sys1,sys2,…,sysN,w);这两种格式可在一个图形窗口同时绘多个系统的bode图。2.Nyquist曲线的绘制9湖南工学院教案——《计算机仿真技术实验》采用nyquist()函数调用格式:①nyquist(sys);②nyquist(sys,w);其中频率范围w由语
4、句w=w1:Δw:w2确定。③nyquist(sys1,sys2,…,sysN);④nyquist(sys1,sys2,…,sysN,w);⑤[re,im,w]=nyquist(sys);re—频率响应实部im—频率响应虚部使用命令axis()改变坐标显示范围,例如axis([-1,1.5,-2,2])。⑥当传递函数串有积分环节时ω=0处会出现幅频特性为无穷大的情况,可用命令axis(),自定义图形显示范围,避开无穷大点。二、系统分析1.计算控制系统的稳定裕度采用margin()函数可以直接求出系统的幅值裕度和相角裕
5、度。调用格式为:①[Gm,Pm,Wcg,Wcp]=margin(num,den);[Gm,Pm,Wcg,Wcp]=margin(A,B,C,D);[Gm,Pm,Wcg,Wcp]=margin(sys);Gm---幅值裕度;Pm---相位裕度;wcg---幅值裕度处对应的频率ωc;wcp---相位裕度处对应的频率ωg。②[Gm,Pm,Wcg,Wcp]=margin(mag,phase,w);③margin(sys)在当前图形窗口中绘制出系统裕度的Bode图。2.用幅值裕度和相角裕度判断闭环系统稳定性与相对稳定性3.用N
6、yquist图判断闭环系统稳定性由Nyquist曲线包围(-1,j0)点的情况,根据Nyquist稳定判据判断闭环系统稳定性。三、举例9湖南工学院教案——《计算机仿真技术实验》例1:振荡环节如下:,做出该环节的Bode图和Nyquist图。程序:>>n=[16];d=[11016];sys=tf(n,d);figure(1);bode(sys);figure(2);nyquist(sys)运行结果:例2:振荡环节如下:,做出该环节的Bode图和Nyquist图。ξ变化,取[0.05,0.1,0.5,0.7,2]。1.
7、Bode图程序:>>wn=4;znb=[0.05,0.1,0.5,0.7,2];w=logspace(0,2,10000);figure(1);n=[wn^2];fork=znbd=[12*k*wnwn^2];sys=tf(n,d);bode(sys,w);holdon;end运行结果:9湖南工学院教案——《计算机仿真技术实验》1.Nyquist图程序:>>wn=4;znb=[0.05,0.1,0.5,0.7,2];w=logspace(0,2,10000);figure(1);n=[wn^2];fork=znbd=
8、[12*k*wnwn^2];sys=tf(n,d);nyquist(sys,w);holdon;end运行结果:例3:系统开环传递函数如下:①,②,③,做出各自的Bode图,并求①、③幅值裕度和相角裕度1.Bode图程序:>>n1=20;d1=conv([1,0],[0.5,1]);sys1=tf(n1,d1);figure(2);bode(s