Main Content

Field-Oriented Control of an Induction Motor Drive Used in a Ground Transportation System

This example demonstrates the operation of a variable-speed AC drive in a trolley bus traction system.

Traction System

The electric energy is supplied by a 15 kV, single-phase, 60 Hz catenary through a 15 kV/460 V transformer. The transformer secondary is connected to a pulse-width modulation (PWM) AC/DC full-bridge converter producing a DC voltage of 750 V on the DC link. This voltage is filtered by a filter tuned to the second harmonic (120 Hz). The DC link voltage is connected to a PWM-controlled, three-phase, two-level converter. This converter generates the variable voltage and frequency required for variable-speed operation of the induction motor. The AC/DC converter allows the power flow to reverse during braking period. The kinetic energy of the bus is then converted into electric energy and injected back to the power system. In addition, unity power factor operation is possible with this kind of converter.

An inverter-fed induction motor drive can be controlled by using various schemes depending on the application, desired performance, and complexity of the controller design. Commonly used schemes are scalar control (V/Hz control or open loop flux control) or vector control (field-oriented control or direct torque control). In these schemes, the motor speed is controlled by changing the supply frequency. In order to develop an optimum torque without magnetic saturation, it is necessary to maintain a constant air gap flux near the nominal value so that the voltage is kept proportional to the frequency. In our example, we use a field-oriented control (FOC) scheme.

Field-Oriented Control Theory

FOC is a control scheme for induction motors in which a d-q coordinates reference frame locked to the motor flux space vector is used to achieve decoupling between the motor flux and torque. Consequently, they can be separately controlled by the stator direct-axis and quadrature-axis currents, respectively.

Consider the simplified diagram in the figure that shows the stator and rotor magnetomotive forces (MMFs) $F_s$ and $F_r$ at a given instant.

The stator and rotor three-phase windings are represented by two single-turn equivalent windings. The MMFs $F_s$ and $F_r$ rotate at a synchronous speed determined by the supply frequency. The resulting MMF $F$ (the vector sum of $F_s$ and $F_r$) produces the motor flux that rotates at the synchronous speed as shown in the figure.

The torque developed by the motor is given by:

$$T=k \: F_r \: \phi \: sin(\theta)$$

where $F_r$ is the rotor MMF, $\phi$ is the motor flux, $\theta$ is the angle between $F_r$ and $\phi$, and $k$ is a constant that depends on the motor construction. This relation indicates that the developed torque is maximum when $\theta$ is equal to 90 degrees. The challenge of the FOC control scheme is to keep this angle as close as possible to 90 degrees and to maintain the motor flux at its nominal value (except during field-weakening operation).

The figure below shows the FOC principle. The current space vectors $I_s$ and $I_r$ represent the MMFs $F_s$ and $F_r$ in the previous figure. Note that the rotor current space vector $I_r$ is perpendicular to the magnetizing current ids that produces the motor flux.

The reference coordinates are properly oriented. The stator direct-axis current ids is aligned with the motor flux and the stator quadrature-axis current $i_{qs}$ is perpendicular to the motor flux. Consequently, the motor flux and torque can be separately controlled by the stator current components $i_{ds}$ and $i_{qs}$, respectively.

The flux $\phi$ shown in the figure is the total flux produced in the air gap by the stator and rotor current space vectors $\phi = L_m (I_s + I_r)$. In the FOC theory, the rotor flux $\phi_r$ is used instead of the air gap flux $\phi$. The rotor flux $\phi_r$ is very close the air gap flux $\phi$ . The only difference is that $\phi_r$ includes a small flux, $Llr$. $I_r$ is the rotor leakage inductance. $\phi_r$ is controlled in order to stay aligned with the d-axis of the rotating frame so that $\phi_{rd} = \phi_r$ and $\phi_{rq} = 0$.

The motor flux position $\theta_e$ is required to transform the coordinates and is generated from the rotor speed $\omega_m$ and slip frequency $\omega_{sl}$.

$$\theta_e=\int p \omega_m +\omega_{sl} dt$$

where $p$ is the number of pole pairs. Computation of the slip frequency $\omega_{sl}$ and reference currents $i_{ds}ref$ and $i_{qs}ref$ requires that a model of the motor is implemented inside the controller.

$\omega_{sl}$ is evaluated from the stator reference current $i_{qs}ref$ and the motor parameters $L_m$, $Llr$, and $R_r$ as follows:

$$\omega_{sl} = \frac{L_m}{\tau_r} \: \frac{i_{qs}}{\phi_r} = \frac{L_m R_r}{Ll_r + L_m} \: \frac{i_{qs}}{\phi_r}$$

where $\phi_r$ is the rotor flux linkage, $L_m$ is the mutual inductance, and $Ll_r$ and $R_r$ are the rotor leakage inductance and resistance. The rotor time constant is:

$$\tau_r = \frac{Ll_r + L_m}{R_r}$$

The rotor flux linkage is calculated as follows:

$$\phi_r = \frac{L_m \: i_{ds}}{1+\tau_rs}$$

The stator q-axis reference $i_{qs}ref$ is calculated from the torque reference $T_{e}ref$ and the rotor flux linkage $\phi_r$:

$$i_{qs}ref = \frac{2}{3} \: \frac{1}{p} \: \frac{Ll_r+L_m}{L_m} \: \frac{T_{e}ref}{\phi_r}$$

The stator d-axis reference current $i_{ds}ref$ is obtained from the flux linkage reference $\phi_{r}ref$ :

$$i_{ds}ref = \frac{\phi_{r}ref}{L_m}$$

Field-Oriented Control

The motor speed $\omega_m$ and the speed reference $\omega_{ref}$ are fed to the Speed Regulator block to produce the torque reference $Te_{ref}$. The role of the speed regulator is to keep the motor speed equal to the speed reference in steady state while providing a fast dynamic response during transients.

The calculated $i_{ds}ref$ and $i_{qs}ref$ current references are fed to the current regulators. The regulators process the measured and reference currents to produce the three-phase reference signals, $Vref$. The signals in $Vref$ are connected to the PWM modulator that generates pulses to the motor inverter. The modulator uses the space vector PWM method with pulse averaging and a switching frequency of 2 kHz.

Rectifier Controller

This controller regulates the DC-link voltage and maintains a unity input power factor. It consists of the following main blocks:

  • The PLL & Measurements system is synchronized to the secondary voltage of the transformer. The secondary voltage and current are measured and transformed to d-q coordinates.

  • The Current Regulator (inner control loop) consists of two PI controllers for the Id and Iq currents. The controllers’ outputs are the Vd and Vq signals that are transformed to the reference signal Vref for the PWM generator. The Iq reference is kept equal to zero to achive the unity power factor. The Id reference is provided by the outer voltage control loop.

  • The Voltage Regulator (outer control loop), which regulates the DC-link voltage.

The reference signal Vref is connected to the PWM generator that produces pulses to the full-bridge AC/DC rectifier. The generator uses the carrier-based PWM method with pulse averaging and a switching frequency of 2340 (39*60) Hz.


Run the simulation and observe waveforms on Scope blocks. To simulate an abrupt change of the road slope, at 3.5 seconds the load torque is stepped down from 400 N.m to 40 N.m and the speed reference is stepped down from 1000 rpm to 750 rpm. Because the trolley bus goes down the hill, the kinetic energy is converted into electric energy by the induction motor, which then operates as a generator. This energy is returned to the power grid through the DC link and the single-phase converter, which then operates as an inverter. Note the active power reverses (around minus 25 kW at 3.5 s) in the P(kW), Q(kVar) trace of the Scope block.

Real-Time Simulation

If you have Simulink Real-Time and a Speedgoat target, you can run this model in real time.

  1. Open the Configuration Parameters window (or press Ctrl+E ), click Code Generation , and set System target file to slrealtime.tlc .

  2. Connect to the target and, in the Real-Time tab, click Run on Target.

Your model will then be automatically built, deployed, and executed on the target. Depending on your target streaming bandwidth, you may have to reduce the number of signals transferred in real-time from the target to the host computer.