控制系统仿真及CAD试题研.docx
《控制系统仿真及CAD试题研.docx》由会员分享,可在线阅读,更多相关《控制系统仿真及CAD试题研.docx(26页珍藏版)》请在冰豆网上搜索。
控制系统仿真及CAD试题研
控制系统仿真及CAD试题(研2012)
1、4-2某反馈控制系统的开环传递函数为
试绘制其根轨迹。
解:
在MATLAB命令窗口中输入下列命令:
ng=1.0;
dg=poly([0,-4,-2+4j,-2-4j]);
rlocus(ng,dg)
运行结果为:
4-3已知某系统传递函数为
试绘制其伯德图。
解:
分子分母同乘100*200得到
在Matlab窗口中输入下列命令:
k=80*200;
num=[1100];
den=conv([2.5100],[(1/200)2*0.3200]);
w=logspace(-1,1,100);
[m,p]=bode(k*num,den,w);
subplot(2,1,1);
semilogx(w,20*log10(m));
grid;
xlabel('Frequency(rad/sec)');
ylabel('Gain(dB)');
subplot(2,1,2);
semilogx(w,p);
grid;
xlabel('Frequency(rad/s)');
ylabel('Phase(deg)');
可绘制该系统的伯德图如下所示。
4-4设控制系统具有如下的开环传递函数
试求取当K=10时的相角裕度和幅值裕度,并画出其伯德图。
解:
在MATLAB命令窗口中输入下列命令:
k=10;
num=1;
den=poly([0,-1,-5]);
[m,p,w]=bode(k*num,den);
subplot(2,1,1);
semilogx(w,20*log10(m));
gridon;
ylabel('Gain(dB)');
subplot(2,1,2);
semilogx(w,p);
gridon;
xlabel('Frequency(rad/sec)');
ylabel('Phase(deg)');
[gm,pm,wcg,wcp]=margin(m,p,w)
这里gm,wcg为幅值裕度值与相应的频率pm,wcp为相角裕度值与相应的频率,运行结果为:
gm=3.0000,pm=25.4489,wcg=2.2361,wcp=1.2241。
因此,系统的幅值裕度和相角裕度分别为3dB和25.4489°。
系统的伯德图如下所示。
4-13对于高阶系统的设计问题,往往要进行降阶近似处理,并要验证近似效果。
已知某高阶系统模型为
经简化处理后,模型等效为
试比较两个模型在单位阶跃信号作用下的响应情况,并分析近似效果。
解:
在Matlab命令窗口中输入下列命令:
num1=[35,10861,13285,82402,278376,511812,422964,194480];
den1=[1,33,437,3017,11870,27470,37492,28880,9600];
sys1=tf(num1,den1);
num2=[35,284.98];
den2=[1,10.114,12.31];
sys2=tf(num2,den2);
step(sys1,'-',sys2,':
r',15)
legend('原模型','简化后模型');
gridon
程序运行结果如下:
从曲线中可以看出,降阶后系统响应无超调,调整时间缩短,系统响应变快,但是简化前后终值有差异。
2-5用四阶龙格-库塔法求解题2-3数值解,并与前两题结果相比较。
解:
四阶龙格-库塔法表达式
,其截断误差为
同阶无穷小,当h步距取得较小时,误差是很小的.
(1)程序如下:
h=0.1;
disp('四阶龙格-库塔方法求解函数数值解为');
disp('y=');
y=1;
fort=0:
h:
1
disp(y);
k1=-y;
k2=-(y+k1*h/2);
k3=-(y+k2*h/2);
k4=-(y+k3*h);
y=y+(k1+2*k2+2*k3+k4)*h/6;
end
得到结果四阶龙格-库塔方法求解函数数值解为
y=10.90480.81870.74080.67030.60650.54880.49660.44930.40660.3679
(2)比较这几种方法:
对于四阶龙格-库塔方法
真值
1
0.9048
0.8187
0.7408
0.6703
0.6065
0.5488
0.4966
0.4493
0.4066
0.3679
龙库
1
0.9048
0.8187
0.7408
0.6703
0.6065
0.5488
0.4966
0.4493
0.4066
0.3679
误差
0
0
0
0
0
0
0
0
0
0
0
显然四阶龙格-库塔法求解精度很高,基本接近真值。
三种方法比较可以得到
精度(四阶)〉精度(二阶)〉精度(欧拉)
2-9用题2-8仿真程序求解题2-7系统的闭环输出响应y(t).
解:
题2-7单位反馈系统的开环传递函数已知如下
已知开环传递函数,求得闭环传递函数为
在matlab命令行里键入>>a=[10];
>>b=[14.6];
>>c=[13.416.35];
>>d=conv(a,b);
>>e=conv(d,c)
e=1.00008.000031.990075.21000
>>f=[0005100];
>>g=e+f
g=1.00008.000031.990080.2100100.0000
%以上是计算闭环传递函数的特征多项式%
>>m=[5100];
>>z=roots(m)
z=-20%计算零点%
那么A=
B=
C=
D=[0]
m文件为:
functiony=hs(A,B,C,D,R,T,h)%T为观测时间,h为计算步长,R为输入信号幅值%
disp('数值解为');
y=0;
r=R;
x=[0;0;0;0];
N=T/h;
fort=1:
N;
k1=A*x+B*R;
k2=A*(x+h*k1/3)+B*R;
k3=A*(x+2*h*k2/3)+B*R;
x=x+h*(k1+3*k3)/4;
y(t)=C*x+D*R;
end
在命令行里键入>>A=[0100
0010
0001
-100-80.21-31.99-8];
>>B=[0001]';
>>C=[-100500];
>>D=[0];
>>T=1;
>>R=1;
>>h=0.01;
>>y=hs(A,B,C,D,R,T,h)
数值解为
0
8.3333e-007
5.8659e-006
1.8115e-005
3.9384e-005
7.0346e-005
。
。
。
。
%仅取一部分%
3-5图3-61中,若各环节的传递函数已知为:
但
;重新列写联接矩阵
和非零元素矩阵
,将程序sp4_2.m完善后,应用sp4_2.m求输出
的响应曲线。
解:
根据图中
拓扑连结关系,可写出每个环节输入
受哪些环节输出
的影响,
现列如入下:
把环节之间的关系和环节与参考输入的关系分别用矩阵表示出来,
(2)
程序为:
P=[1,0.01,1,0;0,0.085,1,0.17;1,0.01,1,0;
0,0.051,1,0.15;1,0.0067,70,0;1,0.15,0.21,0;
0,1,130,0;1,0.01,0.1,0;1,0.01,0.0044,0];
WIJ=[1,0,1;2,1,1;2,9,-1;3,2,1;4,3,1;4,8,-1;5,4,1;6,5,1;6,7,-0.212;7,6,1;8,6,1;9,7,1];
n=9;
Y0=10;
Yt0=[0,0,0,0,0,0,0,0,0];
h=0.001;
L1=10;
T0=0;
Tf=5;
nout=7;
%....形成闭环各系数阵….
A=diag(P(:
1));
B=diag(P(:
2));
C=diag(P(:
3));
D=diag(P(:
4));
m=length(WIJ(:
1));
W0=zeros(n,1);W=zeros(n,n);
fork=1:
m
if(WIJ(k,2)==0);W0(WIJ(k,1))=WIJ(k,3);
elseW(WIJ(k,1),WIJ(k,2))=WIJ(k,3);
end;
end;
Q=B-D*W;Qn=inv(Q);
R=C*W-A;V1=C*W0;
Ab=Qn*R;b1=Qn*V1;
%.....数值积分求解……
Y=Yt0';y=Y(nout);t=T0;
N=round(Tf-T0)/(h*L1);
R=Y0;
fori=1:
N;
forj=1:
L1;
k1=Ab*Y+b1*R;
k2=Ab*(Y+h*k1/2)+b1*R;
k3=Ab*(Y+h*k2/2)+b1*R;
k4=Ab*(Y+k3*h)+b1*R;
Y=Y+(k1+2*k2+2*k3+k4)*h/6;
end;
y=[y,Y(nout)];
t=[t,t(i)+h*L1];
end;
[t',y']
plot(t,y);xlabel('Timet/s')ylabel('幅度')
3-7用离散相似法仿真程序sp3_4.m重求题3-5输出
的数据与曲线,并与四阶龙格-库塔法比较精度。
解:
离散相似法:
P=[1,0.01,1,0;0,0.085,1,0.17;1,0.01,1,0;0,0.051,1,0.15;1,0.0067,70,0;
1,0.15,0.21,0;0,1,130,0;1,0.01,0.1,0;1,0.01,0.0044,0];
WIJ=[1,0,1;2,1,1;2,9,-1;3,2,1;4,3,1;4,8,-1;5,4,1;6,5,1;6,7,-0.212;7,6,1;8,6,1;9,7,1];
n=9;Y0=10;Yt0=[0,0,0,0,0,0,0,0,0];h=0.001;L1=10;T0=0;Tf=5;
nout=7;
A=diag(P(:
1));B=diag(P(:
2));C=diag(P(:
3));D=diag(P(:
4));
m=length(WIJ(:
1));W0=zeros(n,1);W=zeros(n,n);
fork=1:
m
if(WIJ(k,2)==0);W0(WIJ(k,1))=WIJ(k,3);
elseW(WIJ(k,1),WIJ(k,2))=WIJ(k,3);
end;
end;
fori=1:
n
if(A(i,i)==0);
FI(i,i)=1;
FIM(i,i)=h*C(i,i)/B(i,i);
FIJ(i,i)=h*h*C(i,i)/B(i,i)/2;
FIC(i,i)=1;
FID(i,i)=0;
if(D(i,i)~=0);
FID(i,i)=D(i,i)/B(i,i);
else
end
else
FI(i,i)=exp(-h*A(i,i)/B(i,i));
FIM(i,