Application Center - Maplesoft

App Preview:

Calculation of B6 Bridge Losses of a power stage driven by space vector modulation scheme

You can switch back to the summary page by clicking here.

Learn about Maple
Download Application


Calculation of the conducting and switching losses of an inverter with an IGBT power stage in B6-Bridge configuration with space vector modulation scheme 

Andreas Schramm 

Reinhold-Wuerth-University, Kuenzelsau, Germany

andreas.schramm@hs-heilbronn.de

 

Description 

This paper calculates the losses of an IGBT driven inverter with six switches arranged in B6-Bridge (like shown in the image below) configuration. The switching signals are calculated on space vector modulation techniques with reduced switching losses by using the flat top modulation scheme. The sheet is split into two main parts: Part I contains the calculation of a certain operating point to explain the calculation steps. Part II contains the calculation of surface diagrams of several operating points. 

 

Maple version: 12.02 

 

Remarks: Depending on which machine this paper is run, Part II will take a long time to calculate. The whole sheet takes about 5 hours to calculate with 625 nodes per diagram on a Pentium 4 @ 3.4GHz 

 

 

 

Image 

 

 

Part I: Calculation of a certain operating point 

Initialization 

> restart:with(plots):
 

Mathematical definition of the conducting losses 

The conducting losses are calculated on the effective currents ieffT1P through the transistor and ieffD2P through the diode. RCE is the differential resistance of the collector emitter leg, RD is the differential resistance of the diode leg. Furthermore the average currents iavT1P through the Transistor and iavD2P through the diode are used. For the calculation the inner voltages of the transistor UST and the diode USD the losses are needed. 

> P[conduction]:=evalf(3*(ieffT1P(Pi/omega1)^2*R[CE]+ieffD2P(Pi/omega1)^2*R[D]+iavT1P(Pi/omega1)*U[ST]+iavD2P(Pi/omega1)*U[SD])+3*(ieffD2P(Pi/omega1)^2*R[CE]+ieffT1P(Pi/omega1)^2*R[D]+iavD2P(Pi/omega1)*U[ST]+iavT1P(Pi/omega1)*U[SD]));
 

`+`(`*`(3., `*`(`^`(ieffT1P(`/`(`*`(Pi), `*`(omega1))), 2), `*`(R[CE]))), `*`(3., `*`(`^`(ieffD2P(`/`(`*`(Pi), `*`(omega1))), 2), `*`(R[D]))), `*`(3., `*`(iavT1P(`/`(`*`(Pi), `*`(omega1))), `*`(U[ST])...
`+`(`*`(3., `*`(`^`(ieffT1P(`/`(`*`(Pi), `*`(omega1))), 2), `*`(R[CE]))), `*`(3., `*`(`^`(ieffD2P(`/`(`*`(Pi), `*`(omega1))), 2), `*`(R[D]))), `*`(3., `*`(iavT1P(`/`(`*`(Pi), `*`(omega1))), `*`(U[ST])...
`+`(`*`(3., `*`(`^`(ieffT1P(`/`(`*`(Pi), `*`(omega1))), 2), `*`(R[CE]))), `*`(3., `*`(`^`(ieffD2P(`/`(`*`(Pi), `*`(omega1))), 2), `*`(R[D]))), `*`(3., `*`(iavT1P(`/`(`*`(Pi), `*`(omega1))), `*`(U[ST])...
(2.2.1)
 

The above defined calculation is based on the equivalent circuits of the IGBT and the diode. The equivalent circuit of the IGBT is shown in the image below 

 

Image 

The equivalent circuit for the freewheeling diode is shown in the following diagram. 

 

Image 

Definition of the parameters for the operating point to calculate 

a is the phase control factor of the puls width modulation in the range [0,1], which means 0 is 0 % and 1 is 100 % duty cycle, which defines the length of the voltage space vector. 

> a:=0.8;
 

.8 (2.3.1)
 

RCE is the differential resistance in the collector-emitter leg of the transistor 

> R[CE]:=0.0025;#Ohm
 

0.25e-2 (2.3.2)
 

UST is the inner voltage of the transistor 

> U[ST]:=1.0;#V
 

1.0 (2.3.3)
 

USD is the inner voltage of the diode 

> U[SD]:=0.7;#V
 

.7 (2.3.4)
 

RD is the differential resistance of the diode 

> R[D]:=0.0037;#Ohm
 

0.37e-2 (2.3.5)
 

Ton is the time, the transistor needs to turn on 

> T[on]:=120e-9;#s
 

0.120e-6 (2.3.6)
 

Toff is the time the transistor needs to turn off 

> T[off]:=300e-9;#s
 

0.300e-6 (2.3.7)
 

freqswitch ist the switching frequency of the devices 

> freq[switch]:=20e3;#Hz
 

0.20e5 (2.3.8)
 

Qrr is the reverse recovery charge of the diode 

> Q[rr]:=5.5e-6;#C
 

0.55e-5 (2.3.9)
 

Trr is the reverse recovery time of the diode 

> T[rr]:=150e-9;#s
 

0.150e-6 (2.3.10)
 

Calculation of the switching times over a 60? sector of the space vector diagram 

The space vector Ux and Ux+60? are the right hand and the left hand space vectors bordering any sector out of six possible sectors in one full electrical rotation (see the image below) 

Image 

Tf1 is the raw switching time of the right space vector Ux, β is the angle in the 60? sector from zero to 60?. 

> T[f1]:=beta->a*(cos(beta)-1/sqrt(3)*sin(beta)):
 

Tf2 is the raw switching time of the left space vector in the 60? sector. 

> T[f2]:=beta->a*2/sqrt(3)*sin(beta):
 

If the phase control factor is too large, the raw switching times have to be corrected by the function Tkorr 

> T[korr]:=beta->(piecewise(1-T[f1](beta)-T[f2](beta)>0,0,1-T[f1](beta)-T[f2](beta))):
 

The results of this correction is T1, the normalized on time for the right hand space vector, T2, the normalized on time for the left hand space vector and T0 the switching time for the zero vector 

> T[1]:=beta->a*(cos(beta)-1/sqrt(3)*sin(beta))+1/2*T[korr](beta):
 

> g:=plot(T[1](beta),beta=0..1/3*Pi,legend="Time for right hand space vector U[x]"):
 

> T[2]:=beta->a*2/sqrt(3)*sin(beta)+1/2*T[korr](beta):#Einschaltzeit T[2] korrigieren
 

> h:=plot(T[2](beta),beta=0..1/3*Pi,colour=green,legend="Time for left hand space vector U[x+60?]"):
 

> T[0]:=beta->1-T[1](beta)-T[2](beta);#Pausenzeit berechnen
 

> f:=plot(T[0](beta),beta=0..1/3*Pi,colour=blue,legend="Time for zero space vector"):
 

> k:=plot(T[0](beta)+T[1](beta)+T[2](beta),beta=0..1/3*Pi,legend="Sum of switching times",colour=magenta):# Sum of switching times have to be one!
 

>  
 

> display(g,h,f,k,title="Normalized On-Times of the devices");
 

 

 

proc (beta) options operator, arrow; `+`(1, `-`(T[1](beta)), `-`(T[2](beta))) end proc
Plot_2d  
 

With the switching times of the right hand, the left hand and the zero space vector, the switching times for one leg can be derived for a full electrical rotation. Here is s the switching time for the high-side switch and _s the switching time for the low-side switch 

> s:=phi->piecewise(phi<1/3*Pi,T[0](phi),phi<2/3*Pi,0,phi<Pi,T[2](phi-2/3*Pi)+T[0](phi-2/3*Pi),phi<4/3*Pi,T[1](phi-Pi)+T[2](phi-Pi),phi<5/3*Pi,1,T[1](phi-5/3*Pi)):
 

> _s:=phi->1-s(phi):
 

> f:=plot(s(phi),phi=0..2*Pi,legend=s):
 

> g:=plot(_s(phi),phi=0..2*Pi,colour=green,legend=_s):
 

> display(f,g,title="Switching time of the high-side and low-side switch");#Darstellung beider Schaltfunktionen
 

Plot_2d  
 

 

Analysis of the currents through the transistors and the diodes over one full periode in one leg of the B6-Bridge 

Definition of the phase current 

iS is the amplitude of the phase current, β is the phase angle in reference to the voltage and ω1 the angular frequency of the phase current 

> iS:=212;beta:=0.01;omega1:=314;
 

> i:=t->iS*sin(omega1*t-beta);#Eingabe der Stromfunktion
 

 

 

 

 

 

 

212
0.1e-1
314
proc (t) options operator, arrow; `*`(iS, `*`(sin(`+`(`*`(omega1, `*`(t)), `-`(beta))))) end proc (2.5.1.1)
 

 

Calculation of the currents in the devices 

The multiplication of the switching functions with the phase currents leads to the current function carried by the to the switching function corresponding devices 

> iavT1:=t->i(t)*s(omega1*t):
 

> iavD2:=t->i(t)*_s(omega1*t):
 

> iavT1plot:=t->piecewise(iavT1(t)>0,iavT1(t),0):
 

> iavD2plot:=t->piecewise(iavD2(t)>0,iavD2(t),0):
 

> iavT2plot:=t->piecewise(iavT1(t)<0,iavT1(t),0):
 

> iavD1plot:=t->piecewise(iavD2(t)<0,iavD2(t),0):
 

> g:=plot(iavT1plot,0..2*Pi/omega1,legend=iavT1):
 

> h:=plot(iavD2plot,0..2*Pi/omega1,colour=green,legend=iavD2):
 

> j:=plot(iavT2plot,0..2*Pi/omega1,legend=iavT2,linestyle=DASH):
 

> k:=plot(iavD1plot,0..2*Pi/omega1,colour=green,legend=iavD1,linestyle=DASH):
 

> l:=plot(i,0..2*Pi/omega1,colour=blue,legend=i,linestyle=DOT):
 

> display(g,h,j,k,l,title="Phase current (dotted blue) and currents carried by T1 (solid red), T2 (dashed red), D1 (dashed green), D2 (solid green)");
 

Plot_2d  
 

The carried currents can now be calculated to derive the average currents in the transistors and the diodes over one full periode of the phase current. The calculation of the carried currents can be done for one transistor and one diode because of the symmetric characteristics of the current. 

> iavT1P:=t->1/(2*Pi)*omega1*int(iavT1(tau),tau=beta/omega1..beta/omega1+Pi/omega1):#Gemittelter Strom im Transistor ?ber eine Periodendauer
 

> iavD2P:=t->1/(2*Pi)*omega1*int(iavD2(tau),tau=beta/omega1..beta/omega1+Pi/omega1):#Gemittelter Strom in der Diode ?ber eine Periodendauer
 

> g:=plot(iavT1P,0..2*Pi/omega1,legend=iavT1P):
 

> h:=plot(iavD2P,0..2*Pi/omega1,colour=green,legend=iavD2P):
 

> display(g,h,title="Average currents over one periode in transistor T1 and diode D2");
 

Plot_2d  
 

The same procedure can be done for the effective currents in the transistor T1 and the diode D2. 

>
 

> ieffD2P:=t->sqrt(1/(2*Pi)*omega1*int((iavD2(tau))^2,tau=beta/omega1..beta/omega1+Pi/omega1)):#Gemittelter Strom im der Diode ?ber eine Periodendauer
 

> g:=plot(ieffT1P,0..2*Pi/omega1,legend=ieffT1P):
 

> h:=plot(ieffD2P,0..2*Pi/omega1,colour=green,legend=ieffD2P):
 

> display(g,h,title="Effective currents over one periode in T1 und D2");
 

Plot_2d  
 

 

Calculation of the conducting losses 

With the values calculated in the upper part of the sheet, the conduction losses can be calculated as 

> P_conduction:=evalf(3*(ieffT1P(Pi/omega1)^2*R[CE]+ieffD2P(Pi/omega1)^2*R[D]+iavT1P(Pi/omega1)*U[ST]+iavD2P(Pi/omega1)*U[SD])+3*(ieffD2P(Pi/omega1)^2*R[CE]+ieffT1P(Pi/omega1)^2*R[D]+iavD2P(Pi/omega1)*U[ST]+iavT1P(Pi/omega1)*U[SD]));
 

526.8911390 (2.6.1)
 

Calculation of the switching losses 

The calculation of the switching losses is done by calculating the switching energy in the devices. The switching energy is then calculated to the switching loss by referencing them to the switching frequency. 

The direct current link voltage is stored in UZK 

> U[ZK]:=370:#V
 

The switching behavior is modeled with linear characteristics for the voltage and the current through the devices. 

> U[ZKon]:=tau->U[ZK]-tau/T[on]*U[ZK];
 

proc (tau) options operator, arrow; `+`(U[ZK], `-`(`/`(`*`(tau, `*`(U[ZK])), `*`(T[on])))) end proc (2.7.1)
 

> U[ZKoff]:=tau->U[ZK]*tau/T[off];
 

proc (tau) options operator, arrow; `/`(`*`(U[ZK], `*`(tau)), `*`(T[off])) end proc (2.7.2)
 

> iCEon:=(t,tau)->i(t)/T[on]*tau;
 

proc (t, tau) options operator, arrow; `/`(`*`(i(t), `*`(tau)), `*`(T[on])) end proc (2.7.3)
 

> iCEoff:=(t,tau)->i(t)-i(t)/T[off]*tau;
 

proc (t, tau) options operator, arrow; `+`(i(t), `-`(`/`(`*`(i(t), `*`(tau)), `*`(T[off])))) end proc (2.7.4)
 

The switching energy is calculated by the integral over the product of the voltage of the intermediate direct current link and the leg current through the transistor. 

> E[on,T]:=t->int(U[ZKon](tau)*iCEon(t,tau),tau=0..T[on]);
 

proc (t) options operator, arrow; int(`*`(U[ZKon](tau), `*`(iCEon(t, tau))), tau = 0 .. T[on]) end proc (2.7.5)
 

> E[off,T]:=t->int(U[ZKoff](tau)*iCEoff(t,tau),tau=0..T[off]);
 

proc (t) options operator, arrow; int(`*`(U[ZKoff](tau), `*`(iCEoff(t, tau))), tau = 0 .. T[off]) end proc (2.7.6)
 

The switching energy of the diode is calculated by reverse recovery behavior. The Qrr describes the recovery charge. 

> E[off,D]:=U[ZK]*Q[rr];
 

0.20350e-2 (2.7.7)
 

n is the number of switching cycles within a half period of the phase current. 

> n:=Pi/omega1*freq[switch];
 

`+`(`*`(63.69426752, `*`(Pi))) (2.7.8)
 

The total on energy and the total off energy is calculated by the sum of switching energies in a half period, because in the other half period, the complementary transistor and diode will carry the current. 

> E[on_ges]:=sum(E[on,T](q*Pi/omega1/n+beta/omega1),q=0..n);
 

.1998429777 (2.7.9)
 

> E[off_ges]:=sum(E[off,T](q*Pi/omega1/n+beta/omega1),q=0..n)+n*E[off,D];
 

`+`(.4996074440, `*`(.1296178344, `*`(Pi))) (2.7.10)
 

The total switching losses for the whole B6-Bridge can be calculated by the total energy divided through the duration of a half phase current period multiplied by six (because of the six pairs of transistor and diode). 

> P[Schalt]:=evalf(6*omega1/2/Pi*(E[on_ges]+E[off_ges]));
 

331.8287489 (2.7.11)
 

Part II: Calculation of several operating points with graphical illustration 

Initialize restart of the Maple server 

> restart:
 

 

Definition of the B6-Bridge Parameters 

RCE is the differential resistance in the collector-emitter leg of the transistor 

> R[CE]:=0.0025;#Ohm
 

0.25e-2 (3.2.1)
 

UST is the inner voltage of the transistor 

> U[ST]:=1.0;#V
 

1.0 (3.2.2)
 

USD is the inner voltage of the diode 

> U[SD]:=0.7;#V
 

.7 (3.2.3)
 

RD is the differential resistance of the diode 

> R[D]:=0.0037;#Ohm
 

0.37e-2 (3.2.4)
 

Ton is the time, the transistor needs to turn on 

> T[on]:=120e-9;#s
 

0.120e-6 (3.2.5)
 

Toff is the time the transistor needs to turn off 

> T[off]:=300e-9;#s
 

0.300e-6 (3.2.6)
 

Qrr is the reverse recovery charge of the diode 

> Q[rr]:=5.5e-6;#C
 

0.55e-5 (3.2.7)
 

Trr is the reverse recovery time of the diode 

> T[rr]:=150e-9;#s
 

0.150e-6 (3.2.8)
 

> U[ZK]:=370;#V
 

370 (3.2.9)
 

 

 

Defining same functionality as in Part I but now using functions to be more generic 

Define phase current function 

> i:=(t,omega1,iS,beta)->iS*sin(omega1*t-beta):
 

Calculate functions for raw switching time of the space vectors 

> T[f1]:=(beta,a)->a*(cos(beta)-1/sqrt(3)*sin(beta)):
 

> T[f2]:=(beta,a)->a*2/sqrt(3)*sin(beta):
 

> T[korrekt]:=(beta,a)->0:
 

> T[korr]:=(beta,a)->(piecewise(1-T[f1](beta,a)-T[f2](beta,a)>0,T[korrekt](beta,a),1-T[f1](beta,a)-T[f2](beta,a))):
 

Calculate switching time function for right hand space vector 

> T[1]:=(beta,a)->a*(cos(beta)-1/sqrt(3)*sin(beta))+1/2*T[korr](beta,a):
 

Calculate switching time function for left hand space vector 

> T[2]:=(beta,a)->a*2/sqrt(3)*sin(beta)+1/2*T[korr](beta,a):
 

Define function for zero space vector 

> T[0]:=(beta,a)->1-T[1](beta,a)-T[2](beta,a):
 

Define switching and inverted switching functions for all sectors of space vector diagram 

> s1:=(phi,a)->T[0](phi,a):#Definition der abschnittsweisen Schaltfunktion
 

> s2:=(phi,a)->0:
 

> s3:=(phi,a)->T[2](phi-2/3*Pi,a)+T[0](phi-2/3*Pi,a):
 

> s4:=(phi,a)->T[1](phi-Pi,a)+T[2](phi-Pi,a):
 

> s5:=(phi,a)->1:
 

> s6:=(phi,a)->T[1](phi-5/3*Pi,a):
 

> _s1:=(phi,a)->1-s1(phi,a):
 

> _s2:=(phi,a)->1-s2(phi,a):
 

> _s3:=(phi,a)->1-s3(phi,a):
 

> _s4:=(phi,a)->1-s4(phi,a):
 

> _s5:=(phi,a)->1-s5(phi,a):
 

> _s6:=(phi,a)->1-s6(phi,a):
 

Calculate functions for average current in transistor one for all six sectors. 

> iavT1_1:=(t,omega1,a,iS,beta)->i(t,omega1,iS,beta)*s1(omega1*t,a):#Gemittelter Strom im Transistor bei Tp=0
 

> iavT1_2:=(t,omega1,a,iS,beta)->i(t,omega1,iS,beta)*s2(omega1*t,a):
 

> iavT1_3:=(t,omega1,a,iS,beta)->i(t,omega1,iS,beta)*s3(omega1*t,a):
 

> iavT1_4:=(t,omega1,a,iS,beta)->i(t,omega1,iS,beta)*s4(omega1*t,a):
 

> iavT1_5:=(t,omega1,a,iS,beta)->i(t,omega1,iS,beta)*s5(omega1*t,a):
 

> iavT1_6:=(t,omega1,a,iS,beta)->i(t,omega1,iS,beta)*s6(omega1*t,a):
 

Calculate functions for average current in diode two for all six sectors. 

> iavD2_1:=(t,omega1,a,iS,beta)->i(t,omega1,iS,beta)*_s1(omega1*t,a):#Gemittelter Strom in der Diode bei Tp=0
 

> iavD2_2:=(t,omega1,a,iS,beta)->i(t,omega1,iS,beta)*_s2(omega1*t,a):
 

> iavD2_3:=(t,omega1,a,iS,beta)->i(t,omega1,iS,beta)*_s3(omega1*t,a):
 

> iavD2_4:=(t,omega1,a,iS,beta)->i(t,omega1,iS,beta)*_s4(omega1*t,a):
 

> iavD2_5:=(t,omega1,a,iS,beta)->i(t,omega1,iS,beta)*_s5(omega1*t,a):
 

> iavD2_6:=(t,omega1,a,iS,beta)->i(t,omega1,iS,beta)*_s6(omega1*t,a):
 

 

iavT1P is the average current in the transistor over one phase current period. 

> iavT1P:=(t,omega1,a,iS,beta)->piecewise(beta<1/3*Pi,1/(2*Pi)*omega1*(int(iavT1_1(tau,omega1,a,iS,beta),tau=beta/omega1..1/3*Pi/omega1)+int(iavT1_2(tau,omega1,a,iS,beta),tau=1/3*Pi/omega1..2/3*Pi/omega1)+int(iavT1_3(tau,omega1,a,iS,beta),tau=2/3*Pi/omega1..Pi/omega1)+int(iavT1_4(tau,omega1,a,iS,beta),tau=Pi/omega1..Pi/omega1+beta/omega1)),beta<2/3*Pi,1/(2*Pi)*omega1*(int(iavT1_2(tau,omega1,a,iS,beta),tau=1/3*Pi/omega1+(beta/omega1-1/3*Pi/omega1)..2/3*Pi/omega1)+int(iavT1_3(tau,omega1,a,iS,beta),tau=2/3*Pi/omega1..Pi/omega1)+int(iavT1_4(tau,omega1,a,iS,beta),tau=Pi/omega1..4/3*Pi/omega1)+int(iavT1_5(tau,omega1,a,iS,beta),tau=4/3*Pi/omega1..4/3*Pi/omega1+(beta/omega1-1/3*Pi/omega1))),beta<Pi,1/(2*Pi)*omega1*(int(iavT1_3(tau,omega1,a,iS,beta),tau=2/3*Pi/omega1+(beta/omega1-2/3*Pi/omega1)..Pi/omega1)+int(iavT1_4(tau,omega1,a,iS,beta),tau=Pi/omega1..4/3*Pi/omega1)+int(iavT1_5(tau,omega1,a,iS,beta),tau=4/3*Pi/omega1..5/3*Pi/omega1)+int(iavT1_6(tau,omega1,a,iS,beta),tau=5/3*Pi/omega1..5/3*Pi/omega1+(beta/omega1-5/3*Pi/omega1))),0):
 

iavD2P is the average current in the diode over one phase current period. 

> iavD2P:=(t,omega1,a,iS,beta)->piecewise(beta<1/3*Pi,1/(2*Pi)*omega1*(int(iavD2_1(tau,omega1,a,iS,beta),tau=beta/omega1..1/3*Pi/omega1)+int(iavD2_2(tau,omega1,a,iS,beta),tau=1/3*Pi/omega1..2/3*Pi/omega1)+int(iavD2_3(tau,omega1,a,iS,beta),tau=2/3*Pi/omega1..Pi/omega1)+int(iavD2_4(tau,omega1,a,iS,beta),tau=Pi/omega1..Pi/omega1+beta/omega1)),beta<2/3*Pi,1/(2*Pi)*omega1*(int(iavD2_2(tau,omega1,a,iS,beta),tau=1/3*Pi/omega1+(beta/omega1-1/3*Pi/omega1)..2/3*Pi/omega1)+int(iavD2_3(tau,omega1,a,iS,beta),tau=2/3*Pi/omega1..Pi/omega1)+int(iavD2_4(tau,omega1,a,iS,beta),tau=Pi/omega1..4/3*Pi/omega1)+int(iavD2_5(tau,omega1,a,iS,beta),tau=4/3*Pi/omega1..4/3*Pi/omega1+(beta/omega1-1/3*Pi/omega1))),beta<Pi,1/(2*Pi)*omega1*(int(iavD2_3(tau,omega1,a,iS,beta),tau=2/3*Pi/omega1+(beta/omega1-2/3*Pi/omega1)..Pi/omega1)+int(iavD2_4(tau,omega1,a,iS,beta),tau=Pi/omega1..4/3*Pi/omega1)+int(iavD2_5(tau,omega1,a,iS,beta),tau=4/3*Pi/omega1..5/3*Pi/omega1)+int(iavD2_6(tau,omega1,a,iS,beta),tau=5/3*Pi/omega1..5/3*Pi/omega1+(beta/omega1-5/3*Pi/omega1))),0):
 

Do the same for ieffT1P, the effective current in transistor one and ieffD2P, the effective current in diode two. 

> ieffT1P:=(t,omega1,a,iS,beta)->piecewise(beta<1/3*Pi,sqrt(1/(2*Pi)*omega1*(int(iavT1_1(tau,omega1,a,iS,beta)^2,tau=beta/omega1..1/3*Pi/omega1)+int(iavT1_2(tau,omega1,a,iS,beta)^2,tau=1/3*Pi/omega1..2/3*Pi/omega1)+int(iavT1_3(tau,omega1,a,iS,beta)^2,tau=2/3*Pi/omega1..Pi/omega1)+int(iavT1_4(tau,omega1,a,iS,beta)^2,tau=Pi/omega1..Pi/omega1+beta/omega1))),beta<2/3*Pi,sqrt(1/(2*Pi)*omega1*(int(iavT1_2(tau,omega1,a,iS,beta)^2,tau=1/3*Pi/omega1+(beta/omega1-1/3*Pi/omega1)..2/3*Pi/omega1)+int(iavT1_3(tau,omega1,a,iS,beta)^2,tau=2/3*Pi/omega1..Pi/omega1)+int(iavT1_4(tau,omega1,a,iS,beta)^2,tau=Pi/omega1..4/3*Pi/omega1)+int(iavT1_5(tau,omega1,a,iS,beta)^2,tau=4/3*Pi/omega1..4/3*Pi/omega1+(beta/omega1-1/3*Pi/omega1)))),beta<Pi,sqrt(1/(2*Pi)*omega1*(int(iavT1_3(tau,omega1,a,iS,beta)^2,tau=2/3*Pi/omega1+(beta/omega1-2/3*Pi/omega1)..Pi/omega1)+int(iavT1_4(tau,omega1,a,iS,beta)^2,tau=Pi/omega1..4/3*Pi/omega1)+int(iavT1_5(tau,omega1,a,iS,beta)^2,tau=4/3*Pi/omega1..5/3*Pi/omega1)+int(iavT1_6(tau,omega1,a,iS,beta)^2,tau=5/3*Pi/omega1..5/3*Pi/omega1+(beta/omega1-5/3*Pi/omega1)))),0):
 

> ieffD2P:=(t,omega1,a,iS,beta)->piecewise(beta<1/3*Pi,sqrt(1/(2*Pi)*omega1*(int(iavD2_1(tau,omega1,a,iS,beta)^2,tau=beta/omega1..1/3*Pi/omega1)+int(iavD2_2(tau,omega1,a,iS,beta)^2,tau=1/3*Pi/omega1..2/3*Pi/omega1)+int(iavD2_3(tau,omega1,a,iS,beta)^2,tau=2/3*Pi/omega1..Pi/omega1)+int(iavD2_4(tau,omega1,a,iS,beta)^2,tau=Pi/omega1..Pi/omega1+beta/omega1))),beta<2/3*Pi,sqrt(1/(2*Pi)*omega1*(int(iavD2_2(tau,omega1,a,iS,beta)^2,tau=1/3*Pi/omega1+(beta/omega1-1/3*Pi/omega1)..2/3*Pi/omega1)+int(iavD2_3(tau,omega1,a,iS,beta)^2,tau=2/3*Pi/omega1..Pi/omega1)+int(iavD2_4(tau,omega1,a,iS,beta)^2,tau=Pi/omega1..4/3*Pi/omega1)+int(iavD2_5(tau,omega1,a,iS,beta)^2,tau=4/3*Pi/omega1..4/3*Pi/omega1+(beta/omega1-1/3*Pi/omega1)))),beta<Pi,sqrt(1/(2*Pi)*omega1*(int(iavD2_3(tau,omega1,a,iS,beta)^2,tau=2/3*Pi/omega1+(beta/omega1-2/3*Pi/omega1)..Pi/omega1)+int(iavD2_4(tau,omega1,a,iS,beta)^2,tau=Pi/omega1..4/3*Pi/omega1)+int(iavD2_5(tau,omega1,a,iS,beta)^2,tau=4/3*Pi/omega1..5/3*Pi/omega1)+int(iavD2_6(tau,omega1,a,iS,beta)^2,tau=5/3*Pi/omega1..5/3*Pi/omega1+(beta/omega1-5/3*Pi/omega1)))),0):
 

Define the conducting losses function 

> P_conduction1:=(omega1,a,iS,beta)->3*(ieffT1P(Pi/omega1,omega1,a,iS,beta)^2*R[CE]+ieffD2P(Pi/omega1,omega1,a,iS,beta)^2*R[D]+iavT1P(Pi/omega1,omega1,a,iS,beta)*U[ST]+iavD2P(Pi/omega1,omega1,a,iS,beta)*U[SD])+3*(ieffD2P(Pi/omega1,omega1,a,iS,beta)^2*R[CE]+ieffT1P(Pi/omega1,omega1,a,iS,beta)^2*R[D]+iavD2P(Pi/omega1,omega1,a,iS,beta)*U[ST]+iavT1P(Pi/omega1,omega1,a,iS,beta)*U[SD]):
 

> P_conduction:=(omega1,a,iS,beta)->piecewise(omega1=0,limit(P_conduction1(lim_omega1,a,iS,beta),lim_omega1=0),P_conduction1(omega1,a,iS,beta)):
 

 

Graphical illustration of the conducting and switching losses 

Conducting losses 

> plot3d(P_conduction(314,a,iS,0.01),a=0..0.8,iS=0..212,numpoints=625,axes=boxed,title="Conducting losses in dependency of phase control factor and phase current amplitude");
 

Plot_2d  
 

> plot3d(P_conduction(314,0.7,iS,beta),iS=0..212,beta=0..Pi/2,numpoints=625,axes=boxed,title="Conducting losses in dependency of angular phase shift and phase current amplitude");
 

Plot_2d  
 

> plot3d(P_conduction(omega1,0.7,iS,0.8),omega1=0..311,iS=0..212,axes=boxed,numpoints=625,title="Conducting losses in dependency of phase current angular frequency and phase current amplitude");
 

Plot_2d  
 

> plot3d(P_conduction(omega1,0.7,212,beta),omega1=5..311,beta=0..Pi/2,axes=boxed,numpoints=625,title="Conducting losses in dependency of phase current angular frequency and phase current angular phase shift");
 

Plot_2d  
 

> plot3d(P_conduction(omega1,a,212,0.8),omega1=0..311,a=0..0.7,axes=boxed,numpoints=625,title="Conducting losses in dependency of phase current angular frequency and phase control factor");
 

Plot_2d  
 

Switching losses 

> U[ZKon]:=tau->U[ZK]-tau/T[on]*U[ZK]:
 

> U[ZKoff]:=tau->U[ZK]*tau/T[off]:
 

> iCEon:=(t,omega1,iS,tau,beta)->i(t,omega1,iS,beta)/T[on]*tau:
 

> iCEoff:=(t,omega1,iS,tau,beta)->i(t,omega1,iS,beta)-i(t,omega1,iS,beta)/T[off]*tau:
 

> E[on,T]:=(t,omega1,iS,beta)->int(U[ZKon](tau)*iCEon(t,omega1,iS,tau,beta),tau=0..T[on]):
 

> E[off,T]:=(t,omega1,iS,beta)->int(U[ZKoff](tau)*iCEoff(t,omega1,iS,tau,beta),tau=0..T[off]):
 

> E[off,D]:=U[ZK]*Q[rr]:
 

> n:=(omega1,freq_switch)->(Pi/omega1*freq_switch):
 

> E[on_ges]:=(omega1,iS,beta,freq_switch)->sum(E[on,T](q*Pi/omega1/n(omega1,freq_switch)+beta/omega1,omega1,iS,beta),q=0..n(omega1,freq_switch)):
 

> E[off_ges]:=(omega1,iS,beta,freq_switch)->sum(E[off,T](q*Pi/omega1/n(omega1,freq_switch)+beta/omega1,omega1,iS,beta),q=0..n(omega1,freq_switch))+n(omega1,freq_switch)*E[off,D]:
 

> P_switch1:=(omega1,iS,beta,freq)->simplify(6*omega1/2/Pi*(E[on_ges](omega1,iS,beta,freq)+E[off_ges](omega1,iS,beta,freq))):
 

> P_switch:=(omega1,iS,beta,freq)->piecewise(omega1=0,limit(P_switch1(lim_omega1,iS,beta,freq),lim_omega1=0),P_switch1(omega1,iS,beta,freq)):
 

> plot3d(P_switch(omega1,iS,0.8,20e3),omega1=0..3140,iS=0..150,numpoints=625,axes=boxed,title="Switching losses in dependency of phase current frequency and phase current amplitude");
 

Plot_2d  
 

> plot3d(P_switch(314,iS,beta,20e3),iS=0..150,beta=0..Pi,numpoints=625,axes=boxed,title="Switching losses in dependency of angular phase shift and phase current amplitude");
 

Plot_2d  
 

> plot3d(P_switch(314,iS,0.8,freq),iS=0..212,freq=4e3..20e3,numpoints=625,axes=boxed,title="Switching losses in dependency of switching frequency and phase current amplitude");
 

Plot_2d  
 

>