《matlab第4章.ppt》由会员分享,可在线阅读,更多相关《matlab第4章.ppt(65页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第4章 控制系统数学模型控制系统控制系统控制系统控制系统常用的数学模型有:常用的数学模型有:常用的数学模型有:常用的数学模型有:传递函数模型传递函数模型传递函数模型传递函数模型、状态方程模型状态方程模型状态方程模型状态方程模型、零极点增益模型零极点增益模型零极点增益模型零极点增益模型等。等。等。等。这些模型之间可以相互转换。这些模型之间可以相互转换。这些模型之间可以相互转换。这些模型之间可以相互转换。本章主要介绍如何利用本章主要介绍如何利用本章主要介绍如何利用本章主要介绍如何利用MATLAB/MATLAB/SimulinkSimulink建模和建模和建模和建模和对模型进行转换。对模型进行转换。
2、对模型进行转换。对模型进行转换。14.5 MATLAB/Simulink在模型中的应用4.5.1 与多项式相关的函数与多项式相关的函数MATLAB中多项式用中多项式用行向量行向量表示,表示,行向量元素为行向量元素为按降幂排列按降幂排列的多项式系数。的多项式系数。1多项式乘法函数多项式乘法函数 conv()格式:格式:C=conv(A,B)%求多项式求多项式A和和B的乘积的乘积A、B是两个多项式的系数向量,按降幂排列。是两个多项式的系数向量,按降幂排列。conv()把两个多项式相乘合并成一个多项式。把两个多项式相乘合并成一个多项式。23注意:注意:一个一个conv 只能用于两个多项式的运算。只能
3、用于两个多项式的运算。如果有多个多项式,则要用多个如果有多个多项式,则要用多个conv。用多个用多个conv嵌套使用,记得加括号。嵌套使用,记得加括号。42多项式求根函数多项式求根函数 roots()格式为:格式为:r=roots(p)其中,其中,p为多项式,为多项式,r为所求的根。为所求的根。可对传递函数分子和分母求根,求出系统的可对传递函数分子和分母求根,求出系统的零极点零极点。53由根创建多项式函数由根创建多项式函数 poly()已知多项式的已知多项式的特征根特征根r,用函数,用函数 poly()求出多求出多项式系数向量项式系数向量p。格式为:格式为:p=poly(r)6传递函数模型传递
4、函数模型对线性定常系统,对线性定常系统,s的系数均为常数,且的系数均为常数,且a0不等于不等于0。MATLAB中,传递函数由中,传递函数由分子多项式系数向量分子多项式系数向量num和和分母多项式系数向量分母多项式系数向量den构成。构成。num=bm,bm-1,b0,den=an,an-1,,a0则传递函数表示为:则传递函数表示为:4.5.2 建立传递函数相关的函数建立传递函数相关的函数71建立传递函数模型的函数建立传递函数模型的函数 tf()格式:格式:sys=tf(num,den)%sys是建立的传递函数是建立的传递函数建立常规系统的传递函数。建立常规系统的传递函数。8【例例】用用MATL
5、AB建立系统传递函数模型。建立系统传递函数模型。方法方法1:方法方法2:92从传递函数模型中提取分子分母多项式从传递函数模型中提取分子分母多项式系数系数的函数的函数tfdata()格式:格式:num,den=tfdata(sys,v)sys:传递函数传递函数 v功能功能:返回分子分母多项式系数向量。:返回分子分母多项式系数向量。104.5.3 建立建立零极点形式零极点形式的的数学模型数学模型相关相关函数函数111建立零极点数学模型的函数建立零极点数学模型的函数 zpk()格式:格式:sys=zpk(z,p,k)【例例】用用MATLAB建立系统零极点增益模型。建立系统零极点增益模型。122提取模
6、型零极点增益向量的函数提取模型零极点增益向量的函数zpkdata()格式:格式:z,p,k=zpkdata(sys,v)v功能功能:返回零极点和增益向量。返回零极点和增益向量。133部分分式展开函数部分分式展开函数residue()功能功能:对对两个多项式的比两个多项式的比进行部分展开。进行部分展开。格式:格式:r,p,k=residue(b,a)求求B(s)/A(s)的部分分式展开式的部分分式展开式向量向量b和和a是是按按s降幂排列的多项式系数。降幂排列的多项式系数。14执行命令执行命令 r,p,k=residue(num,den),给出部分分式展开式的留数给出部分分式展开式的留数r、极点、
7、极点p和余数和余数k:15164.5.4 建立状态空间模型相关的函数1建立状态空间模型的函数建立状态空间模型的函数ss()常见的调用格式常见的调用格式为为:sys=ss(A,B,C,D)其中,其中,(A,B,C,D)为系统状态空间的矩阵组表示,为系统状态空间的矩阵组表示,sys是建立的状态空间模型。是建立的状态空间模型。状态空间表达式状态空间表达式在在MATLAB中中,系统状态空间用系统状态空间用A,B,C,D矩阵矩阵组表示,即系统表示为组表示,即系统表示为ss(A,B,C,D)172提取模型状态空间矩阵的函数提取模型状态空间矩阵的函数ssdata()已经建立的状态空间模型,函数已经建立的状态
8、空间模型,函数ssdata(),可以提取状态空间矩阵可以提取状态空间矩阵.常见的调用格式常见的调用格式为为:A,B,C,D =ssdata(sys)其中,其中,sys是建立的状态空间模型,是建立的状态空间模型,A,B,C,D为系统状态空间的矩阵。为系统状态空间的矩阵。184.5.5 Simulink中的控制系统模型表示固定时间传输延迟固定时间传输延迟Transport Delay状态空间系统模型状态空间系统模型State Space零极点模型零极点模型Zero-Pole传递函数模型传递函数模型Transfer Fcn输入信号积分输入信号积分Integrator输入信号微分输入信号微分Deriv
9、ative功能功能模块名模块名图标图标表表4.3 连续模块的名称及功能连续模块的名称及功能194.5.6 Simulink 模型与状态空间模型与状态空间模型模型的转化的转化以状态空间形式线性化模型的函数以状态空间形式线性化模型的函数linmod格式为:格式为:A,B,C,D=linmod(sys,x,u)sys:需要进行线性化的需要进行线性化的simulink模型的名称模型的名称linmod命令返回命令返回sys系统在操作点处的状态空间矩阵。系统在操作点处的状态空间矩阵。x:操作点处的状态向量:操作点处的状态向量u:操作点处的输入向量:操作点处的输入向量x,u缺省值为缺省值为0。20【例例4.
10、4】求传递函数求传递函数的分子和分母多项式,并求传递函数的特征根。的分子和分母多项式,并求传递函数的特征根。21%num 分子多项式分子多项式%conv()采用嵌套形式采用嵌套形式%den分母多项式分母多项式22%r为分母多项式的根为分母多项式的根23【例例4.5】一系统微分方程如下:一系统微分方程如下:使用使用MATLAB建立传递函数模型。建立传递函数模型。解:建立模型的解:建立模型的MATLAB程序代码:程序代码:%建立传递函数模型建立传递函数模型%分子、分母多项式系数分子、分母多项式系数24【例例4.6】传递函数传递函数求其分子分母多项式,零极点。求其分子分母多项式,零极点。25%建立传
11、递函数模型建立传递函数模型%提取分子、分母多项式提取分子、分母多项式26%提取零极点和增益提取零极点和增益127【例例4.9】单位负反馈系统的开环传递函数为单位负反馈系统的开环传递函数为 分别利用分别利用simulink中的传递函数中的传递函数模型和零极点模型建立系统模型。模型和零极点模型建立系统模型。1、利用传递函数模型建立系统模型、利用传递函数模型建立系统模型步骤步骤1:新建一个:新建一个模型模型窗口窗口步骤步骤2:为模型添加所需模块:为模型添加所需模块传递函数传递函数:continuous transfer Fcn相加器相加器:math operations sum输入口模块输入口模块:
12、ports&subsystemsin1输出口模块输出口模块:ports&subsystemsout128步骤步骤3:将模块连接好:将模块连接好步骤步骤4:打开相加器参数设置对话框,设置为打开相加器参数设置对话框,设置为“+-”步骤步骤5:打开传递函数打开传递函数Transfer Fcn参数设置对话框,参数设置对话框,numerator设置为设置为“2 10”,denominator设置为设置为“1 3 0”。步骤步骤6:将模型存为:将模型存为“untitled1.mdl”文件。文件。图图4.7 simulink中的传递函数模型中的传递函数模型29系统开环传递函数零极点形式为系统开环传递函数零极
13、点形式为零点为零点为-5;极点为;极点为0和和-3,增益为,增益为2。步骤步骤1:新建一个:新建一个模型模型窗口窗口步骤步骤2:为模型添加所需模块:为模型添加所需模块零极点模型零极点模型:continuous Zero-Pole相加器相加器:math operations sum输入口模块输入口模块:ports&subsystemsin1输出口模块输出口模块:ports&subsystemsout12、利用零极点模型建立系统模型、利用零极点模型建立系统模型30步骤步骤3:将模块连接好:将模块连接好步骤步骤4:打开相加器参数设置对话框,设置为打开相加器参数设置对话框,设置为“+-”步骤步骤5:打
14、开零极点模型参数设置对话框,打开零极点模型参数设置对话框,zero设置为设置为“-5”,poles设置为设置为“0-3”,Gain设设置为置为“2”步骤步骤6:将模型存为:将模型存为“untitled1.mdl”文件。文件。图图4.8 simulink中的零极点表示模型中的零极点表示模型314.6 系统模型转换及连接4.6.1 模型转换模型转换线性时不变系统(线性时不变系统(LTI)的模型包括)的模型包括传递函数(传递函数(Transfer Function)模型)模型TF零极点增益(零极点增益(ZPK)模型)模型ZPK状态空间(状态空间(State Space)模型)模型SS在一些场合需要某
15、种模型,在另一些场合可能需要在一些场合需要某种模型,在另一些场合可能需要另外一种模型,这就需要进行模型的转换另外一种模型,这就需要进行模型的转换。32图图4.9 模型转换关系图模型转换关系图33表表4.4 模型转换函数模型转换函数函数名函数名功能功能ss2tf状态空间模型转换为传递函数模型状态空间模型转换为传递函数模型ss2zp状态空间模型转换为零极点模型状态空间模型转换为零极点模型tf2zp传递函数模型转换为零极点模型传递函数模型转换为零极点模型tf2ss传递函数模型转换为状态空间模型传递函数模型转换为状态空间模型zp2tf零极点模型转换为传递函数模型零极点模型转换为传递函数模型zp2ss零
16、极点模型转换为状态空间模型零极点模型转换为状态空间模型z,p k=tf2zp(num,den)从传递函数模型获取零极点增益从传递函数模型获取零极点增益 num,den=zp2tf(z,p,k)从零极点模型获取分子分母多项式从零极点模型获取分子分母多项式34【例例4.10】系统的零极点模型系统的零极点模型求其传递函数模型。求其传递函数模型。解:解:MATLAB程序代码:程序代码:35%系统的零点、极点和增益系统的零点、极点和增益%零极点模型转换为传递函数模型零极点模型转换为传递函数模型36%建立零极点模型建立零极点模型%建立传递函数模型建立传递函数模型374.6.2 模型连接1串联串联 G(s)
17、=G1(s)G2(s)模型串联函数模型串联函数 series格式:格式:num,den=series(num1,den1,num2,den2)num1,den1:G1(s)的分子、分母多项式的分子、分母多项式num2,den2:G2(s)的分子、分母多项式的分子、分母多项式num,den:G(s)的分子、分母多项式的分子、分母多项式382并联并联 G(s)=G1(s)+G2(s)模型并联函数模型并联函数 parallel格式:格式:num,den=parallel(num1,den1,num2,den2)num1,den1:G1(s)的分子、分母多项式的分子、分母多项式num2,den2:G2
18、(s)的分子、分母多项式的分子、分母多项式num,den:G(s)的分子、分母多项式的分子、分母多项式39【例例】已知两系统的传递函数已知两系统的传递函数 分别求两系统串联、并联时的传递函数。分别求两系统串联、并联时的传递函数。4041423反馈函数反馈函数feedback格式:格式:num,den=feedback(num1,den1,num2,den2,sign)num1,den1:G(s)的分子、分母多项式的分子、分母多项式num2,den2:H(s)的分子、分母多项式的分子、分母多项式sign=-1为负反馈(默认值),为负反馈(默认值),sign=1为正反馈为正反馈num,den:系统
19、传递函数的分子、分母多项式:系统传递函数的分子、分母多项式求闭环传递函数的求闭环传递函数的MATLAB函数有两个:函数有两个:cloop()和和feedback()其中其中cloop()函数只能用于函数只能用于H(s)=1(即单位反馈)(即单位反馈)434闭环闭环cloop函数(单位反馈)函数(单位反馈)格式:格式:numc,denc=cloop(num,den,sign)num,den:G(s)的分子、分母多项式的分子、分母多项式sign=-1为负反馈(默认值),为负反馈(默认值),sign=1为正反馈为正反馈numc,denc:系统传递函数的分子分母多项式。:系统传递函数的分子分母多项式。
20、44闭环反馈系统的结构图如图所示,闭环反馈系统的结构图如图所示,应用应用series()函数和函数和feedback()函数求闭环传递函数函数求闭环传递函数的的MATLAB指令:指令:45464.6.3 模型连接的模型连接的MATLAB实现实现【例例4.11】已知两系统的传递函数已知两系统的传递函数 分别求两系统串联、并联时的传递函数。分别求两系统串联、并联时的传递函数。47解:解:MATLAB程序代码:程序代码:num1=6*1,2;den1=conv(1,1,conv(1,3,1,5);%传递函数传递函数1的分子分母多项式向量的分子分母多项式向量num2=1,2.5;den2=conv(1
21、,1,1,4);%传递函数传递函数2的分子分母多项式向量的分子分母多项式向量nums,dens=series(num1,den1,num2,den2)%串联连接串联连接nump,denp=parallel(num1,den1,num2,den2)%并联连接并联连接s_tf=tf(nums,dens)%生成串联连接传递函数生成串联连接传递函数p_tf=tf(nump,denp)%生成并联连接传递函数生成并联连接传递函数4849【例例4.12】已知系统的前向传递函数已知系统的前向传递函数 ,分别求反馈传递函数分别求反馈传递函数 H(s)=1、时时闭环连接传递函数和负反馈传递函数。闭环连接传递函数和
22、负反馈传递函数。50解:解:MATLAB程序代码:程序代码:num1=1,-1;den1=1,-5,-2;%前向传递函数的分子分母多项式系数前向传递函数的分子分母多项式系数num2=1,1;den2=1,3,2;%反馈传递函数的分子分母多项式系数反馈传递函数的分子分母多项式系数numc,denc=cloop(num1,den1)%闭环连接闭环连接numf,denf=feedback(num1,den1,num2,den2)%反馈连接反馈连接c_tf=tf(numc,denc)%生成闭环传递函数生成闭环传递函数f_tf=tf(numf,denf)%生成反馈连接传递函数生成反馈连接传递函数5152
23、4.8 综合实例及综合实例及MATLAB/simulink应用应用【例例4.13】给定给定RLC网络,网络,ui(t)为输入量,为输入量,uo(t)为输出量。求这个系统的传递函数模型、零极点为输出量。求这个系统的传递函数模型、零极点增益模型。增益模型。(R1=1,R2=1,C=1F,L=1H)。L解:步骤解:步骤1:从数学上求出系统的传递函数:从数学上求出系统的传递函数根据电路基本定理,列出电路的微分方程。根据电路基本定理,列出电路的微分方程。53整理方程得到整理方程得到在零初始条件下,求拉普拉斯变换,得在零初始条件下,求拉普拉斯变换,得代入具体数值,求得系统的传递函数模型:代入具体数值,求得
24、系统的传递函数模型:54步骤步骤2:使用:使用MATLAB建立系统模型建立系统模型MATLAB程序代码如下:程序代码如下:clear all;%清除工作空间的变量清除工作空间的变量num=0,1;den=1 2 2;%传递函数分子分母多项式系数传递函数分子分母多项式系数sys_tf=tf(num,den);%建立传递函数模型建立传递函数模型z,p,k=tf2zp(num,den);%从传递函数模型获取系统的零极点增益从传递函数模型获取系统的零极点增益sys_zpk=zpk(z,p,k)%建立系统的零极点增益模型建立系统的零极点增益模型A,B,C,D=zp2ss(z,p,k);%从零极点增益模型
25、获取系统的状态空间模型从零极点增益模型获取系统的状态空间模型sys_ss=ss(A,B,C,D)%建立系统的状态空间模型建立系统的状态空间模型5556步骤步骤3:求阶跃响应:求阶跃响应利用利用step函数,求系统的阶跃响应。函数,求系统的阶跃响应。%求系统的阶跃响应求系统的阶跃响应%添加栅格添加栅格57【例例4.14】已知某双环调速的电流环系统的结构图,已知某双环调速的电流环系统的结构图,采用采用simulink动态结构图求取线性模型。动态结构图求取线性模型。58解:利用解:利用simulink的提取线性模型函数的提取线性模型函数linmod(),得到状态空间模型,然后对状态空间模型进行各得到
26、状态空间模型,然后对状态空间模型进行各种仿真。种仿真。步骤步骤1:建立:建立simulink动态结构图动态结构图按照系统结构图,在按照系统结构图,在simulink模块库中,选择相应模块库中,选择相应模块,得到系统的动态模型,并将模型存为模块,得到系统的动态模型,并将模型存为“samples_4_14.mdl”文件。文件。59图图4.17 simulink中的系统动态模型中的系统动态模型Simulink框中不能加中文汉字注释,加了后文件框中不能加中文汉字注释,加了后文件不能保存,也不能运行。不能保存,也不能运行。60步骤步骤2:求取系统的线性状态空间模型:求取系统的线性状态空间模型在在MATL
27、AB命令窗口中运行以下命令,得到一命令窗口中运行以下命令,得到一个线性状态空间模型个线性状态空间模型(A,B,C,D)A,B,C,D=linmod(samples_4_14);%提取提取simulink模型的线性状态空间模型模型的线性状态空间模型6162步骤步骤3:求系统的传递函数模型:求系统的传递函数模型在在MATLAB命令窗口中运行以下命令,得到系统的传递函命令窗口中运行以下命令,得到系统的传递函数并显示出来数并显示出来num,den=ss2tf(A,B,C,D);%将状态空间模型转换为传递函数模型将状态空间模型转换为传递函数模型printsys(num,den,s)%以传递函数形式显示出来以传递函数形式显示出来6364函数函数printsys(num,den,s)按格式显示连续系统按格式显示连续系统的传递函数的传递函数 65