多分支判断语句switchcase.ppt
多分支判断语句switch-case作用:多分支判断选择。一般表达形式:switch选择判断量case 选择判断值1 选择判断语句1case 选择判断值2 选择判断语句2otherwise 判断执行语句end注意:当其中一个case语句后的条件为真时,switch-case语句不对其后的case语句进行判断。,1,例如:利用switch_case语句编写判断季节的函数文件。function demo_switch_case(month)switch month case 3,4,5 season=spring case 6,7,8 season=summer case 9,10,11 season=autumn otherwise season=winter end将该函数文件以demo_switch_case.m为文件名保存后,在命令窗口输入“demo_switch_case(1)”,可调用该函数文件,返回结果为:season=winter。,2,人机交互命令作用:在执行 MATLAB 主程序文件时,在适当的地方对程序的运行进行观察或干预。重要性:在调试程序的时候,人机交互命令更是不可缺少。MATLAB 语言提供的基本人机交互命令有:echo、input、pause 和 keyboard 四种。,3,echo 命令作用:使M文件的命令在执行时可见,有利于程序的调试和演示。,4,input命令input 命令用来提示用户从键盘输入数据、字符串或表达式,并接收输入值。,5,例:R=input(How many apples),pause 命令 作用:使程序暂时终止执行,等待用户按任意键后继续执行基本调用格式:pause%暂停程序等待回应。pause(n)%在程序运行中等待 n秒后继续运行。pause on%显示其后的 pause 命令,并且执行 pause 命令。pause off%显示其后的 pause 命令,但不执行该命令。,keyboard命令 keyboard命令与input命令的作用相似。当程序遇到此命令时,MATLAB就将暂时停止运行程序,处于等待键盘输入状态且在屏幕上显示字符 K。键盘处理完毕后,输入字符串return,程序将继续执行。在M文件中使用该命令,对于程序的调试和在程序运行中修改变量都很方便。,6,例如:disp(please input a month:)%显示提示信息keyboard%控制权交给键盘demo_switch_case(ans)输入数字(例如3)回车,继续在命令行输入“return”,控制权返回给MATLAB,即可显示3月是春天。,程序调试与诊断 MATLAB程序出错时的基本处理方法 语法格式错误 如缺“(”或“)”等,在运行时可检测出大多数该类错误,并指出错在哪一行。算法逻辑错误 这样的错误非常隐蔽,往往是对算法考虑不周全,程序可以顺利通过,显示的结果也是正常的数值,但是与先验的预期不符合。,7,注意:在包含函数调用的 MATLAB 程序运行时,当发生运行错误时,不会显示出错信息,又无法检测各个局部变量。应采用调试技术来查找问题。,8,(1)在可能发生错误的 M 文件中,删去某些语句行末的分号,使显示其运行中间结果,从中可发现一些问题;(2)在 M 文件的适当位置上加上keyboard命令,使在执行时在此暂停,从而检查局部工作空间中变量的内容,从中找到出错的线索,利用 return 命令可恢复程序的执行;(3)注释掉 M 函数文件的函数定义行,使函数文件转变成脚本文件;(4)使用MATLAB调试器,设置断点,或单步执行。,MATLAB的代码编辑调试器MATLAB的代码编辑调试器是一个综合了代码编写与调试的集成开发环境。MATLAB代码调试过程主要是通过调试器菜单Debug下的各子项进行的。调试选项及其功能见表1-3。,9,M文件调试器Debug菜单,表1-3 调试选项及其功能,10,Set/Clear Breakpoint:设置或清除断点。1、可以选择该选项对当前行进行操作;2、通过快捷键F12;3、直接点击该行左侧的“-”。注:设置断点时该处显示为红点。再次进行相同的操作则删除该断点。例子:tiyidianba,11,Set/Modify Conditional Breakpoint:该选项用于设置或修改条件断点。条件断点为一种特殊的断点,当满足指定的条件时则程序执行至此时停止,否则程序继续进行。其设置界面如图1-12所示,在输入框中输入断点条件则将当前行设置为条件断点。此时设置的断点处显示为黄色。例子:tiyidianba,12,Enable/Disable Breakpoint:开启或关闭当前行的断点,如果当前行不存在断点,则设置当前行为断点;如果当前行是断点,则改变该断点的状态。在调试时,被关闭的断点将会被忽略。例子:tiyidianba,13,在程序调试中,变量的值是查找错误的重要线索,在MATLAB中查看变量的值可以有三种方法:(1)在编辑器中将鼠标放置在待查看的变量处,停留,则在此处显示该变量的值;(2)在工作空间中查看该变量的值;(3)在命令窗口中输入变量名,则显示该变量的值。,以上介绍了程序调试的方法和工具,在真正编写程序时,需要根据不同的情况灵活应用这些功能,达到最高的调试效率。,本章小结简要介绍了控制系统仿真的基本概念及仿真工具MATLAB的语言特点;(1.1)详细讲述了在系统仿真过程中可能用到的MATLAB基本功能,从数值计算功能入手,介绍了MATLAB中的数组、矩阵、绘图、函数、M文件及编程控制等基础知识。希望通过本章的学习能够掌握MATLAB的基本用法,为后续利用MATLAB进行仿真打下基础。,14,习题:1.查看MATLAB的目录结构,并检查计算机中安装了 哪些MATLAB工具箱。2.使用help命令查找函数plot和plot3的帮助信息。3.已知矩阵A为四阶魔方矩阵,矩阵B=1 2 3 4;3 4 5 6;5 6 7 8;7 8 9 0,求矩阵A和矩阵B的矩阵乘积和数 组乘积。%magic(4)4.用符号计算验证三角等式。%expand(),15,syms x y;expand(sin(x-y),5.求f=sin(x)2的导数,求 f=sin(x)2+cos(y)2对y 的导数。%diff()6.求积分。%int(f,t,a,b)7.解方程x3-6*x2+11*x-5=1。%solve()8.绘图:f=(x2+y2)4-(x2-y2)2,其中1 x 1。9.编程求12+22+32+.+1002,并计算运算时间。%(tic toc)10.Fibonacci数组的元素满足规则:(k=1,2,),;且。试编程求该数组中 第一个大于10000的元素及序号。,16,17,6.syms tao omiga t A;int(A*exp(-i*omiga*t),t,-tao/2,tao/2)8.x=-1:0.01:1;y=x;X,Y=meshgrid(x,y);F=(X.2+Y.2).4-(X.2-Y.2).2;mesh(X,Y,F);xlabel(x);ylabel(y);title(f的图像)9.tica(1)=12;sum(1)=a(1);for i=2:100 a(i)=i2;sum(i)=sum(i-1)+a(i);endsum_100=sum(100)toc,10.a(1)=1;a(2)=1;for i=3:50 a(i)=a(i-1)+a(i-2);if a(i)10000 element=a(i)order=i break end end,控制系统仿真与CAD,第2章 控制系统的数学描述河南工业大学 电气工程学院闫晶晶,系统的数学模型,系统数学模型的重要性 系统仿真分析必须已知数学模型 系统设计必须已知数学模型 数学模型是本课程的基础系统数学模型的获取 建模方法:从已知的物理规律出发,用数学推导的方法建立起系统的数学模型 辨识方法:由实验数据拟合系统的数学模型,19,第2章 控制系统的数学描述,2.1 控制系统数学模型与控制工具箱函数2.1.1 传递函数模型2.1.2 状态空间模型2.2 控制系统模型的转换及连接2.2.1 模型转换函数2.2.2 模型连接与化简2.3 控制系统建模工程实例,20,2.1.1 传递函数模型,主要内容:介绍一下如何把经典控制里最常用的传递函数模型输入给计算机。线性系统通常是以线性常微分方程来描述:,2.1 控制系统数学模型与控制工具箱函数,21,22,传递函数的理论基础 Laplace变换,Pierre-Simon Laplace(1749-1827),法国数学家Laplace变换,t域s域,定义:,Laplace变换的一条重要性质:若,传递函数模型传递函数即放大倍数G(s)=Y(s)/U(s)在零初始条件下,线性常微分方程经Laplace变换后,即为线性系统的传递函数模型:对线性定常系统,式中s的系数均为常数,且不等于零,这时系统在MATLAB中可以方便地由分子(numerator)和分母(denominator)系数构成的向量组唯一地确定出来。,23,在MATLAB中,传递函数的分子、分母分别用num和den表示,表达方式为:num=b0,b1,b(m-1),bmden=a0,a1,a(n-1),an其中:它们都是按s的降幂进行排列的,缺项补零。如果ai,bi都为常数,这样的系统又称为线性时不变系统(Linear Time-invariant systems,简称LTI);系统的分母多项式称为系统的特征多项式。对物理可实现系统来说,一定要满足mn。对于离散时间系统,其单输入单输出系统的LTI系统差分方程为:,24,对应的脉冲传递函数为:用不同向量分别表示分子和分母多项式,就可以利用控制系统工具箱的函数表示传递函数变量G:num=b0,b1,b(m-1),bmden=a0,a1,a(n-1),an在MATLAB中,不论是连续还是离散时间系统,都用函数命令tf()来建立控制系统的传递函数模型,还可以将零极点模型或者状态空间模型转换为传递函数模型。,25,表2-1 tf()函数的具体用法见下表,26,例2-1 将已知系统的传递函数模型 输入到MATLAB工作空间中。解:方法一:在MATLAB命令窗口中输入:num=1 1;%分子多项式向量den=1 3 2 0;%分母多项式向量G=tf(num,den)%系统传递函数模型执行后结果如下:Transfer function:s+1-s3+3 s2+2 s,27,方法二:在MATLAB命令窗口中输入:s=tf(s)%定义Laplace算子符号变量G=(s+1)/(s3+3*s2+2*s)%直接给出系统传递函数表达式执行后结果如下:Transfer function:s+1-s3+3 s2+2 s,28,例2-2 已知传递函数模型,将其输入到MATLAB工作空间中。解:方法一:在MATLAB命令窗口中输入:num=conv(10,2 1);%分子向量多项式den=conv(1 0 0,1 7 13);%分母向量多项式G=tf(num,den)%系统传递函数模型执行后结果如下:Transfer function:20 s+10-s4+7 s3+13 s2,29,方法二:在MATLAB命令窗口中输入:s=tf(s);%定义Laplace算子符号变量G=10*(2*s+1)/(s2*(s2+7*s+13)%直接给出系统传递函数表达式执行后结果如下:Transfer function:20 s+10-s4+7 s3+13 s2,30,例2-3 RLC电路如图2-1所示,试建立以电容上电压Uc(t)为输出变量,输入电压Ur(t)为输入变量的运动方程;如果R=1.6,L=1.0H,C=0.40F时,建立其传递函数模型。解:第一步:建立系统的微分方程。设回路电流为i(t),根据基尔霍夫电压定律、电流定律得到系统的回路方程为:(2-6)(2-7)将(2-7)代入(2-6),消去中间变量i(t),得到描述RLC网络输入输出关系的微分方程为:,(2-8),31,第二步:根据微分方程写出传递函数。在零初始条件下,对上述方程中各项求拉氏变换,并令,,可得s的代数方程为:由传递函数定义,得系统传递函数为:将R=1.6,L=1.0H,C=0.40F代入(2-10)得:,(2-9),(2-10),(2-11),32,33,第三步:将系统模型输入到MATLAB工作空间中。程序如下:clearclcs=tf(s);%定义Laplace算子符号变量G=25/(10*s2+16*s+25)%直接给出系统传递函数表达式程序运行结果为:Transfer function:25-10 s2+16 s+25,例2-4 某一以微分方程描述系统的传递函数,其微分方程描述如下:试使用MATLAB建立其模型。解:首先求取系统传递函数。在零初始条件下,对微分方程两边取Laplace变换,可得系统传递函数:然后建立系统模型,MATLAB程序如下:num=1 0 6;%分子多项式系数行向量den=1 6 11 6;%分母多项式系数行向量G=tf(num,den)%建立传递函数模型程序运行结果如下:Transfer function:s2+6-s3+6 s2+11 s+6,34,例2-5 已知传递函数的分子为(s+1),分母项为(s3+4s2+2s+6),时滞是2,试建立系统的传递函数模型。解:方法一,由于系统有时滞项,除了设置分子项num和分母项den外,还要在tf()函数中设置输入传输延时iodelay的属性,其值赋给变量dt,程序如下:num=1 1;den=1 4 2 6;dt=2;G=tf(num,den,iodelay,dt)程序运行结果为:Transfer function:s+1 exp(-2*s)*-s3+4 s2+2 s+6,35,方法二,也可以采用Laplace算子的符号变量直接建立传递函数模型,程序为:s=tf(s);G=(s+1)/(s3+4*s2+2*s+6);set(G,iodelay,2);G程序运行后结果与方法一相同。,36,零极点增益模型实质:零极点增益模型实际上是传递函数模型的另一种表现形式。原理:分别对原系统传递函数的分子、分母进行因式分解处理,获得系统的零点和极点的表示形式。其中:K为系统增益,zi(i=1,2,m)为零点,pj(j=1,2,n)为极点。注:对系数为实数的传递函数模型来说,系统的零极点或者为实数,或者以共轭复数的形式出现。,37,(2-12),离散系统的传递函数也可表示为零极点增益模式:在MATLAB中零极点增益模型用z,p,k矢量组表示。即:z=z1,z2,zmp=p1,p2,.,pnk=K调用zpk()函数就可以输入这个零极点增益模型,还可以将传递函数模型或者状态空间模型转换为零极点增益模型,具体用法如表2-2所示。,38,(2-13),表2-2 zpk函数的具体用法,39,例2-6 双T网络如图2-2所示,试求以Uc为输出,Ur为输入的传递函数和零极点增益模型。其中R1=40,R2=80,C1=100F,C2=50F。解:首先,根据基尔霍夫电压定律、电流定律建立各元件的微分方程。方程如下:(2-14),图2-2 双T网络,40,再求取系统传递函数。将(2-14)中各元件的微分方程进行拉氏变换,并改写成以下形式:消去中间变量I1(s)和I2(s),得到系统的传递函数为:,(2-15),(2-16),41,将R1=40,R2=80,C1=100F,C2=50F代入上式,可得系统的传递函数为:最后,编写MATLAB程序。程序如下:num=1;den=16 10 1;G=tf(num,den)G1=zpk(G)运行后,获得系统的传递函数和零极点增益模型,结果为:Transfer function:1-16 s2+10 s+1Zero/pole/gain:0.0625-(s+0.5)(s+0.125),42,例2-7 已知系统的传递函数为,将零极点增益模型输入MATLAB工作空间。解:在MATLAB的命令窗口输入:z1=-5;-5;%零点向量p1=-1;-2;-2-2*j;-2+2*j;%极点向量k=4;%增益向量G1=zpk(z1,p1,k)%得到系统零极点增益模型则执行后得到如下结果:Zero/pole/gain:4(s+5)2-(s+1)(s+2)(s2+4s+8),43,例2-8 已知系统的传递函数为:,求系统 的零极点向量和增益值,并绘制系统零极点分布图。解:在MATLAB的命令窗口输入:s=zpk(s);%定义算子G=4*(s+5)/(s+1)/(s+2)/(s+6)%直接得到系统模型z,p,k=zpkdata(G,v)%得到系统零极点向量和增益值pzmap(G)%绘制系统零极点分布图则执行后得到的系统传递函数及零极点向量和增益值:Zero/pole/gain:4(s+5)-(s+1)(s+2)(s+6)z=-5p=-1-2-6k=4 系统的零极点分布图,44,部分分式模型优点:方便应用Laplace反变换求系统的输出响应。函数:r,p,k=residue(b,a)可以求出传递函数的部分分式之和形式。传递函数的部分分式之和形式为:注:使用函数r,p,k=residue(b,a)时,余数返回到向量r,极点返回到列向量p,常数项返回到k。另外,函数b,a=residue(r,p,k)也可以将部分分式转化为多项式比p(s)/q(s)。,45,(2-17),例2-9 已知系统的传递函数为,求取系统的部分分式模型。解:在MATLAB命令窗口中输入:num=2,0,9,1;den=1,1,4,4;r,p,k=residue(num,den)则执行后得到如下结果:r=0.0000-0.2500i 0.0000+0.2500i-2.0000 p=-0.0000+2.0000i-0.0000-2.0000i-1.0000 k=2根据MATLAB程序运行结果,可写出系统的部分分式模型:,46,状态:系统中存在着若干个动态信息,称为状态。状态向量:在表征系统动态信息的所有变量中,能够完全描述系统运行的最少数目的一组独立变量(不惟一)称为系统的状态向量。n维状态空间:以n维状态变量为基所构成的空间称为n维状态空间。状态空间模型:由状态向量所表征的模型便是状态空间模型。,47,2.1.2 状态空间模型,任何系统都可以用状态空间表达式来进行数学描述,状态空间表达式(又称为动态方程),由状态方程与输出方程组成,揭示了系统内部状态对系统性能的影响。具有n个状态、m个输入和p个输出的线性时不变系统,状态空间模型即状态空间表达式为:离散系统的状态空间模型为:,48,(2-18),(2-19),函数ss()可用来建立控制系统的状态空间模型,连续和离散系统的状态空间模型建立有所区别,具体用法如表2-3 另外,要得到状态空间模型,还可以从传递函数模型或者零极点模型转换过来。,49,例2-10 RLC无源网络如图2-1所示,ur(t)为输入,uc(t)为输出,若选择i(t),uc(t)为状态变量,试建立系统的状态空间模型,并用MATLAB实现。解:第一步:求取系统的状态空间模型。由图2-1可列系统微分方程:,(2-20),(2-21),(2-22),50,写成矩阵形式:若选择,则系统的状态空间模型为:,51,(2-23),(2-24),其中:将R=1.6,L=1.0H,C=0.40F代入得:则系统的状态空间模型为:,52,第二步:MATLAB实现。在MATLAB命令窗口中输入:A=-16-1;25 0;%给状态矩阵A赋值B=1;0;%给输入矩阵B赋值C=0 1;%给输出矩阵C赋值D=0;%给前馈矩阵D赋值G=ss(A,B,C,D)%输入并显示系统状态空间模型执行后得到如下结果:a=b=x1 x2 u1 x1-16-1 x1 1 x2 25 0 x2 0 c=d=x1 x2 u1 y1 0 1 y1 0Continuous-time model.,53,例2-11 将如下系统的状态空间模型输入到MATLAB工作空间中。解:在MATLAB命令窗口中输入:A=6 5 4;1 0 0;0 1 0;B=1;0;0;C=0 6 7;D=0;G=ss(A,B,C,D)%输入并显示系统状态空间模型,54,则执行后得到如下结果:a=x1 x2 x3 x1 6 5 4 x2 1 0 0 x3 0 1 0b=u1 x1 1 x2 0 x3 0c=x1 x2 x3 y1 0 6 7d=u1 y1 0Continuous-time model.,55,例2-12 将如下一个两输入两输出系统的状态空间模型输入到MATLAB工作空间中,并求其系统参数。,解:首先,在MATLAB命令窗口中输入以下程序,将状态空间模型输入到MATLAB工作空间:A=1 6 9 10;3 12 6 8;4 7 9 11;5 12 13 14;B=4 6;2 4;2 2;1 0;C=0 0 2 1;8 0 2 2;D=zeros(2,2);%D为一个22的零方阵Gss=ss(A,B,C,D)%得到系统状态空间模型,56,程序执行后结果如下:a=x1 x2 x3 x4 x1 1 6 9 10 x2 3 12 6 8 x3 4 7 9 11 x4 5 12 13 14 b=u1 u2 x1 4 6 x2 2 4 x3 2 2 x4 1 0 c=x1 x2 x3 x4 y1 0 0 2 1 y2 8 0 2 2d=u1 u2 y1 0 0 y2 0 0 Continuous-time model.,57,然后在MATLAB命令窗口输入以下语句,可获取系统模型参数 A,B,C,D=ssdata(Gss)执行后结果如下:A=1 6 9 10 3 12 6 8 4 7 9 11 5 12 13 14B=4 6 2 4 2 2 1 0C=0 0 2 1 8 0 2 2D=0 0 0 0,58,在MATLAB命令窗口中输入以下语句可得所有参数的属性值:get(Gss)执行后结果如下:a:4x4 double b:4x2 double c:2x4 double d:2x2 double e:StateName:4x1 cell InternalDelay:0 x1 double Ts:0 InputDelay:2x1 double OutputDelay:2x1 double InputName:2x1 cell OutputName:2x1 cell InputGroup:1x1 struct OutputGroup:1x1 struct Name:Notes:UserData:,59,2.2 控制系统模型的转换及连接2.2.1 模型转换函数,控制系统的模型表示:传递函数模型、零极点模型和状态空间模型,这三种模型之间也可以进行相互转换。模型转换的函数:ss2tf、ss2zp、tf2ss、tf2zp、zp2ss、zp2tf。它们的关系可用图2-4所示的结构来表示,,60,表2-4 数学模型转换函数及其功能,61,例2-13 已知系统传递函数为,试求其零极点增益模型及状态空间模型。解:在MATLAB命令窗口中输入:num=9;den=conv(1 3,1 4 4);Gtf=tf(num,den);Gzpk=zpk(Gtf)Gss=ss(Gtf),62,执行后结果如下:Transfer function:9-s3+7 s2+16 s+12Zero/pole/gain:9-(s+3)(s+2)2a=x1 x2 x3 x1-7-4-1.5 x2 4 0 0 x3 0 2 0b=u1 x1 1 x2 0 x3 0c=x1 x2 x3 y1 0 0 1.125d=u1 y1 0Continuous-time model.,63,例2-14 已知某系统的零极点增益模型为:求其传递函数模型及状态空间模型。解:在MATLAB命令窗口中输入:z=-1;-2;%零点向量p=-3-5;%极点向量k=3;%增益Gzpk=zpk(z,p,k)%零极点模型a,b,c,d=zp2ss(z,p,k)%将零极点模型转换为状态空间模型num,den=zp2tf(z,p,k)%由零极点模型得到传递函数的分子和分母向量,64,执行后结果如下:Zero/pole/gain:3(s+1)(s+2)-(s+3)(s+5)a=-8.0000-3.8730 3.8730 0b=1 0c=-15.0000-10.0698d=3num=3 9 6den=1 8 15,65,例2-15 将双输入单输出的系统模型转换为多项式传递函数模型。解:在MATLAB命令窗口中输入:a=0 1;-3-2;b=1 0;0 1;c=1 0;d=0 0;num,den=ss2tf(a,b,c,d,1)num2,den2=ss2tf(a,b,c,d,2)Gss=ss(a,b,c,d);Gtf=tf(Gss),66,执行后得到如下结果:num=0 1.0000 2.0000den=1.0000 2.0000 3.0000num2=0 0 1.0000den2=1.0000 2.0000 3.0000Transfer function from input 1 to output:s+2-s2+2 s+3Transfer function from input 2 to output:1-s2+2 s+3,67,例2-16 造纸工业中的一加压液流箱系统。该系统的状态变量是箱中的液位h(t)与料浆的总压头H(t),输入变量是料浆流入量u1(t)与空气流入量u2(t),输出变量是状态变量H(t)与h(t)的和。系统状态空间模型为:试求系统的状态空间模型、传递函数模型及零极点增益模型。解:由系统的状态空间模型,编写如下MATLAB程序:a=-0.5620 0.05114;-0.254 0;b=0.03247 1.145;0.112541 0;c=1 1;d=0 0;G=ss(a,b,c,d),G1=tf(G),G2=zpk(G),68,运行后结果如下:a=x1 x2 x1-0.562 0.05114 x2-0.254 0 b=u1 u2 x1 0.03247 1.145 x2 0.1125 0 c=x1 x2 y1 1 1 d=u1 u2 y1 0 0 Continuous-time model.,69,Transfer function from input 1 to output:%系统从u1到y的传递函数模型 0.145 s+0.06076-s2+0.562 s+0.01299Transfer function from input 2 to output:%系统从u2到y的传递函数模型 1.145 s-0.2908-s2+0.562 s+0.01299Zero/pole/gain from input 1 to output:%系统从u1到y的零极点增益模型 0.14501(s+0.419)-(s+0.5378)(s+0.02415)Zero/pole/gain from input 2 to output:%系统从u2到y的零极点增益模型 1.145(s-0.254)-(s+0.5378)(s+0.02415),70,模型间的基本连接方式主要有:串联连接:series()并联连接:parallel()反馈连接:feedback(),2.2.2 模型连接与化简,71,若控制系统由几个环节串联而成,即环节按照信号传递的方向串联在一起(如图2-5所示),并且各环节之间没有负载效应和返回影响,则系统可以等效为一个环节,其等效传递函数为各环节传递函数的乘积,即 在MATLAB中,series()函数可完成等效传递函数的求取。,图2-5 串联连接结构,串联连接结构,72,例2-17 已知两个系统的传递函数 和,求其G1(s)和G2(s)进行串联后的系统模型 解:MATLAB程序为:num1=10;den1=20 1 0;num2=1 1;den2=1 6 1;num,den=series(num1,den1,num2,den2);printsys(num,den)%将系统模型写成“num/den”格式程序运行结果为:num/den=10 s+10-20 s4+121 s3+26 s2+s,73,模型并联若组成控制系统的环节具有相同的输入信号,且各环节输出信号的代数和作为系统的输出,则这几个环节的连接方式为并联,如图2-6所示,此时系统可等效为一个环节,其等效传递函数为各环节传递函数的和,即 注:在MATLAB中,parallel()函数可完成等效传递函数的求取。,图2-6 并联连接结构,74,例2-18 已知两个系统的传递函数 和,求G1(s)和G2(s)进行并联后的系统模型解:MATLAB的程序为:num1=10;den1=20 1 0;num2=1 1;den2=1 6 1;num,den=parallel(num1,den1,num2,den2);printsys(num,den)程序运行结果为:num/den=20 s3+31 s2+61 s+10-20 s4+121 s3+26 s2+s,75,反馈连接自动控制系统中,若两个环节具有图2-7所示的结构形式,则称为反馈联接。对于(a)所示的正反馈系统,其等效传递函数为:对于(b)所示的负反馈系统,其等效传递函数为:注:在MATLAB中,feedback()函数可计算闭环传递函数。,(a)正反馈连接,(b)负反馈连接,76,例2-19 已知系统 和,求G1(s)和G2(s)分别进行串联、并联和反馈连接后的系统模型。解:由系统的传递函数模型,编写MATLAB程序(程序1):num1=1 1;den1=1 4 26;G1=tf(num1,den1);num2=1;den2=1 6;G2=tf(num2,den2);Gs=series(G1,G2),%求取G1(s)和G2(s)串联的等效传递函数Gp=parallel(G1,G2),%求取G1(s)和G2(s)并联的等效传递函数Gf=feedback(G1,G2)%求取负反馈的等效传递函数,前向通道传递函数为G1(s),反馈通道传递函数为G2(s),77,程序1执行后结果如下:Transfer function:%串联等效传递函数为Gs=G1(s)*G2(s)s+1-s3+10 s2+50 s+156 Transfer function:%并联的等效传递函数为Gp=G1(s)+G2(s)2 s2+11 s+32-s3+10 s2+50 s+156 Transfer function:%反馈的等效传递函数为Gf=G1/(1+G1*G2)s2+7 s+6-s3+10 s2+51 s+157,78,本例还可以用如下程序(程序2)完成:num1=1 1;den1=1 4 26;G1=tf(num1,den1);num2=1;den2=1 6;G2=tf(num2,den2);Gs=G2*G1,Gp=G1+G2,Gf=G1/(1+G1*G2)程序2执行后结果为:Transfer function:%Gs s+1-s3+10 s2+50 s+156 Transfer function:%Gp 2 s2+11 s+32-s3+10 s2+50 s+156 Transfer function:%Gf s4+11 s3+60 s2+206 s+156-s5+14 s4+117 s3+621 s2+1954 s+4082,79,注意:程序2执行后结果的Gf与程序1的Gf表达式不同,这是因为程序2的Gf分子分母存在公约项,这里可用函数Gf=minreal(Gf)来获得系统的最小实现模型。说明:对于反馈连接,虽然运算式与feedback()函数等效,但得到的系统阶次可能高于实际系统阶次,需通过minreal()函数进一步求其最小实现。严格意义上的传递函数定义为经过零极点对消之后的输入-输出关系,当分子分母有公因式时,必须消除。minreal()函数,即最小实现是一种模型的实现,它消除了模型中过多的或不必要的状态。对传递函数或零极点增益模型,这等价于将可彼此对消的零极点对进行对消。,80,例2-20 给定一个多回路控制系统的结构方框图如图2-8所示,试求系统的传递函数。解:方法一:在MATLAB命令窗口中输入:G1=tf(1,1 1);G2=tf(1,3 4 1);Gp=G1+G2;G3=tf(1,1 0);Gs=series(G3,Gp);Gc=Gs/(1+Gs);Gc1=minreal(Gc)执行结果为:Transfer function:s+0.6667-s3+1.333 s2+1.333 s+0.6667,81,图2-8 例2-20多回路控制系统的结构框图,方法二:新建一个空的M文件,将上述程序写在Editor窗口中,完成后单击Run图标或选择Debug菜单栏中Run运行,打开“Workspace”窗口中相应的变量,可看到运行结果,例如:打开变量Gc,可看到:Transfer function:9 s6+36 s5+56 s4+42 s3+15 s2+2 s-9 s8+42 s7+88 s6+112 s5+95 s4+52 s3+16 s2+2 s打开变量Gc1,可看到:Transfer function:s+0.6667-s3+1.333 s2+1.333 s+0.6667,82,例2-21:组合机床动力滑台铣平面时的情况如图2-9(a)所示,试分析并求该系统的微分方程和传递函数。(a)动力滑台(b)动力滑台力学模型 图2-9 例2-21中组合机床动力滑台及其力学模,83,2.3 控制系统建模工程实例,84,解:第一步:建立系统的微分方程并求取系统传递函数。任何一个机械振动系统一般都是由若干具有不同弹性和质量的元件组成。在研究机械振动时,需要将实际的振动系统抽象为力学模型,这是一种简化过程。,分析如图2-9(a)所示为组合机床动力滑台铣平面时的情况,当切削刀fi(t)变化时,滑台可能产生振动,从而降低被加工工件的表面质量。为了分析和研究这个系统,设动力滑台的质量为m,液压缸的刚度为k,粘性阻尼系数为c,输入切削力为fi(t),yo(t)为输出位移,若不计动力滑台与支承之间的摩擦,将动力滑台连同铣刀抽象成如图2-9(b)所示的质量弹簧阻尼系统的力学模型。,牛顿定律、虎克定律等物理定律是建立机械系统数学模型的基础。根据牛顿第二定律知:可得 将输出变量项写在等号的左边,将输入变量项写在等号的右边,并将各阶导数项按降幂排列,得上式就是组合机床动力滑台铣平面时的机械系统的数学模型,即动力微分方程。,85,(2-26),(2-27),(2-28),第二步:根据微分方程写出传递函数。在零初始条件下,对(2-28)中各项求拉氏变换,并令,,可得s的代数方程为:由传递函数定义,得系统传递函数为:若组合机床动力滑台中物体质量m1kg,弹簧的虎克系数为常数k=20N/m,粘性阻尼系数也为常数c=5N/m/s;则系统的传递函数为:,86,(2-29),(2-30),(2-31),第三步:将系统模型输入到MATLAB工作空间中。程序如下:clearclcs=tf(s);%定义Laplace算子符号变量G=1/(s2+5*s+20)%直接给出系统传递函数表达式程序运行结果为:Transfer function:1-s2+5 s+20,87,例2-22 如图2-10 所示为电枢控制直流电动机原理图,图中Ra、La分别是电枢电路的电阻和漏磁电感,Mc是折合到电动机轴上的总负载转矩,激磁磁通为常值,若电动机各参数分别为Ra2.0,La0.5H,Cm=0.1,Ce=0.1,fm=0.2Nms,Jm=0.02kg.m2,分别以电动机电枢电压Ua(t)和负载力矩Md(t)为输入变量,以电动机的转动速度m(t)为输出变量,在MATLAB中建立电动机的数学模型。,图2-10 例2-22的电枢控制直流电动机工作原理,88,解:第一步:分析