示例:num=[73.22 39.26 165.7 ]

den=[1 1.116 0.709 1.419]

num =

0 -0.1933 0.5872 0.2336

den =

1.0000 -0.2472 0.1775 -0.4286

>>

sysd = tf(num,den,0.01) %建立离散系统的TF模型

Transfer function:

-0.1933 z^2 + 0.5872 z + 0.2336

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

z^3 - 0.2472 z^2 + 0.1775 z - 0.4286

Sampling time: 0.01

>> sysc = d2c(sysd)

%将离散系统转换为连续系统

Transfer function:

-21.12 s^2 - 1.012e004 s +

1.3e006

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

s^3 + 84.72 s^2 + 3.917e004 s + 1.04e006

第八章控制系统的数学模型

8.1线性定常系统的数学模型

8.1.1 传递函数模型

1. SISO系统的TF数学模型

MATLAB中用tf函数来建立控制原理中的传递函数模型,称之为TF模型。

【调用格式】

sys = tf(num,den) %建立以num为分子多项式、den为分母多项式的TF模型

sys = tf(num,den,'Property1',V1,...,'PropertyN',VN)

%初始化TF模型的其他属性

sys = tf('s') %建立拉普拉斯变换的自变量s的TF模型

【说明】

1. num和den分别是传递函数的分子多项式系数和分母多项式系数,按s的降幂排列,是细胞数组。

2. tf函数的返回值是一个对象,称之为TF对象,num和den是TF对象的属性。

例8.1.1 设某SISO系统的传递函数为2()210sGsss=++

试建立系统的TF模型。

解:【方法1】直接用分子和分母多项式系数建立TF模型

>>num=[1,0]; den=[1,2,10];

>>sys=tf(num,den) %建立系统的TF模型

Transfer function:

s

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

s^2 + 2 s + 10

>>sys.den{1}

%对SISO系统,den{1}表示传递函数的分母多项式系数向量

ans =

1 2 10

【方法2】用s因子和数学运算符建立TF模型

>> s = tf('s'); %建立s的TF模型

>> H = s/(s^2 + 2*s +10);

%用数学运算符建立系统的TF模型

2. MIMO系统的TF模型

在MATLAB中,num{i,j}和den{i,j}分别表示传递函数矩阵的第i行第j列的传递函数的分子多项式系数和分母多项式系数。()Gs

例8.1.2 设某MIMO系统的传递函数矩阵211()245ssGssss−⎡⎤⎢⎥+=⎢⎥+⎢⎥⎢⎥++⎣⎦

试建立系统的TF模型。

解:【方法1】直接用分子和分母多项式系数建立TF模型

118

>>N= {[1 -1];[1 2]}; D= {[1 1];[1 4

5]};

>>sys=tf(N,D) %建立系统的TF模型

Transfer function from input to output...

s - 1

#1: -----

s + 1

s + 2

#2: -------------

s^2 + 4 s + 5

【说明】#1为第1输出对第1输入的传递函数,#2为第2输出对第1输入的传递函数。

【方法2】用s因子和数学运算符建立TF模型

>>s = tf('s')

>>h11 = (s-1)/(s+1);

>>h21 = (s+2)/(s^2+4*s+5);

>> H = [h11; h21]

8.1.2 零极点模型

控制系统的数学模型可以用零点、极点和增益来描述,MATLAB称这种数学模型为零极点增益模型,即ZPK模型,并用zpk函数来建立这种数学模型。

【调用格式】

sys =zpk(z,p,k) %建立以z为零点,p为极点,k为增益的ZPK模型

sys = zpk(z,p,k,'Property1',V1,...,'PropertyN',VN)

%初始化ZPK模型的其他属性

sys = zpk('s') %建立拉普拉斯变换的自变量s的ZPK模型

【说明】

1.

z、p、k分别为系统的零点、极点和增益。z、p、k是细胞数组,对MIMO系统来说z{i,j},p{i,j},k{i,j}分别表示传递函数矩阵的第i行第j列的传递函数的零点、极点、增益。

()Gs

2. zpk函数的返回值是一个对象,称之为ZPK对象,z、p和k是ZPK对象的属性。

3. 如果没有零点,则z为空数组。

例8.1.3 设某SISO系统的传递函数为25(2)()(22sGssss+= ++

试建立系统的ZPK模型。

解:【方法1】直接用零点、极点、增益向量来建立ZPK模型

>>k=5; z=[-2]; p=[0, -1+j,

-1-j];

>>sys = zpk(z,p,k) %建立系统的ZPK模型

Zero/pole/gain:

5 (s+2)

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

s (s^2 + 2s + 2)

【方法2】用s因子和数学运算符建立TF模型

>> s = zpk('s'); %建立s的ZPK模型

>> H = 5*(s+2)/(s*(s^2 + 2*s +10));

%用数学运算符建立系统的ZPK模型

例8.1.4 设某MIMO系统的传递函数矩阵

119

2213(5)(1)()2(22)0(1)(2)(3)sssGssssss−+⎡⎤⎢⎥+⎢⎥=⎢⎥−+⎢⎥−−−⎣⎦

试建立系统的ZPK模型。

解: >> Z = {[], [-5]; [1-i 1+i] , []};

P = {0, [-1 -1]; [1 2 3], []}; K = [-1, 3; 2, 0];

>> H = zpk(Z,P,K) %建立系统的ZPK模型

Zero/pole/gain from input 1 to output...

-1

#1: --

s

2 (s^2 - 2s + 2)

#2: -----------------

(s-1) (s-2) (s-3)

Zero/pole/gain from input 2 to output...

3 (s+5)

#1: -------

(s+1)^2

#2: 0

8.1.3 状态空间模型

现代控制理论用状态空间模型来描述系统的运动规律,在MATLAB中用ss函数来建立控制系统的状态空间模型,称之为SS模型。

【调用格式】

sys = ss(a,b,c,d) %建立状态空间模型

sys = ss(a,b,c,d,'Property1',V1,...,'PropertyN',VN)

%初始化模型的其他属性

sys = ss(d) %建立静态增益矩阵d的状态空间模型

【说明】

1. a,b,c,d分别表示状态方程的系统矩阵、输入矩阵,输出矩阵和传输矩阵。

2. ss函数的返回值是一个对象,称之为ss对象,a,b,c和d是ss对象的属性。

3. 如果d=0,ss函数可以直接用标量0作为输入变量,忽略了对d的维数要求。

例8.1.5 已知系统的状态空间描述为

112233010001110031xxxxuxx⎡⎤⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥=−−+⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥−⎣⎦⎣⎦⎣⎦⎣⎦&&&

[]123100xyxx⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦

试建立系统的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)

a =

x1 x2 x3 120

x1 0 1 0

x2 0 -1 -1

x3 0 0 -3

b =

u1

x1 0

x2 1

x3 1

c =

x1 x2 x3

y1 1 0 0

d =

u1

y1 0

Continuous-time model.

8.1.4 频率响应数据模型

MATLAB提供了频率响应数据模型来描述这类系统,这种数学模型称为FRD模型,frd函数用来创建频率响应数据模型。

【调用格式】

sys = frd(response,frequency) %建立频率响应数据模型

【说明】

1. frequency为测试或者计算频率特性所选取的角频率向量ω,其每一个元素为一个角频率值。

2.

response为频率响应数据()Gjω。对于SISO系统,response是一个向量,response(i)表示系统角频率为frequency(i)的正弦信号的频率响应数据。对于MIMO系统,response是一个三维矩阵,response(i,j,:)表示系统的第i个输出对第j个输入的频率响应数据;response(i,j,k)表示系统的第i个输出在frequency(k)频率点上,对第j个输入的频率响应数据。

3. frd函数的返回值是一个对象,称之为FRD对象,frequency和response是FRD对象的属性。

例8.1.6 运行下列语句,观察运算结果,分析FRD对象的数据结构。

>> freq = logspace(1,2);

>> resp =

0.05*(freq).*exp(i*2*freq);

>> sys = frd(resp,freq)

8.1.5 离散系统的数学模型

1、脉冲传递函数模型

离散系统的脉冲传递函数可以用tf函数和zpk函数建立其TF模型和ZPK模型。

【调用格式】

sys = tf(num,den,Ts) %建立离散系统的TF模型

sys = zpk(z,p,k,Ts) %建立离散系统的ZPK模型

【说明】

1. num和den是离散系统脉冲传递函数的分子和分母多项式系数。

2. z,p,k是离散系统脉冲传递函数的零点、极点和增益。

3. Ts是离散系统的采样周期。

121

2、状态空间模型

离散系统的状态空间模型用差分方程组来描述,ss函数可以建立离散系统的状态空间模型。

【调用格式】

sys = ss(a,b,c,d,Ts) %建立离散系统的SS模型

【说明】

1. a,b,c,d是离散系统状态空间差分方程组的系统矩阵、输入矩阵、输出矩阵和直接传输矩阵。

2. Ts是离散系统的采样周期。

8.1.6 随机生成稳定的控制系统

MATLAB提供了用于测试的随机生成一些系统模型的函数。

【调用格式】

sys = rss(n,p,m) %随机生成稳定的n阶连续系统,具有p个输出和m个输入

sys = drss(n,p,m) %随机生成稳定的n阶离散系统,具有p个输出和m个输入

【说明】:函数返回的是SS模型。

8.2 LTI模型的属性

在MATLAB中,数学模型的数据结构为对象,本节介绍LTI(线性时不变)模型对象的属性数据,包括LTI对象的共有属性和各种LTI对象的专有属性,以及对属性数据的访问。

8.2.1 LTI模型的属性描述

1. LTI模型的共有属性

LTI模型中有多个类,包括tf类、zpk类、ss类等,这些类有共有的属性。表8.2.1列举了LTI对象的共有属性。

表8.2.1 LTI对象的共有属性

属性名

属性描述

属性的数据类

ioDelay

输入通道对输出通道的滞后时间矩阵

矩阵

InputDelay

输入信号的滞后时间

向量

InputGroup

输入通道分组

结构体

InputName

输入通道名称

字符串细胞数组

Notes

注解

字符串

OutputDelay

输出信号的滞后时间

向量

OutputGroup

输出通道分组

结构体

OutputName

输出通道名字

字符串细胞数组

Ts

离散系统的采样周期

标量

Userdata

附加数据

任意数据类系

【说明】

1. 关于滞后时间

MATLAB支持带有纯滞后的控制系统模型,将纯滞后分为:输入通道对输出通道的滞后、输入通道滞后和输出通道滞后3种类型,分别用LTI对象的ioDelay、InputDelay和OutputDelay属性来表示。

(1) ioDelay属性

设某系统的传递函数矩阵为

122

G(s

11111111()())[exp()()]()()mppmssmijijssppmehsehsshsehsehsτττττ−−−−⎡⎤⋅⋅⋅⎢⎥=⋅⋅⋅⋅⋅⋅⋅⋅⋅=−⎢⎥⎢⎥⋅⋅⋅⎢⎥⎣⎦

其中ijτ为第i个输出对第j个输入的纯滞后时间,为s的有理分式。可以用如下MATLAB语句建立的TF模型和ZPK模型。()ijhs()Gs

G = tf(num,den,'ioDelay',Tau)

G = zpk(z,p,k,'ioDelay',Tau)

其中num和den为[(传递函数矩阵的分子系数和分母系数,Tau为)]ijhs[]ijτ矩阵

(2) InputDelay属性和OutputDelay属性

在状态空间模型中,ioDelay方式无法精确的描述滞后是发生在输入端还是输出端,MATLAB提供了InputDelay属性和OutputDelay属性来描述SS模型的纯滞后,可以用下面的语句来描述系统M1和M2。

M1 = ss(-1,1,1,0,'inputdelay',0.1)

M2 = ss(-1,1,1,0,'outputdelay',0.1)

例8.2.1 设某系统的传递函数矩阵0.11()21ssGses−⎡⎤⎢⎥=⎢⎥⎢⎥⎢⎥+⎣⎦

试建立该系统的TF模型。

解:【方法1】用InputDelay属性

>> s = tf('s');

>> H = [1/s ; 2/(s+1)];

>> H.inputdelay = 0.1

Transfer function from input to output...

1

#1: exp(-0.1*s) * -

s

2

#2: exp(-0.1*s) * -----

s + 1

【方法2】用ioDelay属性

>> s = tf('s');

>> H = [1/s ; 2/(s+1)];

>> H.iodelay = [0.1 ; 0.1];

(3) 离散系统的滞后

离散系统的纯滞后通常用采样周期的整数倍来描述。

例8.2.2 设某离散系统的脉冲传递函数为2()1zGzz−=−

采样周期Ts=0.1s。试建立该系统的带有0.2s纯滞后时间的数学模型。

解:系统的纯滞后时间为0.2s,为2个采样周期

>> Ts = 0.1;

>> G = tf(1,[1 -1],Ts,'inputdelay',2)

123

(4) 用Pade近似法处理纯滞后环节

1892年法国数学家提出了一种用有理分式近似表示纯滞后环节Tse−的方法,称为Pade近似法,其数学表达式为

2341232341231/2()()()1/2()()()TsTspTspTspTseTspTspTspTs−−+−+−⋅⋅⋅+⋅⋅⋅=+++++⋅⋅⋅

MATLAB中调用pade函数,用pade的某阶展开式取代纯滞后环节,这样的处理可以降低系统分析和设计的计算量。Pade有理式的阶次越高(一般4次即可)、纯滞后时间越小,近似效果越好。

【调用格式】

[num,den] = pade(T,N) %求纯滞后时间为T的N阶Pade有理分式

sysx = pade(sys,N) %将系统sys中的所有纯滞后环节用N阶Pade展开式近似

2. LTI模型的专有属性

LTI模型的ZF类、ZPK类、SS类,每个类都具有各自的专有属性。表8.2.2—表8.2.5列举了LTI对象的专有属性。

表8.2.2 TF对象的专有属性

属性名

属性描述

属性的数据类系

den

传递函数的分母多项式

行向量实数细胞数组

num

传递函数的分子多项式

行向量实数细胞数组

Variable

传递函数的自变量

's', 'p', 'z', 'q', 'z^-1'

表8.2.3 ZPK对象的专有属性

属性名

属性描述

属性的数据类系

Z

传递函数的零点

列向量复数细胞数组

P

传递函数的极点

列向量复数细胞数组

K

传递函数的增益

实矩阵

Variable

传递函数的自变量

's', 'p', 'z', 'q', 'z^-1'

表8.2.4 SS对象的专有属性

属性名

属性描述

属性的数据类系

A

系统矩阵

实数矩阵

B

输入矩阵

实数矩阵

C

输出矩阵

实数矩阵

D

直接传递矩阵

实数矩阵

E

描述矩阵

实数矩阵

Nx

状态数目

整数标量

StateName

状态名称

字符串构成的列细胞数组

表8.2.5 FRD对象的专有属性

属性名

属性描述

属性的数据类系

Frequency

频率点

实数向量

ResponseData

频率响应数据

多维数值数组

Units

频率单位

'rad/s' 'Hz'

8.2.2 访问LTI模型的属性

对控制系统的LTI模型的属性的访问包括属性设置和属性读取,可以采用如下方法:

1. 创建数学模型对象的时候,用带有属性的输入变量来设置相关属性。

2. 用get和set函数来设置和读取模型对象的属性。

124

3. 将模型对象的属性当作普通变量来访问,通过成员运算符“.”访问对象的属性。

4. 可以通过模型的专用函数获取系统模型的专有属性。

[a,b,c,d] = ssdata(sys)

[num,den] = tfdata(sys) [num,den] = tfdata(sys,'v')

[z,p,k] = zpkdata(sys) [z,p,k] = zpkdata(sys,'v')

例8.2.3 读下列程序,理解模型对象属性的访问方法。

>> sys = tf(1,[1

1],'Inputdelay',0.3); %用带有属性输入变量的方法调用tf

>>set(sys,'inputname','energy','outputname','temperature','notes','A

simple heater model'); %用set函数设置TF对象的属性值

>> NoteValue=get(sys,'notes');

%用get函数访问TF对象的notes属性

>>sys.num{1}=2; %直接通过属性名访问属性值

>>sys.den{1}(2)=2;

>>sys.InputName='Hz';

>> get(sys) %显示TF对象的所有属性值

num: {[0 2]}

den: {[1 2]}

Variable: 's'

Ts: 0

ioDelay: 0

InputDelay: 0.3

OutputDelay: 0

InputName: {'Hz'}

OutputName: {'temperature'}

InputGroup: [1x1 struct]

OutputGroup: [1x1 struct]

Notes: {'A simple heater model'}

UserData: []

>> sys

Transfer function from input "Hz" to output "temperature":

2

exp(-0.3*s) * -----

s + 2

8.3 数学模型之间的转换

8.3.1 LTI对象之间的转换

LTI各类对象之间可以进行相互转换,下面列出这些转换函数的调用格式。

sys = tf(sys) % 将sys对象转换为TF模型

sys = zpk(sys) % 转换为ZPK模型

sys = ss(sys) % 转换为SS模型

sys = frd(sys,frequency) % 转换为FRD模型

125

8.3.2 LTI对象属性之间的转换

可以转换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] = ss2zp(A,B,C,D,iu) % 将SS对象的属性转换为ZPK对象的属性

[num,den] = ss2tf(A,B,C,D,iu) % 将SS对象的属性转换为TF对象的属性

【说明】:iu是输入变量的序号(端口号),即转换是输出对哪一个输入变量进行的。

例8.3.1 已知系统Σ(A,B,C,D)的系数矩阵是

⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=400140002A,101B⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦,C=[1 1 0],D=0

求取该系统相应的TF模型和ZPK模型。

解:用些下面的语句实现模型转换。

>> 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)

Transfer function:

s^2 - 7 s + 14

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

s^3 - 10 s^2 + 32 s - 32

>> [z,p,k]=tf2zp(num,den);

>> G2=zpk(z,p,k)

Zero/pole/gain:

(s^2 - 7s + 14)

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

(s-4)^2 (s-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);

8.3.3 连续系统和离散系统之间的转换

对系统进行分析和设计时,经常涉及到将连续环节和离散环节之间相互转换的问题,MATLAB提供了相应的连续系统和离散系统的转换函数。

【调用格式】

sysd = c2d(sysc,Ts) %将连续系统转换为采样周期为Ts的离散系统

sysd = c2d(sysc,Ts, 'method') %指定连续系统的离散化方法method

[sysd,G] = c2d(sysc,Ts, 'method') %对于SS模型,同时求得初始条件的转换阵G

126

[Ad,Bd,Cd,Dd] = c2dm(A,B,C,D,Ts,'method') %用于连续SS模型的离散化

sysc = d2c(sysd) %将离散系统转换为连续系统

sysc = d2c(sysd,method) %指定离散系统的连续化方法method

[Ac,Bc,Cc,Dc] = d2cm(A,B,C,D,Ts,'method') %用于离散SS模型的连续化

sysd1 = d2d(sysd,Ts) %改变离散系统的采样周期,生成新的离散系统

【说明】

1. sysc表示连续系统的数学模型,sysd表示离散系统的数学模型。

2. method为转换方法(离散化、连续化),可能的取值和含义为:

'zoh' 零阶保持器法,这是默认的转换方法。

'foh' 一阶保持器法

'imp' 冲击响应不变法

'tustin' 双线性变换法

'prewarp' 预扭曲的双线性变换法

'matched' 零极点映射匹配法(仅用于SISO系统)

例8.3.2 已知系统的被控对象传递函数为: )5)(2(10)(++=sssG

如果选择采样周期Ts=0.1秒,试将其进行离散化处理。

解:运行下面的程序,用零阶保持器法将连续系统转换成离散系统。

>> num=10; den=[1,7,10];

ts=0.1;

>> sysc=tf(num,den); %

[n_zoh,d_zoh]=c2dm(num,den,ts) ;

>> sysd=c2d(sysc,ts)

%tf(n_zoh,d_zoh,ts)

Transfer function:

0.0398 z + 0.03152

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

z^2 - 1.425 z + 0.4966

Sampling time: 0.1

例8.3.3

已知某离散系统的脉冲传递函数为0.4()0.7zGzz+=−,系统的采样周期Ts=0.1。如果重新改变系统的采样周期为Ts=0.25s,试求采样周期改变前后系统的单位阶跃响应。

解:运行下面的程序,运行结果如图8.3.1所示。

>>h1 = tf([1 0.4],[1

-0.7],0.1);

>>h2 = d2d(h1,0.25);

>>step(h1,'-.',h2,'-')

00.511.522.511.522.533.544.55Step ResponseTime (sec)Amplitude

图8.3.1 离散系统采样周期改变前后的单位阶跃响应曲线

127

8.4 系统模型的运算

MATLAB用对象这种数据结构来表示控制系统的数学模型,支持面向对象的程序设计,因此重载了一些运算符,用来实现对数学模型的运算。另外还提供了一些函数,用来支持数学模型的联接。

8.4.1 子系统

系统的运动规律可以用其输入输出关系来描述。对于MIMO系统来说,子系统是由其一部分输入变量和一部分输出变量构成的系统,并且子系统的输入输出关系和原系统的关系相同。

1. LTI系统的数学模型为sys,子系统的含义是:

sys(i,j) 第i个输出对第j个输入的子系统

sys(3,1:4) 第3个输出对第1个到第4个输入的子系统

sys(:,1) 所有输出对第1个输入的子系统

sys([1,3],1) 第1个输出和第3个输出对第1个输入的子系统

2.

sys为状态空间模型,其模型数据为A,B,C,D,则子系统sys(i,j)表示的状态空间模型数据为A,B(:,j),C(i,:),D(i,j)。

3. 如果sys是传递函数矩阵,则sys(i,j)表示传递函数矩阵的第i行第j列的传递函数。

8.4.2 数学运算符

1.加法和减法+ -

加减法运算表示系统并联,加法运算如图8.4.1所示,减法运算如图8.4.2所示。

sys=sys1+sys2 sys=sys1 - sys2

图8.4.1 模型的加法运算 图8.4.2 模型的减法运算

2.乘法 *

乘法运算表示系统串联,乘法运算如图8.4.3所示,注意乘法运算通常不满足交换律。

sys=sys1* sys2

图8.4.3 模型的乘法运算

3.求逆 inv(sys)

系统模型的求逆运算相当于把原系统的输入输出关系对调过来,即原系统的输入作为求逆后系统的输出,原系统的输出作为求逆后系统的输入。

如果sys系统的数学描述为yHu=,其求逆后的系统sysn的数学描述就为,记为sysn=inv(sys)。需要注意的是当sys为状态空间模型时,要求D阵为可逆方阵。1uHy−=

128

4.除法 \ /

sys1\sys2相当于inv(sys1)*sys2

sys1/sys2相当于sys1*inv(sys2)

5.转置 sys.'

sys.'表示LTI系统sys的转置,其具体含义为:

(1) TF模型的转置相当于将细胞数组num和den转置。

(2) ZPK模型的转置相当于将细胞数组z,p和k转置。

(3) SS模型的转置相当于将(A,B,C,D)都转置为(A.',B.',C.',D.')。

(4) FRD模型的转置相当于将频率响应数据矩阵在每个频率点上都转置。

6.共轭复转置 sys'

连续系统的传递函数为,其共轭复转置系统的传递函数为[(;离散系统的脉冲传递函数为,其共轭复转置系统的脉冲传递函数为。()Gs)]TGs−()Gz1[()]TGz−

8.4.3 系统模型的连接

所谓系统组合,就是将两个或多个子系统按一定方式加以连接形成新的系统。这种连接组合方式主要有串联、并联、反馈、扩展、聚合等形式。MATLAB提供了进行这类组合连接的相关函数和运算符。

1. 系统模型的聚合

可以用和矩阵聚合相同的方法实现系统模型的聚合操作,系统模型的聚合包括水平聚合和垂直聚合。

设两个子系统模型sys1和sys2,其传递函数矩阵分别为H1和H2。用[sys1,

sys2]表示系统模型的水平聚合,如图8.4.4所示。用[sys1; sys2]表示系统的垂直聚合,如图8.4.5所示。

1122[,][1,2]uyHHusyssys⎡⎤=⎢⎥⎣⎦

1122[1;2]yHuyHsyssys⎡⎤⎡⎤=⎢⎥⎢⎥⎣⎦⎣⎦

图8.4.4 系统模型的水平聚合 图8.4.5 系统模型的垂直聚合

2.系统模型的串联

【调用格式】

sys=series(sys1,sys2) %用于SISO系统的串联

sys=series(sys1,sys2,outputs1,inputs2) %用于MIMO系统的串联

【说明】对于MIMO系统,子系统sysl和子系统sys2串联时,将sysl的端口号为output1的输出通道和sys2的端口号为input2的输入通道相连接,如图8.4.6所示。

3.系统模型的并联

【调用格式】

sys=parallel(sys1,sys2) %用于SISO系统的并联

sys=parallel(sys1,sys2,in1,in2,out1,out2) %用于MIMO系统的并联

【说明】对于MIMO系统,子系统sysl和子系统sys2并联时,将sysl的端口号为in1的输入通道和sys2的端口号为in2的输入通道相连接,将sysl的端口号为out1的输出通道和sys2的端口号为out2的输出通道相连接,如图8.4.7所示。

129

图8.4.6 MIMO系统的串联 图8.4.7 MIMO系统的并联

4.系统模型的反馈连接

【调用格式】

sys=feedback(sys1,sys2,sign) %用于SISO系统的反馈连接

sys=feedback(sys1,sys2,feedin,feedout,sign) %用于MIMO系统的反馈连接

【说明】

1. sign为反馈的极性,sign=1为正反馈连接,sign=-1为负反馈连接(缺省值)。

2. sys1为前向通道的数学模型,sys2为反馈通道的数学模型。

3.

对于MIMO系统,子系统sysl和子系统sys2反馈连接时,feedin指定了sys1中接受反馈的输入端口号,feedout指定了sys1中用于反馈的输出端口号,最终实现的反馈系统与sys1具有相同的输入、输入端,如图8.4.8所示。

图8.4.8 MIMO系统的反馈连接

例8.4.1已知前向环节和反馈环节的状态空间表达式的系数阵分别为

⎥⎦⎤⎢⎣⎡=10011A,,,, ⎥⎦⎤⎢⎣⎡=10111B⎥⎦⎤⎢⎣⎡=02311C⎥⎦⎤⎢⎣⎡=52011D

⎥⎦⎤⎢⎣⎡−=01022A,,⎥⎦⎤⎢⎣⎡=012B[]102=C,02=D

试将前向环节的输入1和输出2与反馈环节构成负反馈系统。

解:运行如下程序得到反馈连接后的系统模型

>> 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=[0,1]; D2=0;

>> sys2=ss(A2,B2,C2,D2);

>> feedin=1; feedout=2;

sign=-1;

>>

sys=feedback(sys1,sys2,feedin,feedout,sign);

例8.4.2 典型反馈控制系统结构如图8.4.9所示, ()cGs()Gs()Hs()Rs()Cs

图8.4.9 反馈系统结构图

130

其中,4324)(23+++=ssssG,33)(+−=sssGc,101.01)(+=ssH,求系统的闭环传递函数。

解:通过下面的语句求出闭环系统的传递函数

>>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);

%系统的闭环传递函数

5.系统模型的扩展

【调用格式】

sys = append(sys1,sys2,...,sysN)

【说明】:将子系统sys1,sys2,...,sysN的所有输入作为系统的输入,所有输出作为系统输出,且各子系统间没有信号连接,从而扩展为一个系统。图8.4.10为多个系统的结构图扩展和传递函数模型扩展,图8.4.11为2个状态空间模型的扩展。

⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦ sys1 0 sys2 sys= 0 sys3 O

图8.4.10 系统结构图扩展和传递函数模型扩展

⎥⎦⎤⎢⎣⎡⎥⎦⎤⎢⎣⎡+⎥⎦⎤⎢⎣⎡⎥⎦⎤⎢⎣⎡=⎥⎦⎤⎢⎣⎡⎥⎦⎤⎢⎣⎡⎥⎦⎤⎢⎣⎡+⎥⎦⎤⎢⎣⎡⎥⎦⎤⎢⎣⎡=⎥⎦⎤⎢⎣⎡21212121212121212121

D 0 0 D C 0 0 C B 0 0 B A 0 0 A

uuxxyyuuxxxx&&

图8.4.11 两个状态空间子系统的扩展

6.系统模型的结构图连接

我们经常把多个子系统用结构图连接起来构成整个控制系统,这就涉及到从结构图描述中获取系统模型的问题。MATLAB提供了connect函数来解决这类问题。

【调用格式】

sysc = connect(sys, Q, inputs, outputs)

【说明】

1. connect函数的功能是将多个子系统按照一定的连接方式构成一个系统。

2. sys是待连接的子系统被append函数扩展后的系统。

3.

Q矩阵声明了子系统的连接方式。Q矩阵的行向量声明了sys输入信号的连接方式,每个行向量的第1个元素为sys系统的输入端口号,其他元素为与该输入信号相连接的sys端口号。

4. Inputs声明了整个系统的输入信号是由sys系统的哪些输入端口号构成的。

5. Outputs声明了整个系统的输出信号是由sys系统的哪些输出端口号构成的。

例8.4.3 已知系统的结构图如图8.4.12所示,试求取整个系统的状态空间模型。

图8.4.12 系统模型的结构图连接

131

其中,子系统sys2的状态空间模型数据为

-9.017.7 -1.69 3.21A⎡⎤=⎢⎥⎣⎦,,-0.510.53

-0.002-1.85B⎡⎤=⎢⎥⎣⎦-3.292.45-13.5 18C⎡⎤=⎢⎥⎣⎦,-0.55-0.14-0.65

0.3D⎡⎤=⎢⎥⎣⎦

解:如果把sys1(1入1出)、sys2(2入2出)和sys3(1入1出)用append扩展为系统sys,则sys有4个输入和4个输出,它们依次为sys1、sys2和sys3的输入和输出,其编号为1到4,具体编号如下:

sys的1号输入为sys1的1号输入uc

sys的2号输入和3号输入为sys2的1号输入u1和2号输入u2

sys的4号输入为sys3的1号输入

sys的1号输出为sys1的1号输出

sys的2号输出和3号输出为sys2的1号输出y1和2号输出y2

sys的4号输出为sys3的1号输出

从图中的连接方式可知,sys的3号输入u2由其1号输出和4号输出构成,sys的4号输入由其3号输出构成,因此Q=[3, 1, -4;

4, 3, 0]。

系统的输入由sys的1号输入uc和2号输入u1构成,因此inputs=[1, 2]。

系统的输出由sys的2号输出y1和3号输出y2构成,因此outputs=[2, 3]。

运行下面程序,查看运行结果。

>>A = [ -9.0, 17.7; -1.69, 3.21 ]; B

= [ -0.51, 0.53; -0.002 -1.85];

>>C = [ -3.29, 2.45; -13.5, 18]; D =

[-0.55, -0.14; -0.65, 0.3 ];

>>sys1 = tf(10,[1

5],'inputname','uc');

>>sys2 = ss(A,B,C,D,'inputname',{'u1'

'u2'}, 'outputname',{'y1' 'y2'});

>>sys3 = zpk(-1,-2,2);

>>sys = append(sys1,sys2,sys3)

>>Q=[3, 1, -4; 4, 3, 0]; outputs=[2,

3]; inputs=[1, 2];

>>sysc =

connect(sys,Q,inputs,outputs)

8.5 数学模型的分析函数

8.5.1 模型分析函数

表8.5.1 模型的特征分析

函数名

函数功能

class

返回模型的类型名称,'tf' ,'zpk', 'ss' 或者'frd'

hasdelay

如果LTI模型有任何类型的滞后时间,则返回1

isa

判断LTI模型是否是指定的类型

isct

判断模型是否为连续系统模型

isdt

判断模型是否为离散系统模型

isempty

判断LTI模型是否为空

isproper

判断模型是否为正则系统(传递函数分母阶次大于等于分子的阶次)

issiso

判断模型是否为MIMO系统

ndims

返回LTI数组的维数

reshape

改变LTI数组的形状

size

返回输入输出状态的维数

132

表8.5.2 模型的动态分析

函数名

函数功能

cover

计算输出的协方差和状态的协方差

damp

求取系统特征根的无阻尼自振频率和阻尼比

dcgain

返回系统的低频增益

dsort

离散系统的极点按幅值排序

esort

连续系统的极点按实部排序

norm

LTI模型的范数

pole,eig

求系统的极点

pzmap

求取系统的零极点分布

zero

LIT系统的传输零点

表8.5.3 状态空间的实现

函数名

函数功能

canon

约当标准型的实现

ctrb

能控矩阵

ctrbf

能控标准型的实现

gram

计算系统的能控Gram矩阵和能观Gram矩阵

obsv

能观矩阵

obsvf

能观标准型的实现

ssbal

基于坐标变换方法的状态空间均衡实现

ss2ss

状态空间的坐标变换

minreal

状态空间的最小实现

modred

系统降阶

balreal

基于Gram矩阵的状态空间均衡实现

8.5.2 模型分析举例

1、系统的能观与能控性分析

例8.5.1 考虑系统的状态方程模型

01000001010001000502xxu⎡⎤⎡⎤⎢⎥⎢⎥−⎢⎥⎢⎥=+⎢⎥⎢⎥⎢⎥⎢⎥−⎣⎦⎣⎦&

[]xy0001=

判断系统的能控性和能观性。

解:运行下面的语句分析系统能控性和能观性。

>>A=[0,1,0,0;0,0,-1,0;0,0,0,1;0,0,5,0];

B=[0;1;0;-2]; C=[1,0,0,0]; D=0;

>>Tc=ctrb(A,B);

>>rank(Tc)

ans =

4

>> To=obsv(A,C);

>> rank(To)

ans =

133

4

可见能控矩阵和能观矩阵都满秩,所以系统是能控的,也是能观的。

2、系统模型的降阶

在系统的研究中,模型降阶技术有很重要的作用,其目的是使高阶系统用一个低阶模型近似,这样高阶系统可按低阶系统处理,为分析设计高阶系统带来方便。

模型降阶技术是系统分析、设计和仿真中不可缺少的一环,其基本思想是使原始系统的系数矩阵的阶次降低,并保留原系统的主导特征值和一些重要的状态。

在MATLAB控制系统工具箱中提供了基于平衡实现降阶函数balreal和modred。函数balreal计算可控及可观测的Gram矩阵,并对原系统进行等价变换,将原系统分成两部分,其中一部分包含原系统矩阵较大奇异值,而另一部分包含较小奇异值。如果截取对应于小奇异值的子系统,则可实现模型的降阶,用modred函数来实现。

例8.5.2 设系统的传递函数为(10)(20.01)()(0.5)(9.9)(20.1)ssGssss++=+++

试求系统的降阶模型。

解:运行下列程序,绘制降阶前后的bode图和单位阶跃响应曲线,说明降阶后的近似程度。

>>sys = zpk([-10 -20.01],[-5 -9.9

-20.1],1);

>>[sysb,g] = balreal(sys);

%状态空间的平衡实现

>>g' %关联系数

ans =

0.1006 0.0001 0.0000

>>sysr = modred(sysb,[2 3],'del');

%第2个和第3个状态关联系数小,可以忽略

>>zpk(sysr)

%降阶后系统的zpk模型,由3阶降为1阶

Zero/pole/gain:

1.0001

--------

(s+4.97)

>>bode(sys,'-',sysr,'x');

%降阶前后的bode图

>>figure,step(sys, '-',sysr, 'x')

%降阶前后的单位阶跃响应曲线

从图8.5.1和图8.5.2可以看出,系统降阶后其时域响应和频率响应特性几乎完全一致。-60-50-40-30-20-10Magnitude

(

dB)10-1100101102103-90-450Phase (deg)Bode DiagramFrequency

(rad/sec)

图8.5.1 系统降阶前后Bode图的对比

134

00.20.40.60.811.200.050.10.150.20.25Step ResponseTime (sec)

图8.5.2 系统降阶前后单位阶跃响应曲线的对比

小结

控制系统的数学模型在系统的分析和设计中起着重要的作用,建立了系统的数学模型,就可以对控制系统进行定性分析和定量计算。本章介绍如何在MATLAB中建立控制系统的数学模型,以及控制系统的各种数学模型之间的转换。

135

matlab访问脉冲传递函数的分母,笔记:系统模型转换相关推荐

  1. matlab电梯速度,基于Matlab的多速度模式电梯群控系统模型仿真

    Vol. 17 No. 8 系 统 仿 真 学 报 Aug. 2005 JOURNAL OF SYSTEM SIMULATION ·1997· 基于 Matlab 的多速度模式电梯群控系统模型仿真 李 ...

  2. 计算机控制系统脉冲传递函数,计算机控制系统的数学描述2(差分方程脉冲传递函数)课件...

    <计算机控制系统的数学描述2(差分方程脉冲传递函数)课件>由会员分享,可在线阅读,更多相关<计算机控制系统的数学描述2(差分方程脉冲传递函数)课件(37页珍藏版)>请在人人文库 ...

  3. matlab零阶保持器法求z变换,教你快速求解闭环脉冲传递函数φ(z)或输出Z变换C(z)!...

    大家好,我是宝刀君,很高兴我们又见面了~ 在离散系统分析中,大家刚开始学习时,会遇到2类题:一类是没有采样开关,让你求系统的输出Z变换C(z):另一类是有采样开关时,让你求系统的闭环脉冲传递函数,进而 ...

  4. matlab升余弦数字基带传输系统,某升余弦滚降数字基带传输系统的总体传递函数如下图所示,该系统的滚降系数是___。...

    某升余弦滚降数字基带传输系统的总体传递函数如下图所示,该系统的滚降系数是___. 答:44198 人生的自我价值,是指( ) 答:个体的人生活动对自己生存和发展所具有的价值 个体的人生活动对自身物质和 ...

  5. MATLAB绘制开环单位阶跃响应,利用matlab由开环传递函数求闭环传递函数并求其单位冲击和阶跃响应...

    利用matlab由开环传递函数求闭环传递函数并求其单位冲击和阶跃响应 利用matlab 由开环传递函数求闭环传递函数并求其单位冲击和阶跃响应 例:设有一个系统的开环传递函数如下函数,并绘制输出阶跃响应 ...

  6. MATLAB中求传递函数代码

    今天MATLAB发生了一件非常稀奇的事,采用扩展描述函数法对LLC谐振变换器进行小信号建模时,由于建出传递函数比较复杂,分子是6阶,分母是7阶,然后进行画bode图时,采用s=zpk('s')时,即用 ...

  7. matlab中s_cplot,matlab系统模型建立和动态特性研究分析实验.docx

    实验二MATLAB系统模型建立和动态特性分析实验 一.实验目地 1掌握如何使用 MALAB进行系统模型地建立: 2 ?学习利用MALAB命令得阶跃响应曲线,分析系统动态特性; 3.利用MALAB求阶跃 ...

  8. Matlab/Simulink:动态系统模型的表示及仿真分析基础

    目录 1. 前言 2. 线性性 3. 无记忆系统 3.1 描述方式 3.2 无记忆系统例子 4. 线性时不变连续系统 4.1 基本概念 4.2 线性时不变连续系统 4.3 线性时不变连续系统的表示 4 ...

  9. matlab如何求传递函数的幅值_自动控制原理2.2.1 什么是传递函数,为什么要使用传递函数的概念...

    2.2.1 什么是传递函数,为什么要使用传递函数的概念 控制系统微分方程是在时间域描述系统动态性能的数学模型,在给定外作用及初始条件下,求解微分方程可以得到系统的输出响应. 应用微分方程列写控制系统数 ...

最新文章

  1. 明白了缓存穿透和缓存雪崩,再了解一下缓存击穿!
  2. 76.Zabbix添加图形和聚合图形
  3. Linux企业生产环境用户权限集中管理项目方案案例
  4. 基于I2C总线的0.96寸OLED显示屏驱动
  5. 架构师必看 京东咚咚架构演进
  6. linux DNS服务器配置
  7. 【已解决】[Error] cannot pass objects of non-trivially-copyable type ‘std::string {aka class std::basic_s
  8. Android图片加载框架之(Glide和Picasso的区别,Glide的简单使用)
  9. 中如何将方形图片转换成圆形图片_【PS】PS中不可不知的实用技巧!你都掌握了吗?...
  10. 【HTML/CSS】单位小结
  11. 什么是区块链?真能改变货币和商业?终于有人讲明白了
  12. svn: No repository found in 'svn:..解决方案
  13. ES6_Day-1-let-const
  14. SSM第一篇 最简单的SSM框架搭建过程--SSM简单整合
  15. MATLAB中 / 和 \ 的区别
  16. win10 计算机重启,win10电脑自动重启
  17. 注意力模型直观理解(Attention Model Intuition)
  18. 已经包含头文件却仍然显示未定义标识符
  19. 工厂IT人员如何自学ERP系统
  20. java基于微信小程序的培训机构报名作业管理系统 uniapp 小程序

热门文章

  1. HTTP中content-type和MIME媒体类型
  2. 金额转换,阿拉伯数字转换成中国传统形式。 例如:101000001010 转换为 壹仟零壹拾亿零壹仟零壹拾圆整
  3. c++ Eigen库中的矩阵分析为什么使用QR分解
  4. 干货|Pytorch弹性训练极简实现( 附源码)
  5. 易语言 kernelbase.dll c0000005,【已解决】win7资源管理器停止工作,出错原因是kernelbase.dll...
  6. RSA-公钥加密,私钥解密 、私钥加密,公钥解密、私钥加签,公钥验签
  7. 如何用ae制作文字破碎效果
  8. IDEA DEBUG 启动慢,启动卡死,本地IDEA环境,千万千万不要在方法上打断点!太坑了!
  9. 农历php,农历日历 php下实现农历日历的代码
  10. 针对东北老公马俊打上海老婆黄佳的看法