Mini Project Report Power System ..
Mini Project Report Power System ..
1. ALI HOSSAIN
2
Input data for the analysis:
clc, clear global basemva basemva = 100; accuracy = 0.001; accel =
1.8; maxiter = 100;
% Line code
% Bus bus R X 1/2 B = 1 for lines
% nl nr p.u. p.u. p.u. > 1 or < 1 tr. tap at bus nl linedata=[1 4 0.035 0.225
0.0065 1
1 5 0.025 0.105 0.0045 1 1 6 0.040 0.215 0.0055 1
2 4 0.000 0.035 0.0000 1
3 5 0.000 0.042 0.0000 1
4 6 0.028 0.125 0.0035 1
5 6 0.026 0.175 0.0300 1];
% Gen. Ra Xd'
gendata=[1 0 0.20
2 0 0.15
3 0 0.25];
3
end
end
% formation of the diagonal elements for
n=1 nbus for k=1 nbr
if nl(k)==n
Ybus(n,n) = Ybus(n,n)+y(k)/(a(k)^2) + Bc(k); elseif
nr(k)==n
Ybus(n,n) = Ybus(n,n)+y(k) +Bc(k); else,
end
end
end clear
Pgg
4
if nl(i) == n, l = nr(i); end if
nr(i) == n, l = nl(i); end
J11=J11+ Vm(n)*Vm(l)*Ym(n,l)*sin(t(n,l)- delta(n) + delta(l));
J33=J33+ Vm(n)*Vm(l)*Ym(n,l)*cos(t(n,l)- delta(n) + delta(l)); if
kb(n)~=1
J22=J22+ Vm(l)*Ym(n,l)*cos(t(n,l)- delta(n) + delta(l)); J44=J44+
Vm(l)*Ym(n,l)*sin(t(n,l)- delta(n) + delta(l));
else, end if kb(n) ~= 1 & kb(l)
~=1 lk = nbus+l-ngs(l)-nss(l)-ns;
ll = l -nss(l);
% off diagonalelements of J1
A(nn, ll) =-Vm(n)*Vm(l)*Ym(n,l)*sin(t(n,l)- delta(n) + delta(l)); if kb(l)
== 0 % off diagonal elements of J2
A(nn, lk) =Vm(n)*Ym(n,l)*cos(t(n,l)- delta(n) + delta(l));end if
kb(n) == 0 % off diagonal elements of J3
A(lm, ll) =-Vm(n)*Vm(l)*Ym(n,l)*cos(t(n,l)- delta(n)+delta(l)); end if kb(n)
== 0 & kb(l) == 0 % off diagonal elements of J4
A(lm, lk) =-Vm(n)*Ym(n,l)*sin(t(n,l)- delta(n) + delta(l));end else end
else , end
end
Pk = Vm(n)^2*Ym(n,n)*cos(t(n,n))+J33; Qk = -
Vm(n)^2*Ym(n,n)*sin(t(n,n))-J11; if kb(n) == 1 P(n)=Pk;
Q(n) = Qk; end % Swing bus P
if kb(n) == 2 Q(n)=Qk;
if Qmax(n) ~= 0
Qgc = Q(n)*basemva + Qd(n) - Qsh(n); if iter <= 7 %
Between the 2th & 6th iterations if iter > 2 % the Mvar of
generator buses are
if Qgc < Qmin(n), % tested. If not within limits Vm(n)
Vm(n) = Vm(n) + 0.01; % is changed in steps of 0.01 pu to elseif
Qgc > Qmax(n), % bring the generator Mvar within Vm(n) = Vm(n)
- 0.01;end % the specified limits. else, end else,end
else,end
end
if kb(n) ~= 1
A(nn,nn) = J11; %diagonal elements of J1
DC(nn) = P(n)-Pk;
end if kb(n) == 0
A(nn,lm) = 2*Vm(n)*Ym(n,n)*cos(t(n,n))+J22; %diagonal elements of J2
A(lm,nn)= J33; %diagonal elements of J3
A(lm,lm) =-2*Vm(n)*Ym(n,n)*sin(t(n,n))-J44; %diagonal of elements of J4
DC(lm) = Q(n)-Qk; end
end DX=A\DC';
for n=1 nbus
nn=n-nss(n); lm=nbus+n-ngs(n)-
nss(n)-ns; if kb(n) ~= 1 delta(n) =
delta(n)+DX(nn); end if kb(n) == 0
5
Vm(n)=Vm(n)+DX(lm); end end
maxerror=max(abs(DC));
if iter == maxiter & maxerror > accuracy
fprintf('\nWARNING: Iterative solution did not converged after ')
fprintf('%g', iter), fprintf(' iterations.\n\n')
fprintf('Press Enter to terminate the iterations and print the results \n') converge = 0; pause,
else, end
end
if converge ~= 1
tech= (' ITERATIVE SOLUTION DID NOT CONVERGE'); else, tech=(' Power
Flow Solution by Newton-Raphson Method');
end
V = Vm.*cos(delta)+j*Vm.*sin(delta); deltad=180/pi*delta;
i=sqrt(-1); k=0;
for n = 1 nbus
if kb(n) == 1 k=k+1;
S(n)= P(n)+j*Q(n);
Pg(n) = P(n)*basemva + Pd(n);
Qg(n) = Q(n)*basemva + Qd(n) - Qsh(n);
Pgg(k)=Pg(n);
Qgg(k)=Qg(n); %june 97
elseif kb(n) ==2 k=k+1;
S(n)=P(n)+j*Q(n);
Qg(n) = Q(n)*basemva + Qd(n) - Qsh(n);
Pgg(k)=Pg(n);
Qgg(k)=Qg(n); % June 1997 end
yload(n) = (Pd(n)- j*Qd(n)+j*Qsh(n))/(basemva*Vm(n)^2); end
busdata(:,3)=Vm'; busdata(:,4)=deltad';
Pgt = sum(Pg); Qgt = sum(Qg); Pdt = sum(Pd); Qdt = sum(Qd); Qsht = sum(Qsh);
ng=length(gendata(:,1));
nlg=gendata(:,1); nrg=gendata(:,2);
6
if R(k) == inf | X(k) == inf R(k) =
99999999; X(k) = 99999999;
else, end
end
if nc > 4
BC = linedata(:,5); for n =
1 nbus yc(n) = 0; nlc(n)
= 0; nrc(n) = n;
for k = 1 nbr
if nl(k) == n | nr(k) == n yc(n)
= yc(n) + j*BC(k); else, end
end
end
elseif nc==4 yc= zeros(1, nbr); end
nlc=nlc'; nrc=nrc'; yc=yc.';
ZB = R + j*X;
if exist('yload') == 1
yload = yload.'; yc
=yc + yload;
else, end
m = 0; for n = 1
nbus
if abs(yc(n)) ~=0
m=m+1; nlcc(m) =
nlc(n); nrcc(m) =
nrc(n); zc(m) =
1/yc(n); else, end
end
nlcc=nlcc'; nrcc=nrcc'; zc=zc.';
nl=[nlg; nlcc; nl]; nr = [nrg; nrcc; nr]; ZB = [zg; zc; ZB];
linedata=[nl nr real(ZB) imag(ZB)]; nbr= length(nl); Zbus =
zeros(nbus, nbus); tree=0; %%%%new
% Adding a branch from a new bus to reference bus 0 for I =
1 nbr ntree(I) = 1;
if nl(I) == 0 | nr(I) == 0
if nl(I) == 0 n = nr(I); elseif nr(I)
== 0 n = nl(I);
end
if abs(Zbus(n, n)) == 0 Zbus(n,n) = ZB(I); tree=tree+1; %%new else
Zbus(n,n) = Zbus(n,n)*ZB(I)/(Zbus(n,n) + ZB(I));
end
ntree(I) = 2;
else,end
end
7
% Adding a branch from new bus to an existing bus while tree <
nbus %%% new
for n = 1 nbus
nadd = 1; if
abs(Zbus(n,n)) == 0
for I = 1 nbr
if nadd == 1
if nl(I) == n | nr(I) == n
if nl(I) == n k = nr(I); elseif
nr(I) == n k = nl(I); end
if abs(Zbus(k,k)) ~= 0 for
m = 1 nbus
if m ~= n
Zbus(m,n) = Zbus(m,k);
Zbus(n,m) = Zbus(m,k); else,
end
end
Zbus(n,n) = Zbus(k,k) + ZB(I); tree=tree+1; %%new nadd
= 2; ntree(I) = 2; else, end
else, end
else, end
end
else, end
end
end %%%%%%new
8
function symfaul(zdata, Zbus, V) global
basemva
for n = 1 nbus if
n==nf
Vf(nf) = V0(nf)*Zf/(Zf + Zbus(nf,nf)); Vfm = abs(Vf(nf)); angv=angle(Vf(nf))*180/pi; else,
Vf(n) = V0(n) - V0(n)*Zbus(n,nf)/(Zf + Zbus(nf,nf)); Vfm = abs(Vf(n));
angv=angle(Vf(n))*180/pi;
end
fprintf(' %4g', n), fprintf('%13.4f', Vfm),fprintf('%13.4f\n', angv)
end
fprintf(' \n')
9
fprintf('Line currents for fault at bus No. %g\n\n', nf) fprintf('
From To Current Angle\n') fprintf(' Bus Bus
Magnitude degrees\n')
for n= 1 nbus
%Ign=0; for I
= 1 nbr
if nl(I) == n | nr(I) == n
if nl(I) ==n k = nr(I); elseif nr(I)
== n k = nl(I);
end
if k==0
Ink = (V0(n) - Vf(n))/ZB(I);
Inkm = abs(Ink); th=angle(Ink);
%if th <= 0
if real(Ink) > 0
fprintf(' G '), fprintf('%7g',n), fprintf('%12.4f',
Inkm) fprintf('%12.4f\n', th*180/pi) elseif real(Ink) ==0 &
imag(Ink) < 0
fprintf(' G '), fprintf('%7g',n), fprintf('%12.4f', Inkm)
fprintf('%12.4f\n', th*180/pi)
else, end
Ign=Ink; elseif
k ~= 0
Ink = (Vf(n) - Vf(k))/ZB(I)+BC(I)*Vf(n);
%Ink = (Vf(n) - Vf(k))/ZB(I);
Inkm = abs(Ink); th=angle(Ink);
%Ign=Ign+Ink;
%if th <= 0
if real(Ink) > 0 fprintf('%7g', n),
fprintf('%10g', k),
fprintf('%12.4f', Inkm), fprintf('%12.4f\n', th*180/pi)
elseif real(Ink) ==0 & imag(Ink) < 0 fprintf('%7g', n),
fprintf('%10g', k),
fprintf('%12.4f', Inkm), fprintf('%12.4f\n', th*180/pi) else, end
else, end
else, end
end
if n==nf
fprintf('%7g',n), fprintf(' F'), fprintf('%12.4f', Ifm) fprintf('%12.4f\n', Ifmang)
else, end
end
resp=0;
while strcmp(resp, 'n')~=1 & strcmp(resp, 'N')~=1 & strcmp(resp, 'y')~=1 & strcmp(resp, 'Y')~=1 resp =
input('Another fault location? Enter ''y'' or ''n'' within single quote -> '); if strcmp(resp, 'n')~=1 &
10
strcmp(resp, 'N')~=1 & strcmp(resp, 'y')~=1 & strcmp(resp, 'Y')~=1 fprintf('\n Incorrect reply, try again
\n\n'), end end
if resp == 'y' | resp == 'Y'
nf = 999; else ff
= 0; end
end % end for while
Result :
1)Three phase fault at bus 6 Enter
Faulted Bus No. -> 6
Enter Fault Impedance Zf = R + j*X in complex form (for bolted fault enter 0). Zf = 0
2.
i)Fault at bus 4
Enter Faulted Bus No. -> 4
Enter Fault Impedance Zf = R + j*X in complex form (for bolted fault enter 0). Zf = 0
11
Balanced three-phase fault at bus No. 4
Total fault current = 10.4091 per unit
Enter Fault Impedance Zf = R + j*X in complex form (for bolted fault enter 0). Zf = 0
12
6 0.3838 2.7534
Line currents for fault at bus No. 5
3.Comparing SCC:
SCC at bus 4 1040.9071 MVA
SCC at bus 5 986.0582 MVA
SCC at bus 6 880.5796 MVA
THEEND
13