第6章线性控制系统分析与设计.docx

上传人:b****7 文档编号:10916137 上传时间:2023-02-23 格式:DOCX 页数:60 大小:577.38KB
下载 相关 举报
第6章线性控制系统分析与设计.docx_第1页
第1页 / 共60页
第6章线性控制系统分析与设计.docx_第2页
第2页 / 共60页
第6章线性控制系统分析与设计.docx_第3页
第3页 / 共60页
第6章线性控制系统分析与设计.docx_第4页
第4页 / 共60页
第6章线性控制系统分析与设计.docx_第5页
第5页 / 共60页
点击查看更多>>
下载资源
资源描述

第6章线性控制系统分析与设计.docx

《第6章线性控制系统分析与设计.docx》由会员分享,可在线阅读,更多相关《第6章线性控制系统分析与设计.docx(60页珍藏版)》请在冰豆网上搜索。

第6章线性控制系统分析与设计.docx

第6章线性控制系统分析与设计

第6章线性控制系统分析与设计

MATLAB的控制系统工具箱(ControlSystemToolbox)可以提供对线性系统分析、设计和建模的各种算法。

6.1线性系统的描述

6.1.1状态空间描述法

状态空间描述法是使用状态方程模型来描述控制系统,MATLAB中状态方程模型的建立使用ss和dss命令。

语法:

G=ss(a,b,c,d)%由a、b、c、d参数获得状态方程模型

G=dss(a,b,c,d,e)%由a、b、c、d、e参数获得状态方程模型

【例6.1】写出二阶系统

,当

=0.707,

=1时的状态方程。

zeta=0.707;wn=1;

A=[01;-wn^2-2*zeta*wn];

B=[0;wn^2];

C=[10];

D=0;

G=ss(A,B,C,D)%建立状态方程模型

a=

x1x2

x101

x2-1-1.414

b=

u1

x10

x21

c=

x1x2

y110

d=

u1

y10

Continuous-timemodel.

6.1.2传递函数描述法

MATLAB中使用tf命令来建立传递函数。

语法:

G=tf(num,den)%由传递函数分子分母得出

说明:

num为分子向量,num=[b1,b2,…,bm,bm+1];den为分母向量,den=[a1,a2,…,an-1,an]。

【例6.1续】将二阶系统描述为传递函数的形式。

num=1;

den=[11.4141];

G=tf(num,den)%得出传递函数

Transferfunction:

1

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

s^2+1.414s+1

6.1.3零极点描述法

MATLAB中使用zpk命令可以来实现由零极点得到传递函数模型。

语法:

G=zpk(z,p,k)%由零点、极点和增益获得

说明:

z为零点列向量;p为极点列向量;k为增益。

【例6.1续】得出二阶系统的零极点,并得出传递函数。

z=roots(num)

z=

Emptymatrix:

0-by-1

p=roots(den)

p=

-0.7070+0.7072i

-0.7070-0.7072i

zpk(z,p,1)

Zero/pole/gain:

1

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

(s^2+1.414s+1)

程序分析:

roots函数可以得出多项式的根,零极点形式是以实数形式表示的。

部分分式法是将传递函数表示成部分分式或留数形式:

【例6.1续】将传递函数转换成部分分式法,得出各系数。

[r,p,k]=residue(num,den)

r=

0-0.7070i

0+0.7070i

p=

-0.7070+0.7072i

-0.7070-0.7072i

k=

[]

6.1.4离散系统的数学描述

1.状态空间描述法

状态空间描述离散系统也可使用ss和dss命令。

语法:

G=ss(a,b,c,d,Ts)%由a、b、c、d参数获得状态方程模型

G=dss(a,b,c,d,e,Ts)%由a、b、c、d、e参数获得状态方程模型

说明:

Ts为采样周期,为标量,当采样周期未指明可以用-1表示。

【例6.2】用状态空间法建立离散系统。

a=[-1.5-0.5;10];

b=[1;0];

c=[00.5];

d=0;

G=ss(a,b,c,d,0.1)%采样周期为0.1s

a=

x1x2

x1-1.5-0.5

x210

b=

u1

x11

x20

c=

x1x2

y100.5

d=

u1

y10

Samplingtime:

0.1

Discrete-timemodel.

2.脉冲传递函数描述法

脉冲传递函数也可以用tf命令实现。

语法:

G=tf(num,den,Ts)%由分子分母得出脉冲传递函数

说明:

Ts为采样周期,为标量,当采样周期未指明可以用-1表示,自变量用'z'表示。

【例6.2续】创建离散系统脉冲传递函数

num1=[0.50];

den=[1-1.50.5];

G1=tf(num1,den,-1)

Transferfunction:

0.5z

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

z^2-1.5z+0.5

Samplingtime:

unspecified

MATLAB中还可以用filt命令产生脉冲传递函数。

语法:

G=filt(num,den,Ts)%由分子分母得出脉冲传递函数

说明:

Ts为采样周期,当采样周期未指明Ts可以省略,也可以用-1表示,自变量用'z-1'表示。

【例6.2续】使用filt命令产生脉冲传递函数。

num2=[00.5];

G2=filt(num2,den)

Transferfunction:

0.5z^-1

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

1-1.5z^-1+0.5z^-2

Samplingtime:

unspecified

程序说明:

用filt命令生成的脉冲传递函数的自变量不是z而是z-1,因此分子应改为“[00.5]”。

3.零极点增益描述法

离散系统的零极点增益用zpk命令实现。

语法:

G=zpk(z,p,k,Ts)%由零极点得出脉冲传递函数

【例6.2续】使用zpk命令产生零极点增益传递函数。

G3=zpk([0],[0.51],0.5,-1)

Zero/pole/gain:

0.5z

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

(z-0.5)(z-1)

Samplingtime:

unspecified

6.2线性系统模型之间的转换

6.2.1连续系统模型之间的转换

在MATLAB5.3版及以前的控制系统工具箱中有各种不同模型转换的函数,如下表6.1所示为线性系统模型转换的函数。

表6.1线性系统模型转换函数表

函数

 调用格式

功能

tf2ss

[a,b,c,d]=tf2ss(num,den)

传递函数转换为状态空间

tf2zp

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

传递函数转换为零极点描述

ss2tf

[num,den]=ss2tf(a,b,c,d,iu)

状态空间转换为传递函数

ss2zp

[z,p,k]=ss2zp(a,b,c,d,iu)

状态空间转换为零极点描述

zp2ss

[a,b,c,d]=zp2ss(z,p,k)

零极点描述转换为状态空间

zp2tf

[num,den]=zp2tf(z,p,k)

零极点描述转换为传递函数

1.系统模型的转换

(1)状态空间模型的获得

由命令ss和dss实现将传递函数和零极点增益转换为状态空间模型。

语法:

G=ss(传递函数)%由传递函数转换获得

G=ss(零极点模型)%由零极点模型转换获得

【例6.3】将单输入双输出的系统传递函数

转换为状态空间描述。

num=[032;

123];

den=[3521];

G11=tf(num(1,:

),den)

Transferfunction:

3s+2

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

3s^3+5s^2+2s+1

G12=tf(num(2,:

),den)

Transferfunction:

s^2+2s+3

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

3s^3+5s^2+2s+1

G=ss([G11;G12])

a=

x1x2x3

x1-1.667-0.3333-0.08333

x2200

x3020

b=

u1

x11

x20

x30

c=

x1x2x3

y100.50.1667

y20.33330.33330.25

d=

u1

y10

y20

Continuous-timemodel.

(2)传递函数的获得

由tf命令实现将系统的状态空间法和零极点增益模型转换为传递函数。

语法:

G=tf(状态方程模型)%由状态空间转换

G=tf(零极点模型)%由零极点模型转换

【例6.3续】由状态空间描述转换为传递函数。

G1=tf(G)

Transferfunctionfrominputtooutput...

s+0.6667

#1:

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

s^3+1.667s^2+0.6667s+0.3333

0.3333s^2+0.6667s+1

#2:

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

s^3+1.667s^2+0.6667s+0.3333

(3)零极点模型的获得

由zpk命令实现将状态空间法、传递函数转换为零极点模型。

语法:

G=zpk(状态方程模型)%由状态方程模型转换

G=zpk(传递函数)%由传递函数转换

【例6.3续】由传递函数和状态方程模型转换零极点模型。

G2=zpk(G)%由状态方程模型转换

Zero/pole/gainfrominputtooutput...

(s+0.6667)

#1:

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

(s+1.356)(s^2+0.3103s+0.2458)

0.33333(s^2+2s+3)

#2:

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

(s+1.356)(s^2+0.3103s+0.2458)

G2=zpk(G1);%由传递函数转换

2.模型参数的获取

语法:

[a,b,c,d]=ssdata(G)%获取状态空间参数

[a,b,c,d,e]=dssdata(G)%获取状态空间参数

[num,den]=tfdata(G)%获取传递函数参数

[z,p,k]=zpkdata(G)%获取零极点参数

【例6.3续】获取各模型的参数。

[a,b,c,d]=ssdata(G1)%获取状态方程参数

a=

-1.6667-0.3333-0.0833

2.000000

02.00000

b=

1

0

0

c=

00.50000.1667

0.33330.33330.2500

d=

0

0

[num,den]=tfdata(G2)%获取传递函数参数

num=

[1x4double]

[1x4double]

den=

[1x4double]

[1x4double]

[z,p,k]=zpkdata(G)%获取零极点参数

z=

[-0.6667]

[2x1double]

p=

[3x1double]

[3x1double]

k=

1.0000

0.3333

3.模型类型的检验

【例6.3续】检验模型的类型。

class(G)%得出系统模型类型

ans=

ss

isa(G,'tf')%检验系统模型类型

ans=

0

6.2.2连续系统与离散系统之间的转换

表6.2模型类型检验函数表

函数

 调用格式

功能

class

class(G)

得出系统模型的类型

isa

isa(G,'类型名')

判断G是否对应的类型名,是则为1(True)

isct

isct(G)

判断G是否连续系统,是则为1(True)

isdt

isdt(G)

判断G是否离散系统,是则为1(True)

issiso

issiso(G)

判断G是否SISO系统,是则为1(True)

1.c2d命令

c2d命令用于将连续系统转换为离散系统。

语法:

Gd=c2d(G,Ts,method)%以采样周期Ts和method方法转换为离散系统

说明:

G为连续系统模型;Gd为离散系统模型;Ts为采样周期;method为转换方法,可省略,包括五种:

zoh(默认零阶保持器)、foh(一阶保持器)、tustin(双线性变换法)、prewarp(频率预修正双线性变换法)、mached(根匹配法)。

【例6.4】将二阶连续系统转换为离散系统。

a=[01;-1-1.414];

b=[0;1];

c=[10];

d=0;

G=ss(a,b,c,d);

Gd=c2d(G,0.1)

a=

x1x2

x10.99520.0931

x2-0.09310.8636

b=

u1

x10.004768

x20.0931

c=

x1x2

y110

d=

u1

y10

Samplingtime:

0.1

Discrete-timemodel.

2.d2c命令

d2c命令是c2d的逆运算,用于将离散系统转换为连续系统。

语法:

G=d2c(Gd,method)%转换为连续系统

说明:

method为转换方法可省略,与c2d相似,少了foh(一阶保持器)方法。

【例6.4续】将二阶离散系统转换为连续系统。

G=d2c(Gd)

a=

x1x2

x15.551e-0161

x2-1-1.414

b=

u1

x1-2.776e-016

x21

c=

x1x2

y110

d=

u1

y10

Continuous-timemodel.

3.d2d命令

d2d命令是将离散系统改变采样频率。

语法:

Gd2=d2d(Gd1,Ts2)%转换离散系统的采样频率为Ts2

说明:

其实际的转换过程是先把Gd1按零阶保持器转换为原连续系统,然后再用Ts2和零阶保持器转换为Gd2。

【例6.4续】将二阶离散系统改变采样频率。

Gd2=d2d(Gd,0.3)

a=

x1x2

x10.9610.2408

x2-0.24080.6205

b=

u1

x10.03897

x20.2408

c=

x1x2

y110

d=

u1

y10

Samplingtime:

0.3

Discrete-timemodel.

6.2.3模型对象的属性

1.模型对象的属性

ss、tf和zpk三种对象除了具有线性时不变系统共有的属性以外,还具有其各自的属性,共有属性如表6.3所示,其各自的属性如表6.4所示。

表6.3对象共有属性表

属性名

属性值的数据类型

 意义

Ts

标量

采样周期,为0表示连续系统,为-1表示采样周期未定

Td

数组

输入延时,仅对连续系统有效,省略表示无延时

InputName

字符串数组

输入变量名

OutputName

字符串数组

输出变量名

Notes

字符串

描述模型的文本说明

Userdata

任意数据类型

用户需要的其它数据

表6.4三种子对象特有属性表

对象名

属性名

属性值的数据类型

意义

tf

den

行数组组成的单元阵列

传递函数分母系数

num

行数组组成的单元阵列

传递函数分子系数

variable

s,p,z,q,z-1之一

传递函数变量

ss

a

矩阵

系数

b

矩阵

系数

c

矩阵

系数

d

矩阵

系数

e

矩阵

系数

StateName

字符串向量

用于定义每个状态变量的名称

zpk

z

矩阵

零点

p

矩阵

极点

k

矩阵

增益

variable

s,p,z,q,z-1之一

零极点增益模型变量

在表6.3和表6.4中的三种子对象的属性,在前面都已使用过,MATLAB提供了get和set命令来对属性进行获取和修改。

2.get命令和set命令

(1)get命令可以获取模型对象的所有属性

语法:

get(G)%获取对象的所有属性值

get(G,’PropertyName’,…)%获取对象的某些属性值

说明:

G为模型对象名;’PropertyName’为属性名。

(2)set命令用于修改对象属性名

语法:

set(G,’PropertyName’,PropertyValue,…)%修改对象的某些属性值

【例6.5】已知二阶系统的传递函数

,获取其传递函数模型的属性,并将传递函数修改为

num=1;

den=[11.4141];

G=tf(num,den);

get(G)%获取所有属性

num:

{[001]}

den:

{[11.411]}

Variable:

's'

Ts:

0

ioDelay:

0

InputDelay:

0

OutputDelay:

0

InputName:

{''}

OutputName:

{''}

InputGroup:

{0x2cell}

OutputGroup:

{0x2cell}

Notes:

{}

UserData:

[]

set(G,'den',[121],'Variable','z')%设置属性

G

Transferfunction:

1

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

z^2+2z+1

Samplingtime:

unspecified

3.直接获取和修改属性

【例6.5续】将上面的传递函数模型对象的分母修改为原来的值。

G.den=[11.4141];

G

Transferfunction:

1

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

z^2+1.414z+1

Samplingtime:

unspecified

6.3结构框图的模型表示

1.串联结构

SISO的串联结构是两个模块串联在一起,如图6.1所示。

实现串联结构传递函数的命令:

G=G1*G2

G=series(G1,G2)

2.并联结构

SISO的并联结构是两个模块并联在一起,如图6.2所示。

实现并联结构传递函数的命令:

G=G1+G2

G=parallel(G1,G2)

3.反馈结构

反馈结构是前向通道和反馈通道模块构成正反馈和负反馈,如图6.3所示。

实现反馈结构传递函数的命令:

G=feedback(G1,G2,Sign)

说明:

Sign用来表示正反馈或负反馈,Sign=-1或省略则表示为负反馈。

【例6.6】根据系统的结构框图求出整个系统的传递函数,结构框图如图6.4所示,其中

G1=tf(1,[121])

Transferfunction:

1

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

s^2+2s+1

G2=tf(1,[11]);

G3=tf(1,[21]);

G4=tf(1,[10]);

G12=G1+G2%并联结构

Transferfunction:

s^2+3s+2

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

s^3+3s^2+3s+1

G34=G3-G4%并联结构

Transferfunction:

-s-1

---------

2s^2+s

G=feedback(G12,G34,-1)%反馈结构

Transferfunction:

2s^4+7s^3+7s^2+2s

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

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

例如,上图的两个并联结构G1和G2,如果G1用状态空间描述,则并联运算的结果也是用状态空间法描述:

G1=ss(tf(1,[121]));%状态空间描述

G2=tf(1,[11]);

G1+G2

a=

x1x2x3

x1-2-0.250

x2400

x300-1

b=

u1

x10.5

x20

x31

c=

x1x2x3

y100.51

d=

u1

y10

Continuous-timemodel.

4.复杂的结构框图

求取复杂结构框图的数学模型的步骤:

(1)将各模块的通路排序编号;

(2)建立无连接的数学模型:

使用append命令实现各模块未连接的系统矩阵。

G=append(G1,G2,G3,…)

(3)指定连接关系:

写出各通路的输入输出关系矩阵Q,第一列是模块通路编号,从第二列开始的几列分别为进入该模块的所有通路编号;INPUTS变量存储输入信号所加入的通路编号;OUTPUTS变量存储输出信号所在通路编号。

(4)使用connect命令构造整个系统的模型。

Sys=connect(G,Q,INPUTS,OUTPUTS)

如果各模块都使用传递函数,也可以用blkbuild命令建立无连接的数学模型,则第二步修改如下:

将各通路的信息存放在变量中:

通路数放在nblocks,各通路传递函数的分子和分母分别放在不同的变量中;用blkbuild命令求取系统的状态方程模型。

【例6.7】根

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

当前位置:首页 > 高中教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1