In this post I want to cover some interesting things about step response and I hope to clarify via examples what the step response is and how it can be used to specify the design for closed-loop control systems, to do that I will use program laguage for Octave. So, to answer the question “What is the step response?” we can simply say that it is how a system responds to a step input, it means that we can input a unit step function into a system and we can measure how the systems responds to that.

But I know, maybe you are asking yourself “And what about the step function?”, it is simple also, the step function is a transition from one state to another in a very very small time, instantly.

clear all                   # clear all variable
clc                         # clear screen

t=-10:0.001:10;             # time declaration
y=heaviside(t);             # step function

plot(t,y, "linewidth",5);   # plot
axis([-5 5 -1 2]);          # axis delimitation

###############################################
# Plot Configs                                #
###############################################
title("Step Function","fontsize", 20);
xlabel("time","fontsize", 16);
ylabel("amplitude","fontsize", 16);
set(gca,"linewidth", 4,"fontsize", 18);

In general, for a closed-loop system, to design a system we need to take care about four main parameters that could be aswered over the following questions:

  • What is the time to achieve the final amplitude desired (Rise Time)?
  • Is there overshoot?
  • What is the time to achieve the response stability?
  • What is the difference betwen the system amplitude and the amplitude desired (Tracked Reference)?

Step Response For Different Systems

Is very important to note that each system has a peculiar response when a step response is applied, below you can see the response for some systems.

Low Pass Filter (First Order)

clear all;
clf;
s = tf('s');
g = 1/(s+1); # Low pass filter
[y,t] = step(g);
plot(t, squeeze(y), 'LineWidth',4);

Type 1 Transfer Function

clear all;
clf;
s = tf('s');
g = 1/s*(s+1); # Type 1 transfer function
[y,t] = step(g);
plot(t, squeeze(y), 'LineWidth',4);

High Pass Filter

clear all;
clf;
s = tf('s');
g = s/(s+1); # High pass filter
[y,t] = step(g);
plot(t, squeeze(y), 'LineWidth',4);