Está en la página 1de 6

clear all busdata = [ 1 1 1.

01 0 0 0 0 0 0 0 0;
clc 2 0 1.00 0 60 35 0 0 0 0 0;
% ANALISIS DE FLUJOS DE POTENCIA 3 0 1.00 0 70 42 0 0 0 0 0;
%POR EL METODO DE NEWTON-RAPHSON 4 0 1.00 0 80 50 0 0 0 0 0;
5 0 0.92 0 65 36 190 0 0 0 0;];

%DURANTE ESTE ANALISIS LOS VOLTAJES Y LOS PARAMETROS


DE LINEA ESTAN EN P.U. %Se ingrasan los parametros de las lineas:
%LA POTENCIA ACTIVA Y REACTIVA ESTAN DADOS EN MW Y % Columna 1-2 columnas
MVARs 3-5 Columnas 6
%
% bus(p)a bus(q) 3 -
Resistencia pu es igual a 1 si es una
linea de transmision o
basemva=100; tolerancia =0.0001; maxiter=100; % 0 - bus de carga 4 -
Reactancia pu datos de tap de
transformador
%Se ingrasan datos de los Buses donde: % 1 - bus de referencia 5 - 1/2
% Columna 1 Columna 2 admitancia en derivacion
columnas 3-4 Columnas 5-6 Columnas % 2 - bus de voltaje controlado
7-8 Columna 9-10 Columna 11
% linedata = [ 1 2 2.5 -15 0 1;
% #de BUS Tipo de Bus 3 - 1 4 2.5 -10 0 1;
magnitud de voltaje 5 - carga MW 7 - MW 1 5 5 -20 0 1;
generados 9 - MW (min y max) MVARs 2 3 0 -25 0.007347 0.9857;
inyectados 3 5 4 -16 0 1;
% 0 - bus de carga 4 - 4 5 4 -18 0 1;
angulo de fase 6 - carga MVARs 8 - MVARS ];
generados 10- MVARs (min y max) shunt capacitor
% 1 - bus de referencia % PROGRAMA PARA CONTRUCCION DE YBUS
% 2 - bus de voltaje controlado % Copyright (c) 1998 by H. Saadat
j=sqrt(-1); i = sqrt(-1); ns=0; ng=0; Vm=0; delta=0; yload=0; deltad=0;
nl = linedata(:,1); nr = linedata(:,2); R = nbus = length(busdata(:,1));
linedata(:,3); kb=[];Vm=[]; delta=[]; Pd=[]; Qd=[]; Pg=[]; Qg=[];
X = linedata(:,4); Bc = j*linedata(:,5); a = Qmin=[]; Qmax=[];
linedata(:, 6); Pk=[]; P=[]; Qk=[]; Q=[]; S=[]; V=[];
nbr=length(linedata(:,1)); nbus = max(max(nl), for k=1:nbus
max(nr)); n=busdata(k,1);
Z = R + j*X; y= ones(nbr,1)./Z; %ADMITANCIA DE kb(n)=busdata(k,2); Vm(n)=busdata(k,3);
RAMAL delta(n)=busdata(k, 4);
for n = 1:nbr Pd(n)=busdata(k,5); Qd(n)=busdata(k,6);
if a(n) <= 0 a(n) = 1; else end Pg(n)=busdata(k,7); Qg(n) = busdata(k,8);
Ybus=zeros(nbus,nbus); % SE INICIA PARA YBUS CERO Qmin(n)=busdata(k, 9); Qmax(n)=busdata(k, 10);
% FORMACION DE LOS ELEMENTOS FUERA DE Qsh(n)=busdata(k, 11);
LA DIAGONAL if Vm(n) <= 0 Vm(n) = 1.0; V(n) = 1 + j*0;
for k=1:nbr; else delta(n) = pi/180*delta(n);
Ybus(nl(k),nr(k))=Ybus(nl(k),nr(k))-y(k)/a(k); V(n) = Vm(n)*(cos(delta(n)) +
Ybus(nr(k),nl(k))=Ybus(nl(k),nr(k)); j*sin(delta(n)));
end P(n)=(Pg(n)-Pd(n))/basemva;
end Q(n)=(Qg(n)-Qd(n)+ Qsh(n))/basemva;
% FORMACION DE LOS ELEMENTOS DE LA S(n) = P(n) + j*Q(n);
DIAGONAL end
for n=1:nbus end
for k=1:nbr for k=1:nbus
if nl(k)==n if kb(k) == 1, ns = ns+1; else, end
Ybus(n,n) = Ybus(n,n)+y(k)/(a(k)^2) + Bc(k); if kb(k) == 2 ng = ng+1; else, end
elseif nr(k)==n ngs(k) = ng;
Ybus(n,n) = Ybus(n,n)+y(k) +Bc(k); nss(k) = ns;
else, end end
end Ym=abs(Ybus); t = angle(Ybus);
end m=2*nbus-ng-2*ns;
clear Pgg maxerror = 1; converge=1;
% PROGRAMA PARA ANALISIS DE FLUJOS DE POTENCIA POR iter = 0;
NEWTON-RAPHSON %%%% PARA LINEAS EN PARALELO
mline=ones(nbr,1); J33=J33+ Vm(n)*Vm(l)*Ym(n,l)*cos(t(n,l)-
for k=1:nbr delta(n) + delta(l));
for m=k+1:nbr if kb(n)~=1
if((nl(k)==nl(m)) & (nr(k)==nr(m))); J22=J22+ Vm(l)*Ym(n,l)*cos(t(n,l)-
mline(m)=2; delta(n) + delta(l));
elseif ((nl(k)==nr(m)) & (nr(k)==nl(m))); J44=J44+ Vm(l)*Ym(n,l)*sin(t(n,l)-
mline(m)=2; delta(n) + delta(l));
else, end else, end
end if kb(n) ~= 1 & kb(l) ~=1
end lk = nbus+l-ngs(l)-nss(l)-ns;
%%% FIN ll = l -nss(l);
% ELEMENTOS FUERA DE LA DIAGONAL J1
A(nn, ll) =-
% INICIO DE ITERACIONES Vm(n)*Vm(l)*Ym(n,l)*sin(t(n,l)- delta(n) + delta(l));
clear A DC J DX if kb(l) == 0 % ELEMENTOS
while maxerror >= tolerancia & iter <= maxiter % FUERA DE LA DIAGONAL J2
COMPARACION DEL RESULTADO CON LA TOLERANCIA A(nn, lk)
for ii=1:m =Vm(n)*Ym(n,l)*cos(t(n,l)- delta(n) + delta(l));end
for k=1:m if kb(n) == 0 % ELEMENTOS
A(ii,k)=0; %CONTRUCCION DE JACOBIANO FUERA DE LA DIAGONAL J3
end, end A(lm, ll) =-
iter = iter+1; Vm(n)*Vm(l)*Ym(n,l)*cos(t(n,l)- delta(n)+delta(l));
for n=1:nbus end
nn=n-nss(n); if kb(n) == 0 & kb(l) == 0 %
lm=nbus+n-ngs(n)-nss(n)-ns; ELEMENTOS FUERA DE LA DIAGONAL J4
J11=0; J22=0; J33=0; J44=0; A(lm, lk) =-
for ii=1:nbr Vm(n)*Ym(n,l)*sin(t(n,l)- delta(n) + delta(l));end
if mline(ii)==1 else end
if nl(ii) == n | nr(ii) == n else , end
if nl(ii) == n , l = nr(ii); end else, end
if nr(ii) == n , l = nl(ii); end end
J11=J11+ Vm(n)*Vm(l)*Ym(n,l)*sin(t(n,l)- Pk = Vm(n)^2*Ym(n,n)*cos(t(n,n))+J33;
delta(n) + delta(l)); Qk = -Vm(n)^2*Ym(n,n)*sin(t(n,n))-J11;
if kb(n) == 1 P(n)=Pk; Q(n) = Qk; end % BUS DE end
REFERENCIA P end
if kb(n) == 2 Q(n)=Qk; DX=A\DC'
if Qmax(n) ~= 0 for n=1:nbus
Qgc = Q(n)*basemva + Qd(n) - Qsh(n); nn=n-nss(n);
if iter <= 7 % ENTRE LA lm=nbus+n-ngs(n)-nss(n)-ns;
2DA Y 7MA ITERACION if kb(n) ~= 1
if iter > 2 % MVARS DEL delta(n) = delta(n)+DX(nn); end
BUS DE GENERACION if kb(n) == 0
if Qgc < Qmin(n), % EXAMINA Vm(n)=Vm(n)+DX(lm); end
DENTRO DE LOS LIMITES DE V(m) end
Vm(n) = Vm(n) + 0.01; % maxerror=max(abs(DC));
elseif Qgc > Qmax(n), % DENTRO DE if iter == maxiter & maxerror > accuracy
PARAMETROS fprintf('\nCUIDADO: LA SOLUCION ITERATIVA NO
Vm(n) = Vm(n) - 0.01;end % CONVERGE DESPUES ')
ESPECIFICACION DE LIMITES fprintf('%g', iter), fprintf(' ITERACIONES.\n\n')
else, end fprintf('PRESIONA ENTER PARA TERMINAR LAS
else,end ITERACIONES Y MOSTRAR LOS RESULTADOS \n')
else,end converge = 0; pause, else, end
end
if kb(n) ~= 1 end
A(nn,nn) = J11; %ELEMETOS DE LA DIAGONAL DEL
JACOBIANO J1
DC(nn) = P(n)-Pk; if converge ~= 1
end tech= (' ITERATIVE SOLUTION
if kb(n) == 0 DID NOT CONVERGE'); else,
A(nn,lm) = 2*Vm(n)*Ym(n,n)*cos(t(n,n))+J22; tech=(' SOLUCION DE FLUJO DE POTENCIA POR
%ELEMETOS DE LA DIAGONAL DEL JACOBIANO J2 EL METODO DE NEWTON-RAPHSON');
A(lm,nn)= J33; %ELEMETOS DE LA DIAGONAL end
DEL JACOBIANO J3 V = Vm.*cos(delta)+j*Vm.*sin(delta);
A(lm,lm) =-2*Vm(n)*Ym(n,n)*sin(t(n,n))-J44; deltad=180/pi*delta;
%ELEMETOS DE LA DIAGONAL DEL JACOBIANO J4 i=sqrt(-1);
DC(lm) = Q(n)-Qk; k=0;
for n = 1:nbus %clc
if kb(n) == 1 disp(tech)
k=k+1; fprintf(' Error = %g \n',
S(n)= P(n)+j*Q(n); maxerror)
Pg(n) = P(n)*basemva + Pd(n); fprintf(' NUMERO DE
Qg(n) = Q(n)*basemva + Qd(n) - Qsh(n); ITERACIONES = %g \n\n', iter)
Pgg(k)=Pg(n); head =[' Bus Voltage Angle ------Load------
Qgg(k)=Qg(n); ---Generation--- Injected'
elseif kb(n) ==2 ' No. Mag. Degree MW Mvar
k=k+1; MW Mvar Mvar '
S(n)=P(n)+j*Q(n); '
Qg(n) = Q(n)*basemva + Qd(n) - Qsh(n); '];
Pgg(k)=Pg(n); disp(head)
Qgg(k)=Qg(n); for n=1:nbus
end fprintf(' %5g', n), fprintf(' %7.3f', Vm(n)),
yload(n) = (Pd(n)- fprintf(' %8.3f', deltad(n)), fprintf(' %9.3f',
j*Qd(n)+j*Qsh(n))/(basemva*Vm(n)^2); Pd(n)),
end fprintf(' %9.3f', Qd(n)), fprintf(' %9.3f',
busdata(:,3)=Vm'; busdata(:,4)=deltad'; Pg(n)),
Pgt = sum(Pg); Qgt = sum(Qg); Pdt = sum(Pd); Qdt = fprintf(' %9.3f ', Qg(n)), fprintf(' %8.3f\n',
sum(Qd); Qsht = sum(Qsh); Qsh(n))
end
fprintf(' \n'), fprintf(' Total
')
fprintf(' %9.3f', Pdt), fprintf(' %9.3f', Qdt),
fprintf(' %9.3f', Pgt), fprintf(' %9.3f', Qgt),
fprintf(' %9.3f\n\n', Qsht)
% EL PROGRAMA MUESTRA LOS RESULTADOS EN FORMA % ESTE PROGRAMA ES UTILIZADO CONJUNTO A lfgauss O lf
TABULADA Newton
% SOBRE LA PANTALLA. % PARA EL COMPUTO DE LAS PERDIDAS EN LAS LINEAS Y EL
% FLUJO EN LAS LINEAS
% Copyright (C) 1998 by H. Saadat. %
% Copyright (c) 1998 H. Saadat
SLT = 0; Ik = (V(k) - a(L)*V(n))*y(L)/a(L)^2 +
fprintf('\n') Bc(L)/a(L)^2*V(k);
fprintf(' Flujos y Perdidas Snk = V(n)*conj(In)*basemva;
en la Linea \n\n') Skn = V(k)*conj(Ik)*basemva;
fprintf(' --Line-- Power at bus & line flow SL = Snk + Skn;
--Line loss-- Transformer\n') SLT = SLT + SL;
fprintf(' from to MW Mvar MVA else, end
MW Mvar tap\n') if nl(L)==n | nr(L)==n
fprintf('%12g', k),
fprintf('%9.3f', real(Snk)), fprintf('%9.3f',
for n = 1:nbus imag(Snk))
busprt = 0; fprintf('%9.3f', abs(Snk)),
for L = 1:nbr; fprintf('%9.3f', real(SL)),
if busprt == 0 if nl(L) ==n & a(L) ~= 1
fprintf(' \n'), fprintf('%6g', n), fprintf(' fprintf('%9.3f', imag(SL)),
%9.3f', P(n)*basemva) fprintf('%9.3f\n', a(L))
fprintf('%9.3f', Q(n)*basemva), else, fprintf('%9.3f\n', imag(SL))
fprintf('%9.3f\n', abs(S(n)*basemva)) end
else, end
end
busprt = 1; end
else, end SLT = SLT/2;
if nl(L)==n k = nr(L); fprintf(' \n'), fprintf(' PERRDIDAS TOTALES
In = (V(n) - a(L)*V(k))*y(L)/a(L)^2 + ')
Bc(L)/a(L)^2*V(n); fprintf('%9.3f', real(SLT)), fprintf('%9.3f\n',
Ik = (V(k) - V(n)/a(L))*y(L) + Bc(L)*V(k); imag(SLT))
Snk = V(n)*conj(In)*basemva; clear Ik In SL SLT Skn Snk
Skn = V(k)*conj(Ik)*basemva;
SL = Snk + Skn;
SLT = SLT + SL;
elseif nr(L)==n k = nl(L);
In = (V(n) - V(k)/a(L))*y(L) + Bc(L)*V(n);

También podría gustarte