湖南工学院教案——《计算机仿真技术实验》
实验二 用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
1-用MATLAB处理线性系统数学模型 (3)



