You are on page 1of 2

function [Ybus , VN] = pfsg(nbus,nlns,ld,pfbd,accrucy)

%Program for performing power flow studies


%I- Assembly of Ybus from line data
Ybus = zeros(nbus);
VP(nbus,1)=0;
VN(nbus,1)=0;
for k=1:nlns;
m=1d(k,1);
n=1d(k,2);
Ybus(m,m)=Ybus(m,m)+1/1d(k,3)+1d(k,4);
Ybus(n,n)=Ybus(n,n)+1/1d(k,3)+1d(k,4);
Ybus(m,n)=-1/1d(k,3);
Ybus(n,m)=Ybus(m,n);
end
Ybus
itr=0;
count=0;
%Gauss-Seidal iteration method
VP(1)=input('slack bus voltage');
for k=2:nbus;
if pfbd(k,1)==0;
VP(k)=VP(1);
else
VP(k)= pfbd(k,3);
end
end
while count <= nbus-1;
sum=0;
itr=itr+1;
for k=2:nbus;
if pfbd(k,1)==0;
I(k)=(pfbd)(k,2)-pfbd(k,4)+i*(pfbd(k,3)-pfbd(k,5)))/(VP(k))';
else
sum=0;
for m=1:nbus;
sum=sum+Ybus(k,m)*VP(m);
end
q(k)=imag(VP(k)*(sum)');
I(k)=((pfbd(k,2)+i*q(k))/(Vp(k)))';
end
sum=0;
for m=1:nbus;
if m~=k;
sum=sum+Ybus(k,m)*VP(m);
else
end
end
VN(k)=(I(k)-sum)/Ybus(k,k);
if abs(real(VN(k))-real(VP(k))) <=accrucy;
count=count+0.5;
else
end
if abs(imag(VN(k))-imag(VP(k))) <= accrucy;
count=count+0.5;
else
end
if pfbd(k,1)==0;
VP(k)=VN(k);

else
z=imag(VN(k));
zz=(pfbd(k,3)^2-(z^2)^0.5;
VN(k)=zz+i*z;
VP(k)=VN(k);
end
end
end
fprintf('iteration voltage voltage\n')
for k=1:nbus;
fprintf('%6.2f\',itr);
fprintf('%13.4f\',real(VP(k)));
fprintf('%15.4f\n',imag(VP(k)));
end

You might also like