(MATLAB学习)第六节 控制系统工具箱
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
frdata 只能用于获取FRD模型中的数据
tfdata() zpkdata() ssdata() 可用于获取除FRD模型外的 其他所有模型数据
.
21
串联,并联,反馈
>> G1=tf([1],[1 1]);
>> G2=tf([1],[1 2]);
串联:
> G3=G1*G2
Transfer function:
1
-------------
s^2 + 3 s + 2
并联:
>> G4=G1+G2
Transfer function:
2s+3
-------------
s^2 + 3 s + 2
.
22
反馈:函数 feedback(G,H,sign)
sign=1为正反馈 sign=-1为负反馈
>> G=tf([1],[1 1]);
各种线性时不变(LTI)系. 统之间的转换关系。
4
6.2 连续系统主要函数
tf
创建或转换系统的传递函数模型
zpk
创建或转换零极点-增益模型
ss
创建或转换连续系统状态空间模型
frd
创建FRD(频率响应)模型
tfdata 获取传递函数中的数据
ssdata 获取状态空间模型中的数据
zpkdata 获取零极点-增益模型中的数据
K为增益
Ts为采样时间参数
.
10
举例:
例如, 如果某个SISO系统的传递函数是 h(s)=4*(s+1) / (s2 +7s+10)
则可以通过下面的命令来创建该系统的零极点模型: 参数值获取:
Z = [-1]; P = [-2 -5]; K = 4; 调用语句:
sys = zpk(Z,P,K) 调用结果:Zero/pole/gain:
.
6
1. 创建系统的传递函数模型 tf
连续SISO系统的传递函数为:
h(s) n(s) d (s)
可以采用两种方法创建SISO传递函数模型。 一种使用tf命令, 一种直接引用Laplace变量s的多项式。 使用tf命令的方法是 h = tf(num, den)
其中, 行向量num和den分别是多项式n(s)和d(s)的系数。 注意这里的多项式是按照s的降幂排列的。
j = frd(c,freq) %ss -- frd
.
17
5、获取模型参数
tfdata 获取传递函数中的数据 应用:[num,den] = tfdata(sys) 结果用cell保存
[num,den] = tfdata(sys,’v’) 结果用向量保存
举例:s = tf(‘s’)
a = (s+1)/(s^2-2*s+1);
frdata 获取FRD模型中的数据
impulse 绘制系统的脉冲响应曲线
step
绘制系统的阶跃响应曲线
lsim 绘制系统在任意输入信号下响应曲线
.
5
主要函数
nyquist bode nichols freqs pole zero residue class
绘制nyquist图 绘制bode图 绘制nichols图 laplace变换频率响应 (s - 域) 得到极点 得到零点 留数运算 判断模型的类型
.
7
举例:使用tf命令
例如, 如果某个SISO系统的传递函数是 h(s)=s/(s2+2s+10)
则可以通过下面的命令来创建该系统的传递函数模型: >>h = tf([1 0],[1 2 10])
MATLAB的输出结果为 s
------------------s^2 + 2 s + 10 h是一个TF对象, 存放传递函数的分子分母多项式数据
第六节 控制系统工具箱
6.1 控制系统工具箱概述 6.2 主要构成函数
.
1
6.1 控制系统工具箱概述
MATLAB 6.X中的控制系统工具箱(控制系统工具箱) 为线性时不变系统(LTI)的建模和分析提供了丰富的函数 和工具, 既支持连续和离散系统, 也能处理SISO和MIMO 系统。 并且, 用户可以将多个LTI模型放在同一个数组中 统一进行计算和分析。
输入sys = ss([0 1;-5 -2], [0;3], [0 1], 0) 创建的系统状态空间模型为
a=
x1
x1 0
x2 1.00000
c=
x1
y1 0
x2 1.00000
x2 -5.00000 -2.00000
b=
u1
d=
u1
y1 0
x1 0
x2 3.00000
.
14
4. 创建FRD模型 frd
.
27
1.4 1.2
1 0.8 0.6 0.4 0.2
0 0
5
.
10
15 28
任意输入响应:lsim( )
lsim(sys,u,t)
其中 u 为输入, t 为时间。
如
G(s)
s2
1 s
; 1
单位斜坡响应:
>> t=0:0.01:10; >> u=t; >> G=tf([1],[1 1 1]); >> lsim(G,u,t)
如果无法直接建立研究对象的传递函数或状态空间模型, 而只知道该系统在某些频率处的频率响应值, 仍然可以采 用frd命令创建该系统的频率响应模型。
frd命令的调用格式是 sys = frd(response, frequencies, units)
其中 frequencies是由不同频率值构成长为N的实数向量, response是与这些频率值对应复数形式频率响应值 nuits 是频率单位,缺省值rad/s,也可取Hz。
1. [num,den] = tfdata(a) 结果为 num = [1*3 double]
den = [1*3 double] 需要调用语句celldisp(num)查看num的值
2. [num,den] = tfdata(a,’v’)
num = 0 1 1
den = 1 -2 1
.
18
获取模型参数
>> H=tf([1],[1 0]);
>> sys=feedback(G,H,-1)
Transfer function:
s
-----------
s^2 + s + 1
-
G(s)
G(s) 1 ; s 1
H (s) 1 ; s
H(s)
.
23
6. 绘制典型信号下的响应曲线 时域响应 单位脉冲响应: impulse( ); 单位阶跃响应: step( ); 任意输入响应: lsim( ); 用法: 以 step( ) 为例: 1. step(sys), sys 为传递函数,执行结果为画单位阶跃响应曲线。 如:系统 G(s) 1 ; 的单位阶跃响应 s2 s1 >> G=tf([1],[1 1 1]); >> step(G)
s2
s2 s10
零极点-增益模型 (ZPK) ,如
H (z)[2(z0.5)
(z1 ) ]
z(z0.1 ) (z0.2)(z0.1 )
状态空间模型 (SS) ,如
d x Ax Bu dt
频率响应数据模型 (FRD)
y Cx Du
P(j)1 j 2 3 2j, . [下,上 限]限
3
连续与离散系统的关系示意图
控制系统工具箱查看方式: 1、在命令窗口中输入 :help control 2、选择help菜单项 MATLAB help 项 打开MATLAB 帮助 找到 Control System Toolbox (控制系统工具箱)
.
2
MATLAB 6.X支持的LTI模型
传递函数模型 (TF) ,如
P(s)
.
15
举例:
w = 0:0.1:3; y = sin(w)+i*cos(w); a = frd(y,w)
.
16
各模型之间的相互转换
s = tf(‘s’)
a = (s+1)/(s^2-2*s+1);
freq = logspace(1,2); %101~102 之间生成50个点
b = zpk(a) %tf -- zpk
.
8
引用Laplace变量s的多项式
也可以按照通常习惯用s的多项式来直接表示SISO 系统的传递函数。
首先将s定义为Laplace算子: s = tf(‘s’);
然后输入s的多项表达式。 例如, 输入 H = s/(s^2 + 2*s +10);
将产生与h = tf([1 0],[1 2 10])相同的系统模型。
.
9
2.创建零极点-增益模型 zpk
连续SISO系统的零极点-增益模型的一般形式为:
h(s)k(sz1)L(szm) (sp1)L(spn)
调用语句:
1、sys = zpk(Z,P,K)
连续系统的ZPK模型
2、sys = zpk(Z,P,K,Ts) 离散系统的ZPK模型
其中:Z为零点向量
P为极点向量
c = ss(a)
%tf -- ss
d = tf(b )
%zpk -- tf
e = ss(b)
%zpk -- ss
f = zpk( c) %ss -- zpk
g = tf( c)
%ss -- tf
h = frd(a,freq) %tf -- frd
I = frd(b,freq) %zpk -- frd
0 0
Step Response
5
.
10
Time (sec)
15
26
调用方法:y = step(sys,t) 其中,y 为单位阶跃响应的值。 如: >> G=tf([1],[1 1 1]); >> t=0:0.01:15; >> y=step(G,t);
如果想看阶跃响应曲线可以plot( ) 函数画。 >> plot(t,y)
.
24
Step Response 1.4
1.2
1
0.8
Amplitude
0.6
0.4
0.2
0
0
2
4
6
8
10
Βιβλιοθήκη Baidu
12
.
25
Time (sec)
>> G=tf([1],[1 1 1]); >> t=0:0.01:15; >> step(G,t)
Amplitude
1.4 1.2
1 0.8 0.6 0.4 0.2
.
20
获取模型参数
frdata 获取FRD模型中的数据 应用:
[resp,freq] = frdata(sys) 举例: freq = logspace(1,2,2); resp = .05*(freq).*exp(i*2*freq); sys = frd(resp,freq); [resp,freq] = frdata(sys,'v')
ssdata 获取状态空间模型中的数据
应用:[A,B,C,D] = ssdata(sys)
结果直接显示
[A,B,C,D] = ssdata(sys,’cell’) 结果用cell保存
举例:s = tf(‘s’)
a = (s+1)/(s^2-2*s+1);
1. [A,B,C,D] = ssdata(a)
举例:s = tf(‘s’)
a = (s+1)/(s^2-2*s+1);
1. [Z,P,K] = zpkdata(a) 结果为 Z = -1 P=[2*1 double]
K =1 需要调用语句celldisp(P)查看P的值
2. [Z,P,K] = zpkdata(a,’v’)
Z=-1 P=[1;1] K = 1
.
12
例:系统微分方程: & y& 3y& 2yu
其中y为输出,u为输入。
令:
x
y
y&
则: x& & yy& & 12 03yy& 10u
即:
x&
1 2
0 0
3
x
1
u
y [1 0]x
.
13
举例:
在MATLAB中创建下面系统的状态空间模型:
xd
dt
A 05
1 2
B3 0
C[0
1]
结果为 A= … B = … C=… D = …
2. [A,B,C,D] = ssdata(a,’cell’)
需要调用语句celldisp(A)查看A的值
.
19
获取模型参数
zpkdata 获取零极点-增益模型中的数据 应用:[Z,P,K] = zpkdata(sys) 结果用cell保存
[Z,P,K] = zpkdata(sys,’v’) 结果用向量保存
.
29
Linear Simulation Results 10
9
8
7
6
Amplitude
5
4
3
2
1
0
0
1
2
3
4
5
6
7
8
9
10
.
30
Time (sec)
7. 绘制专用图形
nyquist 绘制nyquist图,又称极坐标图
以G(jw)的实部和虚部分别作为横坐标和纵坐标绘制图形
用法:nyquist(sys) 1
4 (s+1) ----------(s+2) (s+5)
.
11
3.创建连续系统状态空间模型 ss
状态空间模型是采用线性微分或差分方程来描述系统的动 态行为。 连续时间系统具有如下的一般形式
d x Ax Bu dt y Cx Du
使用ss命令创建系统的状态空间模型的调用格式为 sys = ss(A,B,C,D)