自动控制网移动版

自动控制网 > 基础知识 > 计算机仿真控制系统 >

制系统的时域分析

   一个动态系统的性能常用典型输入作用下的响应来描述。响应是指零初始值条件下某种典型的输入函数作用下对象的响应,控制系统常用的输入函数为单位阶跃函数和脉冲激励函数(即冲激函数)。在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


    本文已影响
    最近关注
    0基础免费学PLC,扫描观看

    扫描上方二维码免费观看PLC视频课程