资源描述
八.控制系统工具箱
系统常用的数学模型有:传递函数模型,状态方程模型,零极点增益模型,部分分式模型;
(1) 传递函数描述
系统在MATLAB中可以方便地由分子和分母系数构成的两个向量唯一地确定出来,这两个向量分别用num和den表示。
num=[b1,b2,…,bm,bm+1]
den=[a1,a2,…,an,an+1]
调用格式:G=tf(num,den)
注意:它们都是按s的降幂进行排列的。
num=[12,24,0,20];den=[2 4 6 2 2];G=tf(num,den)
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]))));
G=tf(num,den)
(1)G.variable='p'
Transfer function:
4 p^5 + 56 p^4 + 288 p^3 + 672 p^2 + 720 p + 288
-----------------------------------------------------
p^7 + 6 p^6 + 14 p^5 + 21 p^4 + 24 p^3 + 17 p^2 + 5 p
G.td=0.5
Transfer function:
4 p^5 + 56 p^4 + 288 p^3 + 672 p^2 + 720 p + 288
exp(-0.5*p) * -----------------------------------------------------
p^7 + 6 p^6 + 14 p^5 + 21 p^4 + 24 p^3 + 17 p^2 + 5 p
(2)G=tf(num,den,'inputdelay',0.5)
Transfer function:
4 s^5 + 56 s^4 + 288 s^3 + 672 s^2 + 720 s + 288
exp(-0.5*s) * -----------------------------------------------------
s^7 + 6 s^6 + 14 s^5 + 21 s^4 + 24 s^3 + 17 s^2 + 5 s
(3)set(G,'variable','s','Td',0.7)
get(G)
num: {[0 0 4 56 288 672 720 288]}
den: {[1 6 14 21 24 17 5 0]}
ioDelay: 0
Variable: 's'
Ts: 0
InputDelay: 0.7
OutputDelay: 0
InputName: {''}
OutputName: {''}
InputGroup: [1x1 struct]
OutputGroup: [1x1 struct]
Name: ''
Notes: {}
UserData: []
(2)零极点增益模型
调用格式 G=zpk(z,p,k);结果是零极点形式的;
函数tf2zp()可以用来求传递函数的零极点和增益:[z,p,k] = tf2zp(num,den)
例 求零极点增益模型
num=[1 11 30];den=[1 9 45 87 50];
[z, p,k]=tf2zp(num,den);
G=zpk(z,p,k)
(3)部分分式展开
实际就是对residue的应用
例 将tf转化为部分分式的形式
num=[2 0 9 1];den=[1 1 4 4 ];
[r p k]=residue(num,den);
[num den]=residue(r,p,k)
num =
2.0000 -0.0000 9.0000 1.0000
den =
1.0000 1.0000 4.0000 4.0000
(4)状态空间描述
B的列数为输入的个数,C的行数为输出的个数;D的维数为C的行*B的列数
G=ss(A,B,C,D);
例
可以看出:
>> A=[1 6 9 10;3 12 6 8;4 7 9 11;5 12 13 14];
>> B=[4 6; 2 4; 2 2;1 0];
>> C=[0 0 2 1;8 0 2 2];
>> D=zeros(2);
>> G=ss(A,B,C,D)
a =
x1 x2 x3 x4
x1 1 6 9 10
x2 3 12 6 8
x3 4 7 9 11
x4 5 12 13 14
b =
u1 u2
x1 4 6
x2 2 4
x3 2 2
x4 1 0
c =
x1 x2 x3 x4
y1 0 0 2 1
y2 8 0 2 2
d =
u1 u2
y1 0 0
y2 0 0
Continuous-time model.
>> G=tf(G) 得到四个传递函数;分别为11;12;21;21
(5)模型之间的相互转换
n 模型转换的函数包括:
residue:传递函数模型与部分分式模型互换
ss2tf: 状态空间模型转换为传递函数模型
ss2zp: 状态空间模型转换为零极点增益模型
tf2ss: 传递函数模型转换为状态空间模型
tf2zp: 传递函数模型转换为零极点增益模型
zp2ss: 零极点增益模型转换为状态空间模型
zp2tf: 零极点增益模型转换为传递函数模型
也就是tf ss zpk之间可以相互转化;
举例说明:
1. 状态空间模型:(单输入,单输出)
A=[0 1;1 -2];B=[0;1];C=[1 3];D=1;
G=ss(A,B,C ,D);
[num,den]=ss2tf(A,B,C,D,[1])
[Z P K]=ss2zp(A,B,C,D,[1]);
2. 单入三出的模型的传递函数如下:(这里的分子和分母是矩阵)
num=[0 0 -2;0 -1 -5 ;1 2 0];
den=[ 1 6 11 6];
[A B C D]=tf2ss(num,den);
>> g=tf(num,den)
??? Error using ==> tf.tf at 239
The values of the "num" and "den" properties must be row
vectors or cell arrays of row vectors, where each vector
is nonempty and containing numeric data. Type "ltiprops
tf" for more information.
也就是tf只能对行向量进行转化;可以直接
G=ss(A,B,C,D);
G=tf(G)
生成多个传递函数
3. 系统的零极点增益模型
z=[-3];p=[-1 -2 -5];k=[6];
g=zpk(z,p,k);
[num,den]=zp2tf(z,p,k);
[a,b,c,d]=zp2ss(z,p,k)
4.模型的结构
A 串联 G=G1*G2;
B.并联G=G1+G1
C.反馈G=feedback(G1,G2,SIGN);
5.控制系统工具箱(控制系统的分析稳定性分析,时域分析,频域分析,根轨迹分析)
LTI对象有如下三种:ss对象;tf对象;zpk对象;
(1) 稳定性判据;判稳及找出是否为最小相角系统
例 a=[1 2 -1 2;2 6 3 0;4 7 -8 -5;7 2 1 6];
b=[-1;0 ;0;1];
c=[-2 5 6 1];
d=[7];
[z p k]=ss2zp(a,b,c,d);
Ii=find(real(p)>0) %找出右半平面的极点下标,以列向量给出
pzmap(p,z); %汇出系统的零极点图
2.num=[3 16 41 28 ];
den=[1 14 110 528 1494 2117 112];
[z p k]=tf2zp(num,den);
pzmap(p,z)
(2) 时域分析
求取系统单位阶跃响应:step()
求取系统的脉冲响应:impulse() 本身就可以处理多输入,多输出的问题
求系统的稳态值 :dcgain(sys)
Pole(G) zero(G) 以列向量形式返回极点和零点
例 系统的开环传递函数,求单位反馈下的阶跃响应曲线。
num=[20];
den=[1 2 13 11 10];
g=feedback(num,den,-1)
step(g)
dcgain(g) 不对
num=[20];
den=[1 2 13 11 10];
g=tf(num,den);
G=feedback(g,1,-1);
step(G)
dcgain(G)
例 impulse()的用法;以上述传递函数;
impulse(G)
例
求 单位阶跃响应和冲激响应
A=[-2.5 -12.2 0 0;1.22 0 0 0;1 -1.14 -3.2 -2.56;0 0 2.56 0];
B=[4 1;2 0;2 0;0 0];
C=[0 1 0 3;0 0 0 1];
D=[0 -2 ;-2 0];
[num,den]=ss2tf(A,B,C,D);
G=tf(num,den);
Step(G)
impulse(G) 不对的是因为:tf不能描述多输入多输出;
正确的:
Sys=ss[A,B,C,D];
Step(sys);
Impulse(sys);
(3)频域分析:
Bode(G)对数频率特性图
Nyquist(G) 幅相特性曲线
Nichols(G) ngrid 绘制系统的nichols曲线和网格线;开环的
Margin(G) margin(a,b,c,d)可以计算出连续状态空间系统表示的幅值裕度和相角裕度并绘制相应波特图。SISO模型;
[gm,pm,wcg,wcp]=margin(g):由幅值mag(不是以dB为单位) 、相角phase及角频率w矢量计算出系统幅值裕度和相角裕度及相应的相角交界频率wcg、截止频率wcp,而不直接绘出Bode图曲线。
Rlocus(G) 开环的
展开阅读全文