MATLAB:如何找到给定 PID 值、闭环传递函数和阶跃响应图的被控对象?

问题描述

我得到了一个阶跃响应图,并从中获得了一个传递函数。该回路包括一个设备和一个 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 值,而不是它现在使用的值。

解决方法

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

enter image description here

您拥有闭环传递函数(即您的 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.