第6章线性控制系统分析与设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第6章 线性控制系统分析与设计
MATLAB 的控制系统工具箱(Control System Toolbox)可以提供对线性系统分析、设计和建模的各种算法。
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】写出二阶系统
u(t)ωy(t)ωdt
dy(t)2ζdt y(t)d 2n 2n n 22=+ω+,当ζ=0.707,n ω=1时的状态方程。
zeta=0.707;wn=1;
A=[0 1;-wn^2 -2*zeta*wn];
B=[0;wn^2];
C=[1 0];
D=0;
G=ss(A,B,C,D) %建立状态方程模型
a =
x1 x2
x1 0 1
x2 -1 -1.414
b =
u1
x1 0
x2 1
c =
x1 x2
y1 1 0
d =
u1
y1 0
Continuous-time model.
6.1.2传递函数描述法
MATLAB中使用tf命令来建立传递函数。
语法:
G=tf(num,den) %由传递函数分子分母得出
说明:num为分子向量,num=[b1,b2,…,b m,b m+1];den为分母向量,den=[a1,a2,…,a n-,a n]。
1
【例6.1续】将二阶系统描述为传递函数的形式。
num=1;
den=[1 1.414 1];
G=tf(num,den) %得出传递函数
Transfer function:
1
-----------------
s^2 + 1.414 s + 1
6.1.3零极点描述法
MATLAB中使用zpk命令可以来实现由零极点得到传递函数模型。
语法:
G=zpk(z,p,k) %由零点、极点和增益获得
说明:z为零点列向量;p为极点列向量;k为增益。
【例6.1续】得出二阶系统的零极点,并得出传递函数。
z=roots(num)
z =
Empty matrix: 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 函数可以得出多项式的根,零极点形式是以实数形式表示的。
部分分式法是将传递函数表示成部分分式或留数形式:
k(s)p s r p s r p s r G (s)n
n 2211+-++-+-= 【例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;1 0];
b=[1;0];
c=[0 0.5];
d=0;
G=ss(a,b,c,d,0.1) %采样周期为0.1s
a =
x1 x2
x1 -1.5 -0.5
x2 1 0
b =
u1
x1 1
x2 0
c =
x1 x2
y1 0 0.5
d =
u1
y1 0
Sampling time: 0.1
Discrete-time model.
2. 脉冲传递函数描述法
脉冲传递函数也可以用tf 命令实现。
语法:
G=tf(num,den,Ts) %由分子分母得出脉冲传递函数
说明:Ts 为采样周期,为标量,当采样周期未指明可以用-1表示,自变量用'z'表示。
【例6.2续】创建离散系统脉冲传递函数21120.5z 1.5z 10.5z 0.51.5z z 0.5z G(z)---+-=+-=
。
num1=[0.5 0];
den=[1 -1.5 0.5];
G1=tf(num1,den,-1)
Transfer function:
0.5 z
-----------------
z^2 - 1.5 z + 0.5
Sampling time: unspecified
MATLAB 中还可以用filt 命令产生脉冲传递函数。
语法:
G=filt(num,den,Ts) %由分子分母得出脉冲传递函数
说明:Ts 为采样周期,当采样周期未指明Ts 可以省略,也可以用-1表示,自变量用'z -1'表示。
【例6.2续】使用filt 命令产生脉冲传递函数。
num2=[0 0.5];
G2=filt(num2,den)
Transfer function:
0.5 z^-1
-----------------------
1 - 1.5 z^-1 + 0.5 z^-2
Sampling time: unspecified
程序说明:用filt 命令生成的脉冲传递函数的自变量不是z 而是z -1,因此分子应改为“[0 0.5]”。
3. 零极点增益描述法
离散系统的零极点增益用zpk 命令实现。
语法:
G=zpk(z,p,k,Ts) %由零极点得出脉冲传递函数
【例6.2续】使用zpk 命令产生零极点增益传递函数。