控制系统稳定性和能控能观分析.ppt_第1页
控制系统稳定性和能控能观分析.ppt_第2页
控制系统稳定性和能控能观分析.ppt_第3页
控制系统稳定性和能控能观分析.ppt_第4页
控制系统稳定性和能控能观分析.ppt_第5页
已阅读5页,还剩78页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、自动控制原理课题控制系统稳定性和能控能观分析,一、课题名称与课题要求,1、系统能控性、能观性分析: 1.1 已知连续系统的传递函数模型: 当a分别取1,0,1时,判别系统的能控性和能观测性,2、稳定性分析,2.1 已知闭环系统的传递函数为: 判断系统的稳定性,并给出不稳定极点。 2.2已知离散系统的开环脉冲传递函数为 : 判断单位负反馈系统的稳定性,2.3 给定系统的 状态方程如下,1) 利用MATLAB建立控制系统的数学模型; (2) 分析系统的可控性和可观性; (3) 计算系统的传递函数; (4) 根据传递函数,计算系统的零极点,并判断系统的稳定性; (5) 利用LTI Viewer 工具

2、绘制系统的阶跃响应曲线,验证系统的稳定性,二、现代控制理论的可控性和可观性,1.线性系统状态空间基础 1.1 状态空间基本概念 1.状态 任何一个系统在特定时刻都有一个特定的状态,系统在t0时刻的状态是t0时刻的一种信息量,它与此后的输入一起惟一地确定系统在tt0时的行为。 2.状态变量 状态变量是一个完全表征系统时间域行为的最小内部变量组,3.状态向量 设系统有n个状态变量,用x1(t),x2(t),xn(t)表示,而且把这些状态变量看做向量x(t)的分量,则向量x(t)称为状态向量,记为 x(t)=x1(t),x2(t),.,xn(t)4.状态空间 以状态变量x1(t),x2(t),.,x

3、n(t)为轴的n维实向量空间称为状态空间。5.状态方程 描述系统状态变量与输入变量之间关系的一阶微分方程组(连续时间系统)或一阶差分方程组(离散时间系统)称为系统的状态方程,它表征了输入对内部状态的变换过程,其一般形式为,其中,t是时间变量,u(t)是输入变量。6.输出方程 描述系统输出量与系统状态变量和输入变量之间函数关系的代数方程称为输出方程,它表征了系统内部状态变化和输入所引起的系统输出变换,是一个变化过程。输出方程的一般形式为: y(t)=gx(t),u(t),t,7.状态空间表达式状态方程与输出方程的组合称为状态空间表达式,也称动态方程,它表征一个系统完整的动态过程,其一般形式为:将

4、其写成向量矩阵形式为,其中,x=x1,x2, . ,xn表示n维状态向量;y=y1,y2, . ,ym表示m维输出向量;u=u1,u2, . ,ur表示r维输入向量;A表示系统内部状态的系数矩阵,称为系数矩阵Ann;B表示输入对状态作用的矩阵,称为输入(或控制)矩阵Bnr;C表示输出与状态关系的矩阵,称为输出矩阵Cmn;D表示输入直接对输出作用的矩阵,称为直接转移矩阵Dmr,也称前馈系数矩阵。 A由系统内部结构及其参数决定,体现了系统内部的特性,而B则主要体现了系统输入的施加情况,通常情况下D=0,状态空间描述具有以下特点,1)状态空间描述考虑到了“输入-状态-输出”这一过程,考虑到了被经典控

5、制理论的“输入-输出”描述所忽略的状态,因此它揭示了问题的本质,即输入引起了状态的变化,而状态决定了输出。 (2)输入引起的状态变化是一个运动过程,数学上表现为向量微分方程,即状态方程。状态决定输出是一个变换过程,数学上表现为变换方程,即代数方程。 (3)系统的状态变量个数等于系统的阶数,一个n阶系统的状态变量个数为n。 (4)对于给定系统,状态变量的选择不唯一,状态变量的线性变换结果也可以作为状态变量。 (5)一般来说,状态变量不一定是物理上可测量或可观察的量,但从便于构造控制系统来说,把状态变量选为可测量或可观测的量更合适,2.线性系统的状态可控性与状态可观性,在现代控制理论中,可控性和可

6、观性是两个重要的概念,它们是卡尔曼在1960年提出的,是最优控制和最优估计的设计基础。 可观性针对的是系统状态空间模型中状态的可观测性,它表示系统内部状态(通常是不可以直接测量的)可由系统输出量Y(t)(通常是可以直接测量的)反映的能力。 严格地说,可控性分为两种,一种是系统控制输入U(t)对系统内部状态X(t)的控制能力,另一种是控制输入U(t)对系统输出Y(t)的控制能力。但一般没有特别指明时,指的都是状态的可控性。 系统的可控性和可观性研究一般都基于系统的状态空间表达式,2.1 可控的判据,单输入n阶离散系统可控的充分必要条件是:可控判别阵M=h Gh . Gn-1hnn的秩等于n,即

7、rank(M)=rankh Gh . Gn-1h=n n阶连续系统可控的充分必要条件为可控判别阵M=b Ab . An-1b nn的秩等于n。 对于多输入n阶连续定常系统: 。其中,A为nn阶阵,B为nr阶阵,U为r维输入。系统可控的充分必要条件为可控判别阵M=B AB . An-1B nn的秩等于n,即rank(M)=n。 秩判据说明连续系统状态能控性只与状态方程中的A、B矩阵有关,2.2 可观的判据,对于离散系统,其完全可观的充分必要条件为可观判别阵N=C CG . CGn-1的秩等于n,即rank(N)=n。 线性连续系统完全可观的充分必要条件是可观判别阵N=C CA . CAn-1的秩

8、为n。 该秩判据说明连续系统状态能观测性只与状态方程中的A、C矩阵有关,三、离散控制系统,3.1 离散控制系统概述 数字、离散控制系统与连续控制系统的根本区别在于: (1)离散控制系统中既可以包含连续信号,又可以包含离散信号,是一个混合信号系统。 (2)连续系统中的控制信号、反馈信号以及偏差信号都是连续型的时间函数,而在离散系统中则不然。一般情况下,其控制信号是离散型的时间函数,因此取自系统输出端的负反馈信号在和离散控制信号进行比较时,同样需要采用离散型的时间函数,那么比较后得到的偏差信号也将是离散型的时间函数。 (3)分析和设计数字、离散控制系统的数学工具是Z变换,采用的数学模型是差分方程、

9、脉冲传递函数,3.2 离散控制系统稳定性判据,离散控制系统闭环稳定的充分条件是:闭环脉冲传递函数的全部极点均位于单位圆内。因此判断离散控制系统稳定性的最直接的方法是计算闭环特征方程的根,然后根据根的位置来确定系统的绝对稳定性。 劳斯判据是判断连续系统是否稳定的一种简单的代数判据。由于连续系统和离散系统的稳定区不同,所以在离散控制系统中不能直接应用劳斯判据,必须进行变换。基于双线性变换和劳斯判据的方法能用来判断离散控制系统的稳定性。 该方法是将离散控制系统用双线性变换将Z平面单位圆内的点映射到W平面的左半平面,然后用劳斯判据判别系统的稳定性,四、程序框图,4.1 matlab中显示的菜单,4.2

10、 matlab中的程序的运行结果,4.2.1 第一题运行的结果 当a=-1时的可控阵和可观阵,a=0时的可控阵和可观阵,a=1时的可控阵和可观阵,4.2.2 第二题的运行结果,系统的零极点及增益如下所示,第二题的零极图与根轨迹如下所示,第二题系统的阶跃响应和脉冲响应,第二题的系统的零极点模型为,1)比例微分环节: jw+1 0/2 (2)比例微分环节:(jw)/0.5666+1 0/2 (3)二阶微分环节:(jw)2/1.177-0.8999/1.177jw+1 0 (4)惯性环节: 1/(jw/1.607+1) 0-/2 (5)振荡环节:1/(jw)2/0.3288+0.8806/0.328

11、8jw+1) 0- (6)振荡环节:1/(jw)2/0.631-0.8207/0.631jw+1) 0- 所以,总的(w)=0- /2,第二题的bode图nyquist图,线性时不变工具箱对第二题仿真的验证,4.2.3 第三题的运行结果离散系统单位负反馈的零极图和根轨迹,第三题离散系统的阶跃响应和脉冲响应,第三题离散系统单位负反馈的bode图和nyquist图,LTI Viewer对第三题离散系统单位负反馈的仿真验证,4.2.4 第四题的运行结果(1)数学模型,2)可控性和可观性,3)传递函数,4)系统的零极点,5)利用LTI Viewer工具绘制阶跃响应曲线,五、小节,通过本次课题实践,我对

12、于在matlab中操作矩阵又有了一些全新的认识。对如何画根轨迹、bode图和nyquist图又有了些新的体会。实现了可控可观的秩判据,还有系统稳定性的研究。对于时域、频域、复频域和离散域也有了些体会。在控制理论中,应该将上述几个域综合起来看,这样更加有利于去理解问题和解决问题,六、心得,通过matlab在控制系统中的仿真,我觉得在研究自控方面,matlab确实是一款很优秀的软件。它的轨迹我们可以去跟踪,这种实时监测对于我们非常的重要。matlab在经典控制理论、现代控制理论和智能控制理论中都有很大的用处。经典控制理论是单输入单输出(SISO),而现代控制理论侧重于多输入多输出(MIMO,七、参

13、考文献,1 沈传文主编 自动控制理论 西安:西安 交通大学出版社 2007.1 2 王正林编著 MATLAB/Simulink与控制系统仿真 北京:电子工业出版社 2008.7 3 张德丰等编著 MATLAB/Simulink建模与 仿真实例精讲 北京:机械工业出版社 2010.1,源程序,在编译源程序之前,请在保存matlab源程序的路径下建立四个文件夹,它们分别是:“第一题的txt文档”,“ 第二题的txt文档和截图”,“ 第三题的txt文档和截图”,“ 第四题的txt文档和截图”,这四个文件夹用来保存相应的矩阵、零极点和figure图形。 源程序如下,clcdisp(1.已知连续系统的传

14、递函数模型为:G(s)=s+a/s3+10s2+27s+18,);disp(当a分别取-1,0,1时,判别系统的能控性和能观测性。);disp(2.已知闭环系统的传递函数为:);disp(G(s)=3s4+2s3+s2+4s+2/3s5+5s4+s3+2s2+2s+1);disp(判断系统的稳定性,并给出不稳定极点。);disp(3.已知离散系统的开环脉冲传递函数为,);disp(G(z)=5z5+4z4+z3+0.6z2-3z+0.5/z5);disp(判断单位负反馈系统的稳定性。);disp(4.给定系统的状态方程如下:);disp(dx/dt=Ax+Bu);disp(y=Cx);disp

15、(其中,A=-2 2 -1;0 -2 0;1 -4 0;B=0;0;1;C=1 0 0;);disp(1) 利用MATLAB建立控制系统的数学模型;);disp(2) 分析系统的可控性和可观性;);disp(3) 计算系统的传递函数;);disp(4) 根据传递函数,计算系统的零极点,并判断系统的稳定性;,disp(5) 利用LTI Viewer工具绘制系统的阶跃响应曲线,验证系统的稳定性。);y=1;Y=2;n=3;N=4;x=input(请问您是否要做出选择?y/n );while x=1|x=2cho=input(请输入你要运行的题的序号(1、2、3、4) );%第一题% if cho=

16、1clcdisp(已知连续系统的传递函数模型为:s+a/s3+10s2+27s+18,disp(判别系统的能控性和能观测性。)a=input(请输入变量a的值:)num=1 a;den=1 10 27 18;disp(系统的传递函数为:);G2=tf(num,den)%disp(系统的状态空间模型:);A1,B1,C1,D1=tf2ss(num,den); %将传递函数模型转换成状态空间模型HSA1=size(A1,1);HSB1=size(B1,1);HSC1=size(C1,1);HSD1=size(D1,1);fid=fopen(第一题的txt文档变量a取不同值时的矩阵A、B、C和D.t

17、xt,w);fprintf(fid,%s,传递函数模型中的变量a的值为:);fprintf(fid,%6.2f,a);fprintf(fid,rn,fprintf(fid,%s,矩阵A:); fprintf(fid,rn);for i=1:HSA1 fprintf(fid,%10.2f,A1(i,:); fprintf(fid,rn);end fprintf(fid,%s,矩阵B:); fprintf(fid,rn); for i=1:HSB1 fprintf(fid,%10.2f,B1(i,:); fprintf(fid,rn); end fprintf(fid,%s,矩阵C:); fpri

18、ntf(fid,rn); for i=1:HSC1 fprintf(fid,%10.2f,C1(i,:); fprintf(fid,rn); end fprintf(fid,%s,矩阵D:); fprintf(fid,rn); for i=1:HSD1 fprintf(fid,%10.2f,D1(i,:); fprintf(fid,rn); endfclose(fid); disp(系统的状态空间表达式(状态空间模型):);G=ss(A1,B1,C1,D1) %求状态空间表达式,else disp(系统不可观!); end HS1=size(T,1); fid=fopen(第一题的txt文档变

19、量a取不同值时的可控判别矩阵和可观判别矩阵.txt,w); fprintf(fid,%s,传递函数模型中的变量a的值为:); fprintf(fid,%6.2f,a); fprintf(fid,rn); fprintf(fid,%s,可控判别矩阵:); fprintf(fid,rn); for i=1:HS1 fprintf(fid,%10.2f,T(i,:); fprintf(fid,rn); end HS2=size(N,1); fprintf(fid,%s,可观判别矩阵:); fprintf(fid,rn); for i=1:HS2 fprintf(fid,%10.2f,N(i,:);

20、fprintf(fid,rn); end fclose(fid,disp(用矩阵符号表示的状态空间模型如下:); disp(dx/dt=Ax+Bu (状态方程); disp(y=Cx+Du (输出方程); disp(可控辨别矩阵T为:) T=ctrb(A1,B1) %计算可控判别矩阵 disp(可控判别矩阵T的秩为:) RT=rank(T) %计算可控判别矩阵的秩 if RT=3 disp(系统可控!); else disp(系统不可控!); end disp(可观辨别矩阵N为:) N=obsv(A1,C1) %计算可观判别矩阵 disp(可观判别矩阵N的秩为:) RN=rank(N) %计算

21、可观判别矩阵的秩 if RN=3 disp(系统可观,figure(1); t=0:0.1:10; subplot(1,2,1); impulse(G,t); %计算脉冲响应并添加栅格 grid on; title(脉冲响应); subplot(1,2,2); step(G,t); grid on; %计算阶跃响应并添加栅格 title(阶跃响应); %saveas(figure(1),第一题的txt文档和截图第一题的脉冲响应和阶跃响应.bmp,y=1; Y=2; n=3; N=4; b=input(是否用simulink仿真运行脉冲响应和阶跃响应y/n: ); if b=1|b=2 open

22、_system(untitled8); set_param(untitled8/Transfer Fcn,Numerator,num,Denominator,den); save_system sim(untitled8); open_system(untitled9); set_param(untitled9/State-Space,A,A1,B,B1,C,C1,D,D1); save_system sim(untitled9); end disp(你是否还要继续使用该传递函数模型,) c=input(判别可控性和可观性y/n: ); while c=1|c=2 disp(已知传递函数模型为

23、:s+a/s3+10s2+27s+18,) disp(判别系统的能控性和能观测性。) a=input(请输入变量a的值:) num=1 a; den=1 10 27 18; disp(系统的传递函数为:); G2=tf(num,den,disp(系统的状态空间模型为:); A1,B1,C1,D1=tf2ss(num,den); %将传递函数模型转换成状态空间模型 HSA1=size(A1,1); HSB1=size(B1,1); HSC1=size(C1,1); HSD1=size(D1,1); fid=fopen(第一题的txt文档变量a取不同值时的矩阵A、B、C和D.txt,a); fpr

24、intf(fid,%s,传递函数模型中的变量a的值为:); fprintf(fid,%6.2f,a); fprintf(fid,rn); fprintf(fid,%s,矩阵A:); fprintf(fid,rn); for i=1:HSA1 fprintf(fid,%10.2f,A1(i,:); fprintf(fid,rn); end,fprintf(fid,%s,矩阵B:); fprintf(fid,rn); for i=1:HSB1 fprintf(fid,%10.2f,B1(i,:); fprintf(fid,rn); end fprintf(fid,%s,矩阵C:); fprintf

25、(fid,rn); for i=1:HSC1 fprintf(fid,%10.2f,C1(i,:); fprintf(fid,rn); end fprintf(fid,%s,矩阵D:); fprintf(fid,rn); for i=1:HSD1 fprintf(fid,%10.2f,D1(i,:); fprintf(fid,rn); end,if RN=3 disp(系统可观!); else disp(系统不可观!); end HS1=size(T,1); fid=fopen(第一题的txt文档变量a取不同值时的可控判别矩阵和可观判别矩阵.txt,a); fprintf(fid,rn); f

26、printf(fid,%s,传递函数模型中的变量a的值为:); fprintf(fid,%6.2f,a); fprintf(fid,rn); fprintf(fid,%s,可控判别矩阵:); fprintf(fid,rn); for i=1:HS1 fprintf(fid,%10.2f,T(i,:); fprintf(fid,rn); end,fclose(fid); disp(系统的状态空间表达式(状态空间模型):); G=ss(A1,B1,C1,D1) %求状态空间表达式 disp(用矩阵符号表示的状态空间模型如下:); disp(dx/dt=Ax+Bu (状态方程); disp(y=Cx

27、+Du (输出方程); disp(可控辨别矩阵T为:) T=ctrb(A1,B1) %计算可控判别矩阵 disp(可控判别矩阵T的秩为:) RT=rank(T) %计算可控判别矩阵的秩 if RT=3 disp(系统可控!); else disp(系统不可控!); end disp(可观辨别矩阵N为:) N=obsv(A1,C1) %计算可观判别矩阵 disp(可观判别矩阵N的秩为:) RN=rank(N) %计算可观判别矩阵的秩,HS2=size(N,1); fprintf(fid,%s,可观判别矩阵:); fprintf(fid,rn); for i=1:HS2 fprintf(fid,%

28、10.2f,N(i,:); fprintf(fid,rn); end fclose(fid); figure(1); t=0:0.1:10; subplot(1,2,1); impulse(G,t); %计算脉冲响应并添加栅格 grid; title(脉冲响应); subplot(1,2,2); step(G,t); grid %计算阶跃响应并添加栅格 title(阶跃响应,y=1; Y=2; n=3; N=4; b=input(是否用simulink仿真运行脉冲响应和阶跃响应y/n: ); if b=1|b=2 open_system(untitled8); set_param(untitl

29、ed8/Transfer Fcn,Numerator,num,Denominator,den); save_system sim(untitled8); open_system(untitled9); set_param(untitled9/State-Space,A,A1,B,B1,C,C1,D,D1); save_system,sim(untitled9); end disp(你是否还要继续使用该传递函数模型,) c=input(判别可控性和可观性y/n: ); end x=input(你是否还想返回菜单,继续进行别的题的运行y/n: ); if x=1|x=2 clc disp(1.已知

30、连续系统的传递函数模型为:G(s)=s+a/s3+10s2+27s+18,); disp(当a分别取-1,0,1时,判别系统的能控性和能观测性。); disp(2.已知闭环系统的传递函数为:); disp(G(s)=3s4+2s3+s2+4s+2/3s5+5s4+s3+2s2+2s+1); disp(判断系统的稳定性,并给出不稳定极点。); disp(3.已知离散系统的开环脉冲传递函数为,); disp(G(z)=5z5+4z4+z3+0.6z2-3z+0.5/z5); disp(判断单位负反馈系统的稳定性。); disp(4.给定系统的状态方程如下:); disp(dx/dt=Ax+Bu);

31、 disp(y=Cx,disp(其中,A=-2 2 -1;0 -2 0;1 -4 0;B=0;0;1;C=1 0 0;); disp(1) 利用MATLAB建立控制系统的数学模型;); disp(2) 分析系统的可控性和可观性;); disp(3) 计算系统的传递函数;); disp(4) 根据传递函数,计算系统的零极点,并判断系统的稳定性;); disp(5) 利用LTI Viewer工具绘制系统的阶跃响应曲线,验证系统的稳定性。); x=input(请问您是否还要继续做出选择?y/n ); end end %第一题% %第二题% if cho=2 clc,disp(已知闭环系统的传递函数为

32、:); disp(3s4+2s3+s2+4s+2/3s5+5s4+s3+2s2+2s+1); disp(判断系统的稳定性,并给出不稳定极点。); num=3 2 1 4 2; den=3 5 1 2 2 1; disp(系统的传递函数为:); G=tf(num,den) %get(G) disp(系统的零极点以及增益为:); z,p,k=tf2zp(num,den) %传递函数模型转换为零极点模型 hs1=size(p,1); hs2=size(z,1,fid=fopen(第二题的txt文档和截图零极点及其增益.txt,w); fprintf(fid,%s,以下是该系统的零极点和增益:); f

33、printf(fid,rn); fprintf(fid,%s,极点p为:); fprintf(fid,rn); for i=1:hs1 b=p(i,:); aa=num2str(b); fprintf(fid,%s,aa); fprintf(fid,rn); end fprintf(fid,%s,零点z为:); fprintf(fid,rn); for i=1:hs2 bb=num2str(z(i,:); fprintf(fid,%s,bb); fprintf(fid,rn); end fprintf(fid,%s,系统增益K为:); fprintf(fid,%6.2f,k); fprintf

34、(fid,rn,fclose(fid); disp(由以上的零极点得出该系统不稳定); disp(系统不稳定极点为:); for n=1:hs1 if real(p(n,:)0 p(n,:) fprintf(rn); end end disp(系统的零极点传递函数模型为:); G1=zpk(G) figure(1); %绘制零极图与根轨迹图 subplot(2,1,1); pzmap(G) grid on; title(零极点分布图); subplot(2,1,2); rlocus(num,den); title(根轨迹分布图); saveas(figure(1),第二题的txt文档和截图零极

35、点与根轨迹分布图.bmp,figure(2); %绘制阶跃响应和脉冲响应 subplot(1,2,1); step(G); axis(0 10 -25 10); title(系统阶跃响应); grid on subplot(1,2,2); impulse(G); axis(0 10 -5 5); title(系统脉冲响应); grid on saveas(figure(2),第二题的txt文档和截图系统的阶跃响应和脉冲响应.bmp); figure(3); %绘制Bode图和Nyquist图 subplot(1,2,1); bode(G); %Bode图的绘制 grid on subplot(

36、1,2,2); nyquist(G); %Nyquist图的绘制 hold on grid on,line(0,0,-1,1); %画一条起点为(0,-1),终点为(0,1)的直线 saveas(figure(3),第二题的txt文档和截图频域特性曲线.bmp); %disp(显示裕度及对应频率: ); %Gm,Pm,Wcg,Wcp=margin(G) %显示裕度及对应频率 % y=1; Y=2; n=3; N=4; b=input(是否用simulink仿真运行系统的阶跃响应和脉冲响应y/n: ); if b=1|b=2 open_system(untitled1); sim(untitle

37、d1); open_system(untitled2); sim(untitled2); end cb=input(是否启动matlab自带的根轨迹分析与设计工具rltooly/n: ); if cb=1|cb=2 rltool(G); %根轨迹分析与设计工具rltool end cc=input(是否启动matlab自带的线性时不变系统的分析工具LTI Viewery/n: ); if cc=1|cc=2 ltiview %matlab线性时不变系统图形用户界面LTI Viewer end,x=input(你是否还想返回菜单,继续进行别的题的运行y/n: ); if x=1|x=2 clc

38、disp(1.已知连续系统的传递函数模型为:G(s)=s+a/s3+10s2+27s+18,); disp(当a分别取-1,0,1时,判别系统的能控性和能观测性。); disp(2.已知闭环系统的传递函数为:); disp(G(s)=3s4+2s3+s2+4s+2/3s5+5s4+s3+2s2+2s+1); disp(判断系统的稳定性,并给出不稳定极点。); disp(3.已知离散系统的开环脉冲传递函数为,); disp(G(z)=5z5+4z4+z3+0.6z2-3z+0.5/z5); disp(判断单位负反馈系统的稳定性。); disp(4.给定系统的状态方程如下:); disp(dx/d

39、t=Ax+Bu); disp(y=Cx); disp(其中,A=-2 2 -1;0 -2 0;1 -4 0;B=0;0;1;C=1 0 0;); disp(1) 利用MATLAB建立控制系统的数学模型;); disp(2) 分析系统的可控性和可观性;); disp(3) 计算系统的传递函数;); disp(4) 根据传递函数,计算系统的零极点,并判断系统的稳定性;); disp(5) 利用LTI Viewer工具绘制系统的阶跃响应曲线,验证系统的稳定性。); x=input(请问您是否还要继续选择?y/n,end end %第二题% %第三题% if cho=3 clc disp(已知离散系统

40、的开环脉冲传递函数为,); disp(G(z)=5z5+4z4+z3+0.6z2-3z+0.5/z5); disp(判断单位负反馈系统的稳定性。); numG=5 4 1 0.6 -3 0.5; denG=1 0 0 0 0 0; disp(离散系统的开环脉冲传递函数为:); G=tf(numG,denG,-1) %离散系统的开环脉冲传递函数 z,p,k=tf2zp(numG,denG); hs1=size(p,1); hs2=size(z,1); fid=fopen(第三题的txt文档和截图零散系统开环脉冲传递函数零极点及其增益.txt,w); fprintf(fid,%s,以下是该系统的零

41、极点和增益:); fprintf(fid,rn); fprintf(fid,%s,极点p为:); fprintf(fid,rn,for i=1:hs1 b=p(i,:); aa=num2str(b); fprintf(fid,%s,aa); fprintf(fid,rn); end fprintf(fid,%s,零点z为:); fprintf(fid,rn); for i=1:hs2 bb=num2str(z(i,:); fprintf(fid,%s,bb); fprintf(fid,rn); end fprintf(fid,%s,系统增益K为:); fprintf(fid,%6.2f,k);

42、 fprintf(fid,rn); fclose(fid); figure(1); %绘制离散系统开环脉冲传递函数的零极图和根轨迹 subplot(2,1,1); pzmap(G) %绘制零极图 title(离散系统开环脉冲传递函数的零极图); subplot(2,1,2); %axis(equal) %对两个轴用统一的比例尺度 %zgrid(new) %绘制出由等阻尼系数与自然振荡角频率组成的栅格线 rlocus(numG,denG) %绘制根轨迹图 title(离散系统开环脉冲传递函数的根轨迹); saveas(figure(1),第三题的txt文档和截图离散系统开环脉冲传递函数的零极图和

43、根轨迹.bmp); disp(当反馈为单位负反馈时的传递函数为:); sys_close=feedback(G,1) disp(当反馈为单位负反馈时的零极点及其增益:); zz1,pp1,kk1=zpkdata(sys_close,v) dnumc,ddenc=tfdata(sys_close,v); disp(当反馈为单位负反馈时的零极点模型); G2=zpk(sys_close,figure(2); %绘制离散系统单位负反馈的零极图和根轨迹 subplot(2,1,1); pzmap(sys_close) title(离散系统单位负反馈的零极图); subplot(2,1,2); %axi

44、s(equal) %对两个轴用统一的比例尺度 %zgrid(new) %绘制出由等阻尼系数与自然振荡角频率组成的栅格线 rlocus(dnumc,ddenc) title(离散系统单位负反馈的根轨迹); saveas(figure(2),第三题的txt文档和截图离散系统单位负反馈的零极图和根轨迹.bmp); hs3=size(pp1,1); hs4=size(zz1,1); fid=fopen(第三题的txt文档和截图离散系统单位负反馈的零极点及其增益.txt,w); fprintf(fid,%s,以下是该系统的零极点和增益:); fprintf(fid,rn); fprintf(fid,%s

45、,极点p为:); fprintf(fid,rn,for i=1:hs3 b=pp1(i,:); aa=num2str(b); fprintf(fid,%s,aa); fprintf(fid,rn); end fprintf(fid,%s,零点z为:); fprintf(fid,rn); for i=1:hs4 bb=num2str(zz1(i,:); fprintf(fid,%s,bb); fprintf(fid,rn); end fprintf(fid,%s,系统增益K为:); fprintf(fid,%6.2f,kk1); fprintf(fid,rn); fclose(fid); dis

46、p(由以上的零极点得出该离散系统的单位负反馈系统不稳定); m=input(请输入离散系统的采样次数:); figure(3); %绘制离散系统阶跃响应,subplot(1,2,1); dstep(numG,denG,m) title(离散系统的开环脉冲传递函数的阶跃响应); subplot(1,2,2); dstep(dnumc,ddenc,m); title(离散系统单位负反馈的阶跃响应); saveas(figure(3),第三题的txt文档和截图离散系统单位阶跃响应.bmp); % y=1; Y=2; n=7; N=8; c=input(是否还想继续输入采样次数,以进行单位阶跃响应的仿

47、真y/n: ); while c=1|c=2; m=input(请输入离散系统单位阶跃响应的采样次数:); figure(3,subplot(1,2,1); dstep(numG,denG,m) title(离散系统的开环脉冲传递函数的阶跃响应); subplot(1,2,2); dstep(dnumc,ddenc,m); title(离散系统单位负反馈的阶跃响应); saveas(figure(3),第三题的txt文档和截图离散系统单位阶跃响应.bmp); c=input(是否还想继续输入采样次数,以进行单位阶跃响应的仿真y/n: ); end Ts=input(请输入离散系统单位负反馈的采

48、样周期: ); figure(4); %绘制离散系统单位负反馈的Bode图和Nyquist图 subplot(1,2,1); dbode(dnumc,ddenc,Ts); %Bode图的绘制 grid on title(离散系统单位负反馈的bode图); subplot(1,2,2); w=0.01:0.01:100; dnyquist(dnumc,ddenc,Ts,w); %Nyquist图的绘制,grid on title(离散系统单位负反馈的nyquist图); saveas(figure(4),第三题的txt文档和截图离散系统单位负反馈的频域特性曲线.bmp); y=1; Y=2; n

49、=7; N=8; bc=input(是否启动matlab自带的根轨迹分析与设计工具rltooly/n: ); if bc=1|bc=2 rltool(sys_close); %根轨迹分析与设计工具rltool end cd=input(是否启动matlab自带的线性时不变系统的分析工具LTI Viewery/n: ); if cd=1|cd=2 ltiview %matlab线性时不变系统图形用户界面LTI Viewer end x=input(你是否还想返回菜单,继续进行别的题的运行y/n: ); if x=1|x=2 clc,disp(1.已知连续系统的传递函数模型为:G(s)=s+a/s

50、3+10s2+27s+18,); disp(当a分别取-1,0,1时,判别系统的能控性和能观测性。); disp(2.已知闭环系统的传递函数为:); disp(G(s)=3s4+2s3+s2+4s+2/3s5+5s4+s3+2s2+2s+1); disp(判断系统的稳定性,并给出不稳定极点。); disp(3.已知离散系统的开环脉冲传递函数为,); disp(G(z)=5z5+4z4+z3+0.6z2-3z+0.5/z5); disp(判断单位负反馈系统的稳定性。); disp(4.给定系统的状态方程如下:); disp(dx/dt=Ax+Bu); disp(y=Cx); disp(其中,A=

51、-2 2 -1;0 -2 0;1 -4 0;B=0;0;1;C=1 0 0;,disp(1) 利用MATLAB建立控制系统的数学模型;); disp(2) 分析系统的可控性和可观性;); disp(3) 计算系统的传递函数;); disp(4) 根据传递函数,计算系统的零极点,并判断系统的稳定性;); disp(5) 利用LTI Viewer工具绘制系统的阶跃响应曲线,验证系统的稳定性。); x=input(请问您是否还要继续选择?y/n ); end end %第三题% %第四题% if cho=4 clc disp(给定系统的状态方程如下:); disp(dx/dt=Ax+Bu); dis

52、p(y=Cx); disp(其中,A=-2 2 -1;0 -2 0;1 -4 0;B=0;0;1;C=1 0 0;); disp(1) 利用MATLAB建立控制系统的数学模型;,disp(2) 分析系统的可控性和可观性;); disp(3) 计算系统的传递函数;); disp(4) 根据传递函数,计算系统的零极点,并判断系统的稳定性;); disp(5) 利用LTI Viewer工具绘制系统的阶跃响应曲线,验证系统的稳定性。); A=-2 2 -1;0 -2 0;1 -4 0; B=0;0;1; C=1 0 0; D=0; disp(系统的状态空间表达式(状态空间模型):); G=ss(A,B

53、,C,D) %求状态空间表达式 disp(可控辨别矩阵T为:) T=ctrb(A,B) %计算可控判别矩阵 disp(可控判别矩阵T的秩为:) RT=rank(T) %计算可控判别矩阵的秩,if RT=3 disp(系统可控!); else disp(系统不可控!); end disp(可观辨别矩阵N为:) N=obsv(A,C) %计算可观判别矩阵 disp(可观判别矩阵N的秩为:) RN=rank(N) %计算可观判别矩阵的秩 if RN=3 disp(系统可观!); else disp(系统不可观!); end,HS1=size(T,1); fid=fopen(第四题的txt文档和截图可

54、控判别矩阵和可观判别矩阵.txt,w); fprintf(fid,%s,可控判别矩阵:); fprintf(fid,rn); for i=1:HS1 fprintf(fid,%10.2f,T(i,:); fprintf(fid,rn); end HS2=size(N,1); fprintf(fid,%s,可观判别矩阵:); fprintf(fid,rn); for i=1:HS2 fprintf(fid,%10.2f,N(i,:); fprintf(fid,rn); end fclose(fid); num,den=ss2tf(A,B,C,D); disp(传递函数为:); G=tf(num,

55、den,disp(系统的零极点以及增益为:); z,p,k=tf2zp(num,den) %传递函数模型转换为零极点模型 hs1=size(p,1); hs2=size(z,1); fid=fopen(第四题的txt文档和截图零极点及其增益.txt,w); fprintf(fid,%s,以下是该系统的零极点和增益:); fprintf(fid,rn); fprintf(fid,%s,极点p为:); fprintf(fid,rn); for i=1:hs1 b=p(i,:); aa=num2str(b); fprintf(fid,%s,aa); fprintf(fid,rn); end,fprintf(fid,%s,零点z为:); fprintf(fid,rn); for i=1:hs2 bb=num2str(z(i,:); fprintf(fid,%s,bb); fprintf(fid,rn); end fprintf(fid,%s,系统增益K为:); fprintf(fid,%6.2f,k); fp

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论