import math
from numpy import exp
# GIVEN DATA
X_d = 0.14*1j ; # reactancw of generator in pu
E_g = 1*exp(1j*0*math.pi/180) ;
S_B = 25*10**3 ; # voltage in kVA
V_BL_V = 13.8 ; # low voltage in kV
# CALCULATIONS
I_f = E_g/X_d ; # Subtransient fault current in pu
I_BL_V = S_B/( math.sqrt(3)*V_BL_V) ; # Current base for low-voltage side
I_f1 = abs(I_f)*I_BL_V ; # magnitude of fault current in A
# DISPLAY RESULTS
print ("EXAMPLE : 10.1 : SOLUTION :-") ;
print " Subtransient fault current for 3-Φ fault in per units = pu ", ; print I_f ;
print " Subtransient fault current for 3-Φ fault in ampere = %.f A "%(I_f1) ;
import math
# GIVEN DATA
# For case (a)
I_f = 7.1428571 ; # Subtransient fault current in pu . Result of exa 10.1
# For case (d)
V_pf = 13800 ; # voltage in V
zeta = 1.4 ;
I_f1 = 7471 ; # magnitude of fault current in A
# CALCULATIONS
# For case (a)
I_fdc_max = math.sqrt(2)*I_f ; # Max dc current in pu
# For case (b)
I_f_max = 2*I_fdc_max ; # Total max insmath.tanmath.taneous current in pu
# For case (c)
I_momt = 1.6*I_f ; # Total rms momentary current
# For case (d)
S_int = math.sqrt(3)*(V_pf)*I_f1*zeta*10**-6 ; # Interrupting rating in MVA
# For case (e)
S_momt = math.sqrt(3)*(V_pf)*I_f1*1.6*10**-6 ; # Momentary duty of CB in MVA
# DISPLAY RESULTS
print ("EXAMPLE : 10.2 : SOLUTION :-") ;
print " a) Maximum possible dc current component , I_fdc_max = %.1f pu "%(I_fdc_max) ;
print " b) Total maximum instantaneous current , I_max = %.1f pu "%(I_f_max) ;
print " c) Momentary current , I_momentary = %.2f pu "%(I_momt) ;
print " d) Interrupting rating of a 2-cycle CB , S_interrupting = %.f MVA "%(S_int) ;
print " e) Momentary duty of a 2-cycle CB , S_momentary = %.2f MVA "%(S_momt) ;
import math
from numpy import degrees,arctan2
# GIVEN DATA
z_l = 0.2 + 1j * 0.7 ; # Line impedance in pu
f_l = 0.7 ; # Fault point at a dismath.tance from A in pu
f_m = 1.2 ; # magnitude of fault current in pu
l = 10.3 ; # Line spacing in ft
p = 100 ; # Power in MVA
v = 138 ; # voltage in kV
i = 418.4 ; # current in A
z = 190.4 ; # Impedance in Ω
# CALCULATIONS
# For case (a)
I = f_m * i ; # Current in arc in A
R_arc = 8750 * l/(I**1.4) ; # Arc resistance in Ω
R_arc1 = R_arc/z ; # Arc resistance in pu
# For case (b)
Z_L = z_l * f_l ;
Z_r = Z_L + R_arc1 ; # Impedance seen by the relay in pu
# For case (c)
phi_1 = degrees(arctan2(Z_L.imag,Z_L.real )) ; # Line impedance angle without arc resistance in degree
phi_2 = degrees(arctan2(Z_r.imag,Z_r.real) ) ; # Line impedance angle with arc resistance in degree
# DISPLAY RESULTS
print ("EXAMPLE : 10.4 : SOLUTION :-") ;
print " a) Value of arc resistance at fault point in Ω , R_arc = %.2f Ω "%(R_arc) ;
print " Value of arc resistance at fault point in pu , R_arc = %.2f pu "%(R_arc1) ;
print " b) Value of line impedance including the arc resistance ( Z_L + R_arc = pu ", ; print Z_r ;
print " c) Line impedance angle without arc resistance , Φ = %.2f degree "%(phi_1) ;
print " Line impedance angle with arc resistance , Φ = %.2f degree "%(phi_2) ;
%matplotlib inline
import math
from numpy import arange,zeros
from matplotlib.pyplot import subplot,plot,xlabel,ylabel,suptitle,text
T = arange(0,300.01,0.01)
po = zeros(len(T))
for i in range(int(len(T)/1.1)):
po[i] = 4 ;
for i in range(int(len(T)/1.1),len(T)):
po[i] = 5 ;
io = zeros(len(T))
for i in range(int(len(T)/1.1)):
io[i] = 4 ;
for i in range(int(len(T)/1.1),len(T)):
io[i] = 3 ;
subplot(2,1,1) ; # To plot 2 graph in same graphic window
plot(T,po)#,3,'012','',[0, 0, 310, 7]) ;
plot(T,io)#,3,'012','',[0, 0, 310, 7]) ;
suptitle("Fig 10.5 (a) Zones of protection for relay R_12") ;
text(25,3.8,'[]') ;
text(45,4.2,'(1)') ;
plot(45,4,'+') ;
text(60,3.8,'[]') ;
text(60,4.2,'B_12') ;
text(120,3.8,'[]') ;
text(120,4.2,'B_21') ;
text(140,4.2,'(2)') ;
plot(140,4,'+') ;
text(155,3.8,'[]') ;
text(155,4.2,'B_23') ;
text(220,3.8,'[]') ;
text(220,4.2,'B_32') ;
text(270,5.0,'(3)') ;
text(285,2.8,'[]') ;
text(285,3.2,'B_35') ;
text(285,4.8,'[]') ;
text(285,5.2,'B_34') ;
text(85,3.4,'TL_12') ;
text(180,3.4,'TL_23') ;
text(60,3,'ZONE 1') ;
text(100,2,'ZONE 2') ;
text(190,1,'ZONE 3') ;
# For case (b)
vo = zeros(len(T))
for i in range(int(len(T)/4)):
vo[i] = 0.5;
for i in range(int(len(T)/4),len(T/1.7)):
vo[i] = 2;
for i in range(int(len(T)/1.7),len(T)):
vo[i] = 4
uo = zeros(len(T))
for i in range(int(len(T)/2.14),len(T/1.35)): # plotting Voltage values
uo[i] = 0.5;
for i in range(int(len(T)/1.35),len(T)):
uo[i] = 2;
subplot(2,1,2)
plot(T,vo)#,2,'012','',[0, 0, 310, 7]) ;
plot(T,uo)#,2,'012','',[0 ,0 ,310, 7]) ;
ylabel("OPERATING TIME") ;
xlabel("IMPEDANCE") ;
suptitle("Fig 10.5 (b) Coordination of dismath.tance relays , Operating time v/s Impedance") ;
text(0.1,0.3,'T_1') ;
text(30,0.6,'R_12') ;
text(58,1.3,'T_2') ;
text(100,2.0,'R_12') ;
text(160,3.0,'T_3') ;
text(230,4.0,'R_12') ;
text(160,0.6,'R_23') ;
text(260,2.1,'R_23') ;
# DISPLAY RESULTS
print ("EXAMPLE : 10.5 : SOLUTION :-") ;
print " a The zone of protection for relay R_12 is shown in Fig 10.5 a " ;
print " ZONE 1 lies b/w 1 & B_21 " ;
print " ZONE 2 lies b/w 1 & TL_23 " ;
print " ZONE 3 lies after 1 " ;
print " b The coordination of the distance relays R_12 & R_21 in terms of Operating time v/s Impedance is shown in Fig 10.5 b" ;
import math
# GIVEN DATA
kv = 230 * 10**3 ; # transmission system voltage in V
VA = 100 * 10**6 ; # Maximum peak load supplied by TL_12 in VA
ZTL_12 = 2 + 1j * 20 ; # Positive-sequence impedances of line TL_12
ZTL_23 = 2.5 + 1j * 25 ; # Positive-sequence impedances of line TL_23
pf = 0.9 ; # Lagging pf
# CALCULATIONS
# For case (a)
I_max = VA/(math.sqrt(3)*kv) ; # Maximum load current in A
# For case (b)
CT = 250/5 ; # CT ratio which gives about 5A in secondary winding under the maximum loading
# For case (c)
vr = 69 ; # selecting Secondary voltage of 69 V line to neutral
VT = (kv/math.sqrt(3))/vr ; # Voltage ratio
# For case (d)
Z_r = CT/VT ; # impedance measured by relay . Z_r = (V/VT)/(I/CT)
Z_TL_12 = Z_r * ZTL_12 ; # Impedance of lines TL_12 as seen by relay
Z_TL_23 = Z_r * ZTL_23 ; # Impedance of lines TL_23 as seen by relay
# For case (e)
Z_load = vr * CT * (pf + 1j*math.sin(math.radians(math.acos(pf))))/(I_max) ; # Load impedance based on secondary ohms
# For case (f)
Z_r1 = 0.80 * Z_TL_12 ; # Zone 1 setting of relay R_12
# For case (g)
Z_r2 = 1.20 * Z_TL_12 ; # Zone 2 setting of relay R_12
# For case (h)
Z_r3 = Z_TL_12 + 1.20*(Z_TL_23) ; # Zone 3 setting of relay R_12
# DISPLAY RESULTS
print ("EXAMPLE : 10.6 : SOLUTION :-") ;
print " a) Maximum load current , I_max = %.2f A "%(I_max) ;
print " b) CT ratio , CT = %.1f "%(CT) ;
print " c) VT ratio , VT = %.1f "%(VT) ;
print " d) Impedance measured by relay = %.3f Z_line "%(Z_r) ;
print " e) Load impedance based on secondary ohms ( Z_load = Ωsecondary) ", ; print Z_load ;
print " f) Zone 1 setting of relay R_12 , Z_r = Ωsecondary) " ; print Z_r1 ;
print " g) Zone 2 setting of relay R_12 , Z_r = Ωsecondary) " ; print Z_r2 ;
print " h) Zone 3 setting of relay R_12 , Z_r = Ωsecondary) " ; print Z_r3 ;
import math
# GIVEN DATA
Z_r1 = 0.0415692 + 1j*0.4156922 ; # Required zone 1 setting . From result of exa 10.6
Z_r2 = 0.0623538 + 1j*0.6235383 ; # Required zone 2 setting . From result of exa 10.6
Z_r3 = 0.1299038 + 1j*1.2990381 ; # Required zone 3 setting . From result of exa 10.6
# CALCULATIONS
# For case (a)
theta1 = degrees(arctan2(Z_r1.imag,Z_r1.real)) ;
Z_1 = abs(Z_r1)/math.cos(math.radians(theta1 - 30)) ; # Zone 1 setting of mho relay R_12
# For case (b)
theta2 = degrees(arctan2(Z_r2.imag,Z_r2.real)) ;
Z_2 = abs(Z_r2)/math.cos(math.radians(theta2 - 30)) ; # Zone 2 setting of mho relay R_12
# For case (b)
theta3 = degrees(arctan2(Z_r3.imag,Z_r3.real)) ;
Z_3 = abs(Z_r3)/math.cos(math.radians(theta3 - 30)) ; # Zone 3 setting of mho relay R_12
# DISPLAY RESULTS
print ("EXAMPLE : 10.7 : SOLUTION :-") ;
print " a) Zone 1 setting of mho relay R_12 = %.4f Ωsecondary "%(Z_1) ;
print " b) Zone 2 setting of mho relay R_12 = %.4f Ωsecondary "%(Z_2) ;
print " c) Zone 3 setting of mho relay R_12 = %.4f Ωsecondary "%(Z_3) ;