【问题标题】:MATLAB: How to find plant given PID values, closed loop transfer function, and step response graph?MATLAB:如何找到工厂给定的 PID 值、闭环传递函数和阶跃响应图?
【发布时间】:2021-06-05 15:24:06
【问题描述】:

我得到了一个阶跃响应图,并从中获得了传递函数。该循环包括一个工厂和一个 PID 控制器,我知道产生输出图的 PID 值。我通过应用步进输入验证了我找到的传递函数是正确的,并且输出图与我看到的匹配。

我的代码如下所示:

T = tf([.00248,-.00011,.000163],[1,.01,.00041])%plant and controller(P*C) with feedback
C = pid(2.5,0.5,0.1)%PID values
%T = feedback(C*plant,1)%need to find plant
step(T)

据此,我需要找到工厂传递函数,以便我可以使用它来找到最佳 PID 值,而不是现在使用的那些。

【问题讨论】:

    标签: matlab controls pid transfer-function


    【解决方案1】:

    如果您查看具有统一反馈的控制回路:

    你有闭环传递函数(那是你的T):

    Y(s) / U(s) = P*C / (1 + P*C) = T
    

    如果颠倒关系,可以将P表示为CT的函数:

    P = T / (C * (1-T))
    

    在 MATLAB 中,我会结合使用函数minreal 来获得传递函数的最小实现:

    >> T = tf([.00248,-.00011,.000163],[1,.01,.00041])
    
    Transfer function 'T' from input 'u1' to output ...
    
          0.00248 s^2 - 0.00011 s + 0.000163
     y1:  ----------------------------------
                s^2 + 0.01 s + 0.00041
    
    Continuous-time model.
    >> C = pid(2.5,0.5,0.1)
    
    Transfer function 'C' from input 'u1' to output ...
    
          0.1 s^2 + 2.5 s + 0.5
     y1:  ---------------------
                    s
    
    Continuous-time model.
    >> P = minreal(T / (C * (1-T)))
    
    Transfer function 'P' from input 'u1' to output ...
    
               0.02486 s^3 - 0.001103 s^2 + 0.001634 s
     y1:  --------------------------------------------------
          s^4 + 25.01 s^3 + 5.254 s^2 + 0.05687 s + 0.001238
    
    Continuous-time model.
    

    【讨论】:

      猜你喜欢
      • 2013-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-30
      • 1970-01-01
      • 2023-03-06
      • 1970-01-01
      相关资源
      最近更新 更多