Program:: 'Ybus /N/N (' '/B/B) P.u/n/n'

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 4

Program:

clc;
clear;
j=sqrt(-1);
ldata=[1 2 0.045 0.13 1 0.04
1 3 0.2 0.32 1 0.02
2 3 0.15 0.45 0.945 0
2 4 0.2 0.32 0.986 0
3 4 0.045 0.13 1 0.015 ];
bdata=[1 1.05 0 0 0
2 1 0 0.45 0.22
3 1 0 -0.98 0.4
4 1 0 0.32 -0.15 ];
fb=ldata(:,1);
tb=ldata(:,2);
r=ldata(:,3);
x=ldata(:,4);
a=ldata(:,5);
ysh=ldata(:,6);
nbus=max(max(fb),max(tb));
nline=length(fb);
z=r+x*1i;
y=1./z;
ysh=ysh*1i;
ybus=zeros(nbus,nbus);
for k=1:nline
ybus(fb(k),tb(k))= -(y(k)/a(k));
ybus(tb(k),fb(k))= ybus(fb(k),tb(k));
end
for m=1:nbus
for n=1:nline
if fb(n)==m

ybus(m,m)=ybus(m,m)+(y(n)/(a(n)^2))+((ysh(n)/2));
else if tb(n)==m
ybus(m,m)=ybus(m,m)+y(n)+((ysh(n)/2));
end
end
end
end
fprintf('Ybus= \n\n[')
disp(ybus)
fprintf('\b\b] p.u\n\n')
ym=abs(ybus);
theta=angle(ybus);
iter=0;
tol=1;
b=bdata(:,1);
vm=bdata(:,2);
d=bdata(:,3);
ps=bdata(:,4);
qs=bdata(:,5);
vmn=vm;
dn=d;
while(tol>0.0001)
pcal=zeros(nbus,1);
qcal=zeros(nbus,1);
for i=1:nbus
for k=1:nbus
pcal(i)=pcal(i)+(vm(i)*ym(i,k)*vm(k)*(cos(theta(i,k)-d(i)+d(k))));
qcal(i)=qcal(i)-(vm(i)*ym(i,k)*vm(k)*(sin(theta(i,k)-d(i)+d(k))));
end
end
dpa=ps-pcal;
dqa=qs-qcal;
m=[dpa(2:nbus);dqa(2:nbus)];
tol=max(abs(m));
J1=zeros(nbus-1,nbus-1);
for i=2:nbus
J1(i-1,i-1)=J1(i-1,i-1)-(vm(i)*ym(i,i)*sin(theta(i,i)));
for k=2:nbus
if i~=k
J1(i-1,k-1)=J1(i-1,k-1)-(vm(i)*ym(i,k)*sin(theta(i,k)+d(k)-d(i)));
end
end
end
J2=zeros(nbus-1,nbus-1);
J3=zeros(nbus-1,nbus-1);
J4=zeros(nbus-1,nbus-1);
for i=2:nbus
J4(i-1,i-1)=J4(i-1,i-1)-(vm(i)*ym(i,i)*sin(theta(i,i)));
for k=2:nbus
if i~=k
J4(i-1,k-1)=J4(i-1,k-1)-(vm(i)*ym(i,k)*sin(theta(i,k)+d(k)-d(i)));
end
end
end
J=[J1 J2;J3 J4];
D=J\m;
dl=D(1:nbus-1);
vl=D(nbus:end);
dn(2:nbus)=d(2:nbus)+dl;
vmn(2:nbus)=vm(2:nbus)+vl;
vm=vmn;
d=dn;
iter=iter+1;
if(iter==1)
fprintf('Iteration=\n')
disp(iter)
fprintf('\n\nJ=\n[')
disp(J)
fprintf('\b\b] \n')
fprintf('\nVoltages=\n[')
disp(vm)
fprintf('\b\b p.u \n')
fprintf('\nAngles=\n[')
disp(d)
fprintf('\b\b] rad\n\n')
end
end
fprintf('Iteration=\n')
disp(iter)
fprintf('\n\nJ=\n[')
disp(J)
fprintf('\b\b] \n')
fprintf('\nVoltages=\n[')
disp(vm)
fprintf('\b\b p.u \n')
fprintf('\nAngles=\n[')
disp(d)
fprintf('\b\b] rad\n\n')

Output:
Ybus=

[ 3.7823 - 9.0864i -2.3778 + 6.8692i -1.4045 + 2.2472i 0.0000 + 0.0000i


-2.3778 + 6.8692i 4.5690 -11.4003i -0.7055 + 2.1164i -1.4244 + 2.2791i
-1.4045 + 2.2472i -0.7055 + 2.1164i 4.4490 -11.0989i -2.3778 + 6.8692i
0.0000 + 0.0000i -1.4244 + 2.2791i -2.3778 + 6.8692i 3.7823 - 9.1089i] p.u

Iteration=
1

J=
[ 11.4003 -2.1164 -2.2791 0 0 0
-2.1164 11.0989 -6.8692 0 0 0
-2.2791 -6.8692 9.1089 0 0 0
0 0 0 11.4003 -2.1164 -2.2791
0 0 0 -2.1164 11.0989 -6.8692
0 0 0 -2.2791 -6.8692 9.1089]
Voltages=
[ 1.0500
1.0917
1.1545
1.1273 p.u

Angles=
[ 0
0.0233
-0.0887
-0.0238] rad

Iteration=
15

J=
[ 12.2473 -2.3398 -2.5143 0 0 0
-2.1850 11.9342 -7.2226 0 0 0
-2.3719 -7.4990 9.7618 0 0 0
0 0 0 12.2473 -2.3398 -2.5143
0 0 0 -2.1850 11.9342 -7.2226
0 0 0 -2.3719 -7.4990 9.7618]

Voltages=
[ 1.0500
1.0743
1.0753
1.0717 p.u

Angles=
[ 0
-0.0080
-0.1116
-0.0526] rad

You might also like