\documentclass[tikz,border=8pt]{standalone}
\usepackage{amsmath}
\usetikzlibrary{arrows.meta,positioning,calc}

\begin{document}
\begin{tikzpicture}[
  >=Latex,
  node distance=18mm and 20mm,
  signal/.style={font=\small},
  block/.style={
    draw,
    thick,
    minimum width=30mm,
    minimum height=13mm,
    align=center,
    fill=white
  },
  smallblock/.style={
    draw,
    thick,
    minimum width=23mm,
    minimum height=11mm,
    align=center,
    fill=white
  },
  sum/.style={
    draw,
    circle,
    thick,
    minimum size=8mm,
    inner sep=0pt,
    fill=white
  },
  symbolblock/.style={
    draw,
    thick,
    minimum width=24mm,
    minimum height=20mm,
    align=center,
    fill=white
  }
]

\node[signal] (abc) {$\boldsymbol v_{abc} =
\begin{bmatrix} v_a & v_b & v_c \end{bmatrix}^{\mathsf T}$};

\node[block, right=of abc] (park)
{$\begin{bmatrix} v_d \\ v_q \end{bmatrix}
= T_{dq}(\hat\theta)\,\boldsymbol v_{abc}$\\[1mm]
\small Park transform};

\node[sum, right=of park] (sumq) {$\Sigma$};
\node[signal, above=7mm of sumq] (zero) {$v_q^\star = 0$};

\node[symbolblock, right=of sumq] (pi) {};
\draw[thick, -Latex] ($(pi.west)+(4mm,-7mm)$) -- ($(pi.east)+(-3mm,-7mm)$);
\draw[thick, -Latex] ($(pi.west)+(4mm,-7mm)$) -- ($(pi.west)+(4mm,7mm)$);
\draw[line width=1.7pt] ($(pi.west)+(5mm,-6mm)$)
  -- ($(pi.west)+(5mm,-2.5mm)$)
  -- ($(pi.east)+(-5mm,4mm)$);

\node[sum, right=of pi] (sumomega) {$\Sigma$};
\node[signal, above=7mm of sumomega] (omega0) {$\omega_0$};

\node[symbolblock, right=of sumomega] (limit) {};
\draw[thick, -Latex] ($(limit.west)+(4mm,0)$) -- ($(limit.east)+(-3mm,0)$);
\draw[thick, -Latex] ($(limit.center)+(0,-7mm)$) -- ($(limit.center)+(0,7mm)$);
\draw[line width=1.7pt] ($(limit.west)+(4mm,-5mm)$)
  -- ($(limit.west)+(7mm,-5mm)$)
  -- ($(limit.east)+(-7mm,5mm)$)
  -- ($(limit.east)+(-4mm,5mm)$);
\draw[densely dotted, line width=1.2pt] ($(limit.west)+(4mm,-7mm)$)
  -- ($(limit.east)+(-4mm,7mm)$);

\node[symbolblock, right=of limit] (int) {};
\draw[thick, -Latex] ($(int.west)+(4mm,-7mm)$) -- ($(int.east)+(-3mm,-7mm)$);
\draw[thick, -Latex] ($(int.west)+(4mm,-7mm)$) -- ($(int.west)+(4mm,7mm)$);
\draw[line width=1.7pt] ($(int.west)+(5mm,-6mm)$) -- ($(int.east)+(-6mm,5mm)$);

\node[smallblock, right=of int] (wrap) {$e^{j2\pi}$};

\node[signal, right=of wrap] (theta) {$\hat\theta$};

\node[signal, below=13mm of sumq] (vq) {$v_q$};
\node[signal, below=13mm of pi] (error) {$e_{\mathrm{PLL}} = v_q^\star - v_q$};
\node[signal, below=13mm of limit] (omega) {$\hat\omega$};

\draw[->, thick] (abc) -- (park);
\draw[->, thick] (park.east) -- node[signal, above] {$v_q$} (sumq.west);
\draw[->, thick] (zero) -- node[signal, right] {$+$} (sumq.north);
\draw[->, thick] (sumq) -- node[signal, above] {$e_{\mathrm{PLL}}$} (pi);
\draw[->, thick] (pi) -- node[signal, above] {$\Delta\omega$} (sumomega);
\draw[->, thick] (omega0) -- node[signal, right] {$+$} (sumomega.north);
\draw[->, thick] (sumomega) -- (limit);
\draw[->, thick] (limit) -- node[signal, above] {$\hat\omega$} (int);
\draw[->, thick] (int) -- node[signal, above] {$\hat\theta^\ast$} (wrap);
\draw[->, thick] (wrap) -- node[signal, above] {$\hat\theta$} (theta);

\draw[->, thick] (sumq.south) -- (vq);
\draw[->, thick] (pi.south) -- (error);
\draw[->, thick] (limit.south) -- (omega);

\draw[->, thick]
  (theta.south) |- ++(0,-26mm) -| node[pos=0.23, below, signal]
  {angle feedback} (park.south);

\node[align=left, font=\small, below=40mm of pi] (note)
{Locked condition: $v_q \rightarrow 0$ and the voltage vector is aligned with the estimated d-axis.\\
The PI loop filter adjusts $\hat\omega$ until the phase error disappears.};

\end{tikzpicture}
\end{document}
