收藏 分销(赏)

东北大学自动化控制系统计算机辅助设计实验模板.docx

上传人:a199****6536 文档编号:9291889 上传时间:2025-03-20 格式:DOCX 页数:40 大小:875.92KB 下载积分:12 金币
下载 相关 举报
东北大学自动化控制系统计算机辅助设计实验模板.docx_第1页
第1页 / 共40页
东北大学自动化控制系统计算机辅助设计实验模板.docx_第2页
第2页 / 共40页


点击查看更多>>
资源描述
东北大学自动化控制系统计算机辅助设计实验 38 资料内容仅供参考,如有不当或者侵权,请联系本人改正或者删除。 word编辑 11 控制系统计算机辅助设计 ——MATLAB语言与应用 控制系统计算机辅助设计 第一部分 1 function dx=lorenzeq(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('lorenzeq',[0,100],x0); >> plot(t,y) >> figure;plot3(y(:,1),y(:,2),y(:,3)),grid, 2 function [y,yeq]=f2a(x) yeq=[]; y=4*x(1)^2+x(2)^2-4; >> Aeq=[];Beq=[];A=[];B=[]; >> xm=[0;0]; xM=[];x0=[0;0]; >> f1=inline('x(1)^2-2*x(1)+x(2)'); >> [x,f]=fmincon(f1,x0,A,B,Aeq,Beq,xm,xM,'f2a');x',f ans = 1.0000 0 f = -1 3 ( a) > >s=tf('s');G=(s^3+4*s+2)/s^3/(s^2+2)/[(s^2+1)^3+2*s+5] Transfer function: s^3 + 4 s + 2 ------------------------------------------------------ s^11 + 5 s^9 + 9 s^7 + 2 s^6 + 12 s^5 + 4 s^4 + 12 s^3 ( b) >> z=tf('z',0.1); >> H=(z^2+0.568)/(z-1)/(z^2-0.2*z+0.99) Transfer function: z^2 + 0.568 ----------------------------- z^3 - 1.2 z^2 + 1.19 z - 0.99 Sampling time: 0.1 4 >> A=[0 1 0;0 0 1;-5 -4 -13]; >> B=[0;0;2]; >> C=[1 0 0;0 0 0;0 0 0]; >> D=[0]; >> G=ss(A,B,C,D); >> G a = x1 x2 x3 x1 0 1 0 x2 0 0 1 x3 -5 -4 -13 b = u1 x1 0 x2 0 x3 2 c = x1 x2 x3 y1 1 0 0 y2 0 0 0 y3 0 0 0 d = u1 y1 0 y2 0 y3 0 Continuous-time model. >> G=tf(G) Transfer function from input to output... 2 #1: ---------------------- s^3 + 13 s^2 + 4 s + 5 #2: 0 #3: 0 >> GG=zpk(G) Zero/pole/gain from input to output... 2 #1: ---------------------------------- (s+12.72) (s^2 + 0.2836s + 0.3932) #2: 0 #3: 0 根据微分方程也能够直接写出传递函数模型: >> num=[2]; >> den=[1,13,4,5]; >> G=tf(num,den); >> G Transfer function: 2 ---------------------- s^3 + 13 s^2 + 4 s + 5 >> GG=zpk(G) Zero/pole/gain: 2 ---------------------------------- (s+12.72) (s^2 + 0.2836s + 0.3932) 5 >> num=[1,2]; >> den=[1,1,0.16]; >> H=tf(num,den,'Ts',1); >> H Transfer function: z + 2 -------------- z^2 + z + 0.16 Sampling time: 1 6 function H=feedback(G1,G2,key) if nargin==2;key=-1;end,H=G1/(sym(1)-key*G1*G2);H=simple(H); >> syms J Kp Ki s; >> gc=(Kp*s+Ki)/s; >> g=(s+1)/(J*s^2+2*s+5); >> gg=feedback(g*gc,1) >> gg=feedback(g*gc,1) gg = ((Ki + Kp*s)*(s + 1))/(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); >> Hs=1/(0.01*s+1); >> GG=feedback(G*Gc,Hs) Transfer function: 359.3 s^3 + 3.732e004 s^2 + 1.399e005 s + 127056 ----------------------------------------------------------------- 0.01 s^6 + 2.185 s^5 + 142.1 s^4 + 2444 s^3 + 4.389e004 s^2 + 1.399e005 s + 127056 >> 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) >> z=tf('z'); >> G=(35786.7*z^-1+108444)/[(z^-1+4)*(z^-1+20)*(z^-1+74.04)]; >> Gc=1/(z^-1-1); >> H=1/(0.5*z^-1-1); >> GG=feedback(G*Gc,H) Transfer function: -108444 z^6 + 1.844e004 z^5 + 1.789e004 z^4 ------------------------------------------------------------------ 1.144e005 z^6 + 2.876e004 z^5 + 274.2 z^4 + 782.4 z^3 + 47.52 z^2 + 0.5 z Sampling time: unspecified >> zpk(GG) Zero/pole/gain: -0.94821 z^4 (z-0.5) (z+0.33) ------------------------------------------------------------- z (z+0.3035) (z+0.04438) (z+0.01355) (z^2 - 0.11z + 0.02396) Sampling time: unspecified 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); G=feedback(c1*c2,(s^2+2)/(s^3+14)) Transfer function: s^6 + 2 s^5 + s^4 + 14 s^3 + 28 s^2 + 14 s --------------------------------------------------------------------------------- s^10 + 3 s^9 + 55 s^8 + 175 s^7 + 300 s^6 + 1323 s^5 + 2656 s^4 + 3715 s^3 + 7732 s^2 + 5602 s + 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) Transfer function: 4.716e-005 z^5 - 0.0001396 z^4 + 9.596e-005 z^3 + 8.18e -005 z^2 - 0.0001289 z + 4.355e-005 ----------------------------------------------------------------- z^6 - 5.592 z^5 + 13.26 z^4 - 17.06 z^3 + 12.58 z^2 - 5.032 z + 0.8521 Sampling time: 0.01 >>step(G1) >> G2=c2d(G,0.1) Transfer function: 0.0003982 z^5 - 0.0003919 z^4 - 0.000336 z^3 + 0.0007842 z^2 - 0.000766 z + 0.0003214 ----------------------------------------------------------------- z^6 - 2.644 z^5 + 4.044 z^4 - 3.94 z^3 + 2.549 z^2 - 1.056 z + 0. Sampling time: 0.1 >>step(G2) >> G3=c2d(G,1) Transfer function: 8.625e-005 z^5 - 4.48e-005 z^4 + 6.545e-006 z^3 + 1.211e-005 z^2 - 3.299e-006 z + 1.011e-007 ----------------------------------------------------------------- z^6 - 0.0419 z^5 - 0.07092 z^4 - 0.0004549 z^3 + 0.002495 z^2 - 3.347e-005 z + 1.125e-007 Sampling time: 1 >> step(G3) 10 ( a) >> G=1/(s^3+2*s^2+s+2); >>pzmap(G) 系统极点均在虚轴左侧, 系统稳定 ( b) >> G=1/(6*s^4+3*s^3+2*s^2+s+1); >> pzmap(G) 系统极点在虚轴右侧侧, 系统不稳定 ( c) >> G=1/(s^4+s^3-3*s^2-s+2); >> pzmap(G) 系统极点在虚轴右侧侧, 系统不稳定 11 ( a) >> z=tf('z',0.1); >> H=(-3*z+2)/(z^3-0.2*z^2-0.25*z+0.05); >> pzmap(H) 系统所有极点均在单位圆内, 因此系统稳定 ( b) >> z=tf('z',0.1); >> H=(3*z^2-0.39*z-0.09)/(z^4-1.7*z^3+1.04*z^2+0.268*z+0.024); >> pzmap(H) 系统所有极点不全单位圆内, 因此系统不稳定 12 >> A=[-0.2 0.5 0 0 0;0 -0.5 1.6 0 0;0 0 -14.3 85.8 0;0 0 0 -33.3 100;0 0 0 0 -10]; >> B=[0;0;0;0;30]; >> C=[0 0 0 0 0]; >> G=ss(A,B,C,0) a = x1 x2 x3 x4 x5 x1 -0.2 0.5 0 0 0 x2 0 -0.5 1.6 0 0 x3 0 0 -14.3 85.8 0 x4 0 0 0 -33.3 100 x5 0 0 0 0 -10 b = u1 x1 0 x2 0 x3 0 x4 0 x5 30 c = x1 x2 x3 x4 x5 y1 0 0 0 0 0 d = u1 y1 0 Continuous-time model. >> pzmap(G) 系统所有极点均在虚轴左侧, 因此系统稳定 或 >> eig(G) ans = -0. -0.5000 -14.3000 -33.3000 -10.0000 极点均在左半轴, 因此系统稳定 13 数值解: >> f=@(t,x)[-5*x(1)+2*x(2);-4*x(2);-3*x(1)+2*x(2)-4*x(3)-x(4);-3*x(1)+2*x(2)-4*x(4)]; >> t_final=10; >> x0=[1 2 0 0]; >> [t,x]=ode45(f,[0,t_final],x0); >> plot(t,x) 解析解 function [Ga,Xa]=ss_augment(G,cc,dd,X) G=ss(G);Aa=G.a;Ca=G.c;Xa=X;Ba=G.b;D=G.d; if (length(dd)>0&sum(abs(dd)>1e-5)), if (abs(dd(4))>1e-5), Aa=[Aa dd(2)*Ba,dd(3)*Ba;... zeros(2,length(Aa)),[dd(1),-dd(4);dd(4),dd(1)]]; Ca=[Ca dd(2)*D dd(3)*D];Xa=[Xa;1;0];Ba=[Ba;0;0]; else, Aa=[Aa dd(2)*B;zeros(1,length(Aa)) dd(1)]; Ca=[Ca dd(2)*D];Xa=[Xa;1];Ba=[B;0]; end end if (length(cc)>0&sum(abs(cc))>1e-5),M=length(cc); Aa=[Aa Ba zeros(length(Aa),M-1);zeros(M-1,length(Aa)+1)... eye(M-1);zeros(1,length(Aa)+M)]; Ca=[Ca D zeros(1,M-1)];Xa=[Xa;cc(1)];ii=1; for i=2:M,ii=ii*i;Xa(length(Aa)+i)=cc(i)*ii; end,end Ga=ss(Aa,zeros(size(Ca')),Ca,D); >> cc=[2];dd=[-3,0,2,2];x0=[1;2;0;1]; >> A=[-5,2,0,0;0,-4,0,0;-3,2,-4,-1;-3,2,0,-4];B=[0;0;0;1];C=[2 1 0 0];D=0; >> G=ss(A,B,C,D); >> [Ga,xx0]=ss_augment(G,cc,dd,x0);Ga.a,xx0' ans = -5 2 0 0 0 0 0 0 -4 0 0 0 0 0 -3 2 -4 -1 0 0 0 -3 2 0 -4 0 2 1 0 0 0 0 -3 -2 0 0 0 0 0 2 -3 0 0 0 0 0 0 0 0 ans = 1 2 0 1 1 0 2 >> syms t;y=Ga.c*expm(Ga.a*t)*xx0; >> latex(y); >> latex(y) ans = -6\,{e^{-5\,t}}+10\,{e^{-4\,t}} 14 ( a) >> s=tf('s'); >> g=(s+6)*(s-6)/s/(s+3)/(s+4+4i)/(s+4-4i); >> rlocus(g) ( b) >> s=tf('s'); >> G=(s^2+2*s+2)/(s^4+s^3+14*s^2+8*s); >> rlocus(G) K<5.62 15 >> s=tf('s'); >> G=(s-1)/(s+1)^5; >> G.ioDelay=2 Transfer function: s - 1 exp(-2*s) * -------------------------------------- s^5 + 5 s^4 + 10 s^3 + 10 s^2 + 5 s + 1 >> rlocus(pade(G,2)) 16 ( a) >> s=tf('s'); >> G=8*(s+1)/s^2/(s+15)/(s^2+6*s+10); >> nyquist(G), >> nyquist(G),grid >> bode(G) >> figure;nichols(G),grid >> [gm,pm,wg,wp]=margin(G) gm = 30.4686 pm = 4.2340 wg = 1.5811 wp = 0.2336 >> GG=feedback(G,1) Transfer function: 8 s + 8 ------------------------------------------ s^5 + 21 s^4 + 100 s^3 + 150 s^2 + 8 s + 8 >> pzmap(GG) 经过以上的分析, 能够看出该系统是稳定的。 采用阶跃响应进行验证如下图: >> pzmap(GG) >> step(GG) ( b) >> Z=[-1.31;-0.054;0.957]; >> P=[0;1;0.368;0.99]; >> G=zpk(Z,P,0.45,'Ts',0.1) Zero/pole/gain: 0.45 (z+1.31) (z-0.957) (z+0.054) --------------------------------- z (z-1) (z-0.99) (z-0.368) Sampling time: 0.1 >> nyquist(G);grid >> bode(G) >> nichols(G),grid >> [gm,pm,wg,wp]=margin(G) gm = 0.9578 pm = -1.7660 wg = 10.4641 wp = 10.7340 >> GG=feedback(G,1); >> pzmap(GG) >> step(GG) 17 >> z=[-2.5];p=[0;-0.5;-50]; >> G=zpk(z,p,100/2.5*0.5*50); >> z=[-1;-2.5];p=[-0.5;-50] >>Gc=zpk(z,p,1000); >> GG=feedback(G*Gc,1) Zero/pole/gain: 1000000 (s+1) (s+2.5)^2 ------------------------------------------------------ (s+1) (s^2 + 4.99s + 6.239) (s^2 + 95.01s + 1.002e006) >> bode(GG) 经过bode图能够看出该系统是稳定的。 验证如下: >> step(GG) 第二部分 2 >> Y=dsolve('D4y+5*D3y+6*D2y+4*Dy+2*y=exp(-3*t)+exp(-5*t)*sin(4*t+pi/3)',...) 'y(0)=1','Dy(0)=1/2','D2y(0)=1/2','D3y(0)=0.2'); >> latex(Y) 3 Simulink仿真图形: 系统输出曲线: 系统误差曲线: 4 x1(t)=sin(x2(t)*exp(-2.3*x4(t))) x2(t)=x1(t) x3=sin(x2*exp(-2.3*x4)) x4=x3 5 Simulink仿真图形: 阶跃响应曲线: 6 >> s=tf('s'); >>g=210*(s+1.5)/((s+1.75)*(s+16)*(s+1.5+3*j)*(s+1.5-3*j)); >> gc=52.5*(s+1.5)/(s+14.86); >> step(feedback(g,1)) >> step(feedback(g*gc,1)) 经过两个图比较能够看出, 原系统超调量过大, 震荡严重, 加入控制器后, 系统变得不稳定。 7 >> A=[0 1 0 0;0 0 1 0;-3 1 2 3;2 1 0 0]; >> B=[1 0;2 1;3 2;4 3]; >> Q=diag([1,2,3,4]); >> R=eye(2); >> [K,S]=lqr(A,B,Q,R) K = -0.0978 1.2118 1.8767 0.7871 -3.8819 -0.4668 2.6713 1.0320 S = 5.4400 0.6152 -2.3163 0.0452 0.6152 1.8354 -0.0138 -0.7582 -2.3163 -0.0138 1.9214 -0.3859 0.0452 -0.7582 -0.3859 0.8540 >> eig(A-B*K) ans = -12.2563 -1.6786 + 0.9981i -1.6786 - 0.9981i -1.4627 >> step(ss(A-B*K,B,eye(4),zeros(4,2))) 8 >> A=[-0.2 0.5 0 0 0;0 -0.5 1.6 0 0;0 0 -14.3 85.8 0;0 0 0 -33.3 100;0 0 0 0 -10]; >> B=[0;0;0;0;30]; >> C=[1 0 0 0 0]; >> D=0; >> G=ss(A,B,C,D); >> pole(G) ans = -0. -0.5000 -14.3000 -33.3000 -10.0000 >> zero(G) ans = Empty matrix: 0-by-1 >> P=[-1 -2 -3 -4 -5]; >> K=place(A,B,P) K = Columns 1 through 4 0.0004 0.0004 -0.0035 0.3946 Column 5 -1.4433 >> eig(A-B*K) ans = -5.0000 -4.0000 -3.0000 -2.0000 -1.0000 9 >> open_system(simulink) PID控制参数如下: [0.40725 0.19096 0.21986] 7.9397 0.9011 78.2377
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服