MATLAB Examples

AC/DC Three-Level PWM Converter

This example shows the operation of an AC-DC three-level PWM Converter.

P. Giroux ; G. Sybille Hydro-Quebec (IREQ)



1) Converter rating: 500 Volts DC, 500 kW

2) AC Supply: three-phase, 600 V, 30 MVA, 60 Hz system

3) Voltage-sourced Converter (VSC): - Three-level, three-phase IGBT bridge (modeled using the "Three-Level Bridge" block) controlled by a PWM modulator (carrier frequency of 1620 Hz) - DC Link: 2 capacitors of 75000 uF

4) Controller: The DC regulator uses two PI regulators to control the DC voltage while maintaining a unity input power factor for the AC supply.

Simulation Parameters

- Discrete (no continuous states)

- Two sample times: Ts_Power= 5 us (used by PSB for the simulation of the power system + converters) Ts_Control= 100 us (used for the simulation of the DC regulator)

- Initial conditions are set at the start of the simulation (by automatically loading the file power_3levelVSC.mat prior to the simulation). This file has been generated by running an initial simulation to steady-state for an integer number of cycles of 60 Hz. The final states (both Simscape™ Power Systems™ and Simulink® controllers states) were saved in a structure with time, called xInit. This variable was saved in "power_3levelVSC.mat" file.


- In the simulation (lasting 200 ms), we can observe the following signals: 1) the DC voltage (Vdc Scope) 2) the primary voltage and current (phase A) of the AC supply (VaIa Scope), 3) the device currents of leg A of the IGBT bridge (double-click on the "Measurements & Signals" block to look inside the "Ia_Devices" Scope). 4) the phase-to-phase AC voltage generated by the VSC (Vab_VSC Scope)

- At t=50 ms, a 200-kW load is switched-in. We can see that the dynamic response of the DC regulator to this sudden load variation (200 kW to 400 kW) is satisfactory. The DC voltage is back to 500 V within 1.5 cycle and the unity power factor on the AC side is maintained.

- At t=100 ms, a "Stop Pulsing" signal is activated (pulses normally sent to the converter are blocked). We can see that the DC voltage drops to 315 V. A drastic change in the primary current waveform can also be observed. When the pulses are blocked, the Three-Level Bridge block operation becomes similar to a three-phase diode bridge.

Regenerate Initial Conditions

The initial states required to start in steady state have been saved in the "power_3levelVSC.mat" file. When you start simulation, the StartFcn callback (in the Model Properties/Callbacks) automatically loads into your workspace the contents of this .mat file ("xInit" variable).

If you modify this model, or change parameter values of power components, the initial conditions stored in the "xInit" 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 and check the "Final states" parameter.
  2. Double click on the Breaker block and temporarily disable the breaker closing by multiplying the "Switching time(s)" parameter by 100.
  3. Double click on the Timer block labeled "0=Stop pulsing". Temporarily disable pulse blocking by multiplying the " Time(s)" parameter by 100.
  4. Change the Simulation Stop Time to 0.5 second. Note that in order to generate initial conditions coherent with the 60 Hz voltage source phase angle, the Stop Time must an integer number of 60 Hz cycles.
  5. Start simulation. When simulation is completed, verify that steady state has been reached by looking at waveforms displayed on the Ctrl_Signals scope. 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 "xInit" and saves this variable in a new file (myModel_init.mat). * >> xInit=xFinal; * >> save myModel_init xInit
  6. In the File/Model Properties/Callbacks/StartFcn window, change the name of the initialization file from "power_3levelVSC" to "myModel_init". Next time you start a simulation with this model, the variable xInit saved in the myModel_init.mat file will be loaded in your workspace.
  7. In the Simulation/Configuration Parameters menu, check "Initial state".
  8. Start simulation and verify that your model starts in steady-state.
  9. Double click on the Breaker block and reset the "Switching time(s)" parameter back to 0.05 s (remove the 100 multiplication factor).
  10. Double click on the Timer block labeled "0=Stop pulsing". Re-enable the pulse blocking at t=0.1 s by removing the 100 multiplication factor.
  11. Change the Simulation Stop time back to 0.2 s.
  12. Save your Model.