abc_to_dq0 Transformation

Perform Park transformation from three-phase (abc) reference frame to dq0 reference frame


powerlib_extras/Measurements, powerlib_extras/Discrete Measurements

    Note:   The Transformations section of the Control and Measurements library contains the abc to dq0 block. This is an improved version of the abc_to_dq0 Transformation block. The new block features a mechanism that eliminates duplicate continuous and discrete versions of the same block by basing the block configuration on the simulation mode. If your legacy models contain the abc_to_dq0 Transformation block, they continue to work. However, for best performance, use the abc to dq0 block in your new models.


The abc_to_dq0 Transformation block computes the direct axis, quadratic axis, and zero sequence quantities in a two-axis rotating reference frame for a three-phase sinusoidal signal. The following transformation is used:


where ω = rotation speed (rad/s) of the rotating frame.

The transformation is the same for the case of a three-phase current; you simply replace the Va, Vb, Vc, Vd, Vq, and V0 variables with the Ia, Ib, Ic, Id, Iq, and I0 variables.

This transformation is commonly used in three-phase electric machine models, where it is known as a Park transformation [1]. It allows you to eliminate time-varying inductances by referring the stator and rotor quantities to a fixed or rotating reference frame. In the case of a synchronous machine, the stator quantities are referred to the rotor. Id and Iq represent the two DC currents flowing in the two equivalent rotor windings (d winding directly on the same axis as the field winding, and q winding on the quadratic axis), producing the same flux as the stator Ia, Ib, and Ic currents.

You can use this block in a control system to measure the positive-sequence component V1 of a set of three-phase voltages or currents. The Vd and Vq (or Id and Iq) then represent the rectangular coordinates of the positive-sequence component.

You can use the Math Function block and the Trigonometric Function block to obtain the modulus and angle of V1:


This measurement system does not introduce any delay, but, unlike the Fourier analysis done in the Sequence Analyzer block, it is sensitive to harmonics and imbalances.

Dialog Box and Parameters

Inputs and Outputs


Connect to the first input the vectorized sinusoidal phase signal to be converted [phase A phase B phase C].


Connect to the second input a vectorized signal containing the [sin(ωt) cos(ωt)] values, where ω is the rotation speed of the reference frame.


The output is a vectorized signal containing the three sequence components [d q o], in the same units as the abc input signal.


The power_3phsignaldq example uses a Three-Phase Programmable Generator block to generate a 1 pu, 15 degrees positive sequence voltage. At 0.05 second, the positive sequence voltage is increased to 1.5 pu and at 0.1 second an imbalance is introduced by the addition of a 0.3 pu negative sequence component with a phase of −30 degrees. The magnitude and phase of the positive-sequence component are evaluated in two different ways:

  • Sequence calculation of phasors using Fourier analysis

  • abc-to-dq0 transformation using the abc to dq0 block (an improved version of the abc_to_dq0 Transformation block).

Start the simulation and observe the instantaneous signals Vabc (Scope1), the signals returned by the Sequence Analyzer (Scope2), and the abc to dq0 (Scope3) blocks.

The Sequence Analyzer, which uses Fourier analysis, is immune to harmonics and imbalance. However, its response to a step is a one-cycle ramp. The abc-to-dq0 transformation is instantaneous. However, an imbalance produces a ripple at the V1 and Phi1 outputs.


[1] Krause, P. C. Analysis of Electric Machinery. New York: McGraw-Hill, 1994, p.135.

Introduced in R2013a

Was this topic helpful?