问题描述
我得到了一个阶跃响应图,并从中获得了一个传递函数。该回路包括一个设备和一个 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 值,而不是它现在使用的值。
解决方法
如果您查看具有统一反馈的控制回路:
您拥有闭环传递函数(即您的 T
):
Y(s) / U(s) = P*C / (1 + P*C) = T
如果反转关系,可以将P
表示为C
和T
的函数:
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.