| Products & Services | Solutions | Academia | Support | User Community | Company |
| Download Product Updates | | | Get Pricing | | | Trial Software |
| Documentation → SimPowerSystems |
| Contents | Index |
| Learn more about SimPowerSystems |
| On this page… |
|---|
Building and Simulating the PWM Motor Drive |
In this section you
Use electrical machines and power electronics to simulate a simple AC motor drive with variable speed control
Learn how to use the Universal Bridge block
Discretize your model and compare variable-step and fixed-step simulation methods
Learn how to use the Multimeter block
Learn how to use the FFT tool
Variable speed control of AC electrical machines makes use of forced-commutated electronic switches such as IGBTs, MOSFETs, and GTOs. Asynchronous machines fed by pulse width modulation (PWM) voltage sourced converters (VSC) are nowadays gradually replacing the DC motors and thyristor bridges. With PWM, combined with modern control techniques such as field-oriented control or direct torque control, you can obtain the same flexibility in speed and torque control as with DC machines. This section shows how to build a simple open loop AC drive controlling an asynchronous machine. Chapter 4 will introduce you to a specialized library containing 13 models of DC and AC drives. These "ready to use" models will enable you to simulate electric drive systems without the need to build those complex systems yourself.
The Machines library contains four of the most commonly used three-phase machines: simplified and complete synchronous machines, asynchronous machine, and permanent magnet synchronous machine. Each machine can be used either in generator or motor mode. Combined with linear and nonlinear elements such as transformers, lines, loads, breakers, etc., they can be used to simulate electromechanical transients in an electrical network. They can also be combined with power electronic devices to simulate drives.
The Power Electronics library contains blocks allowing you to simulate diodes, thyristors, GTO thyristors, MOSFETs, and IGBT devices. You could interconnect several blocks together to build a three-phase bridge. For example, an IGBT inverter bridge would require six IGBTs and six antiparallel diodes.
To facilitate implementation of bridges, the Universal Bridge block automatically performs these interconnections for you.
Circuit 5: PWM Control of an Induction Motor

Follow these steps to build a PWM-controlled motor.
In the first steps, you copy and set up the motor blocks:
Open the Power Electronics library and copy the Universal Bridge block into your circuit5 model.
Open the Universal Bridge dialog box and set its parameters as follows:
Power electronic device | IGBT/Diodes | |
Snubber | ||
Rs | 1e5 Ω | |
Cs | inf | |
Ron | 1e-3 Ω | |
Forward voltages | ||
Vf | 0 V | |
Vfd | 0 V | |
Tail | ||
Tf | 1e-6 s | |
Tt | 1e-6 s | |
Notice that the snubber circuit is integral to the Universal Bridge dialog box. As the Cs capacitor value of the snubber is set to Inf (short-circuit), we are using a purely resistive snubber. Generally, IGBT bridges do not use snubbers; however, because each nonlinear element in SimPowerSystems software is modeled as a current source, you have to provide a parallel path across each IGBT to allow connection to an inductive circuit (stator of the asynchronous machine). The high resistance value of the snubber does not affect the circuit performance.
Open the Machines library. Copy the Asynchronous Machine SI Units block as well as the Machine Measurement Demux block into your circuit5 model.
Open the Asynchronous Machine menu and look at its parameters. Set the nominal power Pn parameter to 3*746 VA and the nominal line-to-line voltage Vn to 220 Vrms to implement a 3 HP, 60 Hz machine with two pairs of poles. Its nominal speed is therefore slightly lower than the synchronous speed of 1800 rpm, or ws= 188.5 rad/s.
Notice that the three rotor terminals a, b, and c are made accessible. During normal motor operation these terminals should be short-circuited together. In the Asynchronous Machine menu change the rotor type to Squirrel cage. Notice that after this change the rotor connections are no longer accessible.
Open the Machine Measurement Demux block menu. When this block is connected to a machine measurement output, it allows you to access specific internal signals of the machine. First select the Asynchronous machine type. Deselect all signals except the following three signals: is_abc (three stator currents), wm (rotor speed), and Te (electromagnetic torque).
You now implement the torque-speed characteristic of the motor load. Assume a quadratic torque-speed characteristic (fan or pump type load). The torque T is then proportional to the square of the speed ω.
![]()
The nominal torque of the motor is
![]()
Therefore, the constant k should be
![]()
Open the User-Defined Functions library of Simulink and copy the Fcn block into your circuit5 model. Open the block menu and enter the expression of torque as a function of speed: 3.34e-4*u^2.
Connect the input of the Fcn block to the speed output of the Machines Measurement Demux block, labeled wm, and its output to the torque input of the motor, labeled Tm.
Open the Electrical Sources library and copy the DC Voltage Source block into your circuit5 model. Open the block menu and set the voltage to 400 V.
Open the Measurements library and copy a Voltage Measurement block into your circuit5 model. Change the block name to Vab.
Using Ground blocks from the Elements library, complete the power elements and voltage sensor interconnections as shown in Circuit 5: PWM Control of an Induction Motor.
To control your inverter bridge, you need a pulse generator. Such a generator is available in the Extras library of powerlib:
Open the Extras/Discrete Control blocks library and copy the Discrete 3-Phase PWM Generator block into your circuit5 model. This block can be used to generate pulses for a two-level or a three-level bridge. In addition the block generates two sets of pulses (outputs P1 and P2) that can be sent to two different three-arm bridges when the converter uses a twin bridge configuration. In this case, use it as a two-level single-bridge PWM generator. The converter operates in an open loop, and the three PWM modulating signals are generated internally. Connect the P1 output to the pulses input of the Universal Bridge block
Open the Discrete Three-Phase PWM Generator block dialog box and set the parameters as follows.
Type | 2 level |
Mode of operation | Un-synchronized |
Carrier frequency | 18*60Hz (1080 Hz) |
Internal generation of modulating signals | selected |
Modulation index m | 0.9 |
Output voltage frequency | 60 Hz |
Output voltage phase | 0 degrees |
Sample time | 10e-6 s |
Use the Edit > Look Under Mask menu item of your model window to see how the PWM is implemented. This control system is made entirely with Simulink blocks. The block has been discretized so that the pulses change at multiples of the specified time step. A time step of 10 µs corresponds to +/- 0.54% of the switching period at 1080 Hz.
One common method of generating the PWM pulses uses comparison of the output voltage to synthesize (60 Hz in this case) with a triangular wave at the switching frequency (1080 Hz in this case). This is the method that is implemented in the Discrete 3-Phase PWM Generator block. The line-to-line RMS output voltage is a function of the DC input voltage and of the modulation index m as given by the following equation:
![]()
Therefore, a DC voltage of 400 V and a modulation factor of 0.90 yield the 220 Vrms output line-to-line voltage, which is the nominal voltage of the asynchronous motor.
You now add blocks measuring the fundamental component (60 Hz) embedded in the chopped Vab voltage and in the phase A current. Open the Extras/Discrete Measurements library of powerlib and copy the discrete Fourier block into your circuit5 model.
Open the discrete Fourier block dialog box and check that the parameters are set as follows:
Fundamental frequency f1 | 60 Hz |
Harmonic number | 1 |
Initial input | [0 0] |
Sample time | 10e-6 s |
Connect this block to the output of the Vab voltage sensor.
Duplicate the Discrete Fourier block. To measure the phase A current, you need to select the first element of the is_abc output of the ASM Measurement Demux block.
Copy a Selector block from the Signals & Systems Simulink library.
Open its menu and set Element to 1. Connect the Selector output to the second Discrete Fourier block and its input to the is_abc output of the Machines Measurement Demux block as shown in Circuit 5: PWM Control of an Induction Motor.
Finally, add scopes to your model. Copy one Scope block into your circuit. This scope is used to display the instantaneous motor voltage, currents, speed, and electromagnetic torque. In the Scope properties > General menu of the scope, set the following parameters:
Number of axes | 4 |
Time range | 0.05 s |
Tick labels | bottom axis only |
Connect the four inputs and label the four connection lines as shown in TCR Simulation Results. When you start the simulation, these labels are displayed on top of each trace.
To allow further processing of the signals displayed on the oscilloscope, you have to store them in a variable. In the Scope properties > Data history menu of the scope, set the following parameters:
Limit data point to last | deselected |
Save data to workspace | selected |
variable name | ASM |
Format | Structure with time |
After simulation, the four signals displayed on the scope are available in a structure array named ASM.
Duplicate the four-input Scope and change its number of inputs to 2. This scope is used to display the fundamental component of Vab voltage and Ia current. Connect the two inputs to the outputs of the Fourier blocks. Label the two connection lines as shown in TCR Simulation Results.
You are now ready to simulate the motor starting.
Open the Simulation > Configuration Parameters dialog box. Select the ode23tb integration algorithm. Set the relative tolerance to 1e-4, the absolute tolerance and the Max step size to auto, and the stop time to 1 s. Start the simulation. The simulation results are shown in PWM Motor Drive; Simulation Results for Motor Starting at Full Voltage.
The motor starts and reaches its steady-state speed of 181 rad/s (1728 rpm) after 0.5 s. At starting, the magnitude of the 60 Hz current reaches 90 A peak (64 A RMS) whereas its steady-state value is 10.5 A (7.4 A RMS). As expected, the magnitude of the 60 Hz voltage contained in the chopped wave stays at
![]()
Also notice strong oscillations of the electromagnetic torque at starting. If you zoom in on the torque in steady state, you should observe a noisy signal with a mean value of 11.9 N.m, corresponding to the load torque at nominal speed.
If you zoom in on the three motor currents, you can see that all the harmonics (multiples of the 1080 Hz switching frequency) are filtered by the stator inductance, so that the 60 Hz component is dominant.
PWM Motor Drive; Simulation Results for Motor Starting at Full Voltage

The Universal Bridge block is not a conventional subsystem where all the six individual switches are accessible. If you want to measure the switch voltages and currents, you must use the Multimeter block, which gives access to the bridge internal signals:
Open the Universal Bridge dialog box and set the Measurement parameter to Device currents.
Copy the Multimeter block from the Measurements library into your circuit5 circuit. Double-click the Multimeter block. A window showing the six switch currents appears.
Select the two currents of the bridge arm connected to phase A. They are identified as
iSw1 | Universal Bridge |
iSw2 | Universal Bridge |
Click OK. The number of signals (2) is displayed in the multimeter icon.
Using a Demux block, send the two multimeter output signals to a two-trace scope and label the two connection lines (Trace 1: iSw1 Trace 2: iSw2).
Restart the simulation. The waveforms obtained for the first 20 ms are shown in this plot.
Currents in IGBT/Diode Switches 1 and 2

As expected, the currents in switches 1 and 2 are complementary. A positive current indicates a current flowing in the IGBT, whereas a negative current indicates a current in the antiparallel diode.
Note Multimeter block use is not limited to the Universal Bridge block. Many blocks of the Electrical Sources and Elements libraries have a Measurement parameter where you can select voltages, currents, or saturable transformer fluxes. A judicious use of the Multimeter block reduces the number of current and voltage sensors in your circuit, making it easier to follow. |
You might have noticed that the simulation using a variable-step integration algorithm is relatively long. Depending on your computer, it might take tens of seconds to simulate one second. To shorten the simulation time, you can discretize your circuit and simulate at fixed simulation time steps.
Open the Powergui, click Configure Parameters, and in the Powergui block parameters dialog box set Simulation type to Discrete. Set the Sample time to 10e-6 s. When you restart the simulation, the power system, including the asynchronous machine, is discretized at a 10 µs sample time.
As there are no more continuous states in the electrical system, you do not need a variable-step integration method to solve this system. In the Simulation > Configuration Parameters > Solver dialog box pane, select the Fixed-step and Discrete (no continuous states) options.
Start the simulation. Observe that the simulation is now approximately three times faster than with the continuous system. Results compare well with the continuous system.
The two Discrete Fourier blocks allow computation of the fundamental component of voltage and current while simulation is running. If you would like to observe harmonic components also you would need a Discrete Fourier block for each harmonic. This approach is not convenient.
Now use the FFT tool of Powergui to display the frequency spectrum of voltage and current waveforms. These signals are stored in your workspace in the ASM structure with time variable generated by the Scope block. Because your model is discretized, the signal saved in this structure is sampled at a fixed step and consequently satisfies the FFT tool requirements.
Open the Powergui and select FFT Analysis. A new window opens. Set the parameters specifying the analyzed signal, the time window, and the frequency range as follows:
Structure | ASM |
Input | Vab |
Signal number | 1 |
Start time | 0.7 s |
Number of cycles | 2 |
(pull-down menu) | Display FFT window |
Fundamental frequency | 60 Hz |
Max Frequency | 5000 Hz |
Frequency axis | Harmonic order |
Display style | Bar (relative to Fund or DC) |
The analyzed signal is displayed in the upper window. Click Display. The frequency spectrum is displayed in the bottom window, as shown in the next figure.
FFT Analysis of the Motor Line-to-Line Voltage

The fundamental component and total harmonic distortion (THD) of the Vab voltage are displayed above the spectrum window. The magnitude of the fundamental of the inverter voltage (312 V) compares well with the theoretical value (311 V for m=0.9).
Harmonics are displayed in percent of the fundamental component. As expected, harmonics occur around multiples of carrier frequency (n*18 +- k). Highest harmonics (30%) appear at 16th harmonic (18 - 2) and 20th harmonic (18 + 2).
Finally, select input Ia instead of Vab and display its current spectrum.
![]() | Introducing Power Electronics | Three-Phase Systems and Machines | ![]() |

Learn more about Simulink through this collection of videos, articles, technical literature and the Getting Started with Simulink Guide.
| © 1984-2009- The MathWorks, Inc. - Site Help - Patents - Trademarks - Privacy Policy - Preventing Piracy - RSS |