我是靠谱客的博主 糟糕绿茶,最近开发中收集的这篇文章主要介绍matlab传递函数延时相关,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

matlab传递函数中一共有四种延时:

  • inputs

  • Outputs

  • Between individual I/O pairs

  • Internally (for example, inside a feedback loop)

    其中前两种很好理解,第三种是特定io与多输出输出有关,第四种(InternalDelay )的含义如下(只能用在状态空间ss表示的传递函数上):

    h=ss(tf(1,[1 2],'inputdelay',2))

    a =
           x1
       x1 -2

    b =
           u1
       x1   1

    c =
           x1
       y1   1

    d =
           u1
       y1   0

    Input delays (listed by channel): 2

    f=feedback(h,1);

    bodemag(f);

    出现增益纹波如下:

    考虑延时后的一些有趣现象:

    1.增益纹波,如上图

    2.增益振荡,如下:

    锯齿形的阶跃响应:

    G = exp(-s) * (0.8*s^2+s+2)/(s^2+s);
    T = feedback(ss(G),1);
    step(T)

    4、混沌响应

    G = ss(1/(s+1)) + exp(-4*s);
    T = feedback(1,G);
    step(T)


  • 用伯德近似法处理延时环节,考虑如下系统:
  • 其中补偿器采用PI。matlab代码如下:

    s = tf('s');
    P = exp(-2.6*s)*(s+3)/(s^2+0.3*s+1);
    C = 0.06 * (1 + 1/s);
    T = feedback(ss(P*C),1);

    采取一阶近似和实际系统阶跃响应的对比如下:

    T1 = pade(T,1);
    step(T,'b--',T1,'r',100)
    grid, legend('Exact','First-Order Pade')


    可见误差很大,采用二阶近似后的效果如下:


    对延时环节的敏感性测试:

    对上面的控制系统加入陷波滤波器,考虑延时时间在2-3秒之间:notch = tf([1 0.2 1],[1 .8 1]);
    C = 0.05 * (1 + 1/s);
    Tnotch = feedback(ss(P*C*notch),1);
  • tau = linspace(2,3,5);
    % 5 delay values
    Tsens = repsys(Tnotch,[1 1 5]);
    % 5 copies of Tnotch
    for j=1:5
    Tsens(:,:,j).InternalDelay = tau(j); % jth delay value
    end
    % Use step to create an envelope plot.
    step(Tsens)
    grid
    title('Closed-loop response for 5 delay values between 2.0 and 3.0')
    可见延时环节对控制效果的影响不大。
    不考虑延时环节的bode图对比如下:
    Tnotch0 = Tnotch;
    Tnotch0.InternalDelay = 0;
    bode(Tnotch,'b',Tnotch0,'r',{1e-2,3})
    grid, legend('Delay = 2.6','No delay','Location','SouthWest')

最后

以上就是糟糕绿茶为你收集整理的matlab传递函数延时相关的全部内容,希望文章能够帮你解决matlab传递函数延时相关所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部