一个动态系统的性能常用典型输入作用下的响应来描述。响应是指零初始值条件下某种典型的输入函数作用下对象的响应,控制系统常用的输入函数为单位阶跃函数和脉冲激励函数(即冲激函数)。在MATLAB的控制系统工具箱中提供了求取这两种输入下系统响应的函数。
一、时域分析的一般方法
求取系统单位阶跃响应:step()
求取系统的冲激响应:impulse()
(一)step()函数的用法
y=step(num,den,t):其中num和den分别为系统传递函数描述中的分子和分母多项式系数,t为选定的仿真时间向量,一般可以由t=0:step:end等步长地产生出来。该函数返回值y为系统在仿真时刻各个输出所组成的矩阵。
[y,x,t]=step(num,den):此时时间向量t由系统模型的特性自动生成,状态变量x返回为空矩阵。
[y,x,t]=step(A,B,C,D,iu):其中A,B,C,D为系统的状态空间描述矩阵,iu用来指明输入变量的序号。x为系统返回的状态轨迹。
如果对具体的响应值不感兴趣,而只想绘制系统的阶跃响应曲线,可调用以下的格式:
step(num,den);step(num,den,t);step(A,B,C,D,iu,t);step(A,B,C,D,iu);
线性系统的稳态值可以通过函数dcgain()来求取,其调用格式为:
dc=dcgain(num,den)或dc=dcgain(a,b,c,d)
例exp4_3.m已知系统的开环传递函数为:
求系统在单位负反馈下的阶跃响应曲线。
clc
clear
closeall
%开环传递函数描述
num=[20];
den=[1836400];
%求闭环传递函数
[numc,denc]=cloop(num,den);
%绘制闭环系统的阶跃响应曲线
t=0:0.1:10;
y=step(numc,denc,t);
[y1,x,t1]=step(numc,denc);
%对于传递函数调用,状态变量x返回为空矩阵
plot(t,y,'r:',t1,y1)
title('thestepresponce')
xlabel('time-sec')
%求稳态值
disp('系统稳态值dc为:')
dc=dcgain(numc,denc)
(二)impulse()函数的用法
求取脉冲激励响应的调用方法与step()函数基本一致。
y=impulse(num,den,t);[y,x,t]=impulse(num,den);[y,x,t]=impulse(A,B,C,D,iu,t)
impulse(num,den);impulse(num,den,t)
impulse(A,B,C,D,iu);impulse(A,B,C,D,iu,t)
例exp4_4.m已知系统的开环传递函数为:
求系统在单位负反馈下的脉冲激励响应曲线。
clc
clear
close
%开环传递函数描述
numo=20;
deno=[1836400];
%求闭环传递函数
[numc,denc]=cloop(numo,deno,-1);
%绘制闭环系统的脉冲激励响应曲线
t=1:0.1:10;
[y,x]=impulse(numc,denc,t);
plot(t,y)
title('theimpulseresponce')
xlabel('time-sec')
仿真时间t的选择:
对于典型二阶系统根据其响应时间的估算公式
可以确定。
对于高阶系统往往其响应时间很难估计,一般采用试探的方法,把t选大一些,看看响应曲线的结果,最后再确定其合适的仿真时间。
一般来说,先不指定仿真时间,由MATLAB自己确定,然后根据结果,最后确定合适的仿真时间。
在指定仿真时间时,步长的不同会影响到输出曲线的光滑程度,一般不易取太大。
二、常用时域分析函数
时间响应探究系统对输入和扰动在时域内的瞬态行为,系统特征如:上升时间调节时间超调量和稳态误差都能从时间响应上反映出来。MATLAB除了提供前面介绍的对系统阶跃响应冲激响应等进行仿真的函数外,还提供了大量对控制系统进行时域分析的函数,如:
covar:连续系统对白噪声的方差响应
initial:连续系统的零输入响应
lsim:连续系统对任意输入的响应
对于离散系统只需在连续系统对应函数前加d就可以,如dstep,dimpulse等。
它们的调用格式与stepimpulse类似,可以通过help命令来察看自学。
三、时域分析应用实例
MATLAB的step()和impulse()函数本身可以处理多输入多输出的情况,因此编写MATLAB程序并不因为系统输入输出的增加而变得复杂。
例exp4_7.m 某2输入2输出系统如下所示:
,求系统的单位阶跃响应和冲激响应。
clc
clear
close
%系统状态空间描述
a=[-2.5-1.2200;1.22000;1-1.14-3.2-2.56;...
002.560];
b=[41;20;20;00];
c=[0103;0001];
d=[0-2;-20];
%绘制闭环系统的阶跃响应曲线
figure(1)
step(a,b,c,d)
title('stepresponse')
xlabel('time-sec')
ylabel('amplitude')
figure(2)
impulse(a,b,c,d)
title('impulseresponse')
xlabel('time-sec')
ylabel('amplitude')
例exp4_8.m 某系统框图如下所示,求d和e的值,使系统的阶跃响应满足:1.超调量不大于40%,2.峰值时间为0.8秒。
由图可得闭环传递函数为:
,其为典型二阶系统。
由典型二阶系统特征参数计算公式
,
得:
,
clear
clc
closeall
%输入期望得超调量及峰值时间
pos=input('pleaseinputexpectpos(%)=');
tp=input('pleaseinputexpecttp=');
z=log(100/pos)/sqrt(pi^2+(log(100/pos))^2);
wn=pi/(tp*sqrt(1-z^2));
num=wn^2;
den=[12*z*wnwn^2];
t=0:0.02:4;
y=step(num,den,t);
plot(t,y)
xlabel('time-sec')
ylabel('y(t)')
grid
d=wn^2
e=(2*z*wn-1)/d