Ziegler Nichols PID Method
Show older comments
Hi,
I have a problem ,this is my G(s)=59000/(s^2+59000)
I want to apply the tangent method of Ziegler-Nichols, but my step is a sinusoid undumped. How I can approximate my G(s) to apply this method? Thanks very much.
5 Comments
Sam Chak
on 1 Mar 2024
Could you please clarify the performance requirements for your control design problem? Specifically, what is the desired response you aim to achieve in the closed-loop feedback control system? This desired response can be further divided into the transient response and steady-state response.
To put it simply, how "smooth" or "desirable" do you want the trajectory of the response to be? For instance, you may have a specific limit on the percent overshoot that the response should not exceed. Additionally, you might want the response to settle within a certain time frame of t seconds.
LORIS IACOBAN
on 1 Mar 2024
However, the response of your system G(s) is oscillatory, which deviates from the typical response of a First Order Plus Dead Time (FOPDT) model.
By the way, have you identified the desired performance requirements for the control design problem? It's important to establish specific performance goals that you wish to achieve. Even when applying Ziegler-Nichols tuning rules, it is crucial to have defined performance requirements; otherwise, the tuning may be considered unsuccessful.
G = tf(59000, [1, 0, 59000])
step(G, 1e-1), grid on
Answers (1)
I revisit your problem. I'm unsure if you are looking for something like this:
%% original system (marginally stable)
a = 59000;
G = tf(a, [1, 0, a])
%% stabilizer
Kd = 2*sqrt(a)/a;
Gc = pid(0, 0, Kd);
%% closed-loop system (exponentially-stabilized dynamic process)
Gcl = feedback(G, Gc)
tfin= 0.04;
step(Gcl, tfin), grid on
hold on
t = 0:1e-5:tfin;
sol = @(t) exp(-10*sqrt(590)*t).*(exp(10*sqrt(590)*t) - 10*sqrt(590)*t - 1);
m = 89.3576; % max slope
tm = 0.00411693; % time where max slope is
c = - (m*tm - sol(tm)); % offset
y = m*t + c; % line equation
td = 0.00116027; % time delay
plot(t, y)
xline(td, '-.', sprintf('Dead Time: %.5f sec', td), 'color', '#7F7F7F')
ylim([-0.2, 1.2])
hold off
Categories
Find more on PID Controller Tuning in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
