Why does my closed loop pole-zero map appear to indicate a critically damped system but a step input results in an under-damped response?

**EDIT:forgot to show plant
As the question says my pole-zero map for a closed loop system with negative unity feedback appears to indicate that I should expect an critically damped response but when I subject my system to a unit step it is oscillatory. Can anyone offer an explanation or point me in the direction of releveant literature? Thanks
I have a model plant, G, with a time delay (dead time)** of -1 seconds which is defined as:
G = (2*exp(-1*s))/(3*s+1);
**Just as a side note, taking away the dead time has the same final result.
Plotting plant:
plot(t,y), grid;
I have the following Ziegler-nichols tuning parameters:
Kp = 1.8;
Ti = 3;
I have made the following PI controller for the plant:
controller = pidstd(Kp,Ti)
I have calculated the open and closed loop system as follows:
gol = controller*G;
gcl = feedback(gol,1);
The PZ map for the closed loop system is:
pzmap(gcl), grid
Based on the PZ map where there is a pole-zero cancellation at -0.333, leaving a single real pole at -1.2 and a damping of 1, I am expecting a critically damped reponse with no oscillations.
However when I plot a step response I get the following:
step(gcl,40),grid

 Accepted Answer

If you remove the time delay the response has no oscillations as you expected. I know you said "**Just as a side note, taking away the dead time has the same final result.", but I think perhaps you didn't evaluate this correctly. Here I show the system without time delay and no oscillation:
G = 2/(3*s+1);
Kp = 1.8
Ti = 3
controller = pidstd(Kp,Ti)
gol = controller*G
gcl = feedback(gol,1)
step(gcl,40),grid

4 Comments

I must not have cleared my workspace properly when I was trying that. Are you able to shine any light on why the introduction of dead-time causes oscillations like that?
Apparently the pzmap does not plot the infinite number (or any for that matter) poles that will occur as a result of the time delay. It seems to do this silently though, which is misleading
You can also look at the pole and zero location using the Control System Toolbox's pole and zero functions. These at least gives a warning that it is not showing all of the poles. It also suggest using a pade approximation to see the approximate additional pole locations.
You can use, for your system with time delay
pole(pade(gcl))
and you will see:
>> pole(pade(gcl))
ans =
-0.4000 + 1.4967i
-0.4000 - 1.4967i
-0.3333 + 0.0000i
and also
zero(pade(gcl))
>> zero(pade(gcl))
ans =
-0.3333
2.0000
So now you see that in fact there are some oscillatory poles, that are not cancelled by zeros.
That's a great help, thanks very much for taking the time to answer!
If you are already somewhat familiar with the Nyquist Plot, and Nyquist Stability Criteria, I think this is a good way to see the effects of time delay on stability. The time delay keeps adding more and more phase lag with increasing frequency, which in turn changes the encirclements of the -1 point. I just skimmed this, but it looked like it was a good quick reference on the topic (see the later sections) http://www.cds.caltech.edu/~murray/courses/cds110/fa15/pdf/L7-3_delay+nyquist.pdf

Sign in to comment.

More Answers (0)

Products

Release

R2020a

Tags

Asked:

on 17 Dec 2021

Commented:

Jon
on 17 Dec 2021

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!