Main Content

Space-Vector PWM modulator

This example shows the open-loop speed control of an induction motor using constant V/Hz principle and a space vector (SV) PWM technique.

Pierre Giroux, Hydro-Quebec (IREQ)


A 3-phase squirrel-cage motor rated 3 HP, 220 V, 60 Hz, 1725 rpm is fed by a 3-phase MOSFET inverter connected to a DC voltage source of 325 V. The inverter is modeled using the "Universal Bridge" block and the motor by the "Asynchronous Machine" block. Its stator leakage inductance Lls is set to twice its actual value to simulate the effect of a smoothing reactor placed between the inverter and the machine. The load torque applied to the machine's shaft is constant and set to its nominal value of 11.9 N.m.

The firing pulses to the inverter are generated by the "Space-Vector PWM modulator" block of the SPS library. The chopping frequency is set to 1980 Hz and the input reference vector to "Magnitude-Angle".

Speed control of the motor is performed by the "Constant V/Hz" block. The magnitude and frequency of the stator voltages are set based on the speed setpoint. By varying the stator voltages magnitude in proportion with frequency, the stator flux is kept constant.


Start the simulation. Since the initial states have been automatically loaded, the simulation should start in steady-state. The initial motor speed should be 1720 RPM and the rms value of the stator voltages should be 220V@60Hz.

At 0.1s, the speed setpoint is changed from 1725 to 1300 RPM. You can observe the system dynamic looking inside Scope 1. When the motor reaches a constant speed of 1275 RPM, the stator voltage rms value is down to 165.8V and the frequency to 45.2 Hz.

Stator voltage (phase AB) and phase A current waveforms can be observed in the "V-I Stator" Scope. You can do a FFT of these two quantities using the powergui FFT Analysis.

Regenerate Initial Conditions

The initial states required to start this model in steady state with a 1725 rpm reference speed and a 11.9 N.m load torque have been saved in the "SVPWMConverterInit.mat" file. When you open this model, the InitFcn callback (in the Model Properties/Callbacks) automatically loads into your workspace the contents of this .mat file ("xInitial" variable).

If you modify this model, or change parameter values of power components, the initial conditions stored in the "xInitial" variable will no longer be valid and Simulink® will issue an error message. To regenerate the initial conditions for your modified model, follow the steps listed below:

1. In the Simulation/Configuration Parameters/Data Import/Export Parameters menu, uncheck the "Initial state" parameter.

2. Double click on the Step block labeled "Speed Setpoint (RPM)" and temporarily disable the change of reference speed by multiplying the Step time by 100.

3. Change the Simulation Mode from "Normal" to "Accelerator".

4. Start simulation. When simulation is completed, verify that steady state has been reached by looking at waveforms displayed on the scopes. The final states which have been saved in the "xFinal" structure with time can be used as initial states for future simulations. Executing the next two commands copies these final conditions in "xInitial" and saves this variable in a new file (myModel_init.mat).

>> xInitial=xFinal;
>> save myModel_init xInitial

5. In the File -> Model Properties -> Callbacks -> InitFcn window, change the name of the initialization file from "SVPWMConverterInit" to "myModel_init". Next time you open this model, the variable xInitial saved in the myModel_init.mat file will be loaded in your workspace.

6. In the Simulation -> Configuration Parameters menu, check "Initial state".

7. Start simulation and verify that your model starts in steady-state.

8. Double click on the Step block labeled "Speed Setpoint (RPM)" and re-enable the change of reference speed at t=0.1 s (remove the 100 multiplication factor in the Step time).

9. Change the Simulation Mode back to Normal.

10. Save your model.