% Metapost style ncbar node connection
% Requires PGF 2.00 or later
\documentclass{article}

\usepackage{tikz}

% The calc library is needed for the ($...$) node calculation syntax.
\usetikzlibrary{calc}


\begin{document}

% Define the arm and angle options
\def\myarm{1cm}
\def\myangle{0}
\tikzset{
  arm/.default=1cm,
  arm/.code={\def\myarm{#1}}, % store value in \myarm
  angle/.default=0,
  angle/.code={\def\myangle{#1}} % store value in \myangle
}

% Define the myncbar to path
\tikzset{
    myncbar/.style = {to path={
        % We need to calculate a couple of coordinates to help us draw
        % the path. 
        let
            % Same as (\tikztotarget)++(\myangle:\myarm)
            \p1=($(\tikztotarget)+(\myangle:\myarm)$)
        in
            -- ++(\myangle:\myarm) coordinate (tmp)
            % Find the projection of the (tmp) coordinate
            % on the line from the target to p1
            -- ($(\tikztotarget)!(tmp)!(\p1)$)
            -- (\tikztotarget)\tikztonodes
    }}
}
% Instead of the let operation we could probably have used the 
% 'execute at begin to' option or the \pgfextra operation

\begin{tikzpicture}
    \draw[black!20] (-2,-2) grid (4,4);
    \node[draw,circle] at (0,0) (start) {start};
    \node[draw,circle] at (2,2) (end) {end};
    
    \draw (start) to[myncbar,arm=2cm,angle=120] node[auto] {120} (end);
    \draw[red,->] (end) to[myncbar] (start);
    \draw[blue,->] (start) to[myncbar,angle=-90,arm=1.5] (end);
\end{tikzpicture}

\begin{tikzpicture}
    \draw[black!20] (0,0) grid (2,2);
    \node[draw,circle] at (0,0) (start) {start};
    \node[draw,circle] at (2,2) (end) {end};
    
    \draw[->] (start) to[myncbar,angle=90,arm=1] (end);
\end{tikzpicture}

\end{document}