1、第9章 MATLAB在自动控制 原理与系统中的应用9.1 学习自动控制原理的工具软件MATLAB9.2 用MATLAB求拉氏变换与反变换9.3 控制系统数学模型的MATLAB的实现9.4 用MATLAB解决时域分析的问题9.5 用MATLAB解决频率分析问题9.6 PID校正设计MATLAB实现举例9.7 用MATLAB实现频率法校正举例9.8 用MATLAB仿真单闭环调速系统9.9 用MATLAB仿真双闭环调速系统 9.1 学习自动控制原理的工具软件学习自动控制原理的工具软件MATLAB9.1.1 先进的软件系统先进的软件系统MATLAB9.1.2 MATLAB7的程序设计环境的程序设计环境
2、9.1.3 基本操作基本操作9.1.4 M文件文件9.1.5 MATLAB的绘图功能的绘图功能9.1.1 先进的软件系统先进的软件系统MATLAB自动控制原理的时域分析、根轨迹分析、频域分析、控制系统的设计等问题,要求数学基础扎实,对抽象的诸如Bode图与描述函数以及状态空间等分析工具有极强的想象力,要能承受得住复杂、繁琐的计算与绘图。其实,MATLAB软件以解决繁琐而复杂的计算,简单、方便又精准地绘图,并用丰富多彩的图形来说明抽象的控制原理等而著称,是一个先进而高效的工具。MATLAB程序设计语言是美国MathWorks公司于20世纪80年代中期推出的高性能数值计算软件。经过MathWork
3、s公司二十几年的开发、扩充与不断完善,MATLAB已经发展成为适合多学科、功能特强、特全的大型软件系统。2005年8月,MathWorks公司已经推出了MATLAB7.1版。在国外MATLAB已经经受了多年考验。在欧美高校,MATLAB已经成为线性代数、自动控制理论、数理统计、数字信号分析与处理、动态系统仿真等高级课程的基本数学工具,成为高校大学生、研究生必须掌握的基础知识与基本技能。在科学研究与工程技术应用中常常要进行大量的数学运算。在当今计算机时代,通常的作法是借助高级语言Basic、Fortran和C语言编制计算程序,输入计算机做近似计算。但是,这需要熟练地掌握所用语言的语法规则与编制程
4、序的相关规定,而且编制程序绝非易事。使用MALAB编程运算与人进行科学计算的思路和表达方式完全一样,MALAB的语法更贴近人的思维方式,用MATLAB编写程序,犹如在一张演算纸上排列书写公式,运算求解问题,十分方便。MATLAB特别适合进行自动控制原理的实现。还有,MATLAB语言语句简单,极其容易学习与使用。自动控制本身还有很多经典理论问题需要计算,还有很多现代控制理论问题需要研究,再要为学习这种语言及其语法规则花太多的时间与精力是不可取的。MATLAB正好具有语言简单,学习与使用都很容易、简单、方便等优点,所以它是一个理想的工具。最后,MATLAB界面友好,使得从事自动控制的科技工作者乐于
5、接触它,愿意使用它MALAB的强大方便的图形功能,可以使得重复、繁琐的计算与绘制图形的笨重劳动被简单、轻而易举的计算操作所代替。而且数据计算准确,图形绘制精准且精致,这是过去从事本专业的人所追求与期盼的事情。随着MATLAB软件的出现,它的Toolbox与Simulink仿真工具,为自动控制原理MATAB的实现提供了一个强有力的工具,使控制系统的计算与仿真的传统方法发生了革命性的变化。MATLAB已经成为国际、国内控制领域内最流行的计算与仿真软件。9.1.2 MATLAB7的程序设计环境的程序设计环境1、MATLAB的工作空间的工作空间2、MATLAB的命令窗口的命令窗口3、MATLAB的帮助
6、文件的帮助文件启动MATLAB后,将打开如图1-4-1所示的起始操作桌面。操作桌面上的窗口多少与设置有关,图1-4-1所示为默认情况,前台有3个窗口。该桌面可弹出的窗口有:命令窗口(Command Window)、命令历史窗口(Command History)、当前目录浏览器(Current Directory Browser)、工作空间浏览器(Workspace Broswer)、数组编辑器(Array Editor)、交互界面分类目录窗口(Lauch Pad)、程序编辑器(Editor/Debugger)、帮助浏览器(Help Browser)。用户可对桌面窗口进行设置。各窗口功能如下:命
7、令窗口:用于输入变量,运行函数和M文件;命令历史窗口:用于记录和观察先前用过的函数,拷贝和执行被选择的行;当前目录浏览器:寻找、观察、打开和改变MATLAB相关目录和文件;工作空间浏览器:记录、存放和显示MATLAB运行历史中建立的全部变量;数组编辑器:用于观察数组内容并编辑其值。程序编辑器:生成、编辑和调试M文件。帮助浏览器:显示MATLAB的HTML格式的帮助文件。1、MATLAB的工作空的工作空间间在MATLAB中,工作空间(workspace)是一个重要的概念。工作空间是指运行MATLAB的程序或命令所生成的所有变量和MATLAB提供的常量构成的空间。MATLAB每打开一次,就会自动建
8、立一个工作空间,该工作空间在MATLAB运行期间一直存在,关闭MATLAB后自动消失。当运行MATLAB程序时,程序中的变量将被加入到工作空间中,只有特定的命令才可删除某一变量,否则该变量在关闭MATLAB之前一直存在。由此可见,在一个程序中的运算结果以变量的形式保存在工作空间后,在MATLAB关闭之前该变量还可被别的程序调用。这里说明一下最常用的预定义变量如表1-4-1所示。变量命名规则如下。变量名、函数名是对字母大小写敏感的变量名、函数名是对字母大小写敏感的。如变量myvar和MyVar表示两个不同的变量。sin是MATLAB定义的正弦函数名,但SIN,Sin等都不是。变量名的第一个字符必
9、须是英文字母,最多可包含变量名的第一个字符必须是英文字母,最多可包含63个字符(英文、数字个字符(英文、数字和下连符)和下连符)。如myvar201是合法的变量名。变量名中不得包含空格、标点、运算符,但可以包含下连符变量名中不得包含空格、标点、运算符,但可以包含下连符。如变量名my_var_201是合法的,且读起来更方便。而my,var201由于逗号的分隔,表示的就不是一个变量名。用户可用命令对工作空间中的变量进行显示、删除或保存等操作。例如,在MATLAB命令窗口直接键入“who”和“whos”命令,将可以看到目前工作空间的所有变量;用“save”命令可以保存工作空间的变量;用“clear”
10、命令可删除工作空间里的变量。用户也可以使用MATLAB的变量浏览器对工作空间的变量进行操作。执行【Desktop】【Workspace】命令,可以打开变量浏览器,如图1-4-2所示。图1-4-2 工作空间窗口用户可以在MATLAB变量浏览器中用鼠标右键来对选定的变量进行操作,如显示、绘图、拷贝、保存、删除、重命名等。图1-4-2 工作空间窗口2、MATLAB的命令窗口的命令窗口MATLAB的命令窗口是MATLAB的重要组成部分,是用户和MATLAB交互的工具。在MATLAB启动后,命令窗口就被打开了。MATLAB7运行后,命令窗口中有提示符“”,并对关键词、字符串、注释、普通指令采用不同的颜色
11、表示。其设置通过执行菜单栏【File】【Preferences】命令进行。在一个命令内容全部键入后,必须按下【Enter】键才可运行。标点符号要在英文状态下输入,其作用极其重要。例如:“,”用做两个输入量之间、数组元素之间的分隔符号;“;”用作不显示结果的指令结束标志或数组的行间分隔符号;“:”用来生成一维数值数组;“%”表示它以后的部分作为注释;“”在输入数组和矩阵时使用;“”用来输入单元数组。指令窗的常用控制指令见下表:3、MATLAB的帮助文件的帮助文件MATLAB给用户提供了强大的在线帮助功能,用户可以通过两种方式来获取帮助信息。在MATLAB命令窗口中获取帮助信息在MATLAB命令窗
12、口中直接输入帮助命令(Help)来获取需要的信息。Help的调用格式如下。help:列出MATLAB的所有帮助主题;helpwin:打开MATLAB的帮助主题窗口;helpdesk:打开MATLAB的帮助工作台;help help:打开有关如何使用帮助信息的帮助窗口;help 函数名:查询函数的相关信息。由帮助菜单获取帮助信息用户可以从开始菜单中选择【Help】选项来打开帮助窗口。9.1.3 基本操作基本操作1、经典教科书上的算术运算符在MATLAB中的表达方式,见表1-4-2。MATLAB书写表达式的规则与“手写算式”几乎完全相同。表达式由变量名、运算符和函数名组成。表达式将按与常规相同的优
13、先级自左至右执行运算。优先级的规定是:指数运算级别最高,乘除运算次之,加减运算级别最低。括号可以改变运算的次序。书写表达式时,赋值符“=”和运算符两侧允许有空格,以增加可读性。采用运算符构成的直角坐标表示法和极坐标表示法在MATLAB的命令窗口中输入:z1=3+4*i;%运算符构成的直角坐标表示法z2=1+2*i;z3=2*exp(i*pi/6);%运算符构成的极坐标表示法z=z1*z2/z3则其输出结果为:z=0.3349+5.5801i(2)复数的实虚部、模和幅角计算在MATLAB的命令窗口中输入:real_z=real(z)image_z=imag(z)magnitude_z=abs(z
14、)angle_z_radian=angle(z)%弧度单位angle_z_degree=angle(z)*180/pi%度数单位 则其输出结果为:real_z=0.3349image_z=5.5801magnitude_z=5.5902angle_z_degree=86.5651(1)在MATLAB的命令窗口中输入:p=3 0 2 3;rootp=roots(p);roots(p)求p(x)=0的根rootp=0.3911+1.0609i 0.3911-1.0609i -0.7822 例1-4-3 在MATLAB的命令窗口中输入:A=1 4 5;2 4 6;3 5 8B=1 2 3;4 5 6
15、;7 8 9C=1;2;3D=A+BE=A-B则其输出结果为:A=1 4 5 2 4 6 3 5 8B=1 2 3 4 5 6 7 8 9C=1 2 3D=2 6 8 6 9 12 10 13 17E=0 2 2 -2 -1 0 -4 -3 -1例1-4-4矩阵的分行输入在MATLAB的命令窗口中输入:A=1,2,3 4,5,6 7,8,9则其输出结果为:A=1 2 3 4 5 6 7 8 9例1-4-5 指令的续行输入在MATLAB的命令窗口中输入:s=1-1/2+1/3-1/4+.1/5-1/6+1/7-1/8则其输出结果为:s=0.63451.4.4 M文件文件1.4.4 M文件文件M文
16、件有两种形式:脚本文件(Script File)和函数文件(Function File)。这两种文件的扩展名均为“.m”。脚本文件是直接包含了一系列MATLAB命令的文件;另一种形式的M文件称为函数文件,它的第一句可执行语句是以function引导的定义语句。1.脚本文件脚本文件-6-4-20246-1-0.500.511.522.53图1-4-3 使用M文件绘制函数图 for m=1:leng if x(m)=0 y(m)=sin(x(m);elseif x(m)file则生成如图书1-4-3 的函数曲线。2、函数文件、函数文件如果M文件的第一行包含function,这个文件就是函数文件。每
17、一个函数文件都定义了一个函数。事实上,MATLAB提供的函数指令大部分都是由函数文件定义的。从使用的角度看,函数是一个“黑箱”,把一些数据送进去并进行加工处理,再把结果送出来。从形式上看,函数文件与脚本文件的区别之处在于:函数文件的变量可以定义,但函数文件的变量及其运算都仅在函数文件内部起作用,而不在工作空间,并且当函数文件执行完后,这些内部变量将被清除。函数文件的基本格式如下:function 返回变量列表=函数名(输入变量列表)注释说明语句段,由%引导输入、返回变量格式的检测函数体语句这里输入和返回变量的实际个数分别由nargin和nargout两个MATLAB保留变量来给出,只要进入该函
18、数,MATLAB就将自动生成这两个变量,无论您是否直接使用这两个变量。返回变量如果多于1个,则应该用方括号将它们括起来,否则可以省去方括号。输入变量和返回变量之间用逗号来分隔。注释语句段的每行语句都应该由百分号%引导,百分号后面的内容不执行,只起注释作用。用户采用help命令则可以显示出注释语句段的内容。此外,正规的变量个数检测也是必要的。如果输入或返回变量格式不正确,则应该给出相应得提示。函数文件必须遵循的规则如下:(1)函数名必须与文件名相同;(2)函数文件有输入和输出参数;(3)函数文件可以有零个或多个输入变量,也可以有零个或者是多个输出变量,对函数进行调试时,不能多于M文件中规定的输入
19、和输出变量个数,当函数有一个以上的输出变量时,输出变量将包含在括号内。(4)函数文件中的所有变量除了事先进行特别声明以外,都是局部变量,如果说明是全局变量,函数可以与其他函数、MATLAB的工作空间共享变量,不过为了避免出错,最好少用或不用全局变量。例1-4-7 编写一个通用的M函数求取例1-4-6中函数要任意点的值,并绘制在区间-6,6中的图形。解:(1)编写函数demofun并存储在同名M文件demofun.m中。function y=demofun(x)leng=length(x);for m=1:leng if x(m)=0 y(m)=sin(x(m);elseif x(m)x=-6:
20、0.1:6;y=demofun(x);plot(x,y,*),grid也可得相同的图形。9.1.5 MATLAB的绘图功能的绘图功能MATLAB计算的结果是数据,这些数据放在工作空间(Workspace)中,如果数据量很大,则阅读这些数据是很困难的,习惯是用曲线和图形表示。MATLAB可以根据给出的数据,用绘图命令画出其图形,通过图形对计算结果进行描述,并且可以对图形进行处理,如加上标题、坐标、网格线和颜色等。MATLAB有很强的绘图功能,可以绘制二维图形、三维图形、直方图和饼图等,这里仅介绍一些常用的基本绘图命令和方法,见表1-4-5所示。多条曲线绘图时,MATLAB会自动地以不同颜色标出曲
21、线,以便区分。如果对曲线的颜色和线型另有要求,可以在绘图命令中指出,命令的格式为:plot(x1,y1,x2,y2,)02468101214-1-0.8-0.6-0.4-0.200.20.40.60.81图1-4-4 衰减震荡曲线及包络9.2用用MATLAB求拉氏变换与反变换求拉氏变换与反变换例例2-1-16求函数求函数f(t)为:()为:(1)1(t);();(2)At;(3)t2;(;(4)Aet的的Laplace(拉氏)变换(拉氏)变换F(S)。)。1、用、用MATLAB计算拉氏变换计算拉氏变换例例2-1-17求函数f(t)为:(1)cos(t);(2)sin(t);(3)(t);(4)
22、A.+B.的Laplace(拉氏)变换F(S)。eatt2t3 2、利用留数将象函数表达式展开成部分分式、利用留数将象函数表达式展开成部分分式例例2-1-18 将象函数表达式 展开成部分分式 342)(2SSSSF例例2-1-19 将象函数表达式 展开成部分分式。)3()1(2)(2SSSSSF3、用Laplace反变化求原函数例例2-1-20 求象函数F(S)=1与 的原函数f(t)=L-1F(S)。)(1)(assSF例例2-1-21 求象函数的原函数f(t),100120211)(;5422)(;)2()1()(2322ssssFssssFssssF9.3控制系统数学模型的控制系统数学模
23、型的MATLAB实现实现控制系统的分析和设计绝大多数都是基于数学模型的。对于用传递函数描述的系统,我们可以选用MATLAB来进行分析和设计。本节主要介绍用MATLAB表示系统数学模型并用其进行结构图的化简,进而求解系统闭环传递函数。9.3.1数学模型的三种表示数学模型的三种表示1、传递函数模型2、零极点增益模型3、状态空间模型1、传递函数模型01110111.)()()(asasasabsbsbsbsdensnumsGnnnnmmmm在MATLAB语言中,可直接利用传递函数分子、分母多项式的系数向量方便地对其加以描述、例如对式2-4-1,可分别定义传递函数的分子、分母多项式的系数向量为 num
24、=bm.bm-1.b1 b0 den=an an-1.a1 a0这里分子、分母多项式系数向量中的系数均按s的降幂排列,各系数之间用空格或逗号分隔。用函数命令tf()来建立传递函数模型,其调用格式为 sys=tf(num,den)sys=tf(num,den,Ts)Ts为采样周期,当Ts=-1或者Ts=,则系统的采样周期未定义。2、零极点增益模型).()().()()(2121nmpspspszszszsksG1mz,2npp,21z,z是系统零点;p 是系统极点;z为系统增益;在MATLAB里可直接用向量z z、p p、k构成向量组z,p,k表示系统,即:,.,.,2121kkppppzzzz
25、nm用函数命令zpk()来建立零极点增益模型,其调用格式为:sys=zpk(z,p,k)sys=zpk(z,p,k,Ts)3、状态空间模型)()()()()()(tDutCxtytButAxtx 式中,u(t)是系统控制输入向量;x(t)是系统状态变量;y(t)则是系统输出向量;A为状态矩阵;B为控制矩阵;C为观测矩阵;D为直接传输矩阵。在MATLAB中,连续与离散系统都可直接用矩阵组A,B,C,D表示系统,即系统的状态空间模型。用函数ss()来建立控制系统的状态模型。其调用格式为:sys=ss(a,b,c,d)sys=ss(a,b,c,d,Ts)解决实际问题时,常常需要对自控系统的数学模型进
26、行转换。(1)将LTI对象转换为传递函数模型如果有系统状态空间模型:sysl=ss(a,b,c,d)将其转换为传递函数模型时则有:sys2=tf(sysl)如果有系统零极点增益模型:sys3=zpk(z,p,k)将其转换为传递函数模型时则有:sys4=tf(sys3)(2).将LTI对象转换为零极点增益模型如果有系统状态空间模型:sysl=ss(a,b,c,d)将其转换为零极点增益模型时则有:sys2=zpk(sysl)如果有系统传递函数模型:sys3=tf(num,den)将其转换为零极点增益模型时则有:sys4=zpk(sys3)(3).将LTI对象转换为状态空间模型如果有系统传递函数模型
27、:sysl=tf(num,den)将其转换为状态空间模型时则有:sys2=ss(sysl)如果有系统零极点增益模型:sys3=zpk(z,p,k)将其转换为状态空间模型时则有:sys4=ss(sys3)还可用下面的指令格式实现转换:z,p,k=tf2zp(num,den);num,den=zp2tf(z,p,k);z,p,k=ss2zp(A,B,C,D);A,B,C,D=zp2ss(z,p,k);num,den=ss2tf(A,B,C,D);A,B,C,D=tf2ss(num,den)4、三种系统数学模型之间的转换例例2-4-1己知系统状态空间模型:例例2-4-2已知系统零极点增益模型:)5)
28、(4)(3()2)(1(8)(sssssssG,求其等效的传递函数模型。例例2-4-3控制系统校正时常采用的比例积分(PI)调节器如图以作输出量,以作输入量。试求用向量组z,p,k表示的系统零极点增益模型与传递函数模型。解:系统传递函数为:解:系统传递函数为:sKsKsUsUspipiinex)1()()()(1001,CRRRkpi式中:。即系统为:pipiKkpKz;0;1,50;1200,40110FCkRkR0;0167.01PKzpi若则;2*;3040/12001001sCRRRKkpi9.3.2 结构图模型的简化结构图模型的简化1、环节串联连接的化简、环节串联连接的化简图2-4-
29、2为两个环节串联,将串联的多个环节的传递函数方框,在Simulink的模型窗口里依次串接画出即成为系统方框图模型。控制系统的环节串联及其化简就是模块方框图模型的串联及其化简。当n个模块方框图模型sys1,sys2,sysn串联连接时,其等效方框图模型为:sys=sys1*sys2*sysn。或者用series()函数,格式为:num,den=series(num1,den1,num2,den2)例例2-4-4已知双环调速系统电流环内前向通道三个模块的传递函数分别为:10128.05.2)(,100167.030)(,04.010128.0)(321ssGssGsssG试求串联连接的等效传递函数
30、。解:求解的MATLAB程序如下:n1=0.0128 1;d1=0.04 0;sysl=tf(n1,d1);n2=30;d2=0.00167 1;sys2=tf(n2,d2);n3=2.5;d3=0.0128 1;sys3=tf(n3,d3);sysl23=sysl*sys2*sys3由以上运算数据可以写出系统等效传递函数为:Transfer function:0.96 s+75-8.55e-007 s3+0.0005788 s2+0.04 s即:sssssGsGsGsG04.00005788.0000000855.07596.0)()()()(23321 2、环节并联连接的化简图2-4-3两
31、个环节并联两环节或模块并联见图2-4-3。当n个模块方框图模型并联连接时,其等效方框图模型为:。也需要注意,方框图模型可以tf对象、zpk对象与ss对象3种对象中的任一种,但并联接时的多个对象通常取同一种。还要注意,等效模型为多个环节输出的代数和,需根据实际情况,有加有减。或者用parallel函数,格式为:num,den=parallel(num1,den1,num2,den2)9287)(,15)(221ssssGssG试求两系统并联连接的等效传递函数的num与den向量。解:求解的MATLAB程序如下:numl=5;denl=1,1;sysl=tf(numl,denl);num2=7,8
32、;den2=1,2,9;sys2=tf(num2,den2);sys=sysl+sys2num=sys.num1den=sys.den1由以上运算数据可以写出系统等效传递函数为:Transfer function:12 s2+25 s+53-s3+3 s2+11 s+9num=0 12 25 53den=1 3 11 9即:9113532512)()()(23221ssssssGsGsG例2-4-5已知两子系统传递函数分别为:3、环节反馈连接的化简3、环节反馈连接的化简、环节反馈连接的化简两个环节的反馈连接如图2-4-4所示。MATLAB中的feedback()函数命令可将两个环节反馈连接后求
33、。G(s)为闭环前向通道的传递函数,H(s)为反馈通道的传递函数。feedback()函数既适用于连续时间系统,也适用于离散时间系统。feedback()函数命令格式为:sys=feedback(sysl,sys2,sign)单位反馈连接用函数cloop()其格式为 num,den=cloop(num1,den1,sign)函数命令将两个环节按反馈方式连接起来,环节即G(s)的所有输出均连接到环节也即H(s)的输入,环节的所有输出为反馈信号,sign是反馈极性,sign缺省时,默认为负反馈,即sign=-1;单位正反馈时,=1,且不能省略。例2-4-6 图2-4-5是晶闸管一直流电机转速负反馈
34、单闭环调速系统(VM系统)的Simulink动态结构图,试求其单闭环系统内小闭环的传递函数与系统的闭环传递函数。解:求系统的闭环传递函数的MATLAB程序如下:nl=1;d1=0.017 1;sl=tf(nl,d1);n2=1;d2=0.075 0;s2=tf(n2,d2);s=sl*s2;sysl=feedback(s,1)n3=0.049 1;d3=0.088 0;s3=tf(n3,d3);n4=0 44;d4=0.00167 1;s4=tf(n4,d4);n5=1;d5=0.1925;s5=tf(n5,d5);n6=0.01178;d6=1;s6=tf(n6,d6);sysq=sysl*
35、s3*s4*s5;sys=feedback(sysq,s6)运行结果如下:Transfer function:1-0.003 s2+1Transfer function:2.156 s+44-8.487e-008 s4+5.082e-005 s3+2.829e-005 s2+0.04234 s+0.5183即单闭环系统内的小闭环的传递函数为:1003.01)(21ss单闭环系统的闭环传递函数为:5183.004234.0002829.000005082.070000000848.044156.2)(234ssssss例2-4-7、RLC网络如图2-4-6所示,试求以作输出,以作输入的微分方程与
36、传递函数模型。图2-4-6 RLC网络解:(1)求微分方程。(2)求传递函数模型。图图2-4-6 RLC网络网络解:(1)求微分方程。clear syms ai aip ur ul ucpp ucp uc R L C;aip=C*ucpp;ul=L*aip;ur=R*ai+ul+uc;ur=subs(ur,ai,C*ucp)运行结果为:ur=R*C*ucp+L*C*ucpp+uc即有微分方程:rcccuudtduRCdtudLC22例2-4-8设系统微分方程组如下:5443553422311121)()()()()(xKtcdttdcTxKdtdxtcKxxxKxxKdtdxxtctrx1x2
37、x3x4x5x1K2K3K4K5KT)()()(sRsCsG式中:r(t)是输入量;c(t)是输出量;、为中间变量;、为常量。试绘制系统动态结构图,并求传递函数 解:(1)绘制系统动态结构图(见图2-4-7)。(2)求传递函数)()()(sRsCsG 先求R(s)。syms s C R X1 X2 X3 X4 x5 K1 K2 K3 K4 K5 T tau;X5=(T*s+1)*C/K4;X4=s*X5/K3;X3=X4+K5*C;X2=X3/K2;X1=X2/(tau*s+K1);R=C+X1运行结果为:R=C+(s*(T*s+1)*C/K4/K3+K5*C)/K2/(tau*s+K1)后求
38、C(s)。syms s C R X1 X2 X3 X4 X5 K1 K2 K3 K4 K5 T tau;c=solve(R=C+(s*(T*s+1)*C/K4/K3+K5*C)/K2/(tau*s+K1),C)运行结果为:c=R/(K2*K3*K4*tau*s+K2*K3*K4*K1+T*s2+s+K5*K3*K4)*K4*K3*K2*(tau*s+K1)即传递函数为:543432143221432)()()()(KKKKKKKSKKKTSKSKKKsRsCsG例2-4-9设系统结构图如图2-4-8所示,求系统闭环传递函数。解:程序如下:numl=540;denl=1;num2=1;den2=
39、1 2;num3=10;den3=1 1;num4=1;den4=2 0.5;num5=2;den5=1 1;numa,dena=parallel(numl,denl,num2,den2);numb,denb=series(num3,den3,num4,den4);numc,denc=feedback(numb,denb,num5,den5);numd,dend=series(numa,dena,numc,denc);num,den=cloop(numd,dend);printsys(num,den);运行结果如下:num/den=5400 s2+16210 s+10810 -2 s4+8.5
40、 s3+5412 s2+16236.5 s+108519.4用用MATLAB解决时域分析的问题解决时域分析的问题9.4.1 时域响应时域响应曲线的绘制曲线的绘制9.4.2二阶系统二阶系统性能指标的计算性能指标的计算9.4.3 代数代数幻灯片幻灯片 11稳定判据稳定判据MATLAB的实现的实现9.4.4稳态误差稳态误差的计算的计算9.4.1 时域响应曲线的绘制时域响应曲线的绘制1.单位阶跃响应的函数step()调用格式:step(sys)step(sys,t)y,t,x=step(sys)step(sys,t)函数用于计算系统的阶跃响应,函数中t可以指定为一个仿真终止时间,此时t为一标量;也可以
41、设置为一个时间向量(如用t=0:dt:Tfinal命令).若是离散系统,时间间隔dt必须与采样周期匹配。函数中t也可以没有。y,t,xstep(sys)函数为带有输出变量引用的函数;可计算系统阶跃响应的输出数据,而不绘制出曲线。输出变量y是系统的输出响应值向量;输出变量t为取积分值的时间向量;输出变量x是系统的状态轨迹数据。2.单位冲激响应函数impulse()impulse(sys)impulse(sys,t)y,t,x=impulse(sys)例例3-6-1已知单位负反馈系统前向通道的传递函数为 解:sys=tf(8,1 2 0);closys=feedback(sys,1);step(c
42、losys)impulse(closys)运行程序可得系统的单位阶跃给定响应曲线与单位冲激响应曲线略。sssG280)(2试作出其单位阶跃响应曲线。例例3-6-2 用MATLAB仿真函数命令绘制一阶系统 11)(ss的单位阶跃响应曲线、单位脉冲响应曲线、单位斜坡响应曲线与等加速度响应等曲线。解:(1)运行以下语句可得一阶系统的单位阶跃响应:ys=tf(0 1,1 1);step(ys)程序运行后得到如图3-6-1所示的单位阶跃响应曲线。(2)运行以下语句可得一阶系统的单位脉冲响应:sys=tf(0 1,1 1);impulse(sys)程序运行后得到如图3-6-2所示的单位脉冲响应曲线。(3)
43、运行以下语句可得一阶系统的单位斜坡响应:sys=tf(0 1,1 1 0);step(sys)程序运行后得到如图3-6-3所示的单位斜坡响应曲线。(4)运行以下语句可得一阶系统的等加速度响应:sys=tf(0 1,1 1 0 0);step(sys)程序运行后得到如图3-6-4所示的等加速度响应曲线.图3-6-1 一阶系统的单位阶跃响应 图3-6-2单位脉冲响应曲线 图3-6-3 单位斜坡响应曲线 图3-6-4 等加速度响应曲线 例例3-6-3典型二阶系统如下所示:2222)(nnnsssG试绘制出当 6n分别为0.1、0.2、1.0、2.0时系统的单位阶跃响应。解解:编写MATLAB程序如下
44、:wn=6;kosi=0.1:0.1:1.0,2.0;figure(1)hold onfor kos=kosinum=wn.2;den=1,2*kos*wn,wn.2;step(num,den)endtitle(Step Response)hold off 执行后可得如图3-6-5所示的单位阶跃响应曲线。图3-6-5 单位阶跃响应曲线9.4.2二阶系统性能指标的计算二阶系统性能指标的计算 在这里,我们自定义一个MATLAB函数perf(),用于求系统单位阶跃响应的性能指标:超调量、峰值时间和调节时间。在今后的设计中,我们可以直接调用该函数,从而方便快捷地得到系统的性能指标。该函数M文件原程序参
45、见附录2 例例3-6-4设控制系统的开环传递函数为:sssG225.1)(试绘制出该闭环系统的单位阶跃响应曲线,并用函数perf()分别计算系统的性能指标。解:(1)执行以下程序clears1=tf(1.25,1 1 0);sys=feedback(sl,1);step(sys)程序执行后绘制出该解:(1)执行以下程序3-6-6 三条单位阶跃响应曲线闭环系统的单位阶跃响应曲线。(2)采用函数peft()计算性能指标:global y ts1=tf(1.25,1 1 0);sys=feedback(s1,1);y,t=step(sys);perf(2,y,t);程序执行结果为:sigma=0.2
46、091tp=3.0920ts=4.9693例例3-6-5已知一个单位负反馈系统为:sssksG235.15.0)(试绘制该系统当k分别为14,2.3,3.5时的单位阶跃给定响应曲线(绘制在同一张图上),并计算当k=14时系统的单位阶跃给定响应性能指标。解:(1)程序文件方式下执行以下程序clearnum=1;den=0.5 1.5 1 0;rangek=1.4 2.3 3.5;t=linspace(0,20,200);for j=1:3sl=tf(num*rangek(j),den);sys=feedback(sl,1);y(:,j)=step(sys,t);endplot(t,y(:,1:3
47、),gridgtext(k=1.4),gtext(k=2.3),gtext(k=3.5)这是带鼠标操作的程序,必须采用程序文件执行方式。其操作方法是:在MATLAB命令窗口里回车后,曲线区域有纵横两条坐标线,其交点随鼠标而移动。将交点指在相应曲线附近,3次单击左键分别将“k=1.4”、“k=2.25”、“k=3.5”标注在曲线旁.执行程序后,得到如图3-6-6所示标注有其对应参数的三条单位阶跃响应曲线。由曲线可以看出,当k=1.4时,阶跃响应衰减振荡,系统稳定;当k=2.25时,响应等幅振荡,系统临界稳定;当k=3.5时,响应振荡发散,系统不稳定。(2)执行以下程序clearglobal y
48、t sysn1=1.4;d1=0.5 1.5 1 0;s1=tf(n1,d1);sys=feedback(s1,1);step(sys);y,t=step(sys);perf(2,y,t)执行程序后,计算出阶跃给定响应的指标如下:sigma=0.5303tp=3.5126ts=16.9776ans=0.53039.4.3 代数稳定判据代数稳定判据MATLAB的实现的实现求解控制系统闭环特征方程的根,用函数roots(p)来实现,格式如下:roots(p)p是降幂排列多项式系数向量例例3-6-6己知系统的开环传递函数为:)20)(1()2(100)(sssssG试对系统闭环判别其稳定性。解:k=
49、100;z=-2;p=0,-1,-20;nl,d1=zp2tf(z,p,k);G=tf(nl,d1);P=nl+d1;roots(P)ans=-12.8990 -5.0000 -3.1010闭环特征方程的根的实部均具有负值,所以闭环系统是稳定的。例例3-6-7已知系统闭环传递函数为:2006502.0001.02005)(23sssss试对系统闭环判别其稳定性。解:p=0.001 0.502 6 200;roots(p)ans=1.0e+002*-4.9060 -0.0570+0.1937i -0.0570-0.1937i例例3-6-8 已知系统的动态结构图模型如图3-6-7所示,试对系统闭环
50、判别其稳定性。nl=10;d1=1 1 0;s1=tf(nl,d1);n2=0 2 0;d2=0 0 1;s2=tf(n2,d2);s12=feedback(s1,s2);n3=0 1 1;d3=0 1 0;s3=tf(n3,d3);sysl=s12*s3;sys=feedback(sysl,1);roots(sys.den1)图3-6-7系统结构图模型ans=-20.5368 -0.2316+0.6582i -0.2316-0.6582i解:图3-6-7系统结构图模型9.4.4稳态误差的计算稳态误差的计算例3-6-8两个单位负反馈系统的闭环传递函数分别为 7321)(23sssssa6555
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。