What is a step response?
In control theory, a step response is the time evolution of the system output when the input corresponds to a step.
Today's example is a first order system described by the following block diagram:
For a unit step and zero initial condition, the output of the system is given by the following equation:
In the sequel, we'll consider the case of K=7 and 𝜏=1.
Main elements of the plot
Here is the final result that we would like to get in LaTeX:
It can be simplified to small drawing tasks:
1) The grid which has a dashed line style and light gray color.
2) Axes which corresponds to a straight line ending with an arrowhead. Labels are added at the end points
3) Plot of a function with teal color and very thick line to distinguish it from the other parts.
4) Lines with arrowheads and a text label (63% & 100%)
Let's see how this can be achieved using TikZ commands!
1. Create a grid in TikZ
Creating a grid in TikZ can be achieved with the same manner as drawing a rectangle where we need the coordinates of two opposite corners. Check the following code:
\documentclass[tikz,border=0.2cm]{standalone} \begin{document} \begin{tikzpicture} % Grid \draw[help lines,dashed] (0,0) grid (10.25,7.25); \end{tikzpicture} \end{document}
Compiling this code yields:
Comments:
- Using the operation grid between the points (0,0) and (10.25,7.25), we have a created a grid with 10.25cm width and 7.25cm height.
- The option help lines yields thin and light gray style of the grid lines.
- We have added dashed to get a dashed line style.
- By default, the step between lines is 1cm and can be modified by these options: step=<value>, xstep=<value>, ystep=<value>. The first one sets the same step for vertical and horizontal lines. xstep (ystep) option sets the spacing between vertical (horizontal) lines, respectively.
2. Add axes to the grid
Axes correspond to two perpendicular lines:
- The horizontal one representing x-axis starts from the point with coordinates (0,0) and ends at the point (10.5,0).
- The vertical line represents the y-axis and it starts from (0,0) and ends at the point (0,7.5).
Check the following code:
\documentclass[tikz,border=0.2cm]{standalone} \begin{document} \begin{tikzpicture} % Grid \draw[help lines,dashed] (0,0) grid (10.25,7.25); % Axes \draw[very thick,-latex] (0,0) -- (10.5,0) node[below]{$t$}; \draw[very thick,-latex] (0,0) -- (0,7.5) node[left]{$y(t)$}; \end{tikzpicture} \end{document}
And the corresponding illustration:
Comments:
- We used very thick option to change the line thickness
- The option -latex adds an arrowhead at the end of the line. latex- will add an arrowhead at the beginning of the line. You can guess what latex-latex will do!
- More arrowhead styles and customization can be found in this post: TikZ arrows
- The node command will add the text between braces at the end point of the line. We added below and left options to position labels with respect to the end point.
The two lines code of the axes can be minimized to only one line code using the operation |- (goes vertical than horizontal) instead of -- as follows:
\documentclass[tikz,border=0.2cm]{standalone} \begin{document} \begin{tikzpicture} % Grid \draw[help lines,dashed] (0,0) grid (10.25,7.25); % Axes \draw[very thick,latex-latex] (0,7.75) node[left]{$y(t)$} |- (10.5,0) node[below]{$t$}; \end{tikzpicture} \end{document}
Text nodes are added at the corresponding coordinates. Let's move to plotting our function!
3. Plot function in TikZ
Our function is equal to zero for t<0 and equal to the above equation for t>0. We will plot this function in the domain [-0.5, 10] and here is the corresponding the code:
\documentclass[tikz,border=0.2cm]{standalone} \begin{document} \begin{tikzpicture} % Grid \draw[help lines,dashed] (0,0) grid (10.25,7.25); % Axes \draw[very thick,latex-latex] (0,7.75) node[left]{$y(t)$} |- (10.5,0) node[below]{$t$}; % Plot function \draw[ultra thick,teal] (-0.5,0) node[left,black](s0){$y(0)$} -- ++(0.5,0) plot[domain=0:10, samples = 50, smooth]({\x}, {7*(1-exp(-\x))}); \end{tikzpicture} \end{document}
Compiling this code yields:
Comments:
- We added a text node, y(0), at the left of the starting point (-0.5,0)
- The code draws a straight line between the points (-0.5,0) and (0,0) using the operation --
- We used plot command to draw our function, described by the above equation, in the domain [0, 10]. This is achieved by the option domain=0:10
- samples =50 and smooth options yields to a smooth plot with 50 samples.
4. Add arrows with midway labels
This can be done with the same manner as drawing the axes and we will add a node at the middle of the line with a white background. Here is how we can do it:
\documentclass[tikz,border=0.2cm]{standalone} \begin{document} \begin{tikzpicture} % Grid \draw[help lines,dashed] (0,0) grid (10.25,7.25); % Axes \draw[very thick,latex-latex] (0,7.75) node[left]{$y(t)$} |- (10.5,0) node[below]{$t$}; % Plot function \draw[ultra thick,teal] (-0.5,0) node[left,black](s0){$y(0)$} -- ++(0.5,0) plot[domain=0:10, samples = 50, smooth]({\x}, {7*(1-exp(-\x))}); % y(infty) line \draw[thick,gray] (0,7) node[left=0.1cm,black]{$y(+\infty)$} -- (10,7); % Line with label 63% \draw[latex-latex] (1,0.63*7) -- (1,0) node[below]{$\tau$} node[midway,fill=white]{\small $63\%$}; % Lines with label 100% \draw[latex-latex] (9,7) -- (9,0) node[midway,fill=white]{\small $100\%$}; \end{tikzpicture} \end{document}
Compiling this code yields: