MATLAB的控制系统校正实验
- 格式:doc
- 大小:185.50 KB
- 文档页数:9
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.22541s+1
--------------
0.053537+1
校正后:幅值穿越频率=8.8802rad/s,相角穿越频率=Inf rad/s。
校正后:幅值裕量=Inf dB,相角裕量=50.7196° 2
Bode图:
3 (2)串联滞后校正实验
校正后:幅值穿越频率=0.60508rad/sec相角穿越频率=1.8675rad/sec
校正后:幅值裕量=15.8574dB,相角裕量=40.6552゜
Bode图:
(3)串联滞后—超前校正实验 4 校正后:幅值穿越频率=1.3175rad/sec相角穿越频率=3.6027rad/sec
校正后:幅值裕量=13.7848dB,相角裕量=52.4219゜
Bode图
验证成功 5 2.设计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);
for epsilon = 5:15
phic=(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;end
end
printsys(numc,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-180-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,相角裕量=45.9356゜ 6
验证结果
即正确
6-4
numo=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);
for epsilon=5:15
r=(-180+r0+epsilon);
[i1,ii]=min(abs(phase1-r));
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(Pm>=r0);break;end 7 end
printsys(numc,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-180-w),':');
grid;ylabel('相角(度)');xlabel('频率(red/sec)');
disp(['校正后:幅值穿越频率=',num2str(Wcp),'rad/sec','相角穿越频率=',num2str(Wcg),'rad/sec']);
disp(['校正后:幅值裕量=',num2str(20*log10(Gm)),'dB,','相角裕量=',num2str(Pm),'゜']);
结果:
校正后:幅值穿越频率=0.415rad/sec相角穿越频率=Infrad/sec
校正后:幅值裕量=InfdB,相角裕量=40.6397゜
验证结果:
8 6-5:
numo=5;deno=conv([1,0],conv([0.1,1],[0.25,1]));[Gm,Pm,Wcg,Wcp]=margin(numo,deno);
numo=5;deno=conv([1,0],conv([0.1,1],[0.25,1]));[Gm1,Pm1,Wcg1,Wcp1]=margin(numo,deno);
w=logspace(-2,2);
[mag1,phase1]=bode(numo,deno,w);
ii=find(abs(w-Wcg1)==min(abs(w-Wcg1)));
wc=Wcg1;
w1=wc/5;beta=5;
numc1=[1,w1];denc1=[1,w1/beta];
w2=w1;mag(ii)=2;
while(mag(ii)>1)
numc2=[1,w2];denc2=[1,(w2*beta)];
w2=w2+0.01;
[numc,denc]=series(numc1,denc1,numc2,denc2);
[num,den]=series(numo,deno,numc,denc);
[mag,phase]=bode(num,den,w);
end
printsys(numc1,denc1);
printsys(numc2,denc2);
[Gm,Pm,Wcg,Wcp]=margin(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('相角(度)');xlabel('频率(red/sec)');
disp(['校正后:幅值穿越频率=',num2str(Wcp),'rad/sec','相角穿越频率=',num2str(Wcg),'rad/sec']);
disp(['校正后:幅值裕量=',num2str(20*log10(Gm)),'dB,','相角裕量=',num2str(Pm),'゜']);
结果: