# Ch-5 : Load Frequency Control¶

## exa 5.1 page 145¶

In :
from __future__ import division
P=100 #MW
drop=4 #%(No load to full load drop)
f=50 #Hz
print "Part(i)"
p=1 #MW(For calculating per unit MW)
R=(drop/100)*f/p #Hz/p.u.MW
print "Speed regulation = %0.2f Hz/p.u.MW" %R
R=(drop/100)*f/P #Hz/MW
print "Speed regulation = %0.2f Hz/MW" %R
print "Part(ii)"
del_f=-0.1 #Hz(Frequency drop)
delP=-1/R*del_f #MW(Change in power output)
print "Change in power output = %0.2f MW "%delP

Part(i)
Speed regulation = 2.00 Hz/p.u.MW
Speed regulation = 0.02 Hz/MW
Part(ii)
Change in power output = 5.00 MW


## exa 5.2 page 146¶

In :
from math import sqrt
P=100 #MVA
f=50 #Hz
H=5 #kW-sec/kVA(Constant)
td=0.5 #s(Time delay)
P=P/1000 #kVA
KE=P*H #kW-sec
KE_loss=delP*td #kW-s
f_new=sqrt((KE-KE_loss)/KE)*f #Hz
f_dev=(f-f_new)/f*100 #%(Frequency deviation)
print "Frequency deviation = %0.2f %%"%f_dev

Frequency deviation = 2.53 %


## exa 5.3 page 146¶

In :
P1=500 #MW
P2=200 #MW
f=50 #Hz
delP=140 #MW(System load increase)
f_new=49.5 #Hz(Frequency after drop)
delP1=delP*P1/(P1+P2) #MW
delP2=delP*P2/(P1+P2) #MW
f_dev=f_new-f #Hz
#For delPdash=0, R1 &R2 can be calculated as :
R1=-1/delP1*f_dev #Hz/MW
R2=-1/delP2*f_dev #Hz/MW
print "Value of R for unit 1 & 2 are : %0.4f & %0.4f Hz/MW "%(R1, R2)

Value of R for unit 1 & 2 are : 0.0050 & 0.0125 Hz/MW


## exa 5.4 page 146¶

In :
f=50 #Hz
R=2 #Hz/pu MW
Pr=10000 #MW(Rated Capacity)
P=Pr/2 #MW(Operating Power)
del_f=f*1/100 #Hz(1% change in frequency)
del_PL=P*1/100 #MW(1% change in load)
#Rate of change of load with frequency :
D=del_PL/del_f #MW/Hz
D=D/Pr #p.u. MW/Hz
#Frequency response characteristic :
Beta=D+1/R #p.u. MW/Hz
M=delP/100*P #MW
M=M/Pr #p.u. MW
del_fo=-M/Beta #Hz
print "Static frequency drop = %0.2f Hz"%del_fo
R=float('inf')
Beta=D+1/R #p.u. MW/Hz
del_fo=-M/Beta #Hz
print "If speed governer loop is open, frequency drop = %0.2f Hz "%del_fo

Static frequency drop = -0.02 Hz
If speed governer loop is open, frequency drop = -1.00 Hz


## exa 5.5 page 147¶

In :
C=10000 #MW(Control area capacity)
P=5000 #MW
H=5 #s
R=3 #Hz/pu MW
f=50 #Hz
del_f=f*1/100 #Hz
del_PL=P*1/100 #MW
D=del_PL/del_f #MW/Hz
D=D/C #p.u. MW/Hz
#Primary ALFC loop parameters :
Kp=1/D #Hz/p.u. MW
Tp=2*H/f/D #s
print "Primary ALFC loop parameters :"
print "Kp = %0.2f Hz/p.u. MW "%Kp
print "Tp = %0.2f seconds "%Tp

Primary ALFC loop parameters :
Kp = 100.00 Hz/p.u. MW
Tp = 20.00 seconds


## exa 5.6 page 147¶

In :
f=50 #Hz
R=2 #Hz/pu MW
Pr=10000 #MW(Rated Capacity)
P=Pr/2 #MW(Operating Power)
del_f=f*1/100 #Hz(1% change in frequency)
del_PL=P*1/100 #MW(1% change in load)
#Rate of change of load with frequency :
D=del_PL/del_f #MW/Hz
D=D/Pr #p.u. MW/Hz
#Frequency response characteristic :
Beta=D+1/R #p.u. MW/Hz
M=delP/100*P #MW
M=M/Pr #p.u. MW
del_fo=-M/Beta #Hz
delP_fo=-del_fo*(D*Pr) #MW
print "Frequency drop contribution to increase in load = %0.2f MW" %delP_fo
delP_gen=-del_fo/R*Pr #MW
print "Increase in generation to meet the increase load = %.2f MW " %delP_gen

Frequency drop contribution to increase in load = 1.96 MW
Increase in generation to meet the increase load = 98.04 MW


## exa 5.7 page 152¶

In :
from math import sqrt
G=100 #MVA
f=50 #Hz
n=3000 #rpm
td=0.5 #sec
H=4.5 #MW-sec/MVA
#Calculation
KE=H*G #MW-sec##at no load
KE_Loss=L*td #MW-sec#/due to increase in load
f_new=sqrt((KE-KE_Loss)/KE)*f #Hz
delF=(f-f_new)/f*100 #%##frequency deviation
print "Frequency deviation = %0.2f %%" %delF

Frequency deviation = 1.40 %


## exa 5.8 page 152¶

In :
C=4000 #MW
f=50 #Hz
R=2 #Hz/p.u.MW##Speed regulation constant
H=5 #sec##Inertia constant
delPL=2 #%##change in load
delf=1 #%##change in frequency
print "Part(a)"
D=delPL/delf*L/f #MW/Hz
D=D/C #p.u.MW/Hz
Beta=D+1/R #p.u.MW/Hz
delf0=-0.2 #Hz
M=-(delf0)*Beta #p.u.MW
M=M*C #MW
print "Largest change in step load = %0.2f MW "%M
print "Part(b)"
Kp=1/D #Hz/p.u.MW
Tp=2*H/f/D #sec
Tdash=(R+Kp)/R/Tp #sec
print "(R+Kp)/(R*Tp) = %0.2f seconds "%(Tdash)
print 'Change in frequency as a funtion of time, \ndelf(t) = -0.2*(1-epsilon**(%.3f*t))'%(Tdash)

Part(a)
Largest change in step load = 420.00 MW
Part(b)
(R+Kp)/(R*Tp) = 2.62 seconds
Change in frequency as a funtion of time,
delf(t) = -0.2*(1-epsilon**(2.625*t))


## exa 5.9 page 153¶

In :
C=4000 #MW
f=50 #Hz
R=2.5 #%##Speed regulation constant
H=5 #sec##Inertia constant
delPL=1 #%##change in load
delf=1 #%##change in frequency
print "Part(a)"
Ls=80 #MW #increase in step to load
R=R/100*f #z/p.u.MW
D=delPL/delf*L/f #MW/Hz
D=D/C #p.u.MW/Hz
M=Ls/L #unitless#for given step load
Kp=1/D #Hz/p.u.MW
Tp=2*H/f/D #sec
Tdash1=(R+Kp)/R/Tp #sec
print "(R+Kp)/(R*Tp) = %0.2f seconds "%Tdash1
Tdash2=(R*Kp*M)/(R+Kp) #sec
print "(R*Kp*M)/(R+Kp) = %0.2f seconds"%Tdash2
delf0=-Tdash2 #Hz##Static frequency error
print "Static frequency error = %0.2f Hz "%delf0
print "Part(b)"
Ki=(1+Kp/R)**2/4/Tp/Kp #p.u.MW/Hz
print "Critical value of Ki = %0.2f p.u.MW/Hz "%Ki

Part(a)
(R+Kp)/(R*Tp) = 4.10 seconds
(R*Kp*M)/(R+Kp) = 0.02 seconds
Static frequency error = -0.02 Hz
Part(b)
Critical value of Ki = 0.84 p.u.MW/Hz


## exa 5.10 page 154¶

In :
from sympy import symbols, solve
s=symbols('s') #for transfer function
Tg=0.2 #sec#/time constant of governing system
Tt=2 #sec#/time constant of turbine
Gr=1/(1+Tg*s) #Transfer function of governer
Gt=1/(1+Tt*s) #Transfer function of turbine
C=1500 #MW
f=50 #Hz
R=4 #%##Speed regulation constant
H=5 #sec##Inertia constant
delPL=1 #%##change in load
delf=1 #%##change in frequency
print "Part(a)"
R=R/100*f #z/p.u.MW
D=delPL/delf*C/f #MW/Hz
D=D/C #p.u.MW/Hz
Kp=1/D #Hz/p.u.MW
Tp=2*H/f/D #sec
Gp=Kp/(1+Tp*s) #Transfer function of power system
delFs=-Gp/(1+Gr*Gt*Gp/R)
print "delFs = M/s*",delFs
print "Part(b)"
delf0_by_M=-Kp/(1+Kp/R) #Hz
delf0=delf/100*f #Hz
M=delf0/delf0_by_M #p.u.MW
M=M*C #MW
print "Largest step change = %0.2f MW "%M
#Transfer functions multiplication Gr*Gt*Gp is calculated & it is not possible to show together without calculated as in the book.

Part(a)
delFs = M/s* -50.0/((1 + 25.0/((0.2*s + 1)*(2*s + 1)*(10.0*s + 1)))*(10.0*s + 1))
Part(b)
Largest step change = -390.00 MW


## exa 5.11 page 157¶

In :
GA=5000 #MW
GB=10000 #MW
R=2 #Hz/p.u.MW##Speed regulation constant
D=0.01 #p.u.MW/Hz
RA=R*GB/GA #Hz/p.u.MW
DA=D*GA/GB #p.u.MW/Hz
RB=R #Hz/p.u.MW
DB=D #p.u.MW/Hz
Beta_A=DA+1/RA #p.u.MW/Hz
Beta_B=DB+1/RB #p.u.MW/Hz
MB=Ls/GB #p.u.MW
delf0=-MB/(Beta_A+Beta_B) #Hz
print "Static frequency drop = %0.2f Hz "%delf0
delPAB=Beta_A*MB/(Beta_A+Beta_B) #p.u.MW
delPAB=delPAB*GB #MW
print "Change in tie line power = %0.2f MW "%delPAB

Static frequency drop = -0.01 Hz
Change in tie line power = 33.33 MW


## exa 5.12 page 159¶

In :
GA=500 #MW
GB=2000 #MW
RA=2.5 #Hz/p.u.MW##Speed regulation constant
RB=2 #Hz/p.u.MW##Speed regulation constant
f=50 #Hz
delL=1 #%##change in load
delf=1 #%##change in frequency
DA=delL/delf*GA/f #MW/Hz
DA=DA/GB #p.u.MW/Hz
DB=delL/delf*GB/f #MW/Hz
DB=DB/GB #p.u.MW/Hz
RA=RA*GB/GA #Hz/p.u.MW
Beta_A=DA+1/RA #p.u.MW/Hz
Beta_B=DB+1/RB #p.u.MW/Hz
print "Part(a)"
MA=Ls/GB #unitless
MB=0 #unitless
delf0=-MA/(Beta_A+Beta_B) #Hz
print "Change in frequency = %0.2f Hz "%delf0
delPAB=-Beta_B*MA/(Beta_B+Beta_A) #p.u.MW
delPAB=delPAB*GB #MW
print "Change in tie line power = %0.2f MW "%delPAB
print "Part(b)"
MB=Ls/GB #unitless
MA=0 #unitless
delf0=-MB/(Beta_A+Beta_B) #Hz
print "Change in frequency = %0.2f Hz "%delf0
delPAB=Beta_A*MB/(Beta_B+Beta_A) #p.u.MW
delPAB=delPAB*GB #MW
print "Change in tie line power = %0.2f MW "%delPAB

Part(a)
Change in frequency = -0.02 Hz
Change in tie line power = -16.64 MW
Part(b)
Change in frequency = -0.02 Hz
Change in tie line power = 3.36 MW


## exa 5.13 page 160¶

In :
from math import cos, pi, sqrt
G=4000 #MW
R=2 #Hz/p.u.MW##Speed regulation constant
H=5 #sec
C=600 #MW#Capacity
theta=40 #degree#/Power angle
f=50 #Hz
print "Part(a)"
T=C/G*cos(pi/180*theta) #sec
print "Frequency of oscillation = %0.2f radian/sec "%omega0
print "Part(b)"
delLB=100 #MW#change in load in area B
delPAB=delLB/2 #MW#because Beta_A=Beta_B
print "Change in tie line power = %0.2f MW "%delPAB
print "Part(c)"
print "Frequency of oscillation = %0.2f radian/sec "%omega0

Part(a)
Frequency of oscillation = 2.38 radian/sec
Part(b)
Change in tie line power = 50.00 MW
Part(c)
Frequency of oscillation = 2.69 radian/sec


## exa 5.14 page 168¶

In :
C1=300 #MW
C2=400 #MW
G1=4 #%#droop characteristics of governer
G2=5 #%#droop characteristics of governer
L=600 #MW
f=50 #Hz
#Load on first generator =L1
#Load on second generator =L-L1
#f-G1*f/100*(L1/C1)=f-G2*f/100*(L2/C2)
L1=G2*L/C2/(G1/C1+G2/C2) #MW
L2=L-L1 #MW
print "Load on first generator = %0.2f MW "%L1
print "Load on second generator = %0.2f MW "%L2
print "Frequency at load = %0.2f Hz "%fLoad

Load on first generator = 290.32 MW
Load on second generator = 309.68 MW
Frequency at load = 48.06 Hz


## exa 5.15 page 169¶

In :
from math import sqrt
G=100 #MVA
f=50 #Hz
delL=50 #MW
Tc=0.4 #sec
H=5 #/kWs/kVA
KE=G*1000*H #kWs
delKE=delL*1000*Tc ##kWs#/due to decrease in load
fnew=sqrt((KE+delKE)/KE) *f #Hz
fdev=(fnew-f)/f*100 #%
print "New frequency = %0.2f Hz "%fnew
print "Frequency deviation = %0.2f %%"%fdev

New frequency = 50.99 Hz
Frequency deviation = 1.98 %


## exa 5.16 page 169¶

In :
from math import sqrt
G=100 #MVA
f=50 #Hz
delL=60 #MW
Tc=0.35 #sec
H=5 #/kWs/kVA
KE=G*1000*H #kWs
delKE=(G-delL)*1000*Tc ##kWs#/due to decrease in load
fnew=sqrt((KE+delKE)/KE) *f #Hz
fdev=(fnew-f)/f*100 #%
print "New frequency = %0.2f Hz "%fnew
print "Frequency deviation = %0.2f %%" %fdev

New frequency = 50.70 Hz
Frequency deviation = 1.39 %


## exa 5.17 page 169¶

In :
from math import sqrt
KE=1500 #MJ
Pin=5 #MW
f=50 #Hz
t=1 #sec
delKE=Pin*t ##MJ#/due to power inputs
fnew=sqrt((KE+delKE)/KE) *f #Hz
delf=fnew-f #/Hz/second
print "Frequency increase rate = %0.2f Hz/sec "%delf

Frequency increase rate = 0.08 Hz/sec


## exa 5.18 page 169¶

In :
C=2000 #MW#/Capacity
H=5 #kWs/KVA
R=2.4 #Hz/puMW#Regulation
f=50 #Hz
delL=1 #%##change in load
delf=1 #%##change in frequency
D=delL/delf*L/f #MW/Hz
D=D/C #p.u.MW/Hz
Kp=1/D #Hz/p.u.MW
Tp=2*H/f/D #sec
print "Primary ALFC loop parameters are : "
print "D = ",D,"p.u.MW/Hz"
print "Kp = ",Kp,"Hz/p.u.MW"
print "Tp = ",Tp,"sec "

Primary ALFC loop parameters are :
D =  0.01 p.u.MW/Hz
Kp =  100.0 Hz/p.u.MW
Tp =  20.0 sec


## exa 5.19 page 170¶

In :
from sympy import symbols
Tp=10 #sec
Tg=0 #sec
Tt=0 #sec
Kp=100 #Hz/p.u.MW
R=3 #/Hz/CuMW
delPD=0.1 #p.u.
Ki=0.1 #constant
f=50 #Hz
s=symbols('s')
delFs=-Kp/Tp*(delPD/(s**2+s*((1+Kp/R)/Tp)+Ki*Kp/Tp))
n=1 #cycle
time_error=n/f #sec
print "Total time error = %0.3f sec"%time_error

Total time error = 0.020 sec


## exa 5.20 page 171¶

In :
L=14 #MW#Total Load
C1=15 #MW
R1=3 #%#speed regulation
C2=4 #MW
R2=4 #%#speed regulation
LB=4 #MW#Load on bus bar
LA=10 #MW#/Load on bus bar
f=50 #Hz
#Load on station A= L1 MW
#Load on station B= L-L1 MW
#f-C1*f/100*(L1/C1)=f-C2*f/100*(L2/C2)
L1=R2*L/C2/(R1/C1+R2/C2) #MW
L2=L-L1 #MW
print "Load generation at station A = %0.2f MW "%L1
print "Load generation at station B = %0.2f MW "%L2
Pt=L1-LA #MW#Power transmitted A to B
f_oper=f-R1/100/C1*(L1)*f #Hz
print "Operating Frequency = %0.2f Hz "%f_oper

Load generation at station A = 11.67 MW
Load generation at station B = 2.33 MW
Operating Frequency = 48.83 Hz


## exa 5.21 page 171¶

In :
C1=300 #MW
C2=400 #MW
G1=4 #%#droop characteristics of governer
G2=6 #%#droop characteristics of governer
L=400 #MW
f=50 #Hz
L1=C1*L/(C1+C2) #MW#Load on 300 MW generator
L2=L*C2/(C1+C2) #MW#Load on 400 MW generator
f01=f*(C1)/(C1-G1/100*L1) #Hz#/No load frequency
print "No load frequency of 300 MW generator = %0.2f Hz "%f01
f02=f*(C2)/(C2-G2/100*L2) #Hz#/No load frequency
print "No load frequency of 400 MW generator = %0.2f Hz "%f02

No load frequency of 300 MW generator = 51.17 Hz
No load frequency of 400 MW generator = 51.78 Hz


## exa 5.22 page 174¶

In :
C1=200 #MW
C2=100 #MW
R1=1.5 #%#speed regulation
R2=3 #%#speed regulation
L=100 #MW#/Load on each bus
f=50 #Hz
RA=R1/100*f/C1 #Hz/MW
RB=R2/100*f/C2 #Hz/MW
#Let PA= generation at plant A
#PB=2*L-PA will be generation at plant B
#RA*PA=RB*PB
PA=RB*2*L/(RA+RB) #MW
PB=2*L-PA #MW
print "Load generation at plant A = %0.2f MW "%PA
print "Load generation at plant B = %0.2f MW "%PB
Pt=PA-L #MW#/Power transfer
print "Power transfer from A to B = %0.2f MW "%Pt

Load generation at plant A = 160.00 MW
Load generation at plant B = 40.00 MW
Power transfer from A to B = 60.00 MW


## exa 5.23 page 174¶

In :
from math import acos, pi
from cmath import rect
Z=1.5+1J*2.5 #ohm
V=11 #kV
P=20 #MW
pf=0.8 #power factor
theta=acos(pf*pi/180)
I=P*1000/sqrt(3)/V/pf #
I=rect(I,-theta*pi/180) #A\
Vdrop=I*Z #V
Vboost=Vdrop #V
print "Voltage boost needed at station A = ",(Vboost),"V"

Voltage boost needed at station A =  (2056.63661402+3225.71419437j) V


## exa 5.24 page 174¶

In :
from math import degrees, atan, sin, acos, cos, pi
Z=3+1J*9 #%#/impedence
Z=Z/100 #p.u.#/Impedence
I=1 #p.u.
IZ=Z #p.u.
print "Part(a)"
#2*I**2-2*cos(del)=[abs(IZ)]**2
cos_del=degrees(acos((2*I**2-(abs(IZ))**2)/2)) #degree
print "Phase angle between two station = %0.2f degree "%cos_del
angle_abc=87.277 #/degree
theta=180-angle_abc-degrees(atan((IZ).imag/(IZ).real)) #degree
Preal=I**2*cos(pi/180*theta) #p.u.
print "Real power transfer = %0.2f p.u. "%Preal
Preactive=I**2*sin(pi/180*theta) #p.u.
print "Reactive power transfer = %0.2f p.u."%Preactive
print "Part(b)"
#1.05**2+1**2-2*1.05*cos(del)=[abs(IZ)]**2
cos_del=degrees(acos((1.05**2+1**2-(abs(IZ))**2)/2/1.05)) #degree
print "Phase angle between two station = %0.2f degree "%cos_del
angle_dbc=60.53 #/degree
theta=degrees(atan((IZ).imag/(IZ).real))-angle_dbc#degree
Preal=I**2*cos(pi/180*theta) #p.u.
print "Real power transfer = %0.2f p.u. "%Preal
Preactive=I**2*sin(pi/180*theta) #p.u.
print "Reactive power transfer = %0.2f p.u. "%Preactive
#Answer in the textbook is not accurate.

Part(a)
Phase angle between two station = 5.44 degree
Real power transfer = 0.93 p.u.
Reactive power transfer = 0.36 p.u.
Part(b)
Phase angle between two station = 4.51 degree
Real power transfer = 0.98 p.u.
Reactive power transfer = 0.19 p.u.