This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

FOC Control of PMSM motors (finding Vd and Vq)

Other Parts Discussed in Thread: CONTROLSUITE

Hi,

I am trying to understand the difference between the Vd and Vq created by the current controller output and the actual calculation of Vd and Vq done by dq transformation of Vabc voltages.

The line voltages are PWM voltages. So if I directly find Vd and Vq I get very bad waveforms. If I filter the PWM voltages to get the fundamental waveform and then find Vd and Vq, they do not match with the Vd and Vq generated by the current controller output. What could be the reason? I believe they both should be the same. 

  • Just one more update to the question:

    I am trying to decouple the d and q axis. But due to some reason, decoupling is not working as it should have been. I feel there is something going on with Vd and Vq that I am missing. 

  • What example project did you refer? The Vd and Vq are scale variables per unit in the FOC example project in both controlSUITE and motoWare.
    The Vd and Vq of PID regulator are vector variables which are the modulation index of Vdc, not real voltage value. There is some phase shift delay if you added a low pass filter on sampling the phase voltage to get the Vd and Vq, and includes voltage drop down from Rs of motor and Rdson of FET. So both Vd/Vq are different totally.
  • Hi Yanming,

    I know the PI outputs are scaled but I was referring to the basics of the following equations without any scaling:

    Id*(R+DLs) = Vd + w*Ls*Iq;

    Iq*(R+DLs) = Vq - w*(Ls*Id + Ke);

    So while decoupling the two axes, we subtract the cross-coupling term. But over here, Vd and Vq refer to the real voltages - am I right?

    But what I observed was - the real voltage Vd/q is nearly 1.732 times the PI output voltage Vd/q. I also understand there will be losses in Rds-on and stator resistance (Rs) but I cannot understand where is the factor of 1.732 (root 3) coming from? (note: I am using SVM modulation)

    I think this is causing an error in my decoupling structure. The cross-coupling effect does reduce but not completely due to the reasons that I have not been able to understand.    

  • Hi Yanming,

    It would be great if you can help me with the above query. 

    Thanks. 

  • You might add a decopling item on the existing PI regulator using the same scaling factor, that may be more reasonable. The Vd and Vq of PI regulator is PU value that depends on dc bus voltage if you want to convert it to SI unit.
  • Just wanted to check in and see if there is any update from your side, I haven’t heard from you for a week, so I’m assuming you were able to resolve your issue. Please let me know if you have any questions. We would like to close this thread if no any further questions. Thanks.
  • Hi Yanming,

    I have already tried using the decoupling structure on the PI regulator outputs. 

    I also have a simulation on MATLAB that does not use any scaling. But the decoupling works only to some extent. I have not been able to solve the issue. 

  • You might ensure all parameters of the motor are correct and use the SI unit in simulation, and need to use the scale factor in coding. The output of the current PI regulator is per unit in motor control reference. As you know, the maximum voltage output is Vdc/SQRT(3), and the real Vd&Vq should include Vdc factor, you might refer to "Phase Voltage Reconstruction" section in "Digital Motor Control" guide which could be found in controlSUITE folder, it shows how to calculate the Valpha and Vbeta based three phase voltages, that could be used to Vd&Vq also.