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

5m1hhzi4  于 2023-05-29  发布在  Matlab
关注(0)|答案(1)|浏览(232)

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

ozxc1zmp

ozxc1zmp1#

如果您查看具有单位反馈的控制回路:

对于闭环传递函数(即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.

相关问题