Distancia de etiquetas y otras cuestiones en un diagrama TikZ

Distancia de etiquetas y otras cuestiones en un diagrama TikZ

La siguiente cifra calculada tikzincluye tres imperfecciones:

  1. Los operadores matemáticos más "+" y menos "-" se definen como etiquetas de los nodos de suma correspondientes. Las señales están dibujadas demasiado lejos de los círculos y las flechas. Intenté usar el comando label distance=<value>sin diferencias en el resultado. ¿Alguien sabe cómo variar la distancia de las etiquetas a los nodos correspondientes?
  2. El nodo de suma de la derecha (denominado sum3en mwe) se coloca con la opción below = 18mm of branch2. Este es un valor codificado que proporciona el resultado deseado. Estoy buscando una solución más general que coloque el nodo debajo del nodo branch2y también a la misma altura que el nodo c. ¿Es esto posible a través del tikzcomando intersections? ¿O existe otra solución para solucionar este problema?
  3. Algunas flechas se combinan con el pathcomando. ¿También es posible incluir flechas en las esquinas ( -|o |-) en los caminos?

Ejemplo de trabajo mínimo

\documentclass{standalone}
\usepackage{xcolor}
\definecolor{anti-flashwhite}{rgb}{0.95, 0.95, 0.96}

\usepackage{tikz}
\usetikzlibrary{positioning,circuits.ee.IEC}

\usepackage{bm}

\begin{document}

\begin{tikzpicture}[%
,auto
,>=latex'
,block/.style={text height=1.5ex,text depth=.25ex,draw, fill=anti-flashwhite, rectangle, minimum height=10mm, minimum width=10mm}
,bigblock/.style={text height=1.5ex,text depth=.25ex,draw, fill=anti-flashwhite, rectangle, minimum height=10mm, minimum width=30mm}
,sum/.style={draw, fill=anti-flashwhite, circle,inner sep=1mm, node distance=20mm}
,input/.style={coordinate}
,output/.style={coordinate}
,branch/.style={circle,inner sep=0pt,minimum size=1mm,fill=black,draw=black}
,frame/.style={dashed,thick,blue}
]
\draw
    % forward path
    node [input]                (input1)                                                        {}
    node [sum]                  (sum1)          [right = 15mm of input1]                        {}
    node [branch]               (branch1)       [right = 10mm of sum1,label ={above:$u(t)$}]    {}
    node                        (helpnode)      [right = 15mm of branch1]                       {}
    node [bigblock]             (strecke)       [right = 15mm of helpnode]                      {Strecke}
    node [branch]               (branch2)       [right = 30mm of strecke]                       {}
    node [output]               (output1)       [right = 15mm of branch2]                       {}

    % observer
    node [block]                (h)             [below = of strecke]                            {$\bm{h}$}
    node [block]                (int)           [below = of h]                                  {$\int$}
    node [sum]                  (sum2)          [left = 10mm of int,label={above left,:\tiny{$+$}},
                                                label={below left:\tiny{$+$}},
                                                label={below right:\tiny{$+$}}]                 {}
    node [block]                (b)             [left = of sum2]                                {$\bm{b}$}
    node [block]                (a)             [below = of int]                                {$\bm{A}$}
    node [branch]               (branch3)       [right = of int, label={above:$\hat{x}(t)$}]    {}
    node [block]                (c)             [right = of branch3]                            {$\bm{c}^T$}

    node [sum]                  (sum3)          [below = 18mm of branch2,
                                                label={above left:\tiny{$+$}},
                                                label={below left:\tiny{$-$}}]                  {}
    node [branch]               (branch4)       [below = 18mm of sum3]                          {}
    node [output]               (output2)       [right = 15mm of branch4]                       {}

    node [block]                (r)             [below = 25mm of b, dashed]                     {$\bm{r}^T$}
;

\path
(input1)    edge[->]    node {$w(t)$}           (sum1)
(sum1)      edge[->]                            (branch1)
(branch1)   edge[->]                            (strecke)
(strecke)   edge[->]                            (branch2)
(branch2)   edge[->]    node {$y(t)$}           (output1);

\draw[->]   (branch1)   |-                      (b);

\path
(b)         edge[->]                            (sum2)
(sum2)      edge[->] node {$\dot{\hat{x}}(t)$}  (int)
(int)       edge                                (branch3)
(branch3)   edge[->]                            (c)
(c)         edge                                (branch4)
(branch4)   edge[->]    node {$\hat{y}(t)$}     (output2)
;

\path
(branch2)   edge[->]                            (sum3)
(sum3)      edge[->]                            (h);

\draw[->]   (h)         -|                      (sum2);
\draw[->]   (branch3)   |-                      (a);
\draw[->]   (a)         -|                      (sum2);

\draw[->]   (branch4)   --                      (sum3);

\draw[->,dashed]    (branch3)       |-          (r);
\draw[->,dashed]    (r)             -|          (sum1);


% dashed frame
\draw [frame] ([yshift=28mm,xshift=-20mm]b) rectangle ([yshift=-48mm,xshift=3mm]sum3)   node[below left] {Beobachter}  ;

\end{tikzpicture}

\end{document}

Resultado

ingrese la descripción de la imagen aquí

Respuesta1

Con respecto a la pregunta 1, si agrega [label distance=6pt] o [label distance=-6pt]a la primera \draw, debería ver una diferencia significativa.

Pero esto también afectará a las etiquetas u(t)y \hat x(t).

información relacionada