matlab简介及其在控制中的应用_第1页
matlab简介及其在控制中的应用_第2页
matlab简介及其在控制中的应用_第3页
matlab简介及其在控制中的应用_第4页
matlab简介及其在控制中的应用_第5页
已阅读5页,还剩149页未读 继续免费阅读

下载本文档

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

文档简介

1、2 20世纪70年代后期,身为新墨西哥大学计算机科学系主任的Cleve Moler,在给学生开线性代数课程时,他开始用业余时间为学生编写使用方便的LINPACK和EISPACK的接口程序。Cleve Moler给这个接口程序取名为MATLAB,意思是“矩阵实验室(MATrix LABoratory)”。不久以后,MATLAB受到了学生的普遍欢迎,并且,MATLAB也成了应用数学界的一个术语。 1984年,Mathworks公司成立,把MATLAB推向了市场,并继续MATLAB的研制和开发。MATLAB在市场上的出现,为各国科学家开发本学科相关软件提供了基础。 1. MATLAB的产生与发展的产

2、生与发展3 1993年,MATLAB的第一个Windows版本MATLAB 3.5版问世。同年,支持Windows3x的MATLAB 4.0版本推出。 1993年11月,Mathworks公司又推出了MATLAB4.1版本,首次开发了Symbolic Math符号运算工具箱。其升级版本MATLAB 4.2c在用户中有着广泛的应用。 1997年,MATLAB 5.0版本问世了。随后出现了它的升级版本MATLAB5.1/5.2/5.3。 2000年下半年,Mathworks公司推出了他们的最新产品MATLAB 6.0(R12)的试用版,并于2001年初推出了正式版。同前面的版本对比起来,MATLA

3、B 6.0在MATLAB 5.x的基础上着重在计算速度上做了比较大的改善,计算速度有了明显的提高。另外,MATLAB 6.0给人最直接的感受就是用户界面有了很大的改观,更加友好。目前,在社会上广为流传的是它的升级版本MATLAB 6.1,最新为MATLAB 7.1(R14) 。 4MATLAB语言主要有以下其他语言不可比拟的特点。1) 功能强大 MATLAB 4.0以上(不包括4.0版本)的各版本,不仅在数值计算上继续保持着相对其他同类软件的绝对优势,而且还开发了自己的符号运算功能。这样,用户就不必像以前的计算人员一样在掌握MATLAB的同时还要学习另一种符号运算软件。用户只要学会了MATLA

4、B就可以方便地处理诸如矩阵变换及运算、统计及优化等问题了。2. MATLAB的特点的特点52) 语言简单 MATLAB是个成功的语言,它允许用户以数学形式的语言编写程序,比BASIC语言、FORTRAN语言和C语言等更接近于书写计算公式的思维方式。它的操作和功能函数指令就是以平时计算机和数学书上的一些简单的英文单词表达的。由于它是用C语言开发的,它的不多的几个程序流控制语句同C语言差别甚微,初学者很容易掌握。63) 扩充能力强、可开发性强 MATLAB能发展到今天这种程度,它的可扩充性和可开发性起着不可估量的作用。MATLAB本身就像一个解释系统,对其中的函数程序的执行以一种解释执行的方式进行

5、。这样最大的好处是MATLAB完全成了一个开放的系统,用户可以方便地看到函数的源程序,也可以方便地开发自己的程序,甚至创建自己的“库”。 另外,MATLAB并不“排他”,MATLAB可以方便地与FORTRAN、C等语言进行连接,以充分利用各种资源。用户只需将已有的EXE文件转换成MEX文件,就可以方便地调用有关程序和子程序。 74) 编程易、效率高 从形式上看,MATLAB程序文件是一个纯文本文件,扩展名为.m。用任何字处理软件都可以对它进行编写和修改,因此程序易调试,人机交互性强。 81. MATLAB桌面平台1) 启动MATLAB 启动MATLAB有多种方式,最常用的方法就是双击系统桌面的

6、MATLAB图标,也可以在开始菜单的程序选项中选择MATLAB快捷方式。初次启动MATLAB后,将进入MATLAB默认设置的桌面平台。 9102) 桌面平台 默认设置情况下的桌面平台包括6个窗口,分别是MATLAB主窗口、命令窗口、历史窗口、当前目录窗口、发行说明书窗口和工作间管理窗口。下面分别对各窗口做简单介绍。(1)MATLAB主窗口 与MATLAB的早期版本不同的是,MATLAB 6.1增加了一个主窗口,其他的几个窗口都包含在这个大的主窗口中。 11(2)命令窗口 在主窗口的“View”菜单下选择“Command Window”命令,可以打开或关闭MATLAB的命令窗口。其中“”为运算提

7、示符,表示MATLAB正处在准备状态。当在提示符后输入一段运算式并按Enter键后,MATLAB将给出计算结果,然后再次进入准备状态。 clc指令可以清理Command Window(3)历史窗口 在主窗口的“View”菜单下选择“Command History”命令,可以打开或关闭MATLAB的历史窗口。12(4)当前目录窗口 在主窗口的“View”菜单下选择“Current Directory”命令,可以打开或关闭MATLAB的当前目录窗口。(5)发行说明书窗口 发行说明书窗口是MATLAB 6.x版本所特有的,用来说明用户所拥有的Mathworks公司产品的工具包、演示以及帮助信息。在主

8、窗口的“View”菜单下选择“Launch Pad”命令,可以打开或关闭该窗口。 13(6)工作间管理窗口 在主窗口的“View”菜单下选择“Workspace”命令,可以打开或关闭MATLAB的工作间管理窗口,工作间管理窗口是MATLAB的重要组成部分。 clear指令可以清理Workspace 14MATLAB提供了一个程序编辑/调试器。在MATLAB的命令窗口中有三种方式可进入程序编辑调试器:1) 选择菜单栏的“File”项中的“New”或“Open”项。2) 选择工具栏的“New”或“Open”项。3) 在命令窗口中输入edit命令。 在程序编辑调试器里,不同的文本内容分别用不同颜色的

9、字体显示。其中MATLAB的关键字如for、if、end等为蓝色,注释语句为绿色,字符串为红色,其他文本为黑色,这样的颜色设置非常醒目,便于调试。 151617181920n=-5 (键入-5)a (键入a)a= -1n=6 (键入-5)a (键入a)a= 12122键入键入键入23for m=5:-1:1A(n,m)=n2+m2;end24执行结果x = 0 x = 0.1000 x = 0.3000 x = 117.6000 x = 122.5000 x = 127.500025x=1while x=infx=2*x;endx26n=n2;if n10000breakend27282930

10、如函数文件%summ.mfunction x=summ(a,b)global cx=a+b-c调用时global cc=2;m=summ(3,4)m=531 MATLAB下的M函数通常是由function语句引导的,其基本格式为: Function返回变量列表:函数名(输入变量列表) 注释说明语句段 函数体语句 返回变量如果是多个的话(多于1个),则应该用方括号括起来。有了M函数之后,可以用下列形式进行函数调用:返回变量列表:函数名(输入变量的取值) 32注意:两个函数名必须一致。例如,实现加减法运算的M函数调用方法如下: function outl, out2=addec(inl, in2)

11、 outl=inl+in2; out2=inl-in2;然后,在MATLAB的命令窗口调用这个函数文件: a,b=addec(10,20) disp(a,b) % 在命令窗口输出a、b的值显示结果为:30 10 33 与其他科学计算软件相比,MATLAB的一个非常突出的优点就是帮助系统非常完善。它的帮助系统大致可分为以下三大类。1联机帮助系统 与以往版本的联机帮助系统不同,MATLAB 6.1的联机帮助系统更为系统全面,简直就是一本MATLAB的百科全书。 34进入MATLAB联机帮助系统的方法很多,下面介绍其中的三种。 1)直接按下MATLAB主窗口中的按钮。 2)选择“Help”下拉菜单的

12、前四项中的任何一项。 3)在命令窗口中执行helpwin、helpdesk或doc。以上三种方法都可以进入联机帮助系统窗口。 2命令窗口查询帮助 熟练的用户可以使用更为快速的命令窗口查询帮助。这些帮助主要可以分为:help系列、lookfor命令和其他常用帮助命令。 353联机演示系统 单击MATLAB主窗口菜单的“Help”/|“Demos”选项,或在命令窗口输入demo ,将进入MATLAB的演示界面。例如: Toolboxes/Control System:1)Interactive Demos/ RLC Circuit Response;2) Interactive Demos/ Ga

13、in and Phase Margins;3) Case Studies/ Heat Exchanger Control (sim)361. MATLAB数值运算基础1)变量与常量(1)变量在MATLAB语言中变量的命名遵守如下规则: 变量名区分大小写; 变量名长度不超过31位,第31个字符之后的字符将被忽略; 变量名以字母开头,变量名中可包含字母、数字、下划线,但不能使用标点。(2)常量 MATLAB有一些预定义的变量,这些特殊的变量称为常量。3738c2 = 3.0000 + 0.4794ic = 8.7702 + 2.8766ib1 = 2.2361b2 = -1.1071(弧度)b21

14、=b2*180/pi (角度)b3=1b4= -22)复数及其运算392矩阵的基本运算1)矩阵变量的赋值 在MATLAB中,矩阵的输入是很直观的,矩阵的元素用 括起来,相邻元素之间用逗号或空格分隔,而采用分号来换行。 如果在上述赋值的式子末尾加一个分号,则矩阵的内容就不再屏幕上显示了。当矩阵的元素较多不能在同一行内写下时,可以在该行的末尾加三个点号()称为续行符号,表示下面的一行应该紧接在前一行上。在一个语句较长时,也可以使用续行符号。 方向键及控制键可以编辑修改已输入的命令402)矩阵的基本运算41除上述的基本运算外,还有一些矩阵专用运算,例如: inv(A)表示对A矩阵求逆 fliplr(

15、A)表示将矩阵A进行左右翻转 flipud(A)表示将矩阵A进行上下翻转 rot90(A)表示将矩阵A的元素旋转90 42在MATLAB中还经常使用一些初等函数矩阵,常用的有: zeros(m,n) mn全零矩阵 ones(m,n) mn全1矩阵 eye(n) nn单位矩阵 rand(m,n) mn随机矩阵,01之间均匀分布 randn(m,n) mn随机矩阵,01之间正态分布43rand(4,3)lA=fix(15*rand(4,3)lB=fix(15*rand(4,4)lC=B*A443)矩阵的特征系统453数值分析1)极小化 在数值分析中,经常要求确定函数的极值,即最大值或最小值。MAT

16、LAB提供了fminbd和fminsearch两个函数,分别用来寻找一维和n维函数的极值。其中fmin()函数的调用格式为: Xmin=fminbnd(函数名,x1,x2) 其中x1,x2分别为x所在区间两端的值,Xmin为函数最小值对应的x的值 。 462)求零点 MATLAB提供了求函数零极点的函数,函数fzero()用于寻找一维函数的过零点 例如: fplot(humps, 0 2) gridfzero(humps, 0 2)473)积分 MATLAB提供了三个函数trapz、quad和quadl计算函数在有限区域内的积分。trapz()是通过计算梯形面积来近似函数的积分;quad( )

17、使用Simpson递归方法;quadl( )使用Newton-costes递归方法进行数值积分。quad( )函数、quad8( )函数的调用格式为: y=quad(函数名,a,b,tol); y=quadl(函数名,a,b,tol);其中a,b分别为定积分的上下限,tol为变步长积分用的误差限,如果用户不给出误差限,将自动地假定为tol=le-3。通常,quadl比quad更精确些。484)微分 MATLAB提供了一个有限插分函数diff,可以做数值微分,但使用有限插分进行近似将导致噪声的放大,造成较差的结果。A=1 2 3 4 5 6 7 8 9 10B=diff(A)C=diff(A,2

18、) %二次微分5)FFT变换 FFT变换即快速傅立叶变换,是数据分析的基本方法。MATLAB提供了很多实用的数据分析函数.49lx=0 0.1*pi 0.2*pi 0.3*pi 0.4*pi 0.5*pily=sin(x)lx(3)lx(1:5)lx(2:2:7)ly(5 2 6 1)4数组及其运算1)数组简单运算502) 如何创建数组51b*cc*bb*cb.*c52535.多项式的基本运算54555657 从最原始版本的MATLAB开始,图形功能就已经成为基本的功能之。随着MATLAB版本的逐步升级,MATLAB的图形工具箱从简单的点、线、面处理发展到了集二维图形、三维图形甚至四维表现图和

19、对图形进行着色、消隐、光照处理、渲染及多视角处理等多项功能于一身的强大功能包。5801234567-1-0.8-0.6-0.4-0.200.20.40.60.811二维图形5901234567-1.5-1-0.500.511.56001234567-1-0.8-0.6-0.4-0.200.20.40.60.81616201234567-1-0.8-0.6-0.4-0.200.20.40.60.81y=sin(x)xsin(x)maxmin63x=linspace(0,2*pi,30);y=sin(x);plot(x,y)gridaxis(0,5,-1,1)pauseaxis(0,15,-1,1

20、)646501234567-1-0.8-0.6-0.4-0.200.20.40.60.8101234567-1-0.8-0.6-0.4-0.200.20.40.60.816601234567-1-0.500.5101234567-1-0.500.5167-3-2-1012300.10.20.30.40.50.60.70.80.9168-3-2-1012300.10.20.30.40.50.60.70.80.916902468101214-0.3-0.2-0.100.10.20.30.40.50.60.7stem plot702. 基本三维曲线命令71-1-0.500.51-1-0.500.51

21、010203040722222/ )sin(yxyxz7374751.控制系统的模型表示 在MATLAB里,可用4种数学模型表示控制系统,即:传递函数模型、零极点增益模型、状态空间模型以及动态结构图。其中前3种是用数学表达式描述的,每种模型都有连续系统的及离散系统的两种类别;而动态结构图是基于传递函数的图形化形式,就是MATLAB里的SIMULINK结构图。 1)传递函数模型 不论是连续还是离散时间系统,传递函数分子/分母均按s或z的降幂排列。在MATLAB里,都可直接用分子/分母多项式系数构成的两个向量num与den表示系统,即: num=c0,c1,cm; den=a1,a2,an;76

22、在MATLAB中,用函数命令tf()来建立控制系统的传递函数模型,tf()函数命令常用的调用格式为: sys= tf(num, den) sys= tf(num, den, Ts) sys= tf(M) tfsys= tf(sys) sys= tf(num, den)函数返回的变量sys为连续系统的传递函数模型。函数输入参量num与den分别为系统的分子与分母多项式系数向量。 sys= tf(num, den, Ts)函数返回的变量sys为离散系统的传递函数模型。Ts为采样周期,当Ts=-1或者Ts= 时,则系统的采样周期为定义, num与den的 定义同前。 77 sys= tf(M)函数定

23、义一个增益为M的静态系统。tfsys= tf(sys)函数将任意的LTI对象转换成传递函数模型,缺省时使用tzero( )函数将状态空间模型转换成传递函数模型,使用poly( )函数将零极点增益模型转换成传递函数模型。782)零极点增益模型在MATLAB中,用函数命令zpk()来建立控制系统的零极点增益模型,zpk()函数的调用格式为: sys= zpk(num, den) sys= zpk(num,den, Ts) sys= zpk(M) tfsys= zpk(sys)其中: sys= zpk(num,den)函数返回的变量sys为连续系统的零极点增益模型。函数输入参量的含义同tf()函数命

24、令的解释。 793)状态空间模型 在MATLAB中,用函数ss()来建立控制系统的状态空间模型,或者将传递函数模型与零极点增益模型转换为系统状态空间模型。ss()函数的调用格式为: sys= ss(a, b, c, d) sys= ss(a, b, c, d, Ts) sys= ss(d) sys_ss= ss(sys) sys= ss(a, b, c, d)函数返回的变量sys为连续系统的状态空间模型。函数输入参量a, b, c, d分别对应于系统的A, B, C, D参数矩阵。 80sys= ss(a, b, c, d, Ts)函数返回的变量sys为离散系统的状态空间模型。Ts为采样周期,

25、当Ts= -1或者Ts= 时,则系统的采样周期未定义,a, b, c, d的 定义同前。 。 sys= ss(d)函数等价于sys= ss( , , ,d)。sys_ss= ss(sys)函数是将任意的LTI对象sys转换成状态空间模型。81 解决实际问题时,常常需要对自控系统的数学模型进行转换。MATLAB 6. 提供了前三种数学表达式数学模型(传递函数模型、零极点增益模型与状态空间模型)之间转换的函数:ss2tf(),ss2zp(),tf2ss(),tf2zp(),zp2ss(),zp2tf()。这些函数之间的转换功能可用下表说明。82 函 数名 函 数 功 能ss2tf 将系统状态空间模

26、型转换为传递函数模型ss2zp 将系统状态空间模型转换为零极点增益模型tf2ss 将系统传递函数模型转换为状态空间模型tf2zp 将系统传递函数模型转换为零极点增益模型zp2ss 将系统零极点增益模型转换为状态空间模型zp2tf 将系统零极点增益模型转换为传递函数模型832. 环节方框图模型的化简 系统是由多个环节组成。每个环节又是由多个元件构成的。环节在MATLAB里又叫模块。以下介绍环节方框图模型的化简。1) 环节串联连接的化简 使用series()函数命令,不必做多项式的乘除运算即可实现两个环节传递函数(sys1与sys2)串联连接。如果sys1= tf(num1,den1),sys2=

27、 tf(num2,den2),其命令格式为:sys= series(sysl,sys2) 84 如果已知两个环节状态空间模型的矩阵组分别为:(a1,b1,c1,d1)与(a2,b2,c2,d2),则求两个环节串联连接等效系统状态空间模型a,b,c,d矩阵组的命令格式为:a,b,c,d= series(a1,bl,cl,dl,a2,b2,c2,d2)需要特别指出,series()函数命令还可以将多个环节按两两串联的形式多次递归调用加以连接,进行等效化简。85 实际上sys= series(sysl,sys2)命令现在很少用,已由命令sys=sys1*sys2*sysn所取代,这样命令中不仅省掉了

28、“series()”字符,而且可以实现多个传递函数模块的串联,一次就可以求出其等效传递函数。 但值得一提的是:sys=sys1*sys2*sysn命令只适合于求解多个传递函数模块串联时的等效传递函数,不能用于求解状态空间模型模块串联时的等效系统状态空间模型。 862) 环节并联连结的化简 parallel()函数命令可以将两个环节并联连接进行等效化简。它既适用于连续时间系统也适用于离散时间系统。parallel()函数命令调用格式有:num,den= parallel(numl,denl,num2,den2) 实 际 上 这 个 命 令 现 在 很 少 用 , 已 由 命 令sys=sysl+

29、sys2+sysn所取代,这样命令中不仅省掉了“parallel()”字符,而且可以实现多个传递函数模块的并联求其代数和,一次就可以求出其等效传递函数。87 parallel()函数命令调用格式还有: a,b,c,d= parallel(a1,bl,cl,dl,a2,b2,c2,d2)这两种命令调用格式都是将两环节的输入连接在一起并作为系统的输入。还需要指出,parallel()函数命令也可以将多个环节按两两并联递归调用加以连接,进行等效化简。883) 环节反馈连结的化简 两个环节的反馈连接见。控制系统环节的反馈连接及其等效化简就是模块方框图模型的反馈连接及其化简。 G1(S) u(t) +反

30、馈连接结构图 - G2(S) y(t)89 MATLAB中的feedback()函数命令可将两个环节按反馈形式进行连接后求其等效传递函数。G1为闭环前向通道的传递函数,G2为反馈通道的传递函数。feedback()函数既适用于连续时间系统,也适用于离散时间系统。 feedback()函数命令格式为: G=feedback(G1,G2,sign) a,b,c,d=feedback(a1,b1,c1,d1,a2,b2,c2,d2,sign) num,den=feedback(num1,den1,num2,den2,sign) 90 G=feedback(G1,G2,sign)函数可将两个环节按反馈

31、方式连接起来,环节G1的所有输出均连接到环节2的输入,环节G2的所有输出均连接到环节G1的输入,sign是指到连接的符号,sign缺省时,默认为负,即sign=-1。 num,den=feedback(num1,den1,num2,den2,sign)可得到类似的连接,只是子系统与闭环传递函数都是用分子分母s多项式的形式表示的。现在这个命令格式很少使用了,已被G=feedback(G1,G2,s由n)格式所取代。913.控制系统的性能分析的MATLAB实现1) 控制系统时域分析的MATLAB实现(1)控制系统时域响应仿真的主要问题 时域分析法是根据自动控制系统微分方程,用拉普拉斯变换求解动态响

32、应的过程曲线。典型的动态过程响应有单位阶跃响应、单位斜坡响应、单位加速度响应与单位冲激响应等。 时域分析的另外一个目的是求解响应的性能指标。通常将控制系统跟踪或复现阶跃输入信号响应的指标作为系统控制性能的指标。阶跃响应的一般性能指标有:峰值时间tp、超调量%、调节时间ts、及稳态误差ess。92MATLAB计算机仿真是用先进的计算机程序来实现动态响应曲线的绘制过程,既简单方便,又快捷高效而准确。 此外,MATLAB仿真绘制的响应曲线,纵、横坐标都自动产生有自适应能力的精确刻度,从曲线的形状可以直接计算出响应的性能指标。 93(2)时域分析MATLAB实现的方法 与控制系统其他的MATLAB仿真

33、一样,时域响应MATLAB仿真的方法也有两种,一种是在MATLAB的函数指令方式下进行时域仿真;另一种是在SIMULINK窗口菜单操作方式下进行时域仿真。 利用MATLAB所提供的求取连续系统的单位阶跃响应函数step(),单位冲激响应函数impulse(),零输入响应函数initial()以及其他函数都可以求出其相应的响应。 MATLAB也提供了相应离散系统的单位阶跃响应函数dstep(),单位冲激响应函数dimpulse(),零输入响应函数dinitial()以及其他函数也可以求出其相应的响应。 94 求连续系统单位阶跃响应的函数step() 函数命令调用格式如下: step(sys) s

34、tep(sys,t) step(sysl,sys2,,sysn) y,t,x=step(sys) 函数命令使用说明: step(sys)函数用来计算系统的单位阶跃响应,可用于SISO或者MIMO的连续时间系统。LTI对象sys可以是由函数tf()、zpk()、ss()中任何一个建立的闭环系统模型。95 step(sys,t)函数用于计算系统的阶跃响应,函数中,可以指定为一个仿真终止时间,此时t为一标量;也可以设置为一个时间矢量(例如用t=0:dt:Tfinal命令)。若是离散系统,时间间隔出必须与采样周期匹配。step(sysl,sys2,,sysn)函数可同时仿真多个LTI对象。96 y,t

35、,x=step(sys)函数为带有输出变量引用的函数,可计算系统阶跃响应的输出数据,而不绘制出曲线。输出变量y是系统的输出响应矢量;输出变量t 为取积分值的时间矢量;输出变量x是系统的状态轨迹数据。对于MIMO系统,y的维数为:(1ength of t)*(number of outputs)*(number of inputs),x的维数为:(1ength of t)*(number of states)*(number of inputs)。 需要特别指出的是,输出变量y,t,x三个元素的顺序不能错,尤其是t 与x的顺序,如果三个元素的顺序弄错,会给与step97T1=1;num=1;de

36、n=T1, 1;sys=tf(num,den)t=0:0.1:10;step(sys,t), gridhold onT1=2;num=1;den=T1, 1; sys=tf(num,den)step(sys,t)11)(1sTsG98 求连续系统单位冲激响应的函数impulse() 函数命令调用格式如下: impulse(sys) impulse(sys,t) impulse(sysl,sys2,,sysN) y,t,x=impulse(sys) 99函数命令使用说明: impulse(sys)函数用来计算系统的单位冲激响应,可用于SISO或MIMO的连续时间系统或离散时间系统。计算离散时间系

37、统单位冲激响应的函数为dimpulse()。sys可以是由函数tf()、zpk()、ss()中任何一个建立的系统闭环模型。 impulse(sys,t)函数用于计算系统的单位冲激响应,函数中t 可以指定为一个仿真终止时间,此时t为一标量;也可以设置为一个时间矢量。 impulse(sysl,sys2,,sysN)函数可同时仿真多个LTI对象。100 y,t,x=impulse(sys)函数为带有输出变量引用的函数,可计算系统单位冲激响应的输出数据,而不绘制出曲线。y,t,x 的其他解释同step()函数的。clf % 清图sys=tf(1,20 1) % G(s)=1/(20s+1)disp(

38、Model of PID Controller)sysc=3+tf(0.2*0 1,1 0)+tf(1*0 1,0 1)sysopen=sysc*sys;sysclose=feedback(sysopen,1);impulse(sysclose,b,0:0.1:50) 101 求连续系统零输入响应的函数initial() 函数命令调用格式如下: y,t,x= initial(sys) initial(sys,x0) initial(sys,x0, t) initial(sysl,sys2,,sysN,x0) 102函数命令使用说明: initial(sys,x0)函数用来计算系统的零输入响应,

39、x0为初始状态。需要特别指出,sys系统必须是由矩阵组(A,B,C,D)描述的状态空间模型。 initial(sys,x0, t)函数用于计算系统的零输入响应,函数中,可以指定为一个仿真终止时间,此时t为一标量;也可以设置为一个时间矢量。 initial(sysl,sys2,,sysN,x0)函数可同时仿真多个LTI对象。103num=1den=1,2,1,3,4,5z,p=tf2zp(num,den) % 转换为零极点增益模型ii=find(real(p)0) % 找到中实部大于0的极点n=length(ii) % n=2 ,因此系统不稳定54321)(2345ssssss1)稳定性判断系统

40、稳定的条件是:传递函数的极点均位于S平面的左半部,即其实部均应为负。例:4.控制系统的稳定性分析和误差计算104num=1den=1,2,1,3,4,5p= roots(den) ii=find(real(p)0) % 找到中实部大于0的特征根n=length(ii) % n=2 ,因此系统不稳定另外一种方法是求其特征根105k=6;z=-0.5;p=-2 1 0;num,den =zp2tf(z,p,k)sys=tf (num,den)sysc=feedback(sys,1)roots(sysc.den1) % 求特征方程的根3(21)( )(2)(1)sG ss ss2)误差计算已知一个单

41、位负反馈系统开环零极点增益模型为:试绘制出该系统的单位阶跃响应和斜波响应曲线及其稳态误差(1) 先进行稳定性判断ans-0.1084+1.9541i-0.1084-1.9541i-0.7832可见所有特征根的实部均为负值,因此系统是稳 定的106t=0:0.1:30;y=step(sysc,t );ess=1-y;subplot(121),plot(t,y),gridsubplot(122),plot(t,ess),gridess(length(ess) %计算误差 ans=-0.0322(2) 求系统系统的单位阶跃响应及其误差107108t=0:0.1:50 ;n=sysc.num1, d=

42、sysc.den1,0sysx=tf(n,d)yx=step(sysx,t);es=t-yx;subplot(121),plot(t,t,yx),gridsubplot(122),plot(t,es),gridessx=es(length(es) %计算误差 essx=-0.6678(3) 求系统系统的斜波响应响应曲线及其误差1091102) 控制系统频域分析的MATLAB实现(1)控制系统频域响应仿真的主要问题 对于频域分析,本书论述的MATLAB仿真就是用先进的计算机仿真技术来精确绘制Bode图、Nyquist曲线图、Nichols曲线图等三种曲线,并计算系统的频域性能指标:剪切频率(也叫

43、截止频率)、- 穿越频率、相角稳定裕度、幅值稳定裕度,以便研究系统控制过程的稳定性、快速性及稳态精度等性能。111(2)频域分析MATLAB实现的方法 频域分析在经典控制里占有重要的地位。传统的频域分析方法是计算数据,绘制Bode图,并求出频域性能指标。这种老办法要耗费大量的时间、精力,而且计算数据的精确度还不一定能够得到保证。借助于计算机及其软件,特别是利用MATLAB软件,运行它提供频率分析的函数,能够方便、简单、快捷地绘制三种曲线:Bode图、Nyquist曲线和Nichols曲线图,并计算出频域性能指标,还可以借助于这些曲线对系统进行分析。 112 求连续系统Bode图的函数bode(

44、) 函数命令调用格式: mag,phase,w=bode(sys) bode(sys) bode(sys,w) bode(sysl,sys2,sysn) bode(sysl,sys2,,sysn,w) 113函数命令使用说明: bode(sys)函数用来计算并显示绘制的系统Bode图,LTI对象sys可以是由函数tf()、zpk()、ss()中任何一个函数建立的系统开环模型。 bode(sys,w)函数用于显示绘制的系统Bode图,函数中输入参数w用来定义绘制Bode图时的频率范围或者频率点。 bode(sysl,sys2,,sysn,w)函数可同时在一个窗口绘制多个LTI对象的Bode图。

45、114k=4;ng=1;dg=1,2,0; % 开环传递函数(s)=4/s(s+2)w=logspace(-1,2,100); % 10-110+2的对数横坐标,并分100个点cn,cd=cloop(k*ng,dg); % 求闭环系统的传递函数bode(cn,cd,w);grid % 画带网格的伯德图115 求离散系统Bode图的函数dbode()函数命令调用格式:mag,phase,w=dbode(a,b,c,d,Ts)mag,phase,w=dbode(a,b,c,d,Ts,iu)mag,phase,w=dbode(a,b,c,d,Ts,iu,w)mag,phase,w=dbode(num

46、,den,Ts)mag,phase,w=dbode(num,den,Ts,w)116 计算(绘制)系统Nyquist曲线的函数nyquist()函数命令调用格式:re,im,w=nyquist(sys)nyquist(sys)nyquist(sys,w)nyquist(sysl,sys2,sysn) nyquist(sysl,sys2,sysn,w)117 求连续系统Nichols曲线的函数nichols()函数命令的调用格式:mag,phase,w= nichols(sys)nichols(sys)nichols(sys,w)nichols(sysl,sys2,sysn)nichols(sy

47、sl,sys2,,sysn,w)118 求系统幅值裕度与相位裕度的函数margin()函数命令的调用格式:Gm,Pm,Wcp,Wcg= margin(sys)Gm,Pm,Wcp,Wcg= margin(mag,phase,w)margin(sys)margin(mag,phase,w)119sys=tf(3,6 2 2)bode(sys);gridGm,Pm,Wc,Wg=margin(sysd) % margin-计算增益和相位裕度函数 % Gm-增益裕度(即相位-180度处所对应的幅频特性绝对值的倒数) % Wg-增益裕度对应的频率(即相位-180度处的频率) % Wc-剪切频率(即幅频特性

48、增益为0时的频率) % Pm-相角裕度(即剪切频率处,使系统达到临界稳定状态时所需的附加相移)120clfnum=4*0.5,1den=conv(1,0,conv(2,1,1/64,0.05,1)bode(num,den),gridnyquist(num,den),grid) 105. 0641)(12)(1() 15 . 0(4)(2ssssssG频率响应1215 .连续系统和离散系统相互转换 MATLAB提供了连续系统和离散系统相互转换的函数,如书表4-3所示。其中,d表示离散系统(discrete);c表示连续系统(continuous);2表示to;Ts表示采样周期,单位为s;函数中的

49、method表示转换时选用的变换方法,基本含义如表4-4所示,默认的方式是zoh。 12212312412( )(30)G ss s2210( )65G sss例4-19 已知一个连续线性系统如图4-25所示,对象模型 采样周期Ts=0.1s,试求系统的脉冲闭环传递函数。125解 MATLAB程序代码如下:%example4_19 clear Ts=0.1; %采样周期 num1=2; den1=1,30,0; num2=10; den2=1,6,5; G1=tf(num1,den1) G2=tf(num2,den2) G1d=c2d(G1,Ts) % 采用零阶保持方法进行系统变换 G2d=c

50、2d(G2,Ts) Gopen=G1d*G2d Gclose=feedback(Gopen,1) %建立单位负反馈闭环系统模型126显示结果如下:ransfer function: 2-s2 + 30 sTransfer function: 10-s2 + 6 s + 5Transfer function: 0.004555 z + 0.00178-z2 - 1.05 z + 0.04979 Sampling time: 0.1127ransfer function: 2-s2 + 30 sTransfer function: 10-s2 + 6 s + 5 Transfer function

51、: 0.004555 z + 0.00178-z2 - 1.05 z + 0.04979 Sampling time: 0.1 128Transfer function: 0.04117 z + 0.03372-z2 - 1.511 z + 0.5488 Sampling time: 0.1 Transfer function: 0.0001875 z2 + 0.0002268 z + 6e-005-z4 - 2.561 z3 + 2.185 z2 - 0.6514 z + 0.02732 Sampling time: 0.1 Transfer function: 0.0001875 z2 +

52、 0.0002268 z + 6e-005-z4 - 2.561 z3 + 2.185 z2 - 0.6512 z + 0.02738 Sampling time: 0.11296 . 控制系统SIMULINK仿真1)设置SIMULINK仿真参数 在仿真之前通常要对仿真参数进行设置,这就是主菜单项“Simulation”下“Simulation Parameters”菜单命令要完成的任务。对于比较简单的模型,可以使用系统的缺省值而不用进行过多的参数设置。设置仿真参数是采用菜单方式进行仿真最主要的工作。下面介绍两个主要的标签页的参数设置方法。(1)解算器(Solver)标签页的参数设置(2)工作

53、空间(Workspace I/O)标签页参数设置1302)仿真的开始与停止 建立了控制系统的仿真结构图,并且设置完仿真参数之后,就可以对系统进行仿真实验了。通常,启动与停止仿真有如下两种方法: 在 S I M U L I N K 的 模 型 窗 口 下 , 选 择 其 窗 口 主 菜 单“Simulation”“Start”命令可以对系统进行仿真。仿真开始后“Start”变为“Pause”,选中“Pause”可以暂停仿真的执行,要停止仿真可以选择“Stop”。 单击模型窗口下的“Start Simulation”按钮,也可以对系统进行仿真。仿真开始后“Start Simulation”按钮变为

54、“Pause Simulation”按钮,单击“Pause Simulation”按钮可以暂停仿真,要停止仿真可以选择“Stop”按钮。1313) 观察SIMULINK的仿真结果 控制系统仿真后的结果,可以用SIMULINK提供的许多观察工具加以查看,还可以利用SIMULINK提供的分析工具对仿真结果进行分析。 SIMULINK提供了以下几种仿真结果分析方法: 第一种是将仿真结果信号输入到输出模块“Scope”示波器、“XY Graph”二维X-Y图形显示器与“Display”数字显示器中直接查看图形或者数据。 132 第二种是将仿真结果信号输入到“To Workspace”模块中,即保存到M

55、ATLAB工作空间里,再用绘图命令在MATLAB命令窗口里绘制出图形。 第三种是将仿真结果信号返回到MATLAB命令窗口里,再利用绘图命令绘制出图形。133 4) 利用SIMULINK动态结构图仿真 这种仿真方法实现的基本思路是:先将动态结构图转换为状态空间模型,然后再仿真。利用SIMULINK提供的linmod ( )或linmod2 ( )两个函数,从连续系统中提取线性模型。两个函数命令执行后,都可以得到一个用A,B,C,D表达的状态空间模型。然后就可以对这个状态空间模型来进行各种仿真。134 连续系统的线性化模型 SIMULINK提供的“linmod”和“linmod2”两个函数,可以从

56、连续系统中提取线性模型,也就是两个函数命令执行后,都可以得到一个用A,B,C,D表达的状态空间模型。它们的调用格式如下: A, B, C, D=linmod(model name, x, u, para, xpert, upert) A, B, C, D=linmods2(model name, x, u, para, apert, bpert, cpert, dpert) 135 其中: 输入参数model name为模型名称,是必不可少的,它是被仿真系统的动态结构方框图模型的文件名。动态结构图模型文件名可以省略扩展名,不影响函数的使用也不影响调用函数之程序的使用。 输入参数x和u分别为系统

57、的工作点状态和输入信号。缺省设置值为全零向量。 136 输入参数para为二元向量。para(2)指定时间点,缺省设置值为0。para(1)指定计算时所用的扰动值,在“linmod”中,缺省设置值为le-5:在“linmod2”中,缺省设置值是le-8。允许缺省。 输入参数xpert和upert分别设置状态分量和输入分量的扰动值,允许缺省。 apert, bpert, cpert, dpert用来设置系统状态与输入的综合扰动值。 需要指出,虽然linmod2()函数命令执行后的结果比linmod()的准确,但是它运行的时间较长。137 离散系统的线性化模型 SIMULINK提供的dlinmod

58、()函数能够从离散、多频或混合系统中提取一个任何给定采样频率的近似线性模型。当采样时间ts取为零时,就可得到近似的连续线性模型;否则,得到离散线性模型。该指令的一般调用格式是 Ad, Bd, Cd, Dd=linmod(modelname, ts, x, u, para,) 138 其中:第一、第二输入参数是必不可少的,ts是指定的采样时间。 在原系统稳定的前提下,若ts是原系统所有采样周期的整数倍,或者ts不小于原系统中最慢的采样周期,则由“dlimod”所得线性模型在ts采样点上与原系统有相同的频率响应和时间响应。输入参数x、u和para的解释同连续系统的线性化模型。139 5)利用线性模

59、型进行仿真 有了系统的线性模型,就可以利用MATLAB提供的仿真函数对系统来进行各种仿真。 如利用step(sys)或step(A, B, C, D)自动绘制出系统单位阶跃响应曲线。 利用bode(sys)或bode(A, B, C, D)函数绘制控制系统的对数振幅频率特性曲线与对数相位频率特性曲线。 利用margin(sys)函数求出系统的频域性能指标,还可以把频域性能指标附在波德图上。140设单位反馈系统的被控对象为设单位反馈系统的被控对象为 , ,则标准则标准PID控制仿真程序如下:控制仿真程序如下:% Design digital PID Controller using Ziegle

60、r-Nichols% =% Create system model% =sys=tf(3,6 2 2,inputdelay,1.4); % tf-建立传递函数模型Ts=0.1; % 采样周期sysd=c2d(sys,Ts) % c2d -连续的时间系统转化为离散的时间系统-1.423e( )6S22G sS1420.024720.00244( )1.9640.9672zG zzzz141% Find critical valuecrs Kcr,Wcr% =Gm,Pm,Wc,Wg=margin(sysd) % margin-计算增益和相位裕度函数% Gm-增益裕度(即相位-180度处所对应的幅频

温馨提示

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

评论

0/150

提交评论