Let's say I have three phase voltage grid which is unbalanced (three phase utility grid). The phase voltages are sampled by the adc (suppose that the analog channel is properly designed from the hw point of view and the sampling period is set properly) and I would like to determine the phase sequence of the grid in C language software i.e. I would like to determine the order in which the individual phases achieve their amplitudes.

One idea which I have is to use the Synchronous Frame Phase Locked Loop (SFPLL) i.e. following system enter image description here and exploit its output i.e. the phase of the space vector of the grid voltage for construction of an artificial three phase voltage grid consisting of clean sinewaves with unity amplitude. Then I would detect the zero-crossing instants (based on sign change of a signal) on these clean sinewaves. From the zero-crossings order I should be able to determine the phase sequence. Here is a block diagram describing the main idea

enter image description here

Nevertheless I have doubts regarding the robustness of the aforementioned solution. Does anybody know some robust approach for determining of the phase sequence of a three phase unbalanced grid?

Maybe it would be sufficient to inspect the phase \$\theta\$ at the output of the SFPLL: \$\theta > 0\$ corresponds to the positive phase sequence (\$a\rightarrow b\rightarrow c\$), \$\theta < 0\$ corresponds to the negative phase sequence (\$a\rightarrow c\rightarrow b\$).

  • \$\begingroup\$ @Kubahasn'tforgottenMonica thank you for your reaction. The meaning of my question was to assess the drawbacks of the presented idea irrespect to its complexity or simplicity. \$\endgroup\$
    – Steve
    Commented Apr 27, 2022 at 20:26

1 Answer 1


I would recommend you use a DFT and once you have the 3 phase voltages, calculate the positive and negative sequence voltages. If your assumed rotation (e.g. A-B-C) is correct then the positive sequence will be large and the negative sequence will be relatively small.

e.g. Measured values arbitrarily assigned to \$V_A\$, \$V_B\$, and \$V_C\$: $$V_A=67\angle0° V$$ $$V_B=63\angle-119° V$$ $$V_C=60\angle124° V$$

Calculate positive and negative assuming A-B-C rotation (\$a=1\angle120°\$):

$$V_1=\frac{1}{3}(V_A+aV_B+a^2V_C)=63.3 V $$ $$V_2=\frac{1}{3}(V_A+a^2V_B+aV_C)=2.8 V$$

If our A-B-C assumption was wrong these values would be swapped.

Another clever way to do this would be to follow this method to directly calculate the positive and negative waveform samples. It would then be easy enough to see which of the two had highest amplitude over 1 cycle. This would avoid the DFT calculation.

  • \$\begingroup\$ Thank you very much for your answer. Let me have one more question. What do you think is the main drawback of the method I have described above? \$\endgroup\$
    – Steve
    Commented Apr 27, 2022 at 5:20
  • \$\begingroup\$ I don’t know if your approach would work. But, it looks like overkill for something you want to code yourself - when a simpler approach exists. \$\endgroup\$ Commented Apr 27, 2022 at 12:15

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.