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),'゜']);

结果: