Steady state doesn't appear in step response plot

23 views (last 30 days)
I Have the following specific transfer function:
bad_sys = tf([0 0 93 278], [1 20 12 0]);
And I want to plot the step response of its close loop (with negative feedback, no gain), and display the settling time. So I call:
step(bad_sys/(1+bad_sys));
But the plot I get don't dave the dashed line which represents the steady state value, and thus will not display the settling time when I choose this option (not defined):
This steady state line, and the option to display settling time works great for the following transfer function:
good_sys = tf([0 0 1 1], [1 2 2 2]);
step(good_sys/(1+good_sys));
I suggested that the problem is in bad_sys. So I called:
sisotool
And defined G in the architecture as bad_sys:
Now I let the magical sisotool to plot the step response (with the gain C=1). This should yield the same problem, but here I got the line I wanted and the option to display settling time:
So my question is, why the steady state line of bad_sys is not displayed (and I cant display settling time) via the step function?

Accepted Answer

Aquatris
Aquatris on 29 Oct 2018
The bad_sys works if you call the step function with;
step(minreal(bad_sys/(1+bad_sys)))
I am not sure about the exact reason but one possibility is, when you closed the loop without calling minreal() function, you basically do not allow pole-zero cancellation. Since bad_sys has a pole at zero, this causes problems (internally Matlab probably does not know what to do). good_sys on the other hand do not have a pole at zero so Matlab is happy to work with it.

More Answers (0)

Products


Release

R2018a

Community Treasure Hunt

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

Start Hunting!