I kinda understood how field-oriented control works but I have a question in my mind. How am I gonna control the speed of the motor? With which variable am I gonna be able to do that? For example, in a single-phase motor I just control the duty cycle of PWM. But in FOC I do not get which part I am gonna play with.

enter image description here


1 Answer 1


FOC is inherently a current controller, since the intention of FOC is to align the current vector with the magnetic field (this is true even with MTPA since the change in inductance that gives reluctance torque corresponds to a changing magnetic field).

So your input to the true FOC part is the Tref in the diagram above.

You have a speed controller external to the FOC which changes the Tref depending on the measured speed error.

I think the presence of wref going into the MTPA block in your diagram is an error. Speed is not required to calculate the MTPA Id and Iq outputs.

  • \$\begingroup\$ Okay, I get it but if I wanna increase the torque while the speed stays the same. How am I gonna do that? Because it seems like I can control the torque and the speed with the same variable. \$\endgroup\$
    – albatross
    Nov 8, 2022 at 6:00
  • 1
    \$\begingroup\$ If you increase the torque but the load stays the same, it will speed up. That's how physics works. That's why you need another loop that monitors the speed and changes the torque command accordingly. \$\endgroup\$ Nov 9, 2022 at 5:04

Your Answer

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

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