People who code: we want your input. Take the Survey

# Tag Info

2

1 There's a mistake in the PID connection. You must feed the quadrature component, i.e $U_q$ to the PID, not $U_d$. The setpoint of your PLL is $U_q = 0$ because you want your PLL to be in phase with your 3-phase input i.e. $U_d = 1, U_q = 0$. 2 - Perhaps there are hidden delays in the block you instantiated ? 3 - Notice the error equation of your PLL is ...

3

Two suggestions to move forward: Reduce $K_i$ to the point of an acceptable overshoot (this will provide the bottom line answer for comparison to the computations. Do system identification (Bode plots) on the open loop system and individual components to isolate the difference between implementation and loop model; the computations were compared below ...

0

I'm not sur exactly where you went wrong because your haven't fully explained your approach but for the derivate component of the PID, you should convert the C++ lines to this : $$D_{out}[n] = N(err[n]D -F[n-1]) \\ F[n] = F[n-1] + T_s*D_{out}[n] \\\\$$ In the z-domain :  F(1-z^{-1}) = T_s*D_{out} \\ F = \frac{T_s*D_{out}}{1-z^{-1}}\\ D_{out} = N(err * ...

Top 50 recent answers are included