MATLAB Examples

Two-Level PWM Converter and Dead Time

This example shows the impact of dead time on harmonic distortion of a two-level converter used in a 50 kW microturbine.



The circuit represents the DC to AC conversion unit of a 480 V, 50 kW microturbine connected to a 600 V power grid. As the purpose of this example is to illustrate the high frequency harmonics generated by the inverter, the slow dynamics of the gas-fired turbine and permanent magnet generator are not represented. The Turbine-Generator-Rectifier group is modeled as a simple DC current source injecting the requested DC power into the DC bus. The inverter uses a PWM, two-level IGBT converter (using the Universal Bridge block). The SPWM modulator uses a carrier frequency of 15 kHz. The control system uses two regulators: an inner current loop controlling the current at bus B2 and an outer DC voltage regulator controlling the DC bus voltage. LC filters are used to reduce harmonic voltages produced at the 480 V bus B2 (harmonic frequencies around multiples of 15 kHz). Note that 1 ohm resistances are connected in series with the 30 uF capacitors of the shunt filters. These resistances are used to damp non characteristic low frequency harmonics resulting from the resonance introduced by the LC filters (around 1.9 kHz).

In a two-level voltage-sourced converter (VSC) using ideal switches, the two pulses sent to the upper and lower IGBT of each arm could be complementary. However, in practical VSCs the turn-off of semiconductor switches is delayed because of the storage effect. Therefore, a time delay of a few microseconds (storage time + safety margin) is required to allow complete extinction of the IGBT which is switched off before switching on the other IGBT. Otherwise, a short-circuit could result on the DC bus. The dead time is modeled by introducing a On/Off Delay block at the pulse input of the converter block. The delay specified in that block is applied on the rising edges of pulses.

In order to get an acceptable accuracy with a 15 kHz switching frequency, a sample time Ts_Power= 0.5 microseconds is used to discretize the circuit. The discrete control system uses a much larger sample time (Ts_Control=50 microseconds)


1. Simulation with zero dead time

Start the simulation and observe voltages, current, power and control signals on the Scope block. The simulation has been automatically initialized to start in steady state. The quadrature-axis current Iq_ref is set to zero inside the current controller in order to generate power at unity power factor. Therefore, voltage and current at bus B2 (trace 1) are in phase. The DC voltage (trace 4) is regulated at 900 V. On trace 3, you can observe the power demand (set at nominal power of 50 kW) and the measured output power at bus B2 (49 kW, because of 1 kW losses in converter and filters).

Once the simulation is completed, open the Powergui and select "FFT Analysis" to display the frequency spectrum of signals saved in the ScopeData structure (variable specified in the Scope block). Make sure that input VaIa_B2 (pu), and signal number 1 are selected. The FFT will be performed on the last cycle of phase A voltage at bus B2. Then click Display to observe the 0-50000 Hz frequency spectrum. As expected, harmonics are observed mainly around multiples of the switching frequency (15 kHz). The Total Harmonic Distortion (THD) is displayed above the spectrum (THD=0.75%). THD is also measured during simulation by the "Discrete THD" block (trace 5 of Scope1)

2. Impact of dead time on harmonic distortion

Now move the manual switch to its upper position to apply a dead time of 1 microsecond to the firing pulses. Repeat simulation and FFT analysis for dead times up to 3 microseconds. You will note an increase of THD when the dead time is increased. Results from frequency analysis are summarized in the table shown on the model for dead times comprised between zero and 3 microseconds. This table indicates that the amplitude of the main characteristic frequencies (around 15 kHz) does not vary significantly when the dead time is increased. The THD increase is caused mainly by the introduction of low frequency harmonics (mainly 5th, 7th and 11th ). For a 3 us dead time the THD has increases from 0.74 % to 1.75 %. The table also indicates the modulation index increases when the dead time increases, indicating a less efficient use of the DC voltage. With a 900 V DC voltage, if dead time would be increased above 3 us, the modulation index would be higher than 1and additional distortion would be introduced because of overmodulation. You can check harmonic distortion for different power outputs and DC operating voltages by specifying new values in the "Power Demand" constant block and in the "Vdc_ref" constant block (inside the Control System).

Regenerate Initial Conditions

The initial states required to start this model in steady state have been saved in the "power_microturbineDT.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. Change the Simulation Stop Time to 1 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.
  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 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 "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 "power_microturbineDT.mat" to "myModel_init.mat". 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 the simulation and verify that your model starts in steady-state.
  8. Change the Simulation Stop Time and Simulation Mode back to their original values (0.2 seconds, Normal).
  9. Save your Model.