- Estimate τ based on when the system reaches a significant portion of its steady-state value for the first time.
- θ is based on when the system output first starts to rise, but for an undamped second-order system (as in your case), this is effectively zero.
How Approximate Model FOPDT
72 次查看(过去 30 天)
显示 更早的评论
Hi, I have a problem.
My G(s)=7/(s^2+7), so is a 2 order undumped. I need to approximate it in a FOPDT , How i can? Thanks to everyone.
0 个评论
回答(2 个)
akshatsood
2024-3-18
编辑:akshatsood
2024-3-18
To approximate a second-order undamped system with a First Order Plus Dead Time (FOPDT) model, you shall aim to find an equivalent system that captures the essential dynamics of the original system with a simpler representation. The FOPDT model is given by: where K is the process gain, is time constant and, θ is dead time.
As stated in the question, your system is repereseted as: . This is a second-order system without damping as does not have a term (where ξ is the damping ratio and is the natural frequency). The natural frequency is in your case.
You can consider the following steps to approximate to FOPDT
Identify Key Characteristics - For the original system, identify characteristics like the time to reach first peak, settling time, or steady-state gain. For a second-order undamped system, the steady-state gain is the coefficient of the transfer function, which is 7 in this case.
Approximate Parameters
Gain (K) : The gain of the FOPDT model should match the steady-state gain of the original system. Thus, .
Time Constant (τ) : The time constant should represent the time it takes for the system to reach a significant portion of its final value. For a second-order undamped system, you might use the time it takes to reach the first peak or some empirical methods for estimation.
Dead Time (θ): This could represent the delay before the system starts responding. For systems without an explicit delay, this might be approximated as a fraction of time constant or based on system's response characteristics.
Approximation Method
A generic approach aimed towards approximating involves comparing step response of original system to that of FOPDT model and adjusting τ and θ to match key features of the response, such as the time to reach first peak or the half-rise time. However, for a purely undamped second-order system, there is no perfect match because the original system oscillates indefinitely while the FOPDT system does not.
Given lack of a standard method for directly converting a second-order undamped system to FOPDT, consider using empirical methods or judgment based on the system's step response, you might consider the following :
As a footnote, this approach is highly approximate and relies on matching key characteristics rather than a direct mathematical transformation. For precise transformation, consider using simulations to iteratively adjust τ and θ until the FOPDT model's response closely aligns with that of the original system.
I hope this helps.
0 个评论
Sam Chak
2024-3-18
Considering that the open-loop model lacks the characteristic S-shaped process reaction curve and exhibits oscillations, you can employ whatever suitable manipulation technique to close the loop and transform it into a First-Order Plus Time Delay (FOPDT) model. Once that is achieved, you can utilize the Ziegler-Nichols Tuning method with the help of Dr. Yi Cao's 'ReactionCurve()' code, which can be downloaded from the File Exchange using the following link:
Gp = tf(7, [1 0 7]) % Process model, Gp
Ts = 1.5; % desired Settling Time
kp =-0.25;
ki = 1.94464386024797;
kd = 0.309945826765284;
N = 7.77857544099188; % bandwidth of derivative filter
Gc = pid(kp, ki, kd, 1/N) % PID controller (for manipulation purposes)
Gcl = feedback(Gc*Gp, 1); % Closed-loop system, Gcl (that looks like FOPDT)
S = stepinfo(Gcl);
figure(1)
step(Gp, 2*Ts), hold on
step(Gcl, 2*Ts), grid on, hold off
xline(S.SettlingTime, '--', sprintf('Settling Time: %.4f sec', S.SettlingTime), 'color', '#265EF5', 'LabelVerticalAlignment', 'bottom')
legend('Open-loop Gp', 'Closed-loop Gcl', '')
figure(2)
[y, t] = step(Gcl, 3);
[model, controller] = ReactionCurve(t, y);
T = feedback(Gcl*controller.PID, 1);
step(T, 3), grid on, hold off
function [model, controller] = ReactionCurve(t, y, u)
...
end
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 PID Controller Tuning 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!