3-phase VSI

A three-phase full bridge inverter is connected to a balanced resistive load. Each inverter switch consists of an IGBT with an anti-parallel diode. The inverter is operating in 120 degree conduction mode. The circuit parameters are $V_{dc} = 600\,$V, $R = 10\,\Omega$. Which of the following statements is true regarding the conduction loss in the devices?
  1. Diode and IGBT will have nearly same conduction loss.
  2. Diode conduction loss will be about half of the IGBT loss.
  3. Diode will have no conduction loss.
  4. Diode conduction loss will be nearly $\frac{2}{3}$ times the IGBT loss.
In [1]:
from IPython.display import Image
Image(filename =r'VSI_3ph_15_fig_1.png', width=350)
Out[1]:
No description has been provided for this image
In [2]:
# run this cell to view the circuit file.
%pycat VSI_3ph_15_orig.in

We now replace the strings such as \$Vdc, \$R, with the values of our choice by running the python script given below. It takes an existing circuit file VSI_3ph_15_orig.in and produces a new circuit file VSI_3ph_15.in, after replacing \$Vdc, \$R, etc. with values of our choice.

In [3]:
import gseim_calc as calc
s_Vdc = "600"
s_f_clock = "50"
s_R = "10"

phi = 120.0
D1 = phi/360.0
s_D1 = ("%11.4E"%(D1)).strip()

f_clock = float(s_f_clock)
T = 1/f_clock
s_2T = ("%11.4E"%(2.0*T)).strip()

l = [
  ('$Vdc', s_Vdc),
  ('$R', s_R),
  ('$D1', s_D1),
  ('$2T', s_2T),
  ('$f_clock', s_f_clock),
]
calc.replace_strings_1("VSI_3ph_15_orig.in", "VSI_3ph_15.in", l)
print('VSI_3ph_15.in is ready for execution')
VSI_3ph_15.in is ready for execution
Execute the following cell to run GSEIM on VSI_3ph_15.in.
In [4]:
import os
import dos_unix
# uncomment for windows:
#dos_unix.d2u("VSI_3ph_15.in")
os.system('run_gseim VSI_3ph_15.in')
get_lib_elements: filename gseim_aux/xbe.aux
get_lib_elements: filename gseim_aux/ebe.aux
Circuit: filename = VSI_3ph_15.in
main: i_solve = 0
main: calling solve_trns
Transient simulation starts...
i=0
i=1000
i=2000
GSEIM: Program completed.
Out[4]:
0

The circuit file (VSI_3ph_15.in) is created in the same directory as that used for launching Jupyter notebook. The last step (i.e., running GSEIM on VSI_3ph_15.in) creates data files called VSI_3ph_15_1.dat, etc. in the same directory. We can now use the python code below to compute/plot the various quantities of interest.

In [5]:
import numpy as np
import matplotlib.pyplot as plt 
import gseim_calc as calc
from setsize import set_size

f_hz = 50.0
T = 1.0/f_hz

slv = calc.slv("VSI_3ph_15.in")

i_slv = 0
i_out = 2
filename = slv.l_filename_all[i_slv][i_out]
print('filename:', filename)
u1 = np.loadtxt(filename)
t1 = u1[:, 0]

col_IRa = slv.get_index(i_slv,i_out,"IRa")
col_IS1 = slv.get_index(i_slv,i_out,"IS1")
col_ID1 = slv.get_index(i_slv,i_out,"ID1")

i_out = 0
filename = slv.l_filename_all[i_slv][i_out]
print('filename:', filename)
u2 = np.loadtxt(filename)
t2 = u2[:, 0]

col_g1 = slv.get_index(i_slv,i_out,"g1")
col_g2 = slv.get_index(i_slv,i_out,"g2")
col_g3 = slv.get_index(i_slv,i_out,"g3")
col_g4 = slv.get_index(i_slv,i_out,"g4")
col_g5 = slv.get_index(i_slv,i_out,"g5")
col_g6 = slv.get_index(i_slv,i_out,"g6")

fig, ax = plt.subplots(3, sharex=False, gridspec_kw={'height_ratios': [1, 2, 1]})
plt.subplots_adjust(wspace=0, hspace=0.0)

set_size(6.5, 6, ax[0])

for i in range(3):
    ax[i].set_xlim(left=0.0, right=2.0*T*1e3)
    ax[i].grid(color='#CCCCCC', linestyle='solid', linewidth=0.5)

ax[0].set_ylabel(r'$i_a$'   , fontsize=12)
ax[1].set_ylabel(r'$g_x$'   , fontsize=12)
ax[2].set_ylabel(r'$i_{S1}$', fontsize=12)

for i in range(3):
    ax[i].tick_params(labelbottom=False)

color1 = "tomato"
color2 = "dodgerblue"
color3 = "olive"
color4 = "blue"
color5 = "grey"
color6 = "green"
color7 = "crimson"
color8 = "red"

ax[0].plot(t1*1e3, u1[:,col_IRa], color=color6, linewidth=1.0, label="$V_{an}$")

dy = 1.5

ax[1].plot(t2*1e3, (u2[:,col_g1]       ), color=color1, linewidth=1.0, label="$g_1$")
ax[1].plot(t2*1e3, (u2[:,col_g2] -   dy), color=color2, linewidth=1.0, label="$g_2$")
ax[1].plot(t2*1e3, (u2[:,col_g3] - 2*dy), color=color3, linewidth=1.0, label="$g_3$")
ax[1].plot(t2*1e3, (u2[:,col_g4] - 3*dy), color=color4, linewidth=1.0, label="$g_4$")
ax[1].plot(t2*1e3, (u2[:,col_g5] - 4*dy), color=color5, linewidth=1.0, label="$g_5$")
ax[1].plot(t2*1e3, (u2[:,col_g6] - 5*dy), color=color6, linewidth=1.0, label="$g_6$")

ax[1].tick_params(left = False)
ax[1].set_yticks([])

ax[2].plot(t1*1e3, u1[:,col_IS1], color=color4, linewidth=1.0, label="$i_{S1}$")
ax[2].plot(t1*1e3, u1[:,col_ID1], color=color8, linewidth=1.0, label="$i_{D1}$")

ax[2].set_xlabel('time (msec)', fontsize=12)

for k in [1,2]:
    ax[k].legend(loc = 'lower right',frameon = True, fontsize = 10, title = None,
        markerfirst = True, markerscale = 1.0, labelspacing = 0.5, columnspacing = 2.0,
        prop = {'size' : 12})

#plt.tight_layout()
plt.show()
filename: VSI_3ph_15_3.dat
filename: VSI_3ph_15_1.dat
No description has been provided for this image

This notebook was contributed by Prof. Nakul Narayanan K, Govt. Engineering College, Thrissur. He may be contacted at nakul@gectcr.ac.in.

In [ ]: