机械工程控制基础大作业1Word下载.docx
《机械工程控制基础大作业1Word下载.docx》由会员分享,可在线阅读,更多相关《机械工程控制基础大作业1Word下载.docx(11页珍藏版)》请在冰豆网上搜索。
t=[0:
0.01:
10];
nG=[0.5110];
dG=[4520];
G1=tf(nG,dG);
nG=[1220];
dG=[5940];
G2=tf(nG,dG);
nG=[2440];
dG=[61780];
G3=tf(nG,dG);
[y1,T]=impulse(G1,t);
[y1a,T]=step(G1,t);
[y2,T]=impulse(G2,t);
[y2a,T]=step(G2,t);
[y3,T]=impulse(G3,t);
[y3a,T]=step(G3,t);
subplot(121),plot(T,y1,'
--'
T,y2,'
-'
T,y3,'
)
legend('
kb=5'
'
kb=10'
kb=20'
xlabel('
t(sec)'
),ylabel('
x(t)'
);
gridon;
subplot(122),plot(T,y1a,'
T,y2a,'
T,y3a,'
(2)当Kb分别为5、10、20时,系统的瞬态性能指标程序和数据
t=[0:
yss=0.5;
dta=0.02;
y1=step(G1,t);
y2=step(G2,t);
y3=step(G3,t);
r=1;
whiley1(r)<
yss;
r=r+1;
end
tr1=(r-1)*0.01;
[ymax,tp]=max(y1);
tp1=(tp-1)*0.01;
mp1=(ymax-yss)/yss;
s=1001;
whiley1(s)>
0.5-dta&
y1(s)<
0.5+dta;
s=s-1;
ts1=(s-1)*0.01;
whiley2(r)<
tr2=(r-1)*0.01;
[ymax,tp]=max(y2);
tp2=(tp-1)*0.01;
mp2=(ymax-yss)/yss;
whiley2(s)>
y2(s)<
ts2=(s-1)*0.01;
whiley3(r)<
tr3=(r-1)*0.01;
[ymax,tp]=max(y3);
tp3=(tp-1)*0.01;
mp3=(ymax-yss)/yss;
whiley3(s)>
y3(s)<
ts3=(s-1)*0.01;
[tr1tp1mp1ts1;
tr2tp2mp2ts2;
tr3tp3mp3ts3]
上升时间峰值时间最大超调量调整时间
2.2利用Matlab分析时间特性
(1)利用Matlab绘制Nyquist图
nG1=[2440];
dG1=[61780];
[re,im]=nyquist(nG1,dG1);
plot(re,im);
gridon
(2)利用Matlab绘制Bode图
w=logspace(-2,3,100);
bode(nG1,dG1,w);
(3)利用Matlab求系统的频域特征量
w=logspace(-1,3,100);
[Gm,pm,w]=bode(nG1,dG1,w);
[Mr,k]=max(Gm);
Mr=20*log10(Mr),Wr=w(k)
M0=20*log10(Gm
(1));
n=1;
while20*log10(Gm(n))>
=-3;
n=n+1;
Wb=w(n)
2.3利用Matlab分析系统的稳定性
den=[4520];
K=10;
num1=[K];
[Gm1Pm1Wg1Wc1]=margin(num1,den);
K=100;
num2=[K];
[mag,phase,w]=bode(num2,den);
[Gm2Pm2Wg2Wc2]=margin(mag,phase,w);
[20*log10(Gm1)Pm1Wg1Wc1;
20*log10(Gm2)Pm2Wg2Wc2]
den=[5940];
den=[61780];
2.4利用Matlab设计系统校正
校正前系统的Bode图和程序
k=10
numg=[0.5110];
deng=[4520];
[num,den]=series(k,1,numg,deng);
%
w=logspace(-1,2,200);
[mag,phase,w]=bode(tf(num,den),w);
[Gm,Pm,Wcg,Wcp]=margin(mag,phase,w);
Phi=(50-Pm+5)*pi/180;
alpha=(1-sin(Phi))/(1+sin(Phi));
M=10*log10(alpha)*ones(length(w),1);
semilogx(w,20*log10(mag(:
)),w,M);
校正后系统的Bode图和程序
k=10;
numgc=[0.0811];
dengc=[0.1861];
[nums,dens]=series(numgc,dengc,numg,deng);
[num,den]=series(k,1,nums,dens);
bode(tf(num,den),w);
grid;
title(['
相位裕度='
num2str(Pm)]);