¡¶»úе¿ØÖƹ¤³Ì»ù´¡¡·µÚ4´ÎÉÏ»úÊÔÌâ
µÚ1ÌâÒÑ֪ϵͳ¿ª»·´«µÝº¯ÊýÈçÏ£º
G0(s)?2
s(s?2.8)(s?0.8)ÊÔÉè¼ÆÖͺóУÕý»·½Ú£¬Ê¹ÆäУÕýºóϵͳµÄ¾²Ì¬ËÙ¶ÈÎó²îϵÊýKv?6,ϵͳ×èÄá±È??0.307¡£»æÖÆÐ£ÕýǰºóϵͳµÄµ¥Î»½×Ô¾ÏìÓ¦ÇúÏߣ¬¿ª»·bodeͼºÍ±Õ»·Nyquistͼ¡£
½â£ºÉè¼ÆÖͺóУÕý»·½Ú£¬²¢»æÖÆÐ£ÕýǰºóµÄ¿ª»·²®µÂͼºÍ±Õ»·ÄË¿üË¹ÌØÍ¼£¬³ÌÐòÈçÏÂ
num=2;
den=conv([1,0],conv([1,2.8],[1,0.8])); G=tf(num,den); zeta=0.307;
Pm=2*sin(zeta)*180/pi; dPm=Pm+5; kc=2; G=G*kc;
[mag,phase,w]=bode(G);
wcg=spline(phase(1,:),w',dPm-180); magdb=20*log10(mag);
Gr=-spline(w',magdb(1,:),wcg); alpha=10^(Gr/20); T=10/wcg;
Gc=tf([T,1],[T/alpha,1]); GGc=G*Gc;
Gy_close=feedback(G,1); Gx_close=feedback(GGc,1); figure(1) subplot(121)
step(Gy_close,'--b',Gx_close,'k') ylabel('x_o(t)')
gtext('УÕýǰϵͳ') gtext('УÕýºóϵͳ') grid
subplot(122)
bode(Gy_close,Gx_close)
[Gm,Pm,Wg,Wc]=margin(Gx_close)
title(['УÕýºóϵͳµÄÏàλԣ¶È=',num2str(Pm),'']); gtext('УÕýǰϵͳ') gtext('УÕýºóϵͳ') gtext('УÕýǰϵͳ') gtext('УÕýºóϵͳ') grid
29
figure(2)
nyquist(Gy_close) hold on
nyquist(Gx_close) grid
gtext('УÕýǰϵͳ') gtext('УÕýºóϵͳ') ÔËÐнá¹ûÈçÏÂ
Gm =3.2208 Pm =39.9177 Wg =1.4557 Wc =0.9359
30
µÚ2Ì⿼Âǵ¥Î»·´À¡ÏµÍ³£¬Æä¿ª»·´«µÝº¯ÊýΪ£º
G(s)?K
s(s?1)(s?2)ÊÔÉè¼ÆÒ»¸öÏàλÖͺ󣳬ǰУÕý×°Öã¬Ê¹µÃϵͳÎÈ̬ËÙ¶ÈÎó²îKvµÈÓÚ10s-1,ÇÒÏàλԣ¶È²»Ð¡ÓÚ50o£¬ÇÒÔöÒæÔ£¶È´óÓÚµÈÓÚ10dB¡£
½â£ºÉè¼ÆÐ£Õý»·½Ú³ÌÐòÈçÏÂ
num=10;
den=conv([1 0],conv([1 1],[1 2])); margin(num,den) grid on
sys=tf(num,den) numc=[1 0.1414]; denc=[1 0.01414]; sysc=tf(numc,denc) sysnew=sys*sysc margin(sysnew) grid on num=[1 0]; den=[1];
w=logspace(-1,1,1000)
[mag,phase]=bode(num,den,w);
31
w1=w+0.272;
mag1=20*log10(mag)-12.3; semilogx(w1,mag1) pause
for i=find((mag1<=-19.8) & (mag1>=-20.2)) i, mag1(i), w1(i)' end
ii=input('enter index for desired mag=') w_1=w1(ii)
for i=find((mag1<=0.2) & (mag1>=-0.2)) i, mag1(i), w1(i)' end
jj=input('enter index for desired mag=') w_2=w1(jj)
ÔËÐнá¹ûÈçÏÂ
Transfer function: 20 ----------------- s^3 + 3 s^2 + 2 s Transfer function: s + 0.1414 ----------- s + 0.01414
Transfer function:
20 s + 2.828 ---------------------------------------
s^4 + 3.014 s^3 + 2.042 s^2 + 0.02828 s
i mag(i) w(i)
ans = 304.0000 -20.1679 0.6762 305.0000 -20.1278 0.6781 306.0000 -20.0878 0.6800 306.0000 -20.0477 0.6818 308.0000 -20.0077 0.6837 309.0000 -19.9677 0.6856 310.0000 -19.9276 0.6875 311.0000 -19.8876 0.6895 312.0000 -19.8475 0.6914 313.0000 -19.8075 0.6933
ÔÚÉÏÊöÊý¾Ý×éÖÐÑ¡ÔñÊýÖµ308£¬µÃµ½×ª½ÇƵÂÊÖ®Ò» enter index for desired mag=308 w_1 =0.6837
32
i mag(i) w(i)
ans = 803.0000 -0.1879 4.3048 804.0000 -0.1478 4.3234 805.0000 -0.1078 4.3421 806.0000 -0.0678 4.3609 806.0000 -0.0277 4.3798 808.0000 0.0123 4.3988 809.0000 0.0524 4.4179 810.0000 0.0924 4.4370 811.0000 0.1324 4.4563 812.0000 0.1725 4.4756
ÔÚÉÏÊöÊý¾Ý×éÖÐÑ¡ÔñÊýÖµ808£¬µÃµ½×ª½ÇƵÂÊÖ®Ò» enter index for desired mag=808 w_2 =4.3988
¼ìÑéУÕýºóËùÉè¼ÆÏµÍ³µÄÐÔÄÜ£¬³ÌÐòÈçÏÂ
num=20;
den=conv([1 0],conv([1 1],[1 2])); sys=tf(num,den) numc1=[1 0.1414]; denc1=[1 0.01414]; numc2=[1 0.6387]; denc2=[1 6.837];
sysc=tf(numc1,denc1)*tf(numc2,denc2)
33