当前位置:首页 > 自控课程设计报告
原传递函数G(S)?K0
S(0.1S?1)(0.001S?1)根据原系统的开环对数幅频特性的剪切频率求出原系统的相角裕度
c=100rad/s,
约为0度,这说明原系统在
45度的要求。
K=1000/s时处于临界稳定状态,不能满足为满足
45度的要求,串联校正装置提供的最大超前相角
c'
m必须大于等于45度。考虑到校正后系统的剪切频率会稍大于校正前的剪切频率置的最大超前相角
c,因此,校正时应给校正装
。
取15度
m增加一个补偿角度
a?1?sin?1?sin?mm ?m=
程序如下:
>> k=1000;
>> d1=conv(conv([1 0],[0.1 1]),[0.001 1]); >> scop=tf(k,d1);
>> w=logspace(0,4,50); >> bode(scop,w);
>> [Gm,Pm,Wcg,Wcp]=margin(scop)
1aT结果为:
Gm =1.0100 Pm = 0.0584 Wcg =100.0000 Wcp = 99.4863
5
剪切频率?C0=99.5rad/sec,相角裕度?0=0.0584deg和幅值
裕度Gm=0.0864dB
4.2利用MATLAB语言计算出超前校正器的传递函数。
要计算出校正后系统的传递函数,就编写求超前校正器的传递函数的MATLAB程序,其中调用了求超前校正器传递函数的函数leadc(),leadc.m保存在matlab7.0\\work\\文件夹下,其中key=1时,为var=gama,是根据要求校正后的相角稳定裕度计算超前校正器;当key=2时,为var=wc,则是根据要求校正后的剪切频率计算校正器。若已知系统的开环
6
传递函数与要求校正后的相角稳定裕度或剪切频率,求系统串联超前校正器传递函数时,就可以调用此函数。leadc.m编制如下:
function [Gc]=leadc(key,sope,vars) % MATLAB FUNCTION PROGRAM leadc.m %
if key==1
gama=vars(1);gama1=gama+5; [mag,phase,w]=bode(sope);
[mu,pu]=bode(sope,w); gam=gama1*pi/180;
alpha=(1-sin(gam))/(1+sin(gam)); adb=20*log10(mu); am=10*log10(alpha); wc=spline(adb,w,am); T=1/(wc*sqrt(alpha)); alphat=alpha*T;
Gc=tf([T 1],[alphat 1]); elseif key==2 wc=vars(1);
num=sope.num{1};den=sope.den{1}; na=polyval(num,j*wc); da=polyval(den,j*wc); g=na/da; g1=abs(g); h=20*log10(g1); a=10^(h/10); wm=wc;
T=1/(wm*(a)^(1/2)); alphat=a*T;
Gc=tf([T 1],[alphat 1]); elseif key==3
gama=vars(1);wc=vars(2);gama1=gama+15;
7
num=sope.num{1};den=sope.den{1}; ngv=polyval(num,j*wc); dgv=polyval(den,j*wc); g=ngv/dgv; thetag=angle(g); thetag_d=thetag*180/pi; mg=abs(g);
gama_rad=gama1*pi/180;
z=(1+mg*cos(gama_rad-thetag))/(-wc*mg*sin(gama_rad-thetag)); p=(cos(gama_rad-thetag)+mg)/(wc*sin(gama_rad-thetag)); nc=[z,1];dc=[p,1]; Gc=tf(nc,dc); end
matlab程序如下:
>> k=1000;
>> d1=conv(conv([1 0],[0.1 1]),[0.001 1]); >> sope=tf(k,d1);
>> gama=60;[Gc]=leadc(1,sope,[gama])
Transfer function: 0.02148 s + 1 -------------- 0.001056 s + 1
所以传递函数如右边所示 4.3
G(S)?0.02148s?10.001056s?1校验系统校正后系统是否满足题目要求:
程序如下: k0=1000; n1=1;
d1=conv(conv([1 0],[0.1 1]),[0.001 1]);s1=tf(k0,d1); s1=tf(k0*n1,d1); n2=[0.02148 1]; d2=[0.001056 1]; s2=tf(n2,d2);
sys=s1*s2;figure(1); margin(sys)
8
共分享92篇相关文档