Field Oriented Control (FOC) Overview

Let us first taking a look on the motor control principles, especially the Field Oriented Control (FOC). FOC algorithm is one of the most popular AC motor control methods for the industry applications. For a deep dive on the FOC, Vector Control and Dynamics of AC Drives is a perfect book to understand why FOC is a good control algorithm for AC motor, and what is the math behind it. Meanwhile, I will try to explain it here using as less motor design details, and control theory, as possible.

Principle of AC Motor Control

Although electric motor has moving component, which is unlike other regular electric load (light, tv, etc.), the control principle stays the same. A controlled voltage is applied to the load, so desired current response can be obtained. Following is the equivalent circuit of AC motor stator winding:

Motor phase equivalent circuit - Field oriented control overview.

In this figure, ubemf is the back EMF on the stator winding that is generated by the rotation magnet filed on the rotor. L is the stator winding inductance, R is the stator winding resistance, and uin is the phase terminal voltage that we can control. Since this is a AC motor, ubemf is a voltage signal with sinusoidal shape. It will be best to have uin as a sinusoidal shape voltage as well to minimize the current ripple. It means that there are two control variables for uin, magnitude and phase. Following shows an example of close loop control system:

Current close loop control - Field oriented control overview.

In the system, a reference phase current is used to be compared with phase current feedback. The error will then be send to a controller, such as a PID controller, which will then generate the phase voltage magnitude V and phase theta. A voltage generator will then use these two commands to generate proper phase voltage. It is quite straightforward so far. However, considering the implementation and performance, there are at least few questions:

  • How reference phase current is generated? The final goal of electrical motor control is to generate desired torque on the rotor. How shall phase current magnitude and phase be selected to achieve the goal? There must be an optimal combination of magnitude and phase to achieve each torque value.
  • Since current reference and feedback are AC values, there will always be errors between them.
  • With desired phase voltage magnitude and theta, how the phase voltage can be generated by software/hardware?
  • Since whole control system is based on AC system, it needs very high bandwidth to sample the feedback and generate updated output, because don’t like the DC system, all these variables in the AC system are keep changing.

With all these difficulties, now the question is how the FOC algortihm can help us?

Field Oriented Control (FOC) Overview

Assuming we are in a DC system or controlling a DC motor, there are few advantages comparing with the AC system that we have seen above:

  • There is only one control variable, voltage magnitude, no phase.
  • Phase current is a DC value, so it will be easier to find the optimized current command.
  • It is possible to use simple controller, such as PID controller, to eliminate the error between command and feedback.
  • It is easy to generate a DC output voltage.
  • It is possible to have lower control bandwidth in a DC system.

Now the question is if there is a way to convert a AC system to DC. The answer is yes, and that is Park/Clark transformation. In short, this transformation allows us converting a three-phase AC system (abc domain) into a DC system (dq domain):

Park/Clark transformation.

where dq are the voltage, current, flux values in the DC domain. abc are the values in the AC domain. Theta is the rotor position angle. Usually, theta is defined as 0 when rotor magnet flux field is aligned with stator flux field.

From the transformation, although the motor system is in the AC domain, we can now control the dq variables in the DC domain, and then convert it back to three-phase system. In addition, by controlling the flux in the dq axis, the combined flux (magnet field) is also easily controlled. This is why it is called Field Oriented Control (FOC). In dq domain, a permanent magnet AC motor can be modelled as following:

Motor voltage and torque equations - Field oriented control overview.

where ud, uq, id, iq are the stator voltage and current. Ld and Lq are the stator inductance. Rs is the stator resistance. ฯ†pm is the flux generated by permanent magnet materials on the rotor. ฯ‰e is the rotor rotation speed. Te is the torque generated by electric magnetic field. And P is the rotor pole pairs.

With these equations, a simple FOC control system can be build as following:

FOC control block diagram - Field oriented control overview.

Advantages of FOC

Now, let us check the difficulties that were listed for the AC motor control, and see how the FOC control system can help us:

  • How reference phase current is generated? -> Two DC reference current id and iq shall be generated by the control system. From torque equation that is listed above, there could be different id and iq combinations to achieve the same torque value. However, in order to produce the torque with minimal current, which usually means the lowest lost, current command shall be selected carefully. This will be discussed in the Control Optimization section.
  • Since current reference and feedback are AC values, there will always be errors between them. -> With two DC reference current, even simple PI controller can achieve good performance. Meanwhile, there are still challenges to implement a good current controller, especially for high speed operation. This will be discussed in Current Regulator section.
  • With desired phase voltage magnitude and theta, how the phase voltage can be generated by software/hardware? -> ud and uq commands are now generated by current controller. They will then be converted to abc frame by invers park/clark transformation. Only voltage magnitude is controlled on d and q axis separately. The phase angle theta is controlled automatically since it is represented by voltage vector which is the combine of ud and uq.
  • Since whole control system is based on AC system, it needs very high bandwidth to sample the feedback and generate updated outputs. -> Without considering the disturbance of the system, the feedback channel, iabc sampling rate, can be very low, because both idq command and feedback are now constant values. However, notice that the output channel, the udac generation and also the rotor position sampling, still need to have proper update rates. Otherwise, the output voltage will have big harmonics.

As a summary, FOC is a good algorithm which convert the AC system to a DC one. However, it doesn’t mean it is a simple algorithm and can be easily implemented. There are some unique challenges for this control method. And these will be discussed in following sections.