Chapter 13 : System Protection

Example 13.1, Page No 341

In [1]:
#Chapter 13
#Example 13.1
#Page 341
print('Solution to this problem can be got by theory from Section 13.2 in the textbook')
Solution to this problem can be got by theory from Section 13.2 in the textbook

Example 13.2, Page No 355

In [2]:
import math
#initialisation of variables
V = 13.8e3
Z_tr = complex(5)
Z_tr_eq = Z_tr / 2#since two reactances of equal value are in parallel
Z1 = complex(9.6)
Z2 = complex(6.4)
Z3 = complex(8.0)
Z4 = complex(12.8)
m = math.sqrt(3)/2			#to obtain line-to-line fault from a three-phase fault current
#At bus 5
#Max. Current

#Calculations
If_b5_max = (V/math.sqrt(3))/(Z_tr_eq + Z1 + Z2 + Z3 + Z4)
print(If_b5_max,'Maximum fault current at bus 5 in A')
#Min. Current
If_b5_min = (V/math.sqrt(3)) * m / (Z_tr + Z1 + Z2 + Z3 + Z4)
print(If_b5_min,'Minimum fault current at bus 5 in A')
#At bus 4
#Max. Current
If_b4_max = (V/math.sqrt(3)) / (Z_tr_eq + Z1 + Z2 + Z3)
print(If_b4_max,'Maximum fault current at bus 4 in A')
#Min. Current
If_b4_min = (V/math.sqrt(3)) * m / (Z_tr + Z1 + Z2 + Z3)
print(If_b4_min,'Minimum fault current at bus 4 in A')
#At bus 3
#Max. Current
If_b3_max = (V/math.sqrt(3)) / (Z_tr_eq + Z1 + Z2)
print(If_b3_max,'Maximum fault current at bus 3 in A')
#Min. Current
If_b3_min = (V/math.sqrt(3)) * m / (Z_tr + Z1 + Z2)
print(If_b3_min,'Minimum fault current at bus 3 in A')
#At bus 2
#Max. Current
If_b2_max = (V/math.sqrt(3)) / (Z_tr_eq + Z1)
print(If_b2_max,'Maximum fault current at bus 2 in A')
#Min. Current
If_b2_min = (V/math.sqrt(3)) * m / (Z_tr + Z1)
print(If_b2_min,'Minimum fault current at bus 2 in A')
#At bus 2
#Max. Current
If_b1_max = (V/math.sqrt(3)) / (Z_tr_eq)
print(If_b1_max,'Maximum fault current at bus 1 in A')
#Min. Current
If_b1_min = (V/math.sqrt(3)) * m / (Z_tr)
print(If_b1_min,'Minimum fault current at bus 1 in A')
((202.73368231086098+0j), 'Maximum fault current at bus 5 in A')
((165.07177033492823+0j), 'Minimum fault current at bus 5 in A')
((300.657876030824+0j), 'Maximum fault current at bus 4 in A')
((237.93103448275863+0j), 'Minimum fault current at bus 4 in A')
((430.6720926928019+0j), 'Maximum fault current at bus 3 in A')
((328.57142857142856+0j), 'Minimum fault current at bus 3 in A')
((658.4655962658543+0j), 'Maximum fault current at bus 2 in A')
((472.60273972602744+0j), 'Minimum fault current at bus 2 in A')
((3186.9734859267346+0j), 'Maximum fault current at bus 1 in A')
((1380+0j), 'Minimum fault current at bus 1 in A')

Example 13.3, Page No 357

In [3]:
import math
#initialisation of variables
#This problem contains many assumptions and values are taken from Figure 13.7 in page 348 after intial calculations,it is done in order to select equipment of the available rated value in the market to meet the required conditions.So only the required calculations are shown and final answer after the required changes are printlayed.
V = 13.8e3
Z_tr = complex(5)
Z_tr_eq = Z_tr / 2		#since two reactances of equal value are in parallel
Z1 = complex(9.6)
Z2 = complex(6.4)
Z3 = complex(8.0)
Z4 = complex(12.8)
m = math.sqrt(3) / 2		#to obtain line-to-line fault from a three-phase fault current
If_b5_max = (V/math.sqrt(3)) / (Z_tr_eq + Z1 + Z2 + Z3 + Z4)
If_b5_min = (V/math.sqrt(3)) * m / (Z_tr + Z1 + Z2 + Z3 + Z4)
If_b4_max = (V/math.sqrt(3)) / (Z_tr_eq + Z1 + Z2 + Z3)
If_b4_min = (V/math.sqrt(3)) * m / (Z_tr + Z1 + Z2 + Z3)
If_b3_max = (V/math.sqrt(3)) / (Z_tr_eq + Z1 + Z2)
If_b3_min = (V/math.sqrt(3)) * m / (Z_tr + Z1 + Z2)
If_b2_max = (V/math.sqrt(3)) / (Z_tr_eq + Z1)
If_b2_min = (V/math.sqrt(3)) * m / (Z_tr + Z1)
If_b1_max = (V/math.sqrt(3)) / (Z_tr_eq)
If_b1_min = (V/math.sqrt(3)) * m / (Z_tr)
#Settings for relay R4
R4_I_1_p = If_b5_min /3
print('One third of minimum fault current in A')
print(abs(R4_I_1_p))
R4_I_p = R4_I_1_p * 5 /55
print('For CT ratio 50/5 resulting relay current in A will be')
print(abs(R4_I_p))
print('Settings for relay R4')
print('CT ratio = 50:5')
print('Pick up setting in A = 5')
print('Time-dial setting = 1/2')
#Settings for relay R3
R3_I_p = If_b4_max * 5 / 50
print('The relay current of both R3 and R4 for higest fault current seen by R4')
print(abs(R3_I_p))
R4_t_op = 0.135
print('Operating time for R4 with time dial setting 1/2 in sec is')
print(R4_t_op)
t=0.3
R3_t_op = R4_t_op + t
print('Required operating time of relay R3')
print(R3_t_op)
print('Settings for relay R3')
print('CT ratio = 50:5')
print('Pick up setting in A = 5')
print('Time-dial setting = 2')
#Settings for relay R2
R2_I_p = (1.0/3) * If_b4_min * (5.0/100)
print('Pickup setting in A')
print(abs(R2_I_p))
R3_I_1_p = If_b3_max * (5.0/50) * (1.0/5)
print('Reatio of relay current to picup setting in A for max fault current through R3')
print(abs(R3_I_1_p))
R3_t_op = 0.31
R2_t_op = R3_t_op + t
print('Operating time of R2 in sec')
print(R2_t_op)
R2_I_1_p = If_b3_max * (5.0/100) * (1.0/4)
print('For backing up R3 the ratio of relay current to pickup setting of R2 in A')
print(abs(R2_I_1_p))
print('Settings for relay R2')
print('CT ratio = 100:5')
print('Pick up setting in A = 4')
print('Time-dial setting = 2.6')
#Settings for relay R1
R1_I_p = If_b3_min * (1.0/3) * (5.0/100)
#taking tap as 5.0
R2_1_I_1_op = If_b2_max * (5.0/50) * (1.0/5)
#Operating time will come to 0.33s
R1_t_op = 0.33+t
R1_1_I_1_op = If_b2_max * (5.0/100) * (1.0/5)

#Results
print('Settings for relay R1')
print('CT ratio = 100:5')
print('Pick up setting in A = 5')
print('Time-dial setting = 2.9')
One third of minimum fault current in A
55.023923445
For CT ratio 50/5 resulting relay current in A will be
5.00217485863
Settings for relay R4
CT ratio = 50:5
Pick up setting in A = 5
Time-dial setting = 1/2
The relay current of both R3 and R4 for higest fault current seen by R4
30.0657876031
Operating time for R4 with time dial setting 1/2 in sec is
0.135
Required operating time of relay R3
0.435
Settings for relay R3
CT ratio = 50:5
Pick up setting in A = 5
Time-dial setting = 2
Pickup setting in A
3.96551724138
Reatio of relay current to picup setting in A for max fault current through R3
8.61344185386
Operating time of R2 in sec
0.61
For backing up R3 the ratio of relay current to pickup setting of R2 in A
5.38340115866
Settings for relay R2
CT ratio = 100:5
Pick up setting in A = 4
Time-dial setting = 2.6
Settings for relay R1
CT ratio = 100:5
Pick up setting in A = 5
Time-dial setting = 2.9

Example 13.4 Page No 363

In [4]:
import math
#initialisation of variables
l_12 = 64
l_23 = 64
l_24 = 96		#in km
l_12m = 40
l_23m = 40
l_24m = 60
z = complex(0.05 ,0.5)
Pmax = 50e6
V = 138e3
pf = 0.8
cvt = 67

#Calculations
Z_12 = z * l_12
Z_23 = z * l_23
Z_24 = z * l_24
print('The positive sequnce impedances of the three line in ohms in the order line 1-2,line 2-3,line 2-4 are')
print(Z_12)
print(Z_23)
print(Z_24)
Il_max = Pmax / (math.sqrt(3) * V)
print('Maximum load current in A')
print(Il_max)
Vn = V/ math.sqrt(3)
print('System Voltage to neutral')
print(Vn)
ratio_cvt = Vn / cvt
print('cvt ratio = 1089.1/1')
b1_factor = l_12m / ratio_cvt
Z_r12 = Z_12 * b1_factor
Z_r23 = Z_23 * b1_factor
Z_r24 = Z_24 * b1_factor
print('The impedance of the lines as seen by R12 in ohms in the order line 1-2,line 2-3,line 2-4 are')
print(Z_r12)
print(Z_r23)
print(Z_r24)
Zload = (cvt * complex(pf,math.sqrt(1-pf**2))) / (Il_max * (5.0/200))
print('Impedance of load current')
print(Zload)
zone1 = 0.8 * Z_r12
print('Setting of zone one on secondary in ohms')
print(zone1)
zone2 = 1.2 * Z_r23
print('Setting of zone two on secondary in ohms')
print(zone2)
zone3 = Z_r23 + 1.2 * Z_r24
print('Setting of zone three on secondary in ohms')
print(zone3)
The positive sequnce impedances of the three line in ohms in the order line 1-2,line 2-3,line 2-4 are
(3.2+32j)
(3.2+32j)
(4.8+48j)
Maximum load current in A
209.184880141
System Voltage to neutral
79674.3371482
cvt ratio = 1089.1/1
The impedance of the lines as seen by R12 in ohms in the order line 1-2,line 2-3,line 2-4 are
(0.107638171925+1.07638171925j)
(0.107638171925+1.07638171925j)
(0.161457257888+1.61457257888j)
Impedance of load current
(10.2493067307+7.68698004806j)
Setting of zone one on secondary in ohms
(0.0861105375404+0.861105375404j)
Setting of zone two on secondary in ohms
(0.129165806311+1.29165806311j)
Setting of zone three on secondary in ohms
(0.301386881391+3.01386881391j)

Example 13.5, Page No 368

In [5]:
import math
#initialisation of variables
V_ht = 345e3
V_lt = 34.5e3
P = 50e6
P_short_term = 60e6

#Calculations
I_ht = P_short_term / (math.sqrt(3) * V_ht)
I_lt = P_short_term / (math.sqrt(3) * V_lt)
print('Under maximum load the currents on 345-kV and 34.5-kV side of the transformer respectively in A = %.2f %.2f' %(I_ht,I_lt))
#CT ratio on the 34.5kV side 1000/5
I_r_lt = I_lt * 5 / 1000
print('Current flowing through the differential relay from 34.5-kV side = %.2f' %I_r_lt)
I_balance = 5.0
I_lt_sec_ct = I_balance / math.sqrt(3)
print('To balance the above current each of the secondary windings of the delta connected CTs should have a current(in A) of  = %.2f' %I_lt_sec_ct)
ct_sec = I_ht / I_lt_sec_ct
print('CT ratios in secondary for the above currents = %.2f' %ct_sec)
I_ht_sec_ct = I_ht * 5 / 200

#Results
print('CT secondary currents for ratio 200/5 on the secondary side of 345-kV will be = %.2f' %I_ht_sec_ct)
I_line_ctr = I_ht_sec_ct * math.sqrt(3)
print('Line currents from CTs to differential relays = %.2f' %I_line_ctr)
turns_ratio = I_r_lt / I_line_ctr
print('Required turns ratio for the three auxillary CTs uses is = %.2f' %turns_ratio)
Under maximum load the currents on 345-kV and 34.5-kV side of the transformer respectively in A = 100.41 1004.09
Current flowing through the differential relay from 34.5-kV side = 5.02
To balance the above current each of the secondary windings of the delta connected CTs should have a current(in A) of  = 2.89
CT ratios in secondary for the above currents = 34.78
CT secondary currents for ratio 200/5 on the secondary side of 345-kV will be = 2.51
Line currents from CTs to differential relays = 4.35
Required turns ratio for the three auxillary CTs uses is = 1.15