资源描述:
《控制工程基础(基于Matlab的线性系统串联校正).docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、机械控制工程基础实验---基于Matlab的线性系统串联校正学院:机械学院年级:2012级班级:机电X班姓名:XXX学号:xxxxxxx指导教师:XXX2014年12月20日线性系统串联校正一、实验目的1.熟练掌握用MATLAB语句绘制频域曲线。2.掌握控制系统频域范围内的分析校正方法。3.掌握用频率特性法进行串联校正设计的思路和步骤。二、基础知识控制系统设计的思路之一就是在原系统特性的基础上,对原特性加以校正,使之达到要求的性能指标。最常用的经典校正方法有根轨迹法和频域法。而常用的串联校正装置有超前校正、滞后校
2、正和超前滞后校正装置。本实验主要讨论在MATLAB环境下进行串联校正设计。1.基于频率法的串联超前校正超前校正装置的主要作用是通过其相位超前效应来改变频率响应曲线的形状,产生足够大的相位超前角,以补偿原来系统中元件造成的过大的相位滞后。因此校正时应使校正装置的最大超前相位角出现在校正后系统的开环截止频率处。例6-1:单位反馈系统的开环传递函数为G(s)=4Ks(s+2),若要使系统单位速度输入下的稳态误差ess=0.05,相位裕量Kg(dB)不小于10dB,试求系统的校正装置。根据系统静态精度的要求,确定K值:e
3、ss=lims→0s11+G(s)H(s)1s2=1lims→0s4Ks(s+2)=12K=0.05所以K=10时,系统可满足精度要求,此时开环传递函数为G(s)=40s(s+2)=20s(0.5s+1)。计算原系统的相角裕度。Matlab程序:>>num0=20;>>den0=[0.5,1,0];>>w=0.1:1000;>>margin(num0,den0)%绘制出原系统Bode图grid;>>[mag1,phase1]=bode(num0,den0,w);%系统幅相频特性>>[gm1,pm1,wcg1,wc
4、p1]=margin(num0,den0);%计算系统的相角裕度和幅值裕度>>[gm1,pm1,wcg1,wcp1]ans=Inf17.9642Inf6.1685原系统bode图由结果可知,原系统相角裕度γ=18°,ωc=6.2rad/s,不满足指标要求,系统的Bode图如上图所示。为了使相对稳定性符合要求,不减小K的情况下满足γ>50°,需要增加相位超前校正装置,其相位超前角应为32°。但这将影响到幅值交界频率向右移,在新的幅值交界频率出对应的相位裕量就会小于50°,因此在确定补偿角度时再增加6°,来抵消这一影
5、响造成的相角滞后量。取校正装置的最大超前角φm=38°。确定衰减系数α:因为sinφm=(1-α)/(1+α),所以α=1-sinφm1+sinφm=0.24。确定超前装置的两个转折频率1T和1αT:在=1αT处,超前装置引起的幅值变化量应为1+jwT1+jwαTω=1αT=1α用分贝表示为20lg1αdB=6.2dB(这个幅值的变化未计入超前校正引起的幅值衰减部分),在G(jw)=-6.2dB处的频率ω=9s-1,让这个频率对应最大相位超前角,那么当超前校正装置加上以后,频率为ω=9s-1的地方幅值为0dB,即
6、为校正后的幅值交界频率ωc,同时在这里相角增加38°。由于ωc=9s-1这一频率对应于校正装置的ωm=1αT,因此:1T=αωc=4.41s-1,T=0.227s1αT=ωcα=18.4s-1,αT=0.054s则可得超前校正环节为Gc(s)=αTs+1αTs+1=0.240.227s+10.054s+1为了补偿超前校正造成的幅值衰减,须将放大器的增益提高2/0.24=8.34倍,这样得到校正装置的传递函数为Gc(s)=0.227s+10.054s+1校正后系统的开环传递函数为:Gc(s)G(s)=0.227s+
7、10.054s+140s(s+2)Matlab程序:>>num0=20;>>den0=[0.510];>>numc=[0.2271];>>denc=[0.0541];>>[num,den]=series(num0,den0,numc,denc);>>printsys(num,den)4.54s+20--------------------------0.027s^3+0.554s^2+s>>[gm0,pm0,wcg0,wcp0]=margin(num0,den0);>>[gm,pm,wcg,wcp]=margin
8、(num,den);>>[mag0,phase0]=bode(num0,den0,w);>>[magc,phasec]=bode(numc,denc,w);>>[mag,phase]=bode(num,den,w);>>margin(num0,den0);>>subplot(2,1,1);>>semilogx(w,20*log10(mag),w,20*log10(mag0