control-system.tex 1.55 KB
Newer Older
1
\documentclass[tikz, border=10pt]{standalone}
2

3
4
\usetikzlibrary{arrows}
\usetikzlibrary{shapes}
5

6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
\begin{document}

    \tikzstyle{block} = [draw, fill=blue!20, rectangle, minimum height=3em, minimum width=6em]
    \tikzstyle{sum} = [draw, fill=blue!20, circle, node distance=1cm]
    \tikzstyle{input} = [coordinate]
    \tikzstyle{output} = [coordinate]
    \tikzstyle{pinstyle} = [pin edge={to-,thin,black}]

    % The block diagram code is probably more verbose than necessary
    \begin{tikzpicture}[auto, node distance=2cm,>=latex']
        % We start by placing the blocks
        \node [input, name=input] {};
        \node [sum, right of=input] (sum) {};
        \node [block, right of=sum] (controller) {Controller};
        \node [block, right of=controller, pin={[pinstyle]above:Disturbances},
                node distance=3cm] (system) {System};
        % We draw an edge between the controller and system block to 
        % calculate the coordinate u. We need it to place the measurement block. 
        \draw [->] (controller) -- node[name=u] {$u$} (system);
        \node [output, right of=system] (output) {};
        \node [block, below of=u] (measurements) {Measurements};

        % Once the nodes are placed, connecting them is easy. 
        \draw [draw,->] (input) -- node {$r$} (sum);
        \draw [->] (sum) -- node {$e$} (controller);
        \draw [->] (system) -- node [name=y] {$y$}(output);
        \draw [->] (y) |- (measurements);
        \draw [->] (measurements) -| node[pos=0.99] {$-$} node [near end] {$y_m$} (sum);
    \end{tikzpicture}
35

36
\end{document}