Flujos de CD
Ybus
Datos del sistema
Conteo de variables
Inicio de NR
Cálculo de P
Submatriz H
Solucion de voltajes
Actualización de los voltajes
Cálculo del error
Presentación de resultados
Flujos de CD
clear all
clc
Ybus
Se introducen los datos de las líneas | From | To | R | X | B/2 | X' | | Bus | Bus | pu | pu | pu | TAP (a) |
line = [1 2 0 0.05917 0 1
1 5 0 0.22304 0 1
2 3 0 0.19797 0 1
2 4 0 0.17632 0 1
2 5 0 0.17388 0 1
3 4 0 0.17103 0 1
4 5 0 0.04211 0 1
4 7 0 0.20912 0 1
4 9 0 0.55618 0 1
5 6 0 0.25202 0 1
6 11 0 0.19890 0 1
6 12 0 0.25581 0 1
6 13 0 0.13027 0 1
7 8 0 0.17615 0 1
7 9 0 0.11001 0 1
9 10 0 0.08450 0 1
9 14 0 0.27038 0 1
10 11 0 0.19207 0 1
12 13 0 0.19988 0 1
13 14 0 0.34802 0 1 ];
%Se determina entre que líneas se encuentra la impedancia
de=line(:,1);
para=line(:,2);
R=line(:,3); %Resistencia de la líneas
X=line(:,4); %Reactancia de la línea
B=1i*line(:,5); %Admitancia
a=line(:,6); %Tap
Z=R+i*X; %Impedancia
y=1./Z;
n=max(max(de),max(para));
e=length(de);
Yp=zeros(e+n,e+n);
A=zeros(e+n,n); %Se determina el tamaño de la matriz A
for i=1:n
for j=1:n
if(i==j)
A(i,i)=1; %Diagonal de la matriz A
end
end
end
%Se obtienen los elementos fuera de la diagonal en la matriz A
for i=n+1:n+e
for j=1:n
if(de(i‐n)~=0)
A(i,de(i‐n))=1;
end
if(para(i‐n)~=0)
A(i,para(i‐n))=‐1;
end
end
end
% Se crea la matriz de admitancias primitivas
for i=1:e
Yp(i+n,i+n)=y(i)/a(i);
Yp(de(i),de(i))=Yp(de(i),de(i))+B(i)+(1‐a(i))*y(i)/(a(i)^2);
Yp(para(i),para(i))=Yp(para(i),para(i))+B(i)+(a(i)‐1)*y(i)/a(i);
end
Y=A'*Yp*A; %Ybus
clear i
clear a
clear n
clear e
Datos del sistema
| Tipo de | V | P | Q |
| Bus | pu | pu | pu |
B= [0 1.06 0 0;
1 1.045 18.3/100 0;
1 1.01 ‐94.2/100 0;
2 1 ‐47.8/100 3.9/100;
2 1 ‐7.6/100 ‐1.6/100;
1 1.07 ‐11.2/100 0;
2 1 0 0;
1 1.09 0 0;
2 1 ‐29.5/100 ‐16.6/100;
2 1 ‐9/100 ‐5.8/100;
2 1 ‐3.5/100 ‐1.8/100;
2 1 ‐6.1/100 ‐1.6/100;
2 1 ‐13.5/100 ‐5.8/100;
2 1 ‐14.9/100 ‐5/100];
n=size(B);
n=n(1,1);
d=0;
v=0;
w=0;
t=0.0001; %Tolerancia
Conteo de variables
for a=1:n
if B(a,1)==2
d=d+1; %Número de incognitas en angulo
end
if B(a,1)==1
d=d+1; %Número de incognitas en angulo
w=w+1; %Número de buses de voltaje controlado
end
end
total=d; %Número total de incognitas
z=total‐1; %Se le asigna un valor inicial a z solo para iniciar el ciclo
ni=0; %Número de iteraciones
Inicio de NR
while z<total
ni=ni+1;
c=0;
P=zeros(d,1); %Se crea la matriz de P
Cálculo de P
Submatriz H
H=zeros(d,d); %Tamaño de H
c=0;
e=0;
for a=1:n
if B(a,1)==2 || B(a,1)==1
c=c+1;
for b=1:n
if B(b,1)==1 || B(b,1)==2
e=e+1;
if a==b
H(c,e)=‐abs(Y(a,a))*sin(angle(Y(a,a))); %Elementos de la diagonal
else
H(c,e)=‐abs(Y(a,b))*sin(angle(Y(a,b))); %Elementos fuera de la diagonal
end
end
end
e=0;
end
end
c=0;
e=0;
Solucion de voltajes
Vn=inv(H)*P; %Cálculo de angulos
b=0;
Actualización de los voltajes
for a=1:n
if B(a,1)==1
b=b+1;
x=abs(B(a,2));
y=angle(B(a,2))+Vn(b,1); %Aumento de angulos en buses de voltaje controlado
B(a,2)=x*exp(1i*y);
end
if B(a,1)==2
b=b+1;
x=abs(B(a,2));
y=angle(B(a,2))+Vn(b,1); %Aumento de angulos en buses de carga
B(a,2)=x*exp(1i*y);
end
end
z=0;
Cálculo del error
end
Presentación de resultados
ni
V=zeros(n,2);
%Se transforman los voltajes de rectangular a polar
for a=1:n
V(a,1)=abs(B(a,2));
V(a,2)=angle(B(a,2));
V(a,2)=rad2deg(V(a,2));
end
V
ni =
4
V =
1.0600 0
1.0450 ‐4.5638
1.0100 ‐12.1988
1.0000 ‐9.9311
1.0000 ‐8.4746
1.0700 ‐14.2962
1.0000 ‐13.3324
1.0900 ‐13.3324
1.0000 ‐15.1209
1.0000 ‐15.3945
1.0000 ‐15.0258
1.0000 ‐15.3381
1.0000 ‐15.5106
1.0000 ‐16.5905