Escolar Documentos
Profissional Documentos
Cultura Documentos
tipo(k)
= barras(k,2) %TIPO DE BARRA (SLACK PV OU PQ - 3 SLACK 2
PV 0 PQ)
V(k)
= barras(k,3) %TENSO
ang(k)
= barras(k,4)*pi/180 %ANGULO EM RADS
pc(k)
= barras(k,5)/MVAbase %DEMANDA POTENCIA ATIVA
qc(k)
= barras(k,6)/MVAbase %DEMANDA POTENCIA REATIVA
pg(k)
= barras(k,7)/MVAbase %GERAO POTENCIA ATIVA
qg(k)
= barras(k,8)/MVAbase %GERAO POTENCIA REATIVA
g_sh(k)
= barras(k,11) %CONDUTANCIA SHUNT LIGADA NA BARRA
b_sh(k)
= barras(k,12) %SUSCEPTANCIA SHUNT LIGADA NA BARRA
end
%DADOS PARA OS RAMOS
for l = 1:nr
de(l)
= ramos(l,1) %BARRA DE SADA DA LT
para(l) = ramos(l,2) %BARRA DE DESTINO DA LT
r(l)
= ramos(l,3) %RESISTENCIA DA LT
x(l)
= ramos(l,4) %REATANCIA DA LT
bsh(l) = ramos(l,5)/2 %SUSCEPTANCIA SHUNT DA LT
tap(l) = ramos(l,6) %TAP PARA CASO DE TRAFO
if tap(l) == 0 %ESSE LAO PARA O CASO NO SER UM TRAFO E O USURIO
DEIXAR EM BRANCO O ARQUIVO
tap(l) = 1;
else
tap(l) = 1/tap(l);
end
end
%% MATRIZ (G) e (B) (MAIUSCULO)
G = zeros(nb,nb); %ZERANDO ANTES DE COLOCAR DADOS
B = zeros(nb,nb);
for k=1:nb
B(k,k) = b_sh(k); %DIAGONAL PRINCIPAL PRIMEIRO OS VALORES SHUNTS DAS
BARRAS
G(k,k) = g_sh(k);
end
%PREENCHENDO OS DADOS FORA DA DIAGONAL PRINCIPAL PARA MATRIZES B e G
for i=1:nr
k = de(i);
m = para(i);
gkm = r(i)/(r(i)^2+x(i)^2);
bkm = -x(i)/(r(i)^2+x(i)^2);
G(k,k) = G(k,k) + tap(i)^2*gkm;
B(k,k) = B(k,k) + tap(i)^2*bkm + bsh(i);
G(m,m) = G(m,m) + gkm;
B(m,m) = B(m,m) + bkm + bsh(i);
G(k,m) = G(k,m) - tap(i)*gkm;
B(k,m) = B(k,m) - tap(i)*bkm;
G(m,k) = G(m,k) - tap(i)*gkm;
B(m,k) = B(m,k) - tap(i)*bkm;
end
%% POTNCIA ESPECIFICADA = POTENCIA GERAO NA BARRA - POTENCIA CARGA NA
BARRA
for k = 1:nb
pesp(k) = pg(k) - pc(k);
qesp(k) = qg(k) - qc(k);
end
%%SUBSISTEMA I
%CLCULO DAS POTENCIAS NODAIS
pcalc = zeros(nb,1); %ZERANDO VRIAVEIS
qcalc = zeros(nb,1);
qesp_ant = zeros(nb,1); %USADO NO LIMITE DE TENSO
contMAX = 0;%VAI SER USADO NO CONTROLE DE TENSAO PARA PEGAR O NUMERO DE
VIOLAES DE TENSO MXIMA
contMIN = 0;%VAI SER USADO NO CONTROLE DE TENSAO PARA PEGAR O NUMERO DE
VIOLAES DE TENSO MNIMA
%POTENCIA CALCULADA PARA PRPRIA BARRA
for k = 1:nb
pcalc(k) = G(k,k)*V(k)*V(k);
qcalc(k) = -B(k,k)*V(k)*V(k);
end
%POTENCIA CALCULADA PARA BARRAS LIGADAS BARRA k
for l = 1:nr
k = de(l);
m = para(l);
ab = (ang(k) - ang(m));
pcalc(k) = pcalc(k) + V(k)*V(m)*(G(k,m)*cos(ab)+B(k,m)*sin(ab));
qcalc(k) = qcalc(k) + V(k)*V(m)*(G(k,m)*sin(ab)-B(k,m)*cos(ab));
pcalc(m) = pcalc(m) + V(k)*V(m)*(G(k,m)*cos(ab)-B(k,m)*sin(ab));
qcalc(m) = qcalc(m) + V(k)*V(m)*(-G(k,m)*sin(ab)-B(k,m)*cos(ab));
end
%ZERANDO OS DELTAS
DP = zeros(nb,1);
DQ = zeros(nb,1);
%ATRIBUINDO VALORES AO DELTA P E Q
for k = 1:nb
if tipo(k) ~= 3 %OU SEJA A BARRA PV OU PQ
DP(k) = pesp(k) - pcalc(k);
end
if tipo(k) == 0 %0=PQ ENTO PRECISAMOS CALCULAR O V
DQ(k) = qesp(k) - qcalc(k);
end
end
maxDP = max(abs(DP)); %VARIAVEL QUE IRA RECEBER O MXIMO VALOR DE ERRO DE
POTENCIA ATIVA
maxDQ = max(abs(DQ)); %VARIAVEL QUE IRA RECEBER O MXIMO VALOR DE ERRO DE
POTENCIA REATIVA
CTRLE = zeros(nb); %ESSA VARIAVEL VAI SER A DE VERIFICAO SE HOUVE
VIOLAO DO LIMITE DE TENSO, PARA USAR NO LAO
iter = 0;%COMO O USUARIO DIGITA O NUMERO DE ITERAES MXIMO AQUI VAMOS
VERIFICAR SE HOUVE OU NO VIOLAO
PVPQcont = 0;%ESSA VARIAVEL VAI CONTAR O NUMERO DE CONVERSOES PQ PV PARA
O CONTROLE DOS LIMITES DE TENSO
barrasMAX = zeros(nb);
barrasMIN = zeros(nb);
ReversaoPQ = zeros(nb);
while((maxDP > Tolerancia)||(maxDQ > Tolerancia))
%JACOBIANA
iter = iter + 1;
if iter > iter_max
fprintf('ERRO! LIMITE DE ITERAES EXECEDIDO: %d iteraes
\n',iter_max);
return;
end
H = zeros(nb,nb); M=H; N=H; L=H;
for k = 1:nb %DIAGONAL PRINCIPAL DA JACOBIANA
H(k,k) = -qcalc(k)-V(k)*V(k)*B(k,k);
N(k,k) = (pcalc(k)+V(k)*V(k)*G(k,k))/V(k);
M(k,k) = pcalc(k)-V(k)*V(k)*G(k,k);
L(k,k) = (qcalc(k)-V(k)*V(k)*B(k,k))/V(k);
if tipo(k) == 3 %AQUI UMA JOGADA PARA AS PARRAS SLACK, POR QUE
A HORA QUE INVERTER A MATRIZ VAI APROXIMAR DE ZERO O H
H(k,k) = 10e10;
end
if tipo(k) >= 2 %2=PV MESMA COISA S QUE PARA BARRAS PV
L(k,k) = 10e10;
end
end
for l = 1:nr%FORA DA DIAGONAL PRINCIPAL
k = de(l);
m = para(l);
ab = ang(k) - ang(m);
H(k,m) = V(k)*V(m)*(G(k,m)*sin(ab)-B(k,m)*cos(ab));
H(m,k) = V(k)*V(m)*(-G(k,m)*sin(ab)-B(k,m)*cos(ab));
N(k,m) = V(k)*(G(k,m)*cos(ab)+B(k,m)*sin(ab));
N(m,k) = V(m)*(G(k,m)*cos(ab)-B(k,m)*sin(ab));
M(k,m) = -V(k)*V(m)*(G(k,m)*cos(ab)+B(k,m)*sin(ab));
M(m,k) = -V(k)*V(m)*(G(k,m)*cos(ab)-B(k,m)*sin(ab));
L(k,m) = V(k)*(G(k,m)*sin(ab)-B(k,m)*cos(ab));
L(m,k) = V(m)*(-G(k,m)*sin(ab)-B(k,m)*cos(ab));
end
%MATRIZ JACOBIANA
J = [H N; M L];
DS = [DP; DQ];
DV = J\DS;
% INICIO
for k = 1:nb
if tipo(k) == 0 %SE A BARRA FOR PQ
if V(k) >= Vmax %SE A TENSO VIOLAR O LIMITE MAX
V(k) = Vmax;
contMAX = contMAX + 1;%ESSA CONTAGEM VAI SER DO NUMERO DE
VIOLAES MAXIMAS
barrasMAX(k) = k;
tipo(k) = 2; % CONVERSO EM BARRA PV
CTRLE(k,iter) = 1; %IDENTIFICAR A VIOLAO DO LIMITE MX
DE TENSAO NAS BARRAS PQ
qesp_ant(k) = qesp(k);
DQ(k) = 0;
elseif V(k) < Vmin
V(k) = Vmin;
contMIN = contMIN + 1;%ESSA CONTAGER VAI SER DO NUMERO DE
VIOLAES MINIMAS
barrasMIN(k) = k;
tipo(k) = 2; % CONVERSO EM BARRA PV
CTRLE(k,iter) = 2; %IDENTIFICAR VIOLAO DE LIMITES
MINIMO DE TENSAO NAS BARRAS PQ
qesp_ant(k) = qesp(k);
DQ(k) = 0;
end
end
end
%RECALCULANDO
for k = 1:nb
pcalc(k) = G(k,k)*V(k)*V(k);
qcalc(k) = -B(k,k)*V(k)*V(k);
end
for l = 1:nr
k = de(l);
m = para(l);
ab = ang(k) - ang(m);
pcalc(k) = pcalc(k) + V(k)*V(m)*(G(k,m)*cos(ab)+B(k,m)*sin(ab));
qcalc(k) = qcalc(k) + V(k)*V(m)*(G(k,m)*sin(ab)-B(k,m)*cos(ab));
pcalc(m) = pcalc(m) + V(k)*V(m)*(G(k,m)*cos(ab)-B(k,m)*sin(ab));
qcalc(m) = qcalc(m) + V(k)*V(m)*(-G(k,m)*sin(ab)-B(k,m)*cos(ab));
end
%SEGUNDA PARTE
for k = 1:nb
if CTRLE(k,iter) == 1
if qcalc(k) > qesp_ant(k)
tipo(k) = 0; %VOLTA A SER BARRA PQ
PVPQcont = PVPQcont+1;
ReversaoPQ(k,iter) = k;
CTRLE(k,iter) = 4
end
elseif CTRLE(k,iter) == 2
if qcalc(k) < qesp_ant(k)
tipo(k) = 0; %VOLTA A SER UMA BARRA PQ
PVPQcont = PVPQcont+1;
ReversaoPQ(k,iter) = k;
CTRLE(k,iter) = 4
end
end
end
%ATUALIZA DELTA P E DELTA Q QUANDO POSSVEL
for k = 1:nb
if tipo(k) ~= 3
DP(k) = pesp(k) - pcalc(k);
end
if tipo(k) == 0
DQ(k) = qesp(k) - qcalc(k);
end
end
maxDP = max(abs(DP)); %RECEBE OS NOVOS VALORES DE DELTA
maxDQ = max(abs(DQ));
end
%% RESULTADOS
fprintf('FLUXO DE POTENCIA - TENSO E ANGULOS NAS BARRAS -MTODO DE
NEWTON COM CONTROLE DE VIOLAO DE TENSO\n')
fprintf('Formato: 3-SLACK, 2-PV, 0-PQ\n')
fprintf('BARRA
TIPO
TENSO
NGULO
P
Q\n');
for i = 1:nb
fprintf('%3d \t%3d \t% 5.4f
\t% 5.4f
\t% 5.4f
\t% 5.4f
\n',num(i),tipo(i), V(i), ang(i)*180/pi, pcalc(i), qcalc(i));
end
%SUBSISTEMA II
%ATRIBUINDO VALORES
pkm = zeros(nr,1);
qkm = zeros(nr,1);
pmk = zeros(nr,1);
qmk = zeros(nr,1);
Pperdas = zeros(nr,1);
Qperdas = zeros(nr,1);
for l = 1:nr
k = de(l);
m = para(l);
ab = (ang(k) - ang(m));
gkm = r(l)/(r(l)^2+x(l)^2);
bkm = -x(l)/(r(l)^2+x(l)^2);
vkm = V(k) * V(m);
t = tap(l);
pkm(l) = t^2*V(k)*V(k)*gkm - t*vkm*(gkm*cos(ab)+bkm*sin(ab));
qkm(l) = -t^2*V(k)*V(k)*(bkm + bsh(l))-t*vkm*(gkm*sin(ab)bkm*cos(ab));
pmk(l) = V(m)*V(m)*gkm - t*vkm*(gkm*cos(ab)-bkm*sin(ab));
qmk(l) = -V(m)*V(m)*(bkm + bsh(l))+t*vkm*(gkm*sin(ab)+bkm*cos(ab));
Pperdas(l) = pkm(l) + pmk(l);
Qperdas(l) = qkm(l) + qmk(l);
end