CAD实验.docx
《CAD实验.docx》由会员分享,可在线阅读,更多相关《CAD实验.docx(39页珍藏版)》请在冰豆网上搜索。
CAD实验
控制系统计算机辅助设计实验
班级:
自动化0801
姓名:
李爽
学号:
20082353
班级:
自动化0801姓名:
李爽学号:
20082353
一、实验教学目标与基本要求
上机实验是本课程重要的实践教学环节。
实验的目的不仅仅是验证理论知识,更重要的是通过上机加强学生的实验手段与实践技能,掌握应用MATLAB/Simulink求解控制问题的方法,培养学生分析问题、解决问题、应用知识的能力和创新精神,全面提高学生的综合素质。
通过对MATLAB/Simulink进行求解,基本掌握常见控制问题的求解方法与命令调用,更深入地认识和了解MATLAB语言的强大的计算功能与其在控制领域的应用优势。
二、题目及解答
第一部分:
MATLAB必备基础知识、控制系统模型与转换、线性控制系统的计算机辅助分析:
1.
编写rossler.m文件:
functiondx=rossler(t,x)
dx=[-x
(2)-x(3);x
(1)+0.2*x
(2);0.2+(x
(1)-5.7)*x(3)];
主函数:
>>x0=[0;0;0];
[t,y]=ode45('rossler',[0,100],x0);
plot3(y(:
1),y(:
2),y(:
3)),grid
>>plot3(y(:
1),y(:
2),y(:
3)),grid
>>plot(y(:
1),y(:
2)),grid
所的图像:
三维相轨迹(下图)
xoy平面投影
2.
编写c2exmobj.m文件:
functiony=c2exmobj(x)
y=x
(1)^2-2*x
(1)+x
(2);
编写c2exmcon.m文件:
function[c,ce]=c2exmcon(x)
ce=[];
c=[4*x
(1)^2+x
(2)^2-4];
主函数为:
A=[];B=[];Aeq=[];Beq=[];xm=[0;0];xM=[];x0=[0;0];
ff=optimset;ff.Tolx=1e-10;ff.TolFun=1e-20;
x=fmincon('c2exmobj',x0,A,B,Aeq,Beq,xm,xM,'c2exmcon',ff)
运行结果:
Warning:
Trust-region-reflectivemethoddoesnotcurrentlysolvethistypeofproblem,
usingactive-set(linesearch)instead.
>Infminconat422
Optimizationterminated:
first-orderoptimalitymeasurelessthanoptions.TolFun
andmaximumconstraintviolationislessthanoptions.TolCon.
Activeinequalities(towithinoptions.TolCon=1e-006):
lowerupperineqlinineqnonlin
21
x=
1.0000
0
3.
(a).程序代码为:
>>s=tf('s');
G=(s^3+4*s+2)/(s^3*(s^2+2)*((s^2+1)^3+2*s+5))
运行结果为:
Transferfunction:
s^3+4s+2
------------------------------------------------------
s^11+5s^9+9s^7+2s^6+12s^5+4s^4+12s^3
(b).程序代码为:
>>z=tf('z',0.1);
H=(z^2+0.568)/((z-1)*(z^2-0.2*z+0.99))
运行结果为:
Transferfunction:
z^2+0.568
-----------------------------
z^3-1.2z^2+1.19z-0.99
Samplingtime:
0.1
4.
将方程两边进行拉式变换后可得传递函数,代码如下:
>>tf('s');
G=2/(s^3+13*s^2+4*s+5)
Transferfunction:
2
----------------------
s^3+13s^2+4s+5
转换为状态空间方程为:
>>G1=ss(G)
a=
x1x2x3
x1-13-1-1.25
x2400
x3010
b=
u1
x10.5
x20
x30
c=
x1x2x3
y1001
d=
u1
y10
Continuous-timemodel.
转换为零极点模型为:
>>G2=zpk(G)
Zero/pole/gain:
2
----------------------------------
(s+12.72)(s^2+0.2836s+0.3932)
5.
如题可设采样时间为0.1s,代码如下:
>>z=tf('z',0.1);
H=(z+2)/(z^2+z+0.16)
运行结果为:
Transferfunction:
z+2
--------------
z^2+z+0.16
Samplingtime:
0.1
6.
编写feedback.m函数:
functionH=feedback(G1,G2,key)
ifnargin==2;key=-1;end,H=G1/(sym
(1)-key*G1*G2);H=simple(H);
代码如下:
symsJKpKis;
G=(s+1)/(J*s^2+2*s+5);Gc=(Kp*s+Ki)/s;
GG=feedback(G*Gc,1);G1=collect(GG,s)
运行结果为:
G1=(s+1)*(Kp*s+Ki)/(J*s^3+(Kp+2)*s^2+(Ki+Kp+5)*s+Ki)
7.
(a):
代码如下:
>>s=tf('s');G=(211.87*s+317.64)/(s+20)/(s+94.34)/(s+0.1684);
Gc=(169.6*s+400)/s/(s+4);H=1/(0.01*s+1);GG=feedback(G*Gc,H)
运行结果为:
Transferfunction:
359.3s^3+3.732e004s^2+1.399e005s+127056
----------------------------------------------------------------------------------
0.01s^6+2.185s^5+142.1s^4+2444s^3+4.389e004s^2+1.399e005s+127056
状态方程如下:
>>ss(GG)
a=
x1x2x3x4x5x6
x1-218.5-111.1-29.83-16.74-6.671-3.029
x212800000
x30640000
x40032000
x5000800
x6000020
b=
u1
x14
x20
x30
x40
x50
x60
c=
x1x2x3x4x5x6
y1001.0973.5591.6680.7573
d=
u1
y10
Continuous-timemodel.
零极点模型转换如下:
>>zpk(GG)
Zero/pole/gain:
35933.152(s+100)(s+2.358)(s+1.499)
-----------------------------------------------------------------------
(s^2+3.667s+3.501)(s^2+11.73s+339.1)(s^2+203.1s+1.07e004)
(b).程序代码如下:
可先设系统采样周期为0.1s
>>z=tf('z',0.1);G=(35786.7*z^2+108444*z^3)/(4*z+1)/(20*z+1)/(1+74.04*z);
Gc=z/(1-z);H=z/(0.5-z);GG=feedback(G*Gc,H)
运行结果为:
Transferfunction:
-108444z^5+1.844e004z^4+1.789e004z^3
---------------------------------------------------------------------
1.144e005z^5+2.876e004z^4+274.2z^3+782.4z^2+47.52z+0.5
Samplingtime:
0.1
状态方程转换如下:
>>ss(GG)
a=
x1x2x3x4x5
x1-0.2515-0.00959-0.1095-0.05318-0.01791
x20.250000
x300.25000
x4000.12500
x50000.031250
b=
u1
x11
x20
x30
x40
x50
c=
x1x2x3x4x5
y10.39960.63490.10380.050430.01698
d=
u1
y1-0.9482
Samplingtime:
0.1
Discrete-timemodel.
零极点模型转化如下:
>>zpk(GG)
Zero/pole/gain:
-0.94821z^3(z-0.5)(z+0.33)
----------------------------------------------------------
(z+0.3035)(z+0.04438)(z+0.01355)(z^2-0.11z+0.02396)
Samplingtime:
0.1
8.
程序代码如下:
s=tf('s');c1=feedback(1/(s+1)*s/(s^2+2),(4*s+2)/(s+1)^2);c2=feedback(1/s^2,50);
c3=feedback(c1*c2,(s^2+2)/(s^3+14));G=3*c3;
G
运行结果为:
Transferfunction:
3s^6+6s^5+3s^4+42s^3+84s^2+42s
-----------------------------------------------------------------------------------------------------
s^10+3s^9+55s^8+175s^7+300s^6+1323s^5+2656s^4+3715s^3+7732s^2+5602s+1400
9.
程序代码如下:
>>s=tf('s');
G=(s+1)^2*(s^2+2*s+400)/(s+5)^2/(s^2+3*s+100)/(s^2+3*s+2500);
G1=c2d(G,0.01),
G2=c2d(G,0.1),
G3=c2d(G,1)
运行结果如下:
Transferfunction:
4.716e-005z^5-0.0001396z^4+9.596e-005z^3+8.18e-005z^2-0.0001289z+4.355e-005
------------------------------------------------------------------------------------------
z^6-5.592z^5+13.26z^4-17.06z^3+12.58z^2-5.032z+0.8521
Samplingtime:
0.01
Transferfunction:
0.0003982z^5-0.0003919z^4-0.000336z^3+0.0007842z^2-0.000766z+0.0003214
-------------------------------------------------------------------------------------
z^6-2.644z^5+4.044z^4-3.94z^3+2.549z^2-1.056z+0.2019
Samplingtime:
0.1
Transferfunction:
8.625e-005z^5-4.48e-005z^4+6.545e-006z^3+1.211e-005z^2-3.299e-006z+1.011e-007
--------------------------------------------------------------------------------------------
z^6-0.0419z^5-0.07092z^4-0.0004549z^3+0.002495z^2-3.347e-005z+1.125e-007
Samplingtime:
1
绘制曲线如下:
>>subplot(221),step(G)
subplot(222),step(G1)
subplot(223),step(G2)
subplot(224),step(G3)
图像为:
10.
(a)程序代码如下:
>>s=tf('s');G=1/(s^3+2*s^2+s+2);eig(G)
运行结果如下:
ans=
-2.0000
-0.0000+1.0000i
-0.0000-1.0000i
可得系统为临界稳定
(b)程序代码如下:
>>num=1;den=[63211];G=tf(num,den);eig(G)
运行结果为:
ans=
-0.4949+0.4356i
-0.4949-0.4356i
0.2449+0.5688i
0.2449-0.5688i
可得有一对共轭复根在右半平面,所以系统不稳定。
(c)程序代码如下:
>>num=1;den=[11-3-12];G=tf(num,den);eig(G)
运行结果为:
ans=
-2.0000
-1.0000
1.0000
1.0000
可得有两根在右半平面,故系统不稳定。
11.
均假设系统采样时间为0.1s
(a).程序代码如下:
>>num=[-32];den=[1-0.2-0.250.05];H=tf(num,den,'Ts',0.1);abs(eig(H)')
运行结果如下:
ans=
0.50000.50000.2000
可得系统稳定。
(b).程序代码如下:
>>num=[3-0.39-0.09];den=[1-1.71.040.2680.024];H=tf(num,den,'Ts',0.1);abs(eig(H)')
运行结果如下:
ans=
1.19391.19390.12980.1298
可得系统不稳定。
12.
程序代码如下:
>>A=[-0.20.5000;0-0.51.600;00-14.385.80;000-33.3100;0000-10];
B=[0;0;0;0;30];C=[];D=[];G=ss(A,B,C,D);eig(G)
运行结果如下:
ans=
-0.2000
-0.5000
-14.3000
-33.3000
-10.0000
可得系统稳定。
13.
程序代码如下:
>>A=[-5200;0-400;-32-4-1;-320-4];X0=[1201]';
symst;Y=expm(A*t)*X0
运算结果为:
(此为解析解)
Y=
-3*exp(-5*t)+4*exp(-4*t)
2*exp(-4*t)
18*exp(-4*t)-18*exp(-5*t)-18*t*exp(-4*t)+4*t^2*exp(-4*t)
10*exp(-4*t)-9*exp(-5*t)-8*t*exp(-4*t)
数值解代码如下:
f.m函数如下:
functiondx=f(t,x);
A=[-5200;0-400;-32-4-1;-3204];
dx=A*x
主函数如下:
>>x0=[1;2;0;1];[t,y]=ode45('f',[0,5],x0)
运行结果为:
dx=
1.0e+009*
-0.0000
-0.0000
-0.2426
1.9411
14.
(a).程序代码如下:
>>s=tf('s');G=(s+6)*(s-6)/s/(s+3)/(s+4+4j)/(s+4-4j);
rlocus(G)
可得根轨迹图像为:
不存在K使得系统稳定。
(b).程序代码如下:
>>s=tf('s');G=(s^2+2*s+2)/(s^4+s^3+14*s^2+8*s);rlocus(G)
图像如下:
可得015.
代码如下:
采用1/3阶Padé近似拟合延迟项
代码如下:
编写pade_app.m文件:
functionGr=pade_app(c,r,k)
w=-c(r+2:
r+k+1)';vv=[c(r+1:
-1:
1)';zeros(k-1-r,1)];
W=rot90(hankel(c(r+k:
-1:
r+1),vv));V=rot90(hankel(c(r:
-1:
1)));
x=[1(W\w)'];dred=x(k+1:
-1:
1)/x(k+1);
y=[c
(1)x(2:
r+1)*V'+c(2:
r+1)];nred=y(r+1:
-1:
1)/x(k+1);
Gr=tf(nred,dred);
编写paderm.m文件:
function[n,d]=paderm(tau,r,k)
c
(1)=1;fori=2:
r+k+1,c(i)=-c(i-1)*tau/(i-1);end
Gr=pade_app(c,r,k);n=Gr.num{1}(k-r+1:
end);d=Gr.den{1};
>>[n,d]=paderm(2,1,3);s=tf('s');G=(s-1)/(s+1)^5;rlocus(G*tf(n,d))
运行结果:
由图得K∈(0,3.91)能够使得闭环系统稳定
16.
程序代码如下:
>>s=tf('s');G=8*(s+1)/(s^2*(s+15)*(s^2+6*s+10));
figure;bode(G),figure;nyquist(G),figure;nichols(G),grid
3个图如下:
由奈氏图不包围(-1,j0)点及奈氏稳定判据可以得出,该系统稳定。
[gm,pm,wcg,wcp]=margin(G)
gm=
30.4686
pm=
4.2340
wcg=
1.5811
wcp=
0.2336
阶跃响应为:
可得系统稳定。
代码如下:
假设采样周期为0.1s
由图可知,系统不稳定。
[gm,pm,wcg,wcp]=margin(G)
gm=
30.4686
pm=
4.2340
wcg=
1.5811
wcp=
0.2336
阶跃响应如下:
可见系统最后发散,故系统不稳定。
17.
程序代码如下:
>>s=tf('s');
G=100*(1+s/2.5)/(s*(1+s/0.5)*(1+s/50));
Gc=1000*(s+1)*(s+2.5)/((s+0.5)*(s+50));
nyquist(G*Gc),grid
由奈氏图可得,曲线不包围(-1,j0)点,而开环系统不含有不稳定极点,所以根据奈氏稳定判据闭环系统是稳定的。
用阶跃响应来验证得:
可得系统是稳定的。
第二部分:
Simulink在系统仿真中的应用、控制系统计算机辅助设计、控制工程中的仿真技术应用
Simulink仿真图如下:
由plot(tout,yout)
得到响应仿真图为:
微分方程数值解
代码如下:
>>x0=[1;0.5;0.5;0.2];
[t,y]=ode45('diff1',[0,10],x0);
plot(t,y(:
1))
画的图像为:
可得,与simulink搭成模块仿真的一样。
3.
仿真图搭建如下:
仿真结果为:
输出曲线及误差曲线
>>plot(tout,yout)
4.
由图可得以下方程:
5.
模块搭建如下:
提取系统模型为:
>>[A,B,C,D]=linmod('dianji');G=ss(A,B,C,D)
运行结果为:
a=
x1x2x3x4x5x6x7x8x9
x1000000001.4
x20-1000200-0.88011.7600
x300-100000001.4
x4000-10000000
x5130000-1000000
x60294.1-29.4100-149.3019.610
x7000100-0.440000
x80100-10000000
x9-27.5600001.045e+00400-6.66
b=
u1
x10
x20
x30
x41
x50
x60
x70
x80
x90
c=
x1x2x3x