资源描述:
《MATLAB的控制系统校正实验.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验四基于MATLAB的控制系统校正实验一、实验目的1.熟悉并掌握MATLAB的使用2.掌握用MATLAB实现频率法的串联校正验证3.用MATLAB程序解决一般性设计问题二、实验内容1.录入并执行教材6.7三个程序并得出结果并比较2.通过6.7程序,完成6-3,6-4,6-5习题仿真三、实验过程1.录入程序,并完成教材6.7三个程序的仿真2.验证其结果3.绘制三个程序的流程图4.设计6-3,6-4,6-5,习题仿真程序5.验证仿真结果四、实施过程及结果1.录入书中程序并执行得出结果:(1)串联超前校正实验Mum/den=0.22
2、541s+1--------------0.053537+1校正后:幅值穿越频率=8.8802rad/s,相角穿越频率=Infrad/s。校正后:幅值裕量=InfdB,相角裕量=50.7196°1Bode图:2(2)串联滞后校正实验校正后:幅值穿越频率=0.60508rad/sec相角穿越频率=1.8675rad/sec校正后:幅值裕量=15.8574dB,相角裕量=40.6552゜Bode图:(3)串联滞后—超前校正实验3校正后:幅值穿越频率=1.3175rad/sec相角穿越频率=3.6027rad/sec校正后:幅值裕量=
3、13.7848dB,相角裕量=52.4219゜Bode图验证成功42.设计6-3,6-4,6-5,程序如下6-3:numo=[200];deno=conv([1,0],[0.1,1]);[Gm,Pm,Wcg,Wcp]=margin(numo,deno);numo=200;deno=conv([1,0],[0.1,1]);[Gm1,Pm1,Wcg1,Wcp1]=margin(numo,deno);r0=45;r=Pm;w=logspace(-1,3);[mag1,phase1]=bode(numo,deno,w);forepsil
4、on=5:15phic=(r0-r+epsilon)*pi/180;alpha=(1-sin(phic))/(1+sin(phic));[i1,ii]=min(abs(mag1-sqrt(alpha)));wc=w(ii);T=1/(wc*sqrt(alpha));numc=[T,1];denc=[alpha*T,1];[num,den]=series(numo,deno,numc,denc);[Gm,Pm,Wcg,Wcp]=margin(num,den);if(Pm>=r0);break;endendprintsys(numc
5、,denc);[mag2,phase2]=bode(numc,denc,w);[mag,phase]=bode(num,den,w);subplot(2,1,1);semilogx(w,20*log10(mag),w,20*log10(mag1),'--',w,20*log10(mag2),'-.');grid;ylabel('幅值(dB)');title('--Go.-.Gc,__GoGc');subplot(2,1,2);semilogx(w,phase,'--',w,phase1,'-.',w,phase2,w,(w-18
6、0-w),':');grid;ylabel('相角(度)');xlabel('频率(red/sec)');disp(['校正后:幅值穿越频率=',num2str(Wcp),'rad/sec','相角穿越频率=',num2str(Wcg),'rad/sec']);disp(['校正后:幅值裕量=',num2str(20*log10(Gm)),'dB,','相角裕量=',num2str(Pm),'゜']);结果:校正后:幅值穿越频率=64.7053rad/sec相角穿越频率=Infrad/sec校正后:幅值裕量=InfdB,相角裕量
7、=45.9356゜5验证结果即正确6-4numo=4;deno=conv([1,0],[2,1]);[Gm,Pm,Wcg,Wcp]=margin(numo,deno);numo=4;deno=conv([1,0],[2,1]);[Gm1,Pm1,Wcg1,Wcp1]=margin(numo,deno);r0=40;w=logspace(-3,1);[mag1,phase1]=bode(numo,deno,w);forepsilon=5:15r=(-180+r0+epsilon);[i1,ii]=min(abs(phase1-r)
8、);wc=w(ii);beta=mag1(ii);T=5/wc;numc=[T,1];denc=[beta*T,1];[num,den]=series(numo,deno,numc,denc);[Gm,Pm,Wcg,Wcp]=margin(num,den);if