Skip to content

dq0 → abc (Inverse Park) ​

Inverse Park (dq0 → abc) transform. Maps the direct (d), quadrature (q), and zero-sequence (0) components of a synchronously rotating dq frame back to three instantaneous phase signals a, b, c, using the angle θ (radians, wired in — usually the same PLL / rotor-position signal that drives the forward transform). The d-axis is aligned with cos θ (q lags), so it is the exact inverse of the abc → dq0 block: a = C·(d·cosθ − q·sinθ) + C0·0, b = C·(d·cos(θ−2π/3) − q·sin(θ−2π/3)) + C0·0, c = C·(d·cos(θ+2π/3) − q·sin(θ+2π/3)) + C0·0. Choose amplitude-invariant scaling (C=1, C0=1) or power-invariant scaling (C=√(2/3), C0=√(1/3)); use the same convention on both blocks. Typical use is the modulation / reference-generation stage of an inverter or motor drive: a current/voltage controller produces d,q setpoints that this block turns into the per-phase references for the PWM stage.

Category: Math

Overview ​

The dq0 → abc block is the inverse Park transform: it takes the direct (d), quadrature (q), and zero-sequence (0) components of a frame spinning with the angle θ you wire in and reconstructs the three instantaneous phase signals a,b,c.

It is the output stage of a vector-control loop. A current or voltage regulator works in the rotating dq frame, where setpoints are DC and PI control is easy; this block turns those d,q commands back into the per-phase references that drive the modulator (PWM / SVPWM) of an inverter or motor drive.

It is the exact inverse of the abc → dq0 block (forward Park): feed one block's outputs through the other with the same angle and scaling and you recover the original signals.

The transform ​

With θ the frame angle (radians) and the d-axis aligned with cos⁡θ (q lags by 90°):

a=C(dcos⁡θ−qsin⁡θ)+C00,b=C(dcos(θ−2π3)−qsin(θ−2π3))+C00,c=C(dcos(θ+2π3)−qsin(θ+2π3))+C00.

The block is stateless — each output is an algebraic function of the present inputs only, evaluated every time step. No filtering or memory.

Scaling convention ​

The Scaling parameter sets the magnitude constants (C,C0) and must match the forward abc → dq0 block in the same loop:

ScalingCC0Pairs with
Amplitude (2/3)11forward K=2/3, K0=1/3
Power (√2/3)2/31/3forward K=2/3, K0=1/3
  • Amplitude-invariant reconstructs abc at the same amplitude as the d,q inputs — a d,q vector of magnitude A yields phase waveforms of peak A. This is the usual motor / power-electronics choice.
  • Power-invariant is the orthonormal inverse that preserves instantaneous power across the transform.

With matching scalings the forward → inverse round trip is the identity (see the abc → dq0 page for the forward constants).

Sign and alignment convention ​

The d-axis is aligned with cos⁡θ and q lags d by 90°, so this block is the exact inverse of the forward transform under the same convention. Driving it with the constant pair d=Acos⁡φ, q=Asin⁡φ (amplitude scaling, 0=0) produces the balanced set

a=Acos⁡(θ+φ),b=Acos(θ+φ−2π3),c=Acos(θ+φ+2π3),

i.e. a vector of amplitude A leading the frame angle by φ. If your tooling uses the opposite (q-leading) convention, negate q.

Zero-sequence ​

The 0 input adds a common-mode term C0⋅0 equally to all three phases and does not depend on θ. Leave zero unwired (treated as 0) for the usual balanced three-wire case; drive it to inject a deliberate common-mode component, for example third-harmonic / zero-sequence injection that extends the linear modulation range.

Wiring ​

  • d, q ← the regulator outputs in the rotating frame.
  • zero ← the zero-sequence command (optional; 0 if unwired).
  • theta ← the frame angle in radians — use the same angle source that drives the forward abc → dq0 block (rotor position or PLL).
  • a, b, c → the per-phase references, typically into the modulator (PWM / SVPWM) stage.

When to use something else ​

  • abc → dq0 (forward Park) — the measurement-side map that takes sampled phase signals into the rotating frame for the regulators.

Ports ​

NameDirectionValue typeNotes
dinputdouble
qinputdouble
zeroinputdouble
thetainputdouble
aoutputdouble
boutputdouble
coutputdouble

Parameters ​

NameLabelTypeDefaultUnitsDescription
scalingScalingenum (Amplitude (2/3) / Power (√2/3))0—Magnitude-scaling convention; must match the forward abc → dq0 block in the same loop. Amplitude-invariant (C=1) reconstructs abc at the dq peak amplitude — the usual choice for motor / power-electronics control. Power-invariant (√(2/3)) is the orthonormal inverse that preserves instantaneous power across the transform.