搜索
您的当前位置:首页正文

1-用MATLAB处理线性系统数学模型 (3)

来源:赴品旅游
湖南工学院教案——《计算机仿真技术实验》

实验二 用MATLAB处理线性系统数学模型

[说明]

一个控制系统主要由被控对象、测量装置、控制器和执行器四大部分构成。MATLAB软件的应用对提高控制系统的分析、设计和应用水平起着十分重要的作用。采用MATLAB软件仿真的关键问题之一是在MATLAB软件平台上怎样正确表示被控对象的数学模型。

[实验目的]

1.了解MATLAB软件的基本特点和功能;

2.掌握线性系统被控对象传递函数数学模型在MATLAB环境下的表示方法及转换; 3.掌握多环节串联、并联、反馈连接时整体传递函数的求取方法;

4. 掌握在SIMULINK环境下系统结构图的形成方法及整体传递函数的求取方法; 5.了解在MATLAB环境下求取系统的输出时域表达式的方法。 [实验指导]

一、被控对象模型的建立

在线性系统理论中,一般常用的描述系统的数学模型形式有: (1)传递函数模型——有理多项式分式表达式 (2)传递函数模型——零极点增益表达式 (3)状态空间模型(系统的内部模型)

这些模型之间都有着内在的联系,可以相互进行转换。

1、传递函数模型——有理多项式分式表达式 设系统的传递函数模型为

...b1sb0C(s)bmsbm1sG(s)R(s)ansnan1sn1...a1sa0对线性定常系统,式中s的系数均为常数,且an不等于零。

mm1

这时系统在MATLAB中可以方便地由分子和分母各项系数构成的两个向量唯一地确定,这两个向量常用num和den表示。

num=[bm,bm-1,…,b1,b0] den=[an,an-1,…,a1,a0]

15

湖南工学院教案——《计算机仿真技术实验》

注意:它们都是按s的降幂进行排列的。分子应为m项,分母应为n项,若有空缺项(系数为零的项),在相应的位置补零。

然后写上传递函数模型建立函数:sys=tf(num,den)。这个传递函数便在MATLAB平台中被建立,并可以在屏幕上显示出来。

12s324s220例1-1: 已知系统的传递函数描述如下: G(s)4

2s4s36s22s2在MATLAB命令窗口(Command Window)键入以下程序: >> num=[12,24,0,20]; >> den=[2 4 6 2 2]; >> sys=tf(num,den) 回车后显示结果: Transfer function:

12 s^3 + 24 s^2 + 20

--------------------------------------- 2 s^4 + 4 s^3 + 6 s^2 + 2 s + 2

并同时在MATLAB中建立了这个相应的有理多项式分式形式的传递函数模型。

举例1-2:已知系统的传递函数描述如下:

4(s2)(s26s6)2G(s)s(s1)3(s33s22s5)

其中,多项式相乘项,可借助多项式乘法函数conv来处理。 在MATLAB命令窗口 键入以下程序: >> num=4*conv([1,2],conv([1,6,6],[1,6,6]));

>> den=conv([1,0],conv([1,1],conv([1,1],conv([1,1],[1,3,2,5])))); >> sys=tf(num,den) 回车后显示结果: Transfer function:

4 s^5 + 56 s^4 + 288 s^3 + 672 s^2 + 720 s + 288 --------------------------------------------------------------------------- s^7 + 6 s^6 + 14 s^5 + 21 s^4 + 24 s^3 + 17 s^2 + 5 s

同时在MATLAB中建立了这个有理多项式分式形式的传递函数模型。

15

湖南工学院教案——《计算机仿真技术实验》

2.传递函数模型——零极点增益模型

(s-z1)(s-z2)...(s-zm)G(s)=K零极点增益模型为:

(s-p1)(s-p2)...(s-pn)

其中:K为零极点增益,zi为零点,pj为极点。 该模型 在MATLAB中,可用[z,p,k]矢量组表示,即 z=[z1,z2,…,zm]; p=[p1,p2,...,pn]; k=[K];

然后在MATLAB中写上零极点增益形式的传递函数模型建立函数:sys=zpk(z,p,k)。 这个零极点增益模型便在MATLAB平台中被建立。

举例1-3: 已知系统的零极点增益模型:G(s)在MATLAB命令窗口 键入以下程序: >> z=[-3]; p=[-1,-2,-5]; k=6; >> sys=zpk(z,p,k) Zero/pole/gain: 6 (s+3)

----------------- (s+1) (s+2) (s+5)

则在MATLAB中建立了这个零极点增益的模型。

3.状态空间模型

状态方程与输出方程的组合称为状态空间表达式,又称为动态方程,如下:

6(s3)

(s1)(s2)(s5)AxBux

yCxDu

则在MATLAB中建立状态空间模型的程序如下: >> A=[A]; >> B=[B]; >> C=[C]; >> D=[D]; >> sys=ss(A,B,C,D)

15

湖南工学院教案——《计算机仿真技术实验》

二、不同形式模型之间的相互转换

不同形式之间模型转换的函数:

(1)tf2zp:多项式传递函数模型转换为零极点增益模型。

格式为:[z,p,k]=tf2zp(num,den)

(2)zp2tf: 零极点增益模型转换为多项式传递函数模型。

格式为:[num,den]=zp2tf(z,p,k)

(3)ss2tf: 状态空间模型转换为多项式传递函数模型。

格式为:[num,den]=ss2tf(a,b,c,d)

(4)tf2ss: 多项式传递函数模型转换为状态空间模型。

格式为:[a,b,c,d]=tf2ss(num,den)

(4)zp2ss:零极点增益模型转换为状态空间模型。

格式为:[a,b,c,d]=zp2ss(z,p,k)

(5)ss2zp:状态空间模型转换为零极点增益模型。

格式为:[z,p,k]=ss2zp(a,b,c,d)

三、环节串联、并联、反馈连接时等效的整体传递函数的求取 1、串联

这里:

在MATLAB中求取整体传递函数的功能,采用如下的语句或函数来实现。. ① G=G1*G2 ② G=series(G1,G2)

③ [num,den]=series(num1,den1,num2,den2) 例1-4 两环节G1、G2串联,求等效的整体传递函数G

G1(s)27 G2(s)2 s3s2s1解:①实现的程序:

>> n1=2;d1=[1 3]; n2=7;d2=[1 2 1]; G1=tf(n1,d1); G2=tf(n2,d2); G=G1*G2 运行结果: Transfer function:

15

湖南工学院教案——《计算机仿真技术实验》

14 ---------------------

s^3 + 5 s^2 + 7 s + 3 ②实现的程序:

>>n1=2;d1=[1 3];n2=7;d2=[1 2 1];G1=tf(n1,d1);G2=tf(n2,d2);G=series(G1,G2) 运行结果:

Transfer function: 14

---------------------

s^3 + 5 s^2 + 7 s + 3 ③实现的程序:

>>n1=2;d1=[1 3];n2=7;d2=[1 2 1];G1=tf(n1,d1);G2=tf(n2,d2); >> [n,m]=series(n1,d1,n2,d2) 运行结果:

n = 0 0 0 14 m = 1 5 7 3

例1-5 四环节G1、G2、 G3、G4串联,求等效的整体传递函数G

G1G2G327 G22 s3s2s1解:实现的程序:

>> n1=2;d1=[1 3];n2=7;d2=[1 2 1];G1=tf(n1,d1);G2=tf(n2,d2); >>G=G1*G2*G1*G1 运行结果: Transfer function:

56

------------------------------------------

s^5 + 11 s^4 + 46 s^3 + 90 s^2 + 81 s + 27 2、并联

两环节G1(s)与G2(s)并联,则等效的整体传递函数为 G(s)=G1(s)+G2(s)

在MATLAB中求取整体传递函数的功能,采用如下的语句或函数来实现。

15

湖南工学院教案——《计算机仿真技术实验》

① G=G1+G2 ② G= parallel (G1,G2)

③ [num,den]= parallel (num1,den1,num2,den2) 例1-6 两环节G1、G2并联,求等效的整体传递函数G(s)

G1(s)27 G2(s)2 s3s2s1解:

①实现的程序:

>> n1=2;d1=[1 3];n2=7;d2=[1 2 1];G1=tf(n1,d1);G2=tf(n2,d2);G1+G2 运行结果: Transfer function: 2 s^2 + 11 s + 23

---------------------------- s^3 + 5 s^2 + 7 s + 3 ②实现的程序:

>> n1=2;d1=[1 3];n2=7;d2=[1 2 1];G1=tf(n1,d1);G2=tf(n2,d2);G=parallel(G1,G2)

运行结果:

Transfer function: 2 s^2 + 11 s + 23

--------------------------- s^3 + 5 s^2 + 7 s + 3

③实现的程序:

>> n1=2;d1=[1 3];n2=7;d2=[1 2 1]; [n,d]=parallel(n1,d1,n2,d2)

运行结果:

n = 0 2 11 23 d = 1 5 7 3

则G(s)=G1(s)-G2(s)

相应的语句为

G=G1-G2 例1-7:程序如下

>> n1=2;d1=[1 3];n2=7;d2=[1 2 1];G1=tf(n1,d1);G2=tf(n2,d2);G=G1-G2

15

湖南工学院教案——《计算机仿真技术实验》

运行结果: Transfer function: 2 s^2 - 3 s - 19

------------------------------ s^3 + 5 s^2 + 7 s + 3

3.反馈:feedback

在MATLAB中采用如下的语句或函数来求取闭环传递函数G闭环(s) ① G= feedback(G1,G2,sign)

② [num,den]=feedback(num1,den1,num2,den2,sign) ③ G= cloop (G1, sign)

④ [numc,denc]=cloop(num,den,sign)

这里,sign=1时采用正反馈;当sign= -1时采用负反馈;sign缺省时,默认为负反馈。 其中G2;num2,den2;对应H(s)。 ③ ④ 只用于单位反馈系统。

例1-8 ,已知

求闭环传递函数。

3s1002 G(s)222s5s2s81两环节G1、G2分别为 G1(s)解:① a:

>> n1=[3 100] ;d1=[1 2 81];n2=2;d2=[2 5];

>>G1=tf(n1,d1);G2=tf(n2,d2);G=feedback(G1,G2,-1) 结果;

Transfer function:

15

湖南工学院教案——《计算机仿真技术实验》

6 s^2 + 215 s + 500 ------------------------------------ 2 s^3 + 9 s^2 + 178 s + 605 b:

>> n1=[3 100] ;d1=[1 2 81];n2=2;d2=[2 5]; G1=tf(n1,d1);G2=tf(n2,d2);G=feedback(G1,G2,1) 结果:

Transfer function:

6 s^2 + 215 s + 500 ---------------------------

2 s^3 + 9 s^2 + 166 s + 205 ②

num1=[3 100] ;den1=[1 2 81];num2=2;den2=[2 5]; [num,den]=feedback(num1,den1,num2,den2,-1) 结果:

num =

0 6 215 500 den =

2 9 178 605

举例1-9 ,已知 求闭环传递函数。

两环节G1、G2分别为

G1(s)解 ①

>> n1=[3 100] ;d1=[1 2 81];G1=tf(n1,d1);G2=1;G=feedback(G1,G2,-1) 结果:

Transfer function: 3 s + 100 ---------------

s^2 + 5 s + 181 ③

>> n1=[3 100] ;d1=[1 2 81];G1=tf(n1,d1);G=cloop(G1,-1) 结果:

Transfer function:

15

3s100 G2(s)1 2s2s81湖南工学院教案——《计算机仿真技术实验》

3 s + 100 ------------------- s^2 + 2 s + 81

以上语句对于零极点增益模型也是适用的 例1-10:

>>z=[-3];p=[-1];k=3;G1=zpk(z,p,k);z1=[-4];p1=[-2];k1=5;G1=zpk(z,p,k); G2=zpk(z1,p1,k1);G=G1*G2

Zero/pole/gain: 15 (s+3) (s+4) -------------- (s+1) (s+2)

>> GG=G1+G2

Zero/pole/gain: 8 (s+1.275) (s+3.725) --------------------- (s+1) (s+2)

>> GGG=feedback(G1,G2,-1)

Zero/pole/gain: 0.1875 (s+3) (s+2) ------------------ (s+3.25) (s+3.5)

以上运算中往往通分运算后不约简,可以再使用minreal( )函数来实现约简,其格式为 G1= minreal(G) 举例1-11

>>z=[-3];p=[-1];k=3;G1=zpk(z,p,k);z1=[-1];p1=[-2];k1=5;G1=zpk(z,p,k); G2=zpk(z1,p1,k1);G=G1*G2

Zero/pole/gain: 15 (s+3) (s+1) --------------

15

湖南工学院教案——《计算机仿真技术实验》

(s+1) (s+2)

>> G1=minreal(G)

Zero/pole/gain: 15 (s+3) -------- (s+2)

四、系统复杂连接时等效的整体传递函数的求取

1.用Siumlink软件实现传递函数的求取

Siumlink软件是基于Windows的模型化图形输入的仿真软件,是MATLAB软件的拓展,在Siumlink环境下输入系统的方框图则可以方便的得到其传递函数。

⑴ 系统方框图的输入

① 在MATLAB命令窗口中输入simulink,出现一个称为Simulink Library Browser的窗口,它提供构造方框图(或其他仿真图形界面)的模块;

② 在MATLAB主窗口对File\\New\\Model操作,打开模型文件窗口,在此窗口上,构造方框图。

③ 以下面的系统为例,介绍构造方框图的各模块录入方法和设置方法。

15

湖南工学院教案——《计算机仿真技术实验》

图中,G11464s141 G2 G3 G4 G5 G6

sss12s13s5s1◇ 录入各传递函数方框

在Simulink Library Browser的窗口打开Simulink→Continuous子库,将Transfer Fcn模块复制到(拽到)模型文件窗口,共复制6个方框,分别放到相应位置。传递函数是积分环节的,也可以复制Integrator模块

◇ 录入相加点

在Simulink Library Browser的窗口打开Simulink→Math子库,将Sum模块复制到(拽到)模型文件窗口,共复制复制到(拽到)模型文件窗口,共复制3个相加点,分别放到相应位置。

◇ 录入输入点与输出点标记

打开Simulink→Sources子库,将In1模块(输入点)复制到(拽到)模型文件窗口,放到相应位置。

打开Simulink→Sinks子库,将Out1模块(输出点)复制到(拽到)模型文件窗口,放到相应位置。

◇ 连接各方框(环节)

在模型文件窗口上,按箭头方向从起点到终点按住鼠标左键,连接方框。

传递函数方框有信号的入点和出点标记,画图不方便时,可以修改原来的方向,右键点击方框,在出现的浮动菜单上,作如下选择,即可实现方框旋转。

15

湖南工学院教案——《计算机仿真技术实验》

还可以对方框加阴影,改颜色,增加或取消修改名称注释及其位置等。其他模块也有这些功能。

◇ 双击各模块,在参数设定窗口,设置模块参数。 对于方框,是确定该方框表示的具体传递函数。

对于相加点,是确定图形标记是圆形还是方形,并确定有几个需要相加的输入信号及信号极性。

15

湖南工学院教案——《计算机仿真技术实验》

输入点与输出点标记不用再设置。 在模型文件窗口构建得到的方框图如下:

⑵ 将构建的方框图保存

15

湖南工学院教案——《计算机仿真技术实验》

自定文件名,保存在默认的目录下。文件名例如:cdhs 。 ⑶ 求取方框图表示的系统的传递函数 ① 有理多项式形式

在MATLAB命令窗口(Command Window)键入以下程序: >> [n,d]=linmod('cdhs') 注:' '中是自定的文件名。 结果:

Returning transfer function model

n =

0 0.0000 0 0.0000 12.0000 2.4000 0.0000 d =

1.0000 1.7000 16.8000 26.5000 21.6000 3.2000 0.0000 ② 零极点增益模型

在MATLAB命令窗口(Command Window)键入以下程序: >> [a,b,c,d]=linmod2('cdhs');G=ss(a,b,c,d);G1=ZPK(G) 结果: Zero/pole/gain:

12 s (s+0.2)

------------------------------------------------------------

s (s+0.1855) (s^2 + 1.521s + 1.12) (s^2 - 0.006824s + 15.41) 化简

>> G2=minreal(G1) 结果:

Zero/pole/gain:

12 (s+0.2)

----------------------------------------------------------

(s+0.1855) (s^2 + 1.521s + 1.12) (s^2 - 0.006824s + 15.41)

2.用信号流程图实现传递函数的求取 [实验内容]

1.自确定2个传递函数,实现传递函数的录入和求取串联、并联、反馈连接时等效的整体传递函数。要求分别采用有理多项式模型和零极点增益模型两种传递函数形式。

2.进行2例有理多项式模型和零极点增益模型间的转换。

3.在Siumlink环境下实现如下系统的传递函数的求取。各环节传递函数自定。

15

湖南工学院教案——《计算机仿真技术实验》

4.用画信号流程图方法求取下面系统的传递函数。

[实验报告要求]

1.写明实验目的和实验原理。实验原理中简要说明求取传递函数的途径和采用的语句或函数。

2.在实验过程和结果中,要求按项目写清楚自定的传递函数、画出系统方框图,从屏幕上复制程序和运行结果,复制系统的Simulink方框图,打印报告或打印粘贴在报告上。不方便打印的同学,要求手动从屏幕上抄写和绘制。

3.简要写出实验心得和问题或建议。

15

因篇幅问题不能全部显示,请点此查看更多更全内容

Top