Normally two PIDs are used to do torque-control with FOC -- one for the direct torque and one for quadrature torque.

The reason for this is described here:

Why are two PID controllers needed for FOC (Field Oriented Control)?

Assume that I characterised a particular motor so that for any given speed and torque (as measured by current and speed sensors) the ideal phase-offset was known (or interpolated) by a lookup table.

If I used this lookup table combined with sensors for rotor-position, torque, and speed, would I be able to dispense with the second PID loop and only use one for determining the quadrature (torque) force?

I believe this question is equivalent to asking whether the phase-offset depends on anything other than the speed and measured current. If there's no other forces that might affect the phase-angle, then the PID for direct torque can be removed.

  • \$\begingroup\$ I guess, in theory, you can put any function in a lookup table even if the lookup table might be many, many dimensions. Then you have to search through it and cross-interpolate across all those dimensions \$\endgroup\$
    – DKNguyen
    Commented Sep 20, 2020 at 18:37
  • \$\begingroup\$ I realize that this is an old question. But it seems to me that the answer is no. You need to control the D-axis current even if you want to set it to zero (which you will want to do any time you are running below base speed). In order to implement field weakening, you will need to set the D-axis current to a negative value. But you can't just not control the current. \$\endgroup\$
    – user57037
    Commented Oct 10, 2022 at 4:05
  • \$\begingroup\$ I guess maybe you could have a single PID to control the magnitude of the current by outputing the amplitude of the voltage. And you could use your lookup table to maintain the phase angle between voltage and flux as estimated by the observer. That angle would probably only be based on speed, unless you do field weakening. But I also don't see why you wouldn't just follow the path of least resistance and use two PIDs. \$\endgroup\$
    – user57037
    Commented Oct 10, 2022 at 4:08

1 Answer 1


What you are proposing is an open loop system, which works if the sensors are highly accurate and there is little drift in the system. Theoretically it there would be little or no difference during steady state operation. However during transients, i.e. sudden changes in torque and speed, you would likely get sub-optimal performance.

What an open loop system cannot compensate for is drift, e.g. due to temperature change. For example, as the windings were to heat up, or the mechanical bearings were to develop more friction after hours of running, the characteristics of the motor will change slightly. When this happens, your open loop system will no longer be as accurate.

  • 1
    \$\begingroup\$ Isn't it closed loop since the electrical rotor position and sensed torque and speed is an input to the control loop? Re: change in bearings, wouldn't this register as a change in torque which would be covered by the lookup table which calculates the optimal phase-offset? Re: windings heating up, how would that de-tune the system? It causes a change in resistance? inductance? \$\endgroup\$ Commented Sep 22, 2020 at 8:16

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.