控制系统数学模型.ppt

上传人:牧羊曲112 文档编号:5980361 上传时间:2023-09-10 格式:PPT 页数:69 大小:976KB
返回 下载 相关 举报
控制系统数学模型.ppt_第1页
第1页 / 共69页
控制系统数学模型.ppt_第2页
第2页 / 共69页
控制系统数学模型.ppt_第3页
第3页 / 共69页
控制系统数学模型.ppt_第4页
第4页 / 共69页
控制系统数学模型.ppt_第5页
第5页 / 共69页
点击查看更多>>
资源描述

《控制系统数学模型.ppt》由会员分享,可在线阅读,更多相关《控制系统数学模型.ppt(69页珍藏版)》请在三一办公上搜索。

1、第2章 控制系统数学模型,主要内容,2.1 线性定常系统的数学模型2.2 LTI模型的属性2.3 数学模型之间的转换2.4 系统模型的运算2.5 系统DEE建模2.6 系统S函数建模,2.1 线性定常系统的数学模型常用的数学模型,控制系统的数学模型在控制系统的研究中有相当重要的地位,要对系统进行仿真处理,首先需要知道系统的数学模型,而后才可能对系统进行模拟。同样,只有知道系统模型,才有可能在此基础上设计一个合适的控制器,使系统的响应达到预期效果,满足实际的工程需要。在线性系统理论中,常用的数学模型形式有:传递函数模型(系统的外部模型)、状态方程模型(系统的内部模型)、零极点增益模型和部分分式模

2、型等。,2.1 线性定常系统的数学模型常用的数学模型,线性定常系统的传递函数定义为:在线性定常系统中,当初始条件为零时,系统的响应(或输出)与激励(或输入)的拉普拉斯变换之比。考虑由下列微分方程描述的线性定常系统:,系统的传递函数为:,2.1 线性定常系统的数学模型常用的数学模型,系统的脉冲传递函数为:,离散系统的差分方程为:,2.1 线性定常系统的数学模型常用的数学模型,零极点模型实际上是传递函数模型的另一种表示形式,其原理是分别对原系统传递函数的分子、分母进行因式分解,以获得系统零点和极点增益 形式:,2.1 线性定常系统的数学模型常用的数学模型,控制系统常用到并联系统,这时就要对系统函数

3、进行分解,使其表现为一些基本控制单元和的形式,也就是部分分式表示:,2.1 线性定常系统的数学模型常用的数学模型,以传递函数为基础的经典控制理论着眼于系统的外部联系,重点为单输入单输出的线性定常系统。以状态空间模型为基础的现代控制理论着眼于系统的内部状态及其内在联系。具有n个状态、r个输入和m个输出的线性定常系统,状态空间模型表示为:,2.1 线性定常系统的数学模型多项式处理相关函数,MATAB中多项式用行向量表示,行向量元素依次为降幂排列的多项式的系数。MATLAB中提供的卷积分函数conv()可以用来进行多项式乘法处理。,【调用格式】c=conv(a,b)【说明】a和b分别表示一个多项式的

4、系数,按s的降幂排列。c为a和b多项式的乘积多项式。,多项式乘法conv(),2.1 线性定常系统的数学模型多项式处理相关函数,多项式求根roots(),分别对传递函数的分子和分母多项式进行因式分解,可求出系统的零极点。MATLAB提供了多项式求根函数roots()。,【调用格式】r=roots(p)【说明】p为多项式,r为所求的根。,2.1 线性定常系统的数学模型多项式处理相关函数,由根创建多项式函数poly(),如果已知多项式的特征根r,可用MATLAB函数poly直接得出特征多项式系数矢量p。,【调用格式】p=poly(r)可见roots()与函数poly()互为逆运算。,【调用格式】s

5、ys=tf(num,den)sys=tf(num,den,Property1,V1,.,PropertyN,VN)%初始化TF模型的其他属性【说明】num和den分别是传递函数的分子多项式系数和分母多项式系数,按s的降幂排列,是细胞数组。tf函数的返回值是一个对象,称之为TF对象,num和den是TF对象的属性。,1.SISO系统的TF数学模型,2.1 线性定常系统的数学模型传递函数模型,SISO系统的传递函数,试建立系统的TF模型。,num=conv(1,1,conv(1 2 6,1 2 6);%conv采用嵌套的形式 den=conv(1,0,0,conv(1,3,1,2,3,4);sys

6、=tf(num,den)%建立系统的TF模型sys.den1,2.1 线性定常系统的数学模型传递函数模型,Transfer function:s5+5 s4+20 s3+40 s2+60 s+36-s6+5 s5+9 s4+13 s3+12 s2 ans=1 5 9 13 12 0 0,num=1;den=1,2,10;sys=tf(num,den)%建立系统的TF模型sys.den1,2.1 线性定常系统的数学模型传递函数模型,2.MIMO系统的TF模型,numi,j和deni,j分别表示传递函数矩阵G(s)的第i行第j列的传递函数的分子多项式系数和分母多项式系数。,MIMO系统的传递函数矩

7、阵,试建立系统的TF模型。,2.1 线性定常系统的数学模型传递函数模型,N=1-1;1 2;D=1 1;1 4 5;sys=tf(N,D),2.1 线性定常系统的数学模型传递函数模型,【调用格式】sys=zpk(z,p,k)sys=zpk(z,p,k,Property1,V1,.,PropertyN,VN),【说明】z、p、k分别为系统的零点、极点和增益。z、p、k是细胞数组,对MIMO系统来说zi,j,pi,j,ki,j分别表示传递函数矩阵的第i行第j列的传递函数的零点、极点、增益。zpk函数的返回值是一个对象,称之为ZPK对象,z、p和k是ZPK对象的属性。如果没有零点,则z为空数组。,2

8、.1 线性定常系统的数学模型零极点增益模型,k=5;z=-2;p=0,-1+j,-1-j;sys=zpk(z,p,k)%建立系统的ZPK模型,2.1 线性定常系统的数学模型零极点增益模型,MIMO系统的传递函数矩阵,试建立系统的ZPK模型。,Z=,-5;1-i 1+i,;P=0,-1-1;1 2 3,;K=-1,3;2,0;H=zpk(Z,P,K),2.1 线性定常系统的数学模型零极点增益模型,2.1 线性定常系统的数学模型传递函数部分分式表示,控制系统常用到并联系统,这是就要对系统函数进行分解使其表现为一些基本单元的和的形式,也就是部分分式表示。在MATLAB中,利用留数计算函数实现传递函数

9、的部分分式展开:,【调用格式】r,p,k=residue(num,den)%将多项式进行部分分式num,den=residue(r,p,k)%将部分分式转化成多项式num和den:分别是按s降幂排列的多项式分子和分母系数。部分分式展开中:r是余数,p是极点,k是常数项。,2.1 线性定常系统的数学模型传递函数部分分式表示,已知某系统的传递函数,求其部分分式表示形式。,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.00

10、00i-1.0000 k=2,【调用格式】sys=ss(a,b,c,d)sys=ss(a,b,c,d,Property1,V1,.,PropertyN,VN)【说明】a,b,c,d分别表示状态方程的系统矩阵、输入矩阵,输出矩阵和传输矩阵。ss函数的返回值是一个对象,称之为ss对象,a,b,c和d是ss对象的属性。如果d=0,ss函数可以直接用标量0作为输入变量,忽略了对d的维数要求。,2.1 线性定常系统的数学模型状态空间模型,已知系统的状态空间描述为,试建立系统的SS模型。,A=0 1 0;0-1-1;0 0-3;B=0;1;1;C=1 0 0;D=0;ss(A,B,C,D),2.1 线性定

11、常系统的数学模型状态空间模型,1、脉冲传递函数模型【调用格式】sys=tf(num,den,Ts)%建立离散系统的TF模型sys=zpk(z,p,k,Ts)%建立离散系统的ZPK模型,【说明】num和den是离散系统脉冲传递函数的分子和分母多项式系数。z,p,k是离散系统脉冲传递函数的零点、极点和增益。Ts是离散系统的采样周期。,2.1 线性定常系统的数学模型离散系统的数学模型,2、状态空间模型【调用格式】sys=ss(a,b,c,d,Ts)%建立离散系统的SS模型【说明】a,b,c,d是离散系统状态空间差分方程组的系统矩阵、输入矩阵、输出矩阵和直接传输矩阵。Ts是离散系统的采样周期。,2.1

12、 线性定常系统的数学模型离散系统的数学模型,2.2 LTI模型的属性LTI模型的共有属性,【方法1】用InputDelay属性,【方法2】用ioDelay属性,num=1;2;den=1 0;1 1;H=tf(num,den);H.inputdelay=0.1,num=1;2;den=1 0;1 1;H=tf(num,den);H.iodelay=0.1;0.1,2.2 LTI模型的属性LTI模型的共有属性,Ts=0.1;G=tf(1,1-1,Ts,inputdelay,2),TF对象的专有属性,ZPK对象的专有属性,2.2 LTI模型的属性LTI模型的专有属性,SS对象的专有属性,2.2 L

13、TI模型的属性LTI模型的专有属性,属性设置和属性读取的方法如下:创建数学模型对象的时候,用带有属性的输入变量来设置相关属性。用get和set函数来设置和读取模型对象的属性。将模型对象的属性当作普通变量来访问,通过成员运算符“.”访问对象的属性。可以通过模型的专用函数获取系统模型的专有属性。,2.2 LTI模型的属性访问LTI模型的属性,sys=tf(1,1 1,Inputdelay,0.3);%用带有属性输入变量的方法调用tfset(sys,inputname,energy,outputname,temperature,notes,A simple heater model);%用set函数

14、设置TF对象的属性值NoteValue=get(sys,notes);%用get函数访问TF对象的notes属性sys.num1=2;%直接通过属性名访问属性值sys.den1(2)=2;sys.InputName=Hz;,2.2 LTI模型的属性访问LTI模型的属性,2.2 LTI模型的属性访问LTI模型的属性,get(sys)%显示TF对象的所有属性值,2.2 LTI模型的属性访问LTI模型的属性,2.2 LTI模型的属性访问LTI模型的属性,【调用格式】,num,den=tfdata(sys,v)%以行向量的形式返回TF对象的分子分母多项式系数z,p,k=zpkdata(sys,v)%以

15、列向量的形式返回ZPK对象的零极点和增益向量A,B,C,D=ssdata(sys,v)%从状态空间模型sys提取状态空间矩阵如果没有v变量,则返回值为细胞数组的形式。对于单输入单输出系统,加上v变量,返回值的表达形式可以更简单。,例:访问sys=zpk(1;-2,-3;-4;-5,100)模型的属性。sys=zpk(1-2,-3-4-5,100)num,den=tfdata(sys,v)z,p,k=zpkdata(sys,v),Zero/pole/gain:100(s-1)(s+2)-(s+3)(s+4)(s+5),z=1-2p=-3-4-5k=100,num=0 100 100-200den

16、=1 12 47 60,2.2 LTI模型的属性访问LTI模型的属性,【调用格式】,sys=tf(sys)%将sys对象转换为TF模型sys=zpk(sys)%转换为ZPK模型sys=ss(sys)%转换为SS模型,2.3 数学模型之间的转换LTI对象之间的转换,【调用格式】,z,p,k=tf2zp(num,den)%将TF对象属性转换为ZPK对象属性A,B,C,D=tf2ss(num,den)%将TF对象属性转换为SS对象属性num,den=zp2tf(z,p,k)%将ZPK对象属性转换为TF对象属性A,B,C,D=zp2ss(z,p,k)%将ZPK对象属性转换为SS对象属性z,p,k=ss

17、2zp(A,B,C,D,iu)%将SS对象属性转换为ZPK对象属性num,den=ss2tf(A,B,C,D,iu)%将SS对象属性转换为TF对象属性r,p,k=residue(num,den)%将TF对象属性转化为部分分式形式num,den=residue(r,p,k)%将部分分式 形式转化为TF对象属性,2.3 数学模型之间的转换LTI对象属性之间的转换,2.3 数学模型之间的转换LTI对象属性之间的转换,方法1:属性转换A=2,0,0;0,4,1;0,0,4;B=1,0,1;C=1,1,0;D=0;num den=ss2tf(A,B,C,D);G1=tf(num,den)z,p,k=tf

18、2zp(num,den);G2=zpk(z,p,k),方法2:对象转换A=2,0,0;0,4,1;0,0,4;B=1,0,1;C=1,1,0;D=0;gss=ss(A,B,C,D);gtf=tf(gss)gzpk=zpk(gss),2.3 数学模型之间的转换LTI对象属性之间的转换,sysd=c2d(sysc,Ts)%将连续系统转换为采样周期为Ts的离散系统sysd=c2d(sysc,Ts,method)%指定连续系统的离散化方法sysd,G=c2d(sysc,Ts,method)%对于SS模型,求得初始条件的转换阵GAd,Bd,Cd,Dd=c2dm(A,B,C,D,Ts,method)%连续

19、SS模型的离散化Numd,Dend=c2dm(num,Den,Ts,method)%连续tf模型的离散化sysc=d2c(sysd)%将离散系统转换为连续系统sysc=d2c(sysd,method)%指定离散系统的连续化方法methodAc,Bc,Cc,Dc=d2cm(A,B,C,D,Ts,method)%离散SS模型的连续化Num,Den=d2cm(Numd,Dend,Ts,method)%离散tf模型的连续化sysd1=d2d(sysd,Ts)%改变采样周期,生成新的离散系统,【调用格式】,2.3 数学模型之间的转换连续系统和离散系统之间的转换,sysc表示连续系统的数学模型,sysd表

20、示离散系统的数学模型。method为转换方法其取值和含义为:zoh零阶保持器法,这是默认的转换方法。foh一阶保持器法imp冲击响应不变法tustin 双线性变换法prewarp 预扭曲的双线性变换法matched 零极点映射匹配法(仅用于SISO系统),【说明】,2.3 数学模型之间的转换连续系统和离散系统之间的转换,方法1:num=10;den=1,7,10;ts=0.1;sysc=tf(num,den);sysd=c2d(sysc,ts),方法2:num=10;den=1,7,10;ts=0.1;n_zoh,d_zoh=c2dm(num,den,ts);tf(n_zoh,d_zoh),2

21、.3 数学模型之间的转换连续系统和离散系统之间的转换,1加法和减法,syssys1+sys2,2乘法*,syssys1-sys2,syssys1*sys2,2.4 系统模型的运算数学运算符,3求逆 inv(sys)4除法/sys1sys2相当于 inv(sys1)*sys2sys1/sys2相当于 sys1*inv(sys2)5转置 sys.sys.表示LTI系统sys的转置,其具体含义为:TF模型的转置相当于将细胞数组num和den转置。ZPK模型的转置相当于将细胞数组z,p和k转置。SS模型的转置相当于将(A,B,C,D)都转置为(A.,B.,C.,D.)。FRD模型的转置相当于将频率响应

22、数据矩阵在每个频率点上都转置。6共轭复转置 sys 连续系统的传递函数为G(S),其共轭复转置系统的传递函数为G(-S)T;离散系统的脉冲传递函数为G(Z),其共轭复转置系统的脉冲传递函数为 G(Z-1)T。,2.4 系统模型的运算数学运算符,【说明】对于MIMO系统,子系统sysl和子系统sys2串联时,将sysl的端口号为output1的输出通道和sys2的端口号为input2的输入通道相连接。,【调用格式】sysseries(sys1,sys2)%用于SISO系统的串联sysseries(sys1,sys2,outputs1,inputs2)%用于MIMO系统的串联,1系统模型的串联,2

23、.4 系统模型的运算系统模型的连接,【调用格式】sys=parallel(sys1,sys2)sys=parallel(sys1,sys2,in1,in2,out1,out2)【说明】对于MIMO系统,子系统sysl和子系统sys2并联时,将sysl的端口号为in1的输入通道和sys2的端口号为in2的输入通道相连接,将sysl的端口号为out1的输出通道和sys2的端口号为out2的输出通道相连接。,2系统模型的并联,2.4 系统模型的运算系统模型的连接,【调用格式】sys=feedback(sys1,sys2,sign)sys=feedback(sys1,sys2,feedin,feedo

24、ut,sign),3系统模型的反馈连接,【说明】sign为反馈的极性,sign=1为正反馈,sign=-1为负反馈(缺省值)。sys1为前向通道的数学模型,sys2为反馈通道的数学模型。对于MIMO系统,sysl和sys2反馈连接时,feedin指定了sys1中接受反馈的输入端口号,feedout指定了sys1中用于反馈的输出端口号,最终实现的反馈系统与sys1具有相同的输入、输入端。,2.4 系统模型的运算系统模型的连接,A1=1,0;0,1;B1=1,1;0,1;C1=1,3;2,0;D1=1,0;2,5;sys1=ss(A1,B1,C1,D1);A2=-2,0;1,0;B2=1,0;C2

25、=0,1;D2=0;sys2=ss(A2,B2,C2,D2);feedin=1;feedout=2;sign=-1;sys=feedback(sys1,sys2,feedin,feedout,sign),2.4 系统模型的运算系统模型的连接,典型反馈控制系统结构如图所示,其中,求系统的闭环传递函数。,G=tf(4,1,2,3,4);Gc=tf(1,-3,1,3);H=tf(1,0.01,1);G_o=Gc*G;%系统前向通道的传递函数G_c=feedback(G_o,H)%系统的闭环传递函数,2.4 系统模型的运算系统模型的连接,Transfer function:0.04 s2+3.88 s

26、-12-0.01 s5+1.05 s4+5.09 s3+9.13 s2+17.12 s,2.4 系统模型的运算系统模型的连接,求整个系统的闭环传递函数模型。,num1=1;den1=10 1;sys1=tf(num1,den1);num2=1;den2=1 1;sys2=tf(num2,den2);num3=1;den3=1 2 1;sys3=tf(num3,den3);num4=1;den4=0.5 1;sys4=tf(num4,den4);num5=3;den5=4 1;sys5=tf(num5,den5);方法一:s1=parallel(sys3,sys4);s2=series(sys2

27、,s1);s3=feedback(s2,sys5);s=series(sys1,s3),2.4 系统模型的运算系统模型的连接,方法二:input=1;output=6;sys=append(sys1,sys2,sys3,sys4,sys5,sys6);Q=1 0 0;2 1-5;3 2 0;4 2 0;5 3 4;6 3 4;sysc=connect(sys,Q,input,output),2.5 系统DEE建模,在MATLAB命令窗口中输入dee 后回车,得到:,2.6 系统S函数建模,(一)s-function的概念s-function是一个动态系统的计算机语言描述,在MATLAB里,用户

28、可以选择用m文件编写,也可以用c或mex文件编写,在这里只给大家介绍如何用m文件编写s-function。S-function提供了扩展Simulink模块库的有力工具,它采用一种特定的调用语法,使函数和Simulink解法器进行交互。S-function最广泛的用途是定制用户自己的Simulink模块。它的形式十分通用,能够支持连续系统、离散系统和混合系统。,Simulink为用户提供了许多内置的基本库模块,通过这些模块进行连接而构成系统的模型。对于那些经常使用的模块进行组合并封装可以构建出重复使用的新模块,但它依然是基于Simulink原来提供的内置模块。而Simulink s-funct

29、ion是一种强大的对模块库进行扩展的新工具。,(二)建立m文件s-function1、使用模板文件:sfuntmp1.m 格式:sys,x0=function(t,x,u,flag)该模板文件位于MATLAB根目录下toolbox/simulink/blocks目录下。模板文件里s-function的结构十分简单,它只为不同的flag的值指定要相应调用的m文件子函数。比如当flag=3时,即模块处于计算输出这个仿真阶段时,相应调用的子函数为sys=mdloutputs(t,x,u)。模板文件使用switch语句来完成这种指定,当然这种结构并不唯一,用户也可以使用if语句来完成同样的功能。而且在

30、实际运用时,可以根据实际需要来去掉某些值,因为并不是每个模块都需要经过所有的子函数调用。模板文件只是Simulink为方便用户而提供的一种参考格式,并不是编写s-function的语法要求,用户完全可以改变子函数的名称,或者直接把代码写在主函数里,但使用模板文件的好处是,比较方便,而且条理清晰。,使用模板编写s-function,用户只需把s-函数名换成期望的函数名称,如果需要额外的输入参量,还需在输入参数列表的后面增加这些参数,因为前面的4个参数是simulink调用s-function时自动传入的。对于输出参数,最好不做修改。接下去的工作就是根据所编s-function要完成的任务,用相应

31、的代码去替代模板里各个子函数的代码即可。Simulink在每个仿真阶段都会对s-function进行调用,在调用时,Simulink会根据所处的仿真阶段为flag传入不同的值,而且还会为sys这个返回参数指定不同的角色,也就是说尽管是相同的sys变量,但在不同的仿真阶段其意义却不相同,这种变化由simulink自动完成。m文件s-function可用的子函数说明如下:mdlInitializeSizes(flag=0):定义s-function模块的基本特性,包括采样时间、连续或者离散状态的初始条件和sizes数组。mdlDerivatives(flag=1):计算连续状态变量的微分方程。md

32、lUpdate(flag=2):更新离散状态、采样时间和主时间步的要求。mdlOutputs(flag=3):计算s-function的输出。,mdlGetTimeOfNextVarHit(flag=4):计算下一个采样点的绝对时间,这个方法仅仅是在用户在mdlInitializeSizes 里说明了一个可变的离散采样时间。,2、定义s-function的初始信息为了让Simulink识别出一个m文件s-function,用户必须在s-函数里提供有关s-函数的说明信息,包括采样时间、连续或者离散状态个数等初始条件。这一部分主要是在mdlInitializeSizes子函数里完成。Sizes数组

33、是s-function函数信息的载体,它内部的字段意义为:NumContStates(sys(1):连续状态的个数(状态向量连续部分的宽度)NumDiscStates(sys(2):离散状态的个数(状态向量离散部分的宽度)NumOutputs(sys(3):输出变量的个数(输出向量的宽度)NumInputs(sys(4):输入变量的个数(输入向量的宽度)DirFeedthrough(sys(5):有不连续根的数量NumSampleTimes(sys(6):采样时间的个数,有无代数循环标志,如果字段代表的向量宽度为动态可变,则可以将它们赋值为1。注意DirFeedthrough是一个布尔变量,它

34、的取值只有0和1两种,0表示没有直接馈入,此时用户在编写mdlOutputs子函数时就要确保子函数的代码里不出现输入变量u;1表示有直接馈入。NumSampleTimes表示采样时间的个数,也就是ts变量的行数,与用户对ts的定义有关。需要指出的是,由于s-function会忽略端口,所以当有多个输入变量或多个输出变量时,必须用mux模块或demux模块将多个单一输入合成一个复合输入向量或将一个复合输出向量分解为多个单一输出。,3、输入和输出参量说明S-function默认的4个输入参数为t、x、u和flag,它们的次序不能变动,代表的意义分别为:t:代表当前的仿真时间,这个输入参数通常用于决

35、定下一个采样时刻,或者在多采样速率系统中,用来区分不同的采样时刻点,并据此进行不同的处理。x:表示状态向量,这个参数是必须的,甚至在系统中不存在状态时也是如此。它具有很灵活的运用。u:表示输入向量。flag:是一个控制在每一个仿真阶段调用哪一个子函数的参数,由Simulink在调用时自动取值。,S-function默认的4个返回参数为sys、x0、它们的次序不能变动,代表的意义分别为:sys:是一个通用的返回参数,它所返回值的意义取决于flag的值。x0:是初始的状态值(没有状态时是一个空矩阵),这个返回参数只在flag值为0时才有效,其他时候都会被忽略。,例子:神经元PID控制器的SIMUL

36、INK仿真模型,步骤:1、先编写S函数;2、在simulink模块库中找到User-defind Functions 下的S-Function模块;,步骤:3、把User-defind Functions 下的S-Function模块拖到MATLAB的模型窗口并双击;,步骤:4、输入S-Function的name和parameters后点击S-Function 模块 create subsystemMask S-Function;,functionsys,x0=neuro(t,x,u,flag,kp,ki,kd,k)if flag=2 sys(1)=x(1)+kp*u(2)*u(1);sys(2)=x(2)+ki*u(2)*u(2);sys(3)=x(3)+kd*u(2)*u(3);,elseif flag=3 sys=k*(x(1)*u(1)+x(2)*u(2)+x(3)*u(3)/(x(1)+x(2)+x(3);,elseif flag=0 sys=0;3;1;3;1;1;x0=0.1;0.1;0.1;else sys=;end,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号