Você está na página 1de 5

clear

clc

%Z = [0.73128i 0.69140i 0.61323i 0.63677i;...


% 0.69140i 0.71966i 0.60822i 0.64278i;...
% 0.61323i 0.60822i 0.69850i 0.55110i;...
% 0.63677i 0.64178i 0.55110i 0.69890i];
Zbus = [ 0.0000 + 0.0285i 0.0000 + 0.0211i 0.0000 + 0.0119i 0.0000 +
0.0083i 0.0000 + 0.0211i
0.0000 + 0.0211i 0.0000 + 0.0305i 0.0000 + 0.0172i 0.0000 + 0.0119i
0.0000 + 0.0305i
0.0000 + 0.0119i 0.0000 + 0.0172i 0.0000 + 0.0239i 0.0000 + 0.0165i
0.0000 + 0.0172i
0.0000 + 0.0083i 0.0000 + 0.0119i 0.0000 + 0.0165i 0.0000 + 0.0184i
0.0000 + 0.0119i
0.0000 + 0.0211i 0.0000 + 0.0305i 0.0000 + 0.0172i 0.0000 + 0.0119i
0.0000 + 0.0638i]

Zb=0.1i; %nova impedancia a ser adicionado


caso=4;
k=2; %� a linha /coluna da informa��o que precisa e n�o da barra
j=5; %defina a coluna da barra j existente. somente para o caso 4

%caso 1 - Zb entre uma barra nova e a barra ref.


if caso==1
if isempty(Zbus)==1 %pergunta se a mtriz esta vazia, retorna 1 ou 0. Se a
matriz n�o existe, Z=zb
Znova=Zb
else %precisa saber o numero de linhas e colunas da matriz
tam = size(Zbus,1);%retorna o numero de linhas da matriz
Znova=[Zbus zeros(tam,1);
zeros(1,tam) Zb] %vai adicionar uma coluna de zeros do tamanho da
Zbus original
end
end

if caso==2
Znova=Zb;
tam = size(Zbus,1);
Znova=[Zbus Zbus(:,k);
Zbus(k,:) Zb+Zbus(k,k)]
end

if caso==3
% Znova=Zb;
% Znova=[Zbus Zbus(:,k);
% Zbus(k,:) Zb+Zbus(k,k)];
% tam = size(Znova,1);
% for a = 1:tam
% for b = 1:tam
% Znova1(b,a) = (Znova(b,a) - ((Znova(b,k)*Znova(a,a))/
(Zb+Zbus(k,k))));
% end
% end
% Znova1(:,k)=[];
% Znova1(k,:)=[];
% Znova1
A = Zbus;
B = Zbus(:,k);
C = Zbus(k,:);
D = Zbus(k,k) + Zb;
Znova = A - ((B*C)/D)
end

if caso==4
%Znova=Zb;
%Znova=[Zbus Zbus(:,k)-Zbus(:,j);
%Zbus(k,:)-Zbus(j,:) Zb+Zbus(k,k)];
%tam = size(Znova,1);
%Znova(:,k)=[];
%Znova(k,:)=[];
%Znova1
Zth = Zbus(k,k) + Zbus(j,j) - (2*Zbus(k,j));
A = Zbus;
B = Zbus(:,k) - Zbus(:,j);
C = Zbus(k,:) - Zbus(j,:);
D = Zth +Zb;
Znova = A - ((B*C)/D)
end

%%%%%%%%%%%%%%%%%

clear all
clc

load STEE5b1.mat
nb=length(Barra_No);%Numero de barras do sistema
nl=length(Barra_ini);%Numero de linhas do sistemna
G=zeros(nb,nb); %tamanho da matriz
B=zeros(nb,nb); %tamanho da matriz
tol = 1e-3;
V = zeros(1,nb);
Th = zeros(1,nb);
P = zeros(1,nb);
Q = zeros(1,nb);
H = zeros(nb,nb);
N = zeros(nb,nb);
M = zeros(nb,nb);
L = zeros(nb,nb);
%Precisamos de dois subindices para criar as matrizes [G] e [B]
%este c�digo vai preencher as posi��es das matrizes
%vai preencher linha por linha
for a = 1:nb %linha
for b = 1:nb %coluna
if a == b %elementos da diagonal principal
for c=1:nl
if Barra_No(a) == Barra_ini(c)
G(a,a) = (R(c) / (R(c)^2 + X(c)^2)) + G(a,a);
B(a,a) = (-X(c) / (R(c)^2 + X(c)^2)) + B(a,a) + Ysh(c);
elseif Barra_No(a) == Barra_fin(c)
G(a,a) = (-R(c) / (R(c)^2 + X(c)^2)) + G(a,a);
B(a,a) = (X(c) / (R(c)^2 + X(c)^2)) + B(a,a) + Ysh(c);
end
end
elseif a < b %elementos diferentes da diagonal, preencher o triangulo
superior da matriz
for c=1:nl %barra ini
if Barra_ini(c) == Barra_No(a) & Barra_fin(c) == Barra_No (b)
G(a,b) = -R(c) / (R(c)^2 + X(c)^2);
G(b,a) = G(a,b);
B(a,b) = X(c) / (R(c)^2 + X(c)^2);
B(b,a) = B(a,b);
elseif Barra_ini(c) == Barra_No(b) & Barra_fin(c) == Barra_No (a)
G(a,b) = -R(c) / (R(c)^2 + X(c)^2);
G(b,a) = G(a,b);
B(a,b) = X(c) / (R(c)^2 + X(c)^2);
B(b,a) = B(a,b);
end
end
end
end
end

G
B

%%% Inicializar as variaveis de estado


for a=1:length(V)
if TB(a)==1 || TB(a)==2
V(a) = V_esp(a);
Th(a) = Th_esp(a);
else
V(a) = 1.0;
Th(a) = 0.0;
end
end
iter=0;
band=0;
while band == 0
iter=iter+1;

for a=1:nb
P(a)=0;
Q(a)=0;
for b=1:nb
P(a) = P(a) + V(a)*V(b)*(G(a,b)*cos(Th(a)-Th(b)) + B(a,b)*sin(Th(a)-
Th(b)));
Q(a) = Q(a) + V(a)*V(b)*(G(a,b)*sin(Th(a)-Th(b)) - B(a,b)*cos(Th(a)-
Th(b)));
end
end

DP = zeros(1,nb);
DQ = zeros(1,nb);

for a=1:nb
if TB(a) == 0
DP(a) = (PG_esp(a) - PD_esp(a)) - P(a);
DQ(a) = (QG_esp(a) - QD_esp(a)) - Q(a);
elseif TB(a) == 2
DP(a) = (PG_esp(a) - PD_esp(a)) - P(a);
end
end

%calculo do jacobiano
if max(abs([DP DQ]))<=tol %maximo valor absoluto
band=1;
else
for a=1:nb
for b=1:nb
if a==b
H(a,b) = -Q(a) - (V(a)^2*B(a,a));
N(a,b) = (P(a)+G(a,a)*V(a)^2)/V(a);
M(a,b) = -G(a,a)*V(a)^2 + P(a);
L(a,b) = (Q(a) - B(a,b)*V(a)^2)/V(a);
else
H(a,b) = V(a)*V(b)*(G(a,b)*sin(Th(a)-Th(b))-B(b,a)*cos(Th(a)-Th(b)));
N(a,b) = V(a)*(G(a,b)*cos(Th(a)-Th(b))+B(a,b)*sin(Th(a)-Th(b)));
M(a,b) = -V(a)*V(b)*(G(a,b)*cos(Th(a)-Th(b))+B(a,b)*sin(Th(a)-Th(b)));
L(a,b) = -V(a)*((G(a,b) * sin(Th(a)-Th(b))-(B(a,b)*cos(Th(a)-Th(b)))));
end
end
end
J = [H N; M L];
%colocar valores altos para a barra slack para retirar o efeito da barra
%sem ter que diminuir o tamanho da matriz. ex.: J(1,1) = 1*10^15, J(6,6)
%tbm
for a = 1:nb
if TB(a) == 1
J(a,a)=1e10;
J(a+nb,a+nb)=1e10;
elseif TB(a) ==2
J(a+nb,a+nb)=1e10;
end
end
%Dx = inv(J)*[DP':DQ'] %DQ' transposta
DP1(:,1) = DP(1,:);
DQ1(:,1) = DQ(1,:);
AS = [DP1;DQ1];
Dx = inv(J)*[AS]
for a =1:nb
Th(a) = Th(a) + Dx(a);
if TB(a) == 0
V(a) = V(a) + Dx(nb+a);
end
end
end
end

for a=1:nb
if TB(a) == 1
PG_esp(a)=0; %%Zerar para n�o acrescentar potencia na itera��o
QG_esp(a)=0;
for b=1:nb
PG_esp(a) = PG_esp(a) + V(a)*V(b)*(G(a,b)*cos(Th(a)-Th(b)) +
B(a,b)*sin(Th(a)-Th(b)));
QG_esp(a) = QG_esp(a) + V(a)*V(b)*(G(a,b)*sin(Th(a)-Th(b)) -
B(a,b)*cos(Th(a)-Th(b)));
end
PG_esp(a) = PG_esp(a) + PD_esp(a);
QG_esp(a) = QG_esp(a) + QD_esp(a);
elseif TB(a) == 2
QG_esp(a)=0;
for b=1:nb
QG_esp(a) = QG_esp(a) + V(a)*V(b)*(G(a,b)*sin(Th(a)-Th(b)) -
B(a,b)*cos(Th(a)-Th(b)));
end
QG_esp(a) = QG_esp(a) + QD_esp(a);
end
end

Você também pode gostar