Matlab程序:
num0=24;den0=conv([1,1],conv([1,1],[1,1]));w=logspace(-1,1.2); [gm1,pm1,wcg1,wcp1]=margin(num0,den0); [mag1,phase1]=bode(num0,den0,w); [gm1,pm1,wcg1,wcp1]
margin(num0,den0) grid; 结果: ans =
0.3334 -29.1467 1.7322 2.7056 Bode图
--Go,-Gc,GoGc50幅值(db)0-50-110100101102)agnitude (dB)Phase (degMBode DiagramGm = -9.54 dB (at 1.73 rad/sec) , Pm = -29.1 deg (at 2.71 rad/sec)1000-1000-180-360-21010-1100101102Frequency (rad/sec)校正Matlab程序: e=10; r=45; r0=pm1; phi=(-180+r+e);
[il,ii]=min(abs(phase1-phi));
wc=w( ii); beit=mag1(ii); T=10/wc; numc=[ T,1]; denc=[ beit*T,1];
[num,den]=series(num0,den0,numc,denc); %原系统与校正装置串联 [gm,pm,wcg,wcp]=margin(num,den); %返回系统新的相角裕度和幅值裕度 printsys(numc,denc) %显示校正装置的传递函数 disp('校正之后的系统开环传递函数为:');
printsys(num,den) %显示系统新的传递函数
[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-180-w),':'); grid; ylabel('相位(0)'); xlabel('频率(rad/sec)');
title(['校正前:幅值裕量=',num2str(20*log10(gm1)),'db','相位裕量=',num2str(pm1),'0';
'校正后:幅值裕量=',num2str(20*log10(gm)),'db','相位裕量=',num2str(pm),'0']);
结果:num/den =
11.4062 s + 1 ------------- 116.386 s + 1
校正之后的系统开环传递函数为: num/den =
273.75 s + 24
---------------------------------------------------------
116.386 s^4 + 350.1579 s^3 + 352.1579 s^2 + 119.386 s + 1 图如下:
--Go,-Gc,GoGc50幅值(db)0-50-100-1100100101102相位(0)-100-200-300-1100121010频率(rad/sec)10
K,试设计
s(s?1)(s?2)3.某单位负反馈控制系统的开环传递函数为G(s)?一滞后-超前校正装置,使校正后系统的静态速度误差系数Kv?10s?1,相位裕量
??500,增益裕量20lgKg?10dB。
由Kv?10s?1可知k=20
Matlab程序:
num0=20; den0=conv([1,0],conv([1,1],[1,2])); w=logspace(-1,1.2); [gm1,pm1,wcg1,wcp1]=margin(num0,den0); [mag1,phase1]=bode(num0,den0,w); [gm1,pm1,wcg1,wcp1]
margin(num0,den0) grid;
结果:ans =
0.3000 -28.0814 1.4142 2.4253 Bode图:
Bode DiagramGm = -10.5 dB (at 1.41 rad/sec) , Pm = -28.1 deg (at 2.43 rad/sec)100Magnitude (dB)Phase (deg)0-100-90-135-180-225-270-21010-1100101102Frequency (rad/sec)
选择原系统?1800的频率为新的截止频率?c,则可以确定滞后部分的T2和
?。其中
111,??10。由原系统,?c?1.58rad/s,此时的幅值为??c?T2?T2100.1?c9.12dB。
根据校正后系统在新的幅值交接频率处的幅值必须为0dB,确定超前校正部分的T1。在原系统(?c,?20lgG0(j?c)),即(1.58,-9.12)处画一条斜率为20dB/dec的直线,此直线与0dB线及-20dB线的交点分别为超前校正部分的两个转折频率。 num0=20; den0=conv([1,0],conv([1,1],[1,2])); w=logspace(-1,1.2); [gm1,pm1,wcg1,wcp1]=margin(num0,den0); [mag1,phase1]=bode(num0,den0,w); [gm1,pm1,wcg1,wcp1] margin(num0,den0)
wc=1.58; beit=10; T2=10/wc; lw=20*log10(w/1.58)-9.12; [il,ii]=min(abs(lw+20)); w1=w(ii);
numc1=[1/w1,1];denc1=[1/ (beit*w1),1]; numc2=[ T2,1];denc2=[ beit*T2,1];
[numc,denc]=series(numc1,denc1,numc2,denc2); [num,den]=series(num0,den0,numc,denc); printsys(numc,denc)
disp('D£?y??oóμ??μí3?a?·′?μYoˉêy?a:'); printsys(num,den) [mag2,phase2]=bode(numc,denc,w); [mag,phase]=bode(num,den,w);
[gm,pm,wcg,wcp]=margin(num,den);
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-180-w),':'); grid; ylabel('?à??(0)'); xlabel('?μ?ê(rad/sec)');
title(['D£?yoó£o·ù?μ?£á?=',num2str(20*log10(gm)),'db','?à???£á?=',num2str(pm),'0']);
--Go,-Gc,GoGc50幅值(db)0-50-110100101102校正后:幅值裕量=12.3215db相位裕量=48.518901000相位(0)-100-200-300-1100121010频率(rad/sec)10
四、实验心得
通过本节课的实验,从直观上增加了对线性系统串联校正的理解,从而加深了线性系统校正的理论知识,掌握了控制系统频域范围内的分析校正方法,学会了用频率特性法进行串联校正设计的思路和步骤。