출력 피드백 컨트롤러

출력 피드백 컨트롤러

이 그림에서는 표시한 화살표를 삭제하고 싶습니다. 어떻게 해야 하나요? 아래에 코드를 첨부했습니다.

\documentclass[]{article}
\usepackage{tikz}
\usetikzlibrary{shapes,arrows}
\usetikzlibrary{arrows,calc,positioning}

\tikzset{
    block/.style = {draw, rectangle,
        minimum height=1cm,
        minimum width=2cm},
    input/.style = {coordinate,node distance=1cm},
    out/.style = {coordinate,node distance=4cm},
    output/.style = {coordinate,node distance=1cm},
    arrow/.style={draw, -latex,node distance=2cm},
    pinstyle/.style = {pin edge={latex-, black,node distance=2cm}},
    sum/.style = {draw, circle, node distance=1cm}, 
     point/.style = {draw, fill=black, circle, minimum size=0.08mm, node distance=1.5cm, inner sep=0pt},
}

\begin{document}
    
    
        \begin{center}
        \begin{tikzpicture}[auto,>=latex']
            % Start by placing nodes
            \node [input, name=input] {};
            \node [block, right=1cm of input] (controller) {{$?$}};
            \node [block, right=1cm of controller] (system) {$\mathcal {A},\mathcal {B}$};
            \node [block, right=1cm of system] (C) {$\mathcal {C}$};
            \node [output, right=1cm of C] (output) {};
            %\node [block, below=1cm of C] (L) {{$L$}};
            \node [point, below =1cm of C] (point0){};
            % Connect away!
            \draw [->] ([xshift=-1cm] input) -- (input) -- node {$u$} (controller);
            \draw [->] (controller) --  (system);
            \draw [->] (system) --  (C);
            \draw [->] (C) -- node [name=y] {$y$} (output) -- ([xshift=1cm] output);
            \draw [->] (system) -- node [name=x] {$x$} (C);
            
            \draw [->] (output) |- node[name=u] {} (point0);
        
        \draw [->] (point0) -- (input |- point0) |- ([yshift=-0.5cm] controller);
        
    
    
         
             
    
        \end{tikzpicture}
            
        \end{center}

\end{document}

여기에 이미지 설명을 입력하세요

답변1

분석:

문제는 마지막 두 \draw문장에서 발생합니다.

  • 당신은 중간 지점을 도입합니다(point0)
  • 괜찮아, 때로는 다른 선택의 여지가 없으니까
  • 그러나 \draw[->] ...;이어서 \draw[->] ...;아티팩트가 생성됩니다.

해결책:

두 명령문을 하나로 병합합니다.

  • (point0)까지 그리기\draw [->] (output) |- node[name=u] {} (point0)
  • 그런 다음 동일한 위치에서 다시 시작하고 다음과 같이 경로를 완료하십시오.
  • (point0) -- (input |- point0) |- ([yshift=-0.5cm] controller);
  • 결과적으로 긴 문장이 생성됩니다.
  • \draw [->] (output) |- node[name=u] {} (point0)(point0) -- (input |- point0) |- ([yshift=-0.5cm] controller);

그것이 한 가지 방법입니다.

결과

\documentclass[]{article}
\usepackage{tikz}
\usetikzlibrary{shapes,arrows}
\usetikzlibrary{arrows,calc,positioning}

\tikzset{
    block/.style = {draw, rectangle,
        minimum height=1cm,
        minimum width=2cm},
    input/.style = {coordinate,node distance=1cm},
    out/.style = {coordinate,node distance=4cm},
    output/.style = {coordinate,node distance=1cm},
    arrow/.style={draw, -latex,node distance=2cm},
    pinstyle/.style = {pin edge={latex-, black,node distance=2cm}},
    sum/.style = {draw, circle, node distance=1cm}, 
     point/.style = {draw, fill=black, circle, minimum size=0.08mm, node distance=1.5cm, inner sep=0pt},
}

\begin{document}
\begin{center}
 \begin{tikzpicture}[auto,>=latex']
    % Start by placing nodes
    \node [input, name=input] {};
    \node [block, right=1cm of input] (controller) {{$?$}};
    \node [block, right=1cm of controller] (system) {$\mathcal {A},\mathcal {B}$};
    \node [block, right=1cm of system] (C) {$\mathcal {C}$};
    \node [output, right=1cm of C] (output) {};
    %\node [block, below=1cm of C] (L) {{$L$}};
    \node [point, below =1cm of C] (point0){};
    % Connect away!
    \draw [->] ([xshift=-1cm] input) -- (input) -- node {$u$} (controller);
    \draw [->] (controller) --  (system);
    \draw [->] (system) --  (C);
    \draw [->] (C) -- node [name=y] {$y$} (output) -- ([xshift=1cm] output);

    \draw [->] (system) -- node [name=x] {$x$} (C);
    \draw [->] (output) |- node[name=u] {} (point0)(point0) -- (input |- point0) |- ([yshift=-0.5cm] controller);
 \end{tikzpicture} 
\end{center}
\end{document}

관련 정보