第6章 MATLAB控制系统时域分析
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2. 稳态值
1 bm y ( ∞) = lim sG ( s ) = G (0) = s →0 s an
1 y ( ∞ ) = lim sG ( s ) = lim C ( sI − A) −1 B + D = − CA −1 B + D s→ 0 s s→0
dcG=dcgain(G)可求稳态值。
G(s)=num/den
step的其他调用形式
无左边参数调用,绘制仿真计算图形。
step(sys);step(sys,t);step(sys1,sys2,…,t)
有左边参数调用,返回仿真计算结果。
y=step(sys,t) [y,t]=step(sys) [y,t,x]=step(sys)
使用help step命令,了解函数的调用方法。
m −1
m −1 p j t
e
= ( rj + rj +1t + L + rj + m−1t
)e
p jt
时域作业
编制一个求系统单位阶跃响应与稳态误差,单位斜坡 响应与稳态误差、单位加速度响应与稳态误差的函数 调用格式: [ess]=funname(key,sys,t) (1)输入参数sys,t是闭环系统对应的传函与响应时间. (1) sys,t . (2)key为0,1,2,当key=0时,计算阶跃响应及其稳态误差, 当key=1时,计算斜坡响应及其稳态误差,当key=2时,计 算加速度响应及其稳态误差. (3)函数被调用后返回相应的稳态误差,同时绘制相应的 响应曲线及误差响应曲线.
例6-4 已知单位负反馈系统为
k G( s) = s( 0.5s + 1)( 4s + 1)
绘制当K分别为1.4,2.3,3.5时的单位阶跃响应曲线(绘在同一张图上), 并求出k=1.4时的性能指标
பைடு நூலகம்
m63.m
6.3 系统时域响应的解析解算法
部分分式展开方法
传递函数G(s)含有n个互异极点,可展开为部分 分式: r1 r2 rn G( s) = + +L+ s − p1 s − p2 s − pn 将其Laplace逆变换,得输出:
3. 稳态误差
单位阶跃响应
ess = lim e(t ) = lim sE ( s )
t →∞ s →0
ess = 1 − h(∞)
单位斜坡响应
ess = t − y
4. 峰值时间Tp和超调量
Tp:0到阶跃响应曲线h(t) 超过稳态值而达第一个峰值之 间的时间
sys=tf(1.25,[1 1 0]) Gc=feedback(sys,1) [y,t]=step(Gc)
系统有重极点的计算
传递函数G(s)的第j个极点Pj是m重的,则展开中含 有下面各项: rj rj +1 rj +m −1 + +L+ 2 s − p j (s − p j ) ( s − p j )m 对应的Laplace逆变换为:
p jt
rj e
+ rj +1te
p jt
+ L + rj + m −1t
a = [-0.5572 -0.7814;0.7814 0]; b = [1 -1;0 2]; c = [1.9691 6.4493]; sys = ss(a,b,c,0); step(sys)
例6-1
G=1/(s2+2ζs+1)
num=1;y=zeros(200,1);i=0; for bc=0.1:0.1:1 den=[1,2*bc,1];sys=tf(num,den);t=[0:0.1:19.9]; i=i+1;y(:,i)=step(sys,t); end plot(y) legend('zeta=0.1','zeta=0.2','zeta=0.3','zeta=0.4','zeta=0.5','zeta =0.6','zeta=0.7','zeta=0.8','zeta=0.9','zeta=1.0',-1)
y m − y (∞ ) σ% = ×100% y (∞ )
[mp,tf]=max(y); cs=length(t); yss=y(cs); sigma=100*(mp-yss)/yss tp=t(tf)
二阶系统的超调量的计算
σ% = e
−
ζπ
1−ζ 2
×100%
sigma=exp(-pi*zeta/(1-(zeta)^2)^(1/2))*100
>> sys1=zpk(sys) Zero/pole/gain: 100 (s+2) -----------------------(s+12.9) (s+5) (s+3.101) >> sys1.p{1} ans = -12.8990 -5.0000 -3.1010 >> G=ss(sys) >> eig(G.a)
step(sys) t = 0:dt:Tfinal step(sys,t) step(sys1,sys2,...,sysN) step(sys1,sys2,...,sysN,t) step(sys1,'PlotStyle1',...,sysN,'PlotStyleN') [y,t,x] = step(sys)
例6-2
mesh(flipud(y),[-100 20])
3. 其他输入下的时域响应
sys=系统模型
initial() 零输入响应 [y,t,x]=initial(sys,x(0)) help initial命令了解命令的使用方法。
initial(sys,x0) initial(sys,x0,t) initial(sys1,sys2,...,sysN,x0) initial(sys1,sys2,...,sysN,x0,t) initial(sys1,'PlotStyle1',...,sysN,'PlotStyleN',x0) [y,t,x] = initial(sys,x0)
ln(1 / σ %) 2 ζ = 2 2 ln(1 / σ %) + π
zeta=((log(1/sigma))^2/((pi)^2+(log(1/sigma))^2))^(1/2)
5. 调节时间Ts
Ts:进入稳态值附近±5%或±2%的误差带而不 再超出的最小时间
if t2<tp cs=length(t) j=cs+1; if t1>t2 i=cs+1; n=0; n=0; ts=t1 while n==0,j=j-1; while n==0,i=i-1; end if j==1,n=1; if i==1,n=1; elseif y(j)<0.95*yss elseif t2>tp elseif y(i)>1.05*yss if t2<t1 n=1; n=1; ts=t2 end end else ts=t1 end end end t2=t(j); t1=t(i); end
g ( t ) = r1e
p1t
+ r2 e
p2 t
+ L + rn e
pn t
因此,可以通过G(s)*R(s)的部分分式展开而求出系 统的解析解。 求留数函数[r,p,k]=residue(num,den)可以得出各系 [r,p,k]=residue(num,den) 数。 请注意,此解法得出的是解析解,而不是数值解。
第六章 时域分析、零极点分析 和根轨迹法
获得控制系统的瞬态响应和稳态响应 对系统的瞬态和稳态性能分析 根轨迹绘制和分析
参见书124页6.1节和249页的8.2节
6.1 系统的时域分析
时域分析法是研究系统对典型输入的时间响 应曲线,常用的输入信号有:
阶跃信号step 脉冲信号impulse 任一信号arbitrary inputs
响应时间
[y,t,x]=impulse(num,den,t)
y(t)=时间输出响应 x(t)=时间状态响应 t=仿真时间
G(s)=num/den
例6-2 分析系统的脉冲响应
num=1;y=zeros(200,1);i=0; for bc=0.1:0.1:1 den=[1,2*bc,1];t=[0:0.1:19.9]';sys=tf(num,den); i=i+1;y(:,i)=impulse(sys,t); end plot(y) legend('zeta=0.1','zeta=0.2','zeta=0.3','zeta=0.4','zeta=0.5','zeta =0.6','zeta=0.7','zeta=0.8','zeta=0.9','zeta=1.0',-1)
例6-1
例6-1
mesh(y)
mesh(flipud(y),[-100 20])
2. impulse()
计算系统对单位脉冲输入的响应
调用方法与step()函数类似,用help impulse命令例了解 其调用规则 y=impulse(num,den) impulse(num,den) t=计算脉冲 [y,t,x]=impulse(num,den,t)
x0=初始状态
a = [-0.5572 -0.7814;0.7814 0]; c = [1.9691 6.4493]; x0 = [1 ; 0]; sys = ss(a,[],c,[]); initial(sys,x0)
lsim()计算系统对任意输入的响应
[y,t,x]=lsim(sys,u,t,x0) y=lsim(sys,u,t) lsim(sys,u,t)
roots()、 pzmap()
已知开环传函
对系统闭环稳定性判别
[n1,d1]=zp2tf(z,p,k) n1 = 0 d1 = 1 P= 1 21 120 200 0 100 200
100( s + 2) G (s) = s ( s + 1)( s + 20)
>> roots(P) ans = -12.8990 -5.0000 -3.1010
r=复根向量 K=增益向量 1+K*(num/den)=0
x0=初始 状态
[y,t,x]=lsim(sys,u,t,x0)
y(t)=时间输出响应 x(t)=时间状态响应 sys=系统 模型 u=输入 t=计算信号 响应时间
例6-3
close t=[0:0.1:10]; num=[1]; zeta=0.4;
系统对斜坡输入的响应 G=1/(s2+2ζs+1)
k=100;z=[-2];p=[0,-1,-20];
21
20
0
>> P=n1+d1
>> G=tf(n1,d1) >>sys=feedback(G,1) Transfer function: 100 s + 200 -------------------------s^3 + 21 s^2 + 120 s + 200 >> roots(sys.den{1}) ans = -12.8990 -5.0000 -3.1010
den=[1 2*zeta 1]; u=t; %单位斜坡输入 单位斜坡输入 y=lsim(num,den,u,t); plot(t,y,'b-',t,u,'r:'); legend('zeta=0.4','u=t',0)
6.2 系统动态及稳态性能的时域分析 1. 稳定性分析MATLAB实现的方法
MATLAB提供了直接求取系统所有零极点的函数,因此 可以直接根据零极点的分布情况对系统的稳定性及是否 为最小相位系统进行判断。
6.4 根轨迹分析法
应用MATLAB可以绘制精确的根轨迹图,我 们可以采用根轨迹法对控制系统进行设计和 校正。 绘制根轨迹图 根轨迹分析 校正装置
1. 绘制根轨迹图
rlocus() 调用之前必须将特征方程写成下面的形式:
num 1+ K =0 den
rlocus()
rlocus(num,den), rlocus(sys) rlocus(num,den,K), rlocus(sys,K) [r,K]=rlocus(num,den), [r,K]=rlocus(sys) r=rlocus(num,den), r=rlocus(sys) r=rlocus(num,den,K), r=rlocus(sys,K)
1. step():
计算系统对单位阶跃输入的响应
y=step(num,den) step(num,den) [y,t,x]=step(num,den,t)
[y,t,x] = step(num,den,t)
y(t)=时间输出响应 x(t)=时间状态响应 the state trajectory x t=仿真时间 t=计算阶跃 响应时间