I have a model for which time delay is coming negative and I'm unable to find transfer function. How should I proceed to calculate tf?
6 次查看(过去 30 天)
显示 更早的评论
I have a simulink model for a MIMO process model whose one of the pair on linearization giving parameters which have negative time delay and I'm unable to find transfer function for the model, which I need for my PID controller.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1416604/image.png)
1 个评论
Mathieu NOE
2023-6-22
编辑:Mathieu NOE
2023-6-22
how much is your negative time delay vs the decay time of your step response ?
that may be neglectable so consider it like 0
回答(2 个)
Ayush
2023-8-22
Negative time delays in MIMO process can occur due to factors such as system dynamics, signal propagation delays, processing delays.
I understand that you are unable to find the transfer function required for PID controller due to negative time delays, in such a scenario you may consider following workarounds:
- Using State-space representation as it can handle systems with time delays more effectively. Once you have state-space representation you can design PID controller using techniques such as pole placement of LQR. Read the documentation to convert transfer function to state-space models: Convert transfer function filter parameters to state-space form - MATLAB tf2ss - MathWorks India
- In order to address negative time delays, use Delay compensation. You may approximate time delays with series of first-order or higher-order transfer function using Pade approximation.
- Model Predictive Control (MPC) can be used instead of PID as MPC is well-suited for system with time-delays.
- Consider non-linear technique if your system exhibits significant non-linearities or time delays causing complex behaviour.
0 个评论
Sam Chak
2023-8-22
Hi @Shubham
Based on the data extracted from the step response, the system can be approximated as a first-order transfer function. With that, a PI controller can be designed.
x = [0 2.9653 6.2281 8.8960 12.4562 15.2828 18.4562 20.9854 23.7719 26.9161 30.2281 33.3029 36.6843 40.1460 42.9124 46.0766 49.1405 51.7792 54.4562 57.4818 60.6843 66.0000 72.0000 78.0000 84.0000 90.0000 96.0000 102.0000 108.0000 114.0000 120.0000 126.0000 132.0000 138.0000 144.0000 150.0000 156.0000 162.0000 168.0000 174.0000 180.0000 186.0000 192.0000 198.0000 204.0000 210.0000 216.0000 222.0000 228.0000 234.0000 240.0000 246.0000 252.0000 258.0000 264.0000 270.2281 276.0000 282.0000 288.0000 294.0000 300.0000];
y = [0 -0.0061 -0.0105 -0.0138 -0.0178 -0.0205 -0.0234 -0.0256 -0.0276 -0.0298 -0.0319 -0.0336 -0.0352 -0.0368 -0.0379 -0.0391 -0.0402 -0.0409 -0.0417 -0.0425 -0.0432 -0.0442 -0.0453 -0.0461 -0.0468 -0.0473 -0.0478 -0.0482 -0.0485 -0.0487 -0.0489 -0.0491 -0.0492 -0.0494 -0.0495 -0.0495 -0.0496 -0.0496 -0.0497 -0.0497 -0.0497 -0.0497 -0.0498 -0.0498 -0.0498 -0.0498 -0.0499 -0.0498 -0.0498 -0.0498 -0.0498 -0.0499 -0.0499 -0.0499 -0.0499 -0.0499 -0.0499 -0.0499 -0.0499 -0.0499 -0.0499];
% Identified transfer function model
s = tf('s');
Gp = -0.05/(30*s + 1)
step(Gp, 300), grid on, hold on
plot(x, y, 'r.', 'markersize', 5), hold off
legend('model', 'data')
% PI Controller design
Gc = pidtune(Gp, 'PI', 5)
% Closed-loop system
Gcl = minreal(feedback(Gc*Gp, 1))
step(Gcl)
0 个评论
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!