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 C00 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))0Magnitude-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.