Buscar

fluxo potencia matlab

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

format short g %define o formato flutuante após o ponto de até 8 casas.
clear all;
clc;
fprintf ' ==================================================================================================================================== \n'
fprintf '| UDC - CENTRO UNIVERSITARIO DINÂMICA DAS CATARATAS |\n' 
fprintf '| ENGENHARIA ELÉTRICA |\n' 
fprintf '| DALVA RAFAELA - FABIO SCHERER - GABRIAL ARNO - JEFFERSON LIANES |\n'
fprintf ' ==================================================================================================================================== \n\n'
fprintf ' FLUXO DE POTÊNCIA - TRÊS BARRAS \n\n'
pause(1)
fprintf ' Barras R X Bsh/2\n ' 
fprintf ' De P/ p.u. p.u. p.u.\n' % Orienta a ordem dos dados para a matriz de entrada de dados da rede
dados_rede = [1 2 0.01 0.05 0.02
 1 3 0.07 0.03 0.02
 2 3 0.01 0.06 0.02]
 
 pause(1) %pause (s) segura o programa por s segundos
 
fprintf '\n\n\n Barra Tipo Pg Qg Pc Qc V Teta\n';
barras= [ 1 1 0 0 0.5 0.3099 1 0 
 2 2 3.18 0 0.8 0.4958 1.02 0
 3 3 0 0 2.0 1.2394 1 0]
 
 pause(1) 
 
% (1) calcula a y-barra
%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
da_barra = dados_rede(:,1); % lê a coluna de
para_barra = dados_rede(:,2); % lê a coluna para
R = dados_rede(:,3); % lê a coluna Resistência
X = dados_rede(:,4); % lê a coluna Reatância
B = dados_rede(:,5); % lê a coluna Shunt
B = 1i*B; %passa o valor Shunt para imaginário
n_ramos_conectados = length(dados_rede(:,1)); %define o número de ramos conectados em cada barra de origem 
n_barras = max(max(da_barra), max(para_barra)); % Define qual a diemnsão da matriz, considerando a barra de número maior nas colunas 1 e 2 
y = (ones(n_ramos_conectados,1)./(R + 1i*X)); % Transforma os valores de Impedâncias em Admitâncias e os alinha em forma de vetores
MATRIZ_Y = zeros(n_barras,n_barras); % Cria uma matriz com dimensões predefinidas com valores iniciais zerados 
 %Forma as diagonais superiores e depois de forma simétrica as inferiores 
 for k = 1:n_ramos_conectados; %O valor de variável k recebe o conteúdo de cada elemento sequencialmente e, para cada conteúdo que receba, executa o corpo do FOR, iniciando em 1
 if da_barra(k) > 0 && para_barra(k) > 0 % Verifica se ambos valores das colunas 1 e 2 é maior que zero 
 MATRIZ_Y(da_barra(k),para_barra(k)) = MATRIZ_Y(da_barra(k),para_barra(k)) - y(k); %Pega a matriz com valores até então zerados e agrega os Admitancia com sinais invertidos na parte superior
 MATRIZ_Y(para_barra(k),da_barra(k)) = MATRIZ_Y(da_barra(k),para_barra(k)); %Inverte a linha pela coluna para imprimir a parte inferior recendo os resultados obtidos na linha de cima 
 end
 end
 %Forma a diagonal principal
 for n = 1:n_barras %O valor de variável n recebe o conteúdo de cada elemento sequencialmente e, para cada conteúdo que receba, executa o corpo do FOR, iniciando em 1
 
 for k = 1:n_ramos_conectados %O valor de variável k recebe o conteúdo de cada elemento sequencialmente e, para cada conteúdo que receba, executa o corpo do FOR 
 if da_barra(k) == n || para_barra(k) == n % Verifica se um OU o outro é igual a n 
 MATRIZ_Y(n,n) = MATRIZ_Y(n,n) + y(k) + B(k); %Pega a matriz com valores até então zerados e agrega os Admitância e Shunt em cada elemento 
 end
 end
 end
 
 fprintf('\n\n'); %pula duas linhas
 MATRIZ_Y; % MATRIZ y BARRA
 
 MATRIZ_G=real (MATRIZ_Y) %cria a matriz G e B
 pause (1)
 MATRIZ_B=imag (MATRIZ_Y) 
 pause (1) 
 
 G11=MATRIZ_G(1); % Define as variáveis G e B
 G22=MATRIZ_G(5);
 G33=MATRIZ_G(9);
 G12=MATRIZ_G(4);
 G13=MATRIZ_G(7);
 G32=MATRIZ_G(6);
 G31=G13;
 G21=G12;
 G23=G32;
 B11=MATRIZ_B(1);
 B22=MATRIZ_B(5);
 B33=MATRIZ_B(9);
 B12=MATRIZ_B(4);
 B13=MATRIZ_B(7);
 B32=MATRIZ_B(6);
 B31=B13;
 B21=B12;
 B23=B32;
 
 % (2) calcula o fluxo cc
 %++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
 Pg= barras(:,3); Pc= barras(:,5); P= Pg-Pc; % define as potências líquidas
 Qg= barras(:,4); Qc= barras(:,6); Q= Qg-Qc; 
 PS= P(2:3,1); %Desconsidera a Barra 1
 X = dados_rede(:,4); %cria um vetor com todas as reatâncias
 R = dados_rede(:,3); %cria um vetor com todas as resistências
 
 %Calcula a Matriz B'
 b22=1/X(1)+1/X(3); 
 
 b33=1/X(2)+1/X(3);
 
 b23=-1/X(3);
 
 b32=-1/X(3); 
 
 bb=[b22, b23; b32, b33];
 
 tetas=linsolve(bb,PS);
 
 fprintf('\nCalculando fluxo CC sem perdas... \n\n');
 
 pause(2) 
 
 t1=0;
 ti2=tetas(1)
 ti3=tetas(2)
 
 pause(1)
 
 %perdas no fluxo DC
 
 perdas12=(R(1)/(R(1)^2+(X(1)^2)))*(t1-ti2)^2; % g*t1^2
 
 perdas13=(R(2)/(R(2)^2+(X(2)^2)))*(t1-ti3)^2; 
 
 perdas23=(R(3)/(R(3)^2+(X(3)^2)))*(ti2-ti3)^2; 
 
 per2=(perdas12+perdas23)/2; % perdas em cada Barra
 per3=(perdas13+perdas23)/2;
 Pdc=[PS(1)-per2; %Define "Pdc", uma matriz coluna 2x1 com a variação das potências
 PS(2)-per3];
 
 tetas_per=linsolve(bb,Pdc); % resolve o sistema [Pdc]=[bb]x[X] e salva no vetor coluna tetas_per
 
 VV=barras(:,7); %define o valor de cada tensão
 v1=VV(1);
 v2=VV(2);
 v3=VV(3); %Considera o valor inicial para v3 = 1
 
 fprintf('\nAtualizando as variáveis iniciais com as perdas...\n\n');
 pause (2)
 t2=tetas_per(1) %valores iniciais; t2= primeiro elemento do vetor coluna de tetas_per
 t3=tetas_per(2)% //
 v3=v3;
 pause (1)
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
 % SUBSISTEMA 1 % 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 %Calcula as potências
 
 
 P2=v2*(v1*(G21*cos(t2-t1)+B21*sin(t2-t1))+(v2*G22)+(v3*(G23*cos(t2-t3)+B23*sin(t2-t3)))); 
 
 P3=v3*(v1*(G31*cos(t3-t1)+B31*sin(t3-t1))+v2*(G32*cos(t3-t2)+B32*sin(t3-t2))+v3*(G33));
 
 Q2=v2*(v1*(G21*sin(t2-t1)-B21*cos(t2-t1))+v2*(-B22)+v3*(G23*sin(t2-t3)-B23*cos(t2-t3))); 
 
 Q3=v3*(v1*(G31*sin(t3-t1)-B31*cos(t3-t1))+v2*(G32*sin(t3-t2)-B32*cos(t3-t2))+v3*(-B33));
 
 fprintf('\nCalculando as variações das potências...\n');
 
 pause(2)
 
 varP2=P(2)-P2 %Atualiza as variações das potêncais
 varP3=P(3)-P3
 varQ3=Q(3)-Q3
 
 VAR_0=[varP2; varP3; varQ3]; %cria uma matriz coluna com as novas variáveis
 
 E=input('\n\nDigite o valor do erro máx: ');
fprintf ('\n\n Verificando convergência...\n\n ')
 pause(2)
 
if (abs(varP2))&&(abs(varP3))&&(abs(varQ3))> E
 
 fprintf(' Não convergiu!\n\n');
 
 pause(2) 
 
 
 i=0; % numero inicial de iterações 
 
 
 % (3) Verifica a convergência, e realiza quantas iterações forem necessárias
 %+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
 
 while (abs(varP2))&&(abs(varP3))&&(abs(varQ3))> E % Enquanto pelo menos um dos módulos das variações ainda for maior que E, o processo continua.
 
 % SE TODAS AS VARIAÇÕES FOREM MENORES QUE O ERRO, O SISTEMA CONVERGIU-SE E TERMINAM-SE AQUI AS ITERAÇÕES E O PROGRAMA CONTINUA A PARTIR DO "end"
 
 % (4) Calcula cada elemento da Jacobiana
 %++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
 i=i+1;
 
 fprintf('\n Interação: %d \n\n', i)
 
 fprintf (' Calculando...\n\n ')
 pause(3)
 
 H22=-(v2*v2)*B22-(Q2);
 
 H33=-(v3*v3)*B33-(Q3);
 
 M33=-(v3*v3)*G33+(P3);
 N33= v3*G33+(P3/v3);
 
 L33=v3*(-B33)+(Q3/v3);
 
 H23=v2*v3*((G23*sin(t2-t3)-B23*cos(t2-t3)));
 
 H32=v3*v2*((G32*sin(t3-t2)-B32*cos(t3-t2)));
 
 M32=-v3*v2*(G32*cos(t3-t2)+B32*sin(t3-t2));
 
 N23=v2*((G23*cos(t2-t3)+B23*sin(t2-t3)));
 
 J= [H22, H23, N23; % Monta a Jacobiana 
 H32, H33, N33;
 M32, M33, L33;];
 
 
 vt=linsolve(J,VAR_0); % resolve o sistema [VAR_0]=[J]x[X]
 
 t2=t2+vt(1)% atulaiza os valores das variáveis
 t3=t3+vt(2)
 v3=v3+vt(3)
 
 %Calcula as potências
 
 P2=v2*(v1*(G21*cos(t2-t1)+B21*sin(t2-t1))+(v2*G22)+(v3*(G23*cos(t2-t3)+B23*sin(t2-t3)))); 
 
 P3=v3*(v1*(G31*cos(t3-t1)+B31*sin(t3-t1))+v2*(G32*cos(t3-t2)+B32*sin(t3-t2))+v3*(G33));
 
 Q2=v2*(v1*(G21*sin(t2-t1)-B21*cos(t2-t1))+v2*(-B22)+v3*(G23*sin(t2-t3)-B23*cos(t2-t3))); 
 
 Q3=v3*(v1*(G31*sin(t3-t1)-B31*cos(t3-t1))+v2*(G32*sin(t3-t2)-B32*cos(t3-t2))+v3*(-B33));
 
 fprintf('\nVariações das potências\n\n');
 
 varP2=P(2)-P2 %Atualiza as variações das potêncais
 
 varP3=P(3)-P3
 
 varQ3=Q(3)-Q3
 
 
 VAR_0=[varP2; varP3; varQ3]; %cria uma matriz coluna com as novas variáveis
 
 
 fprintf ('\n\n Verificando convergência...\n\n ')
 
 pause(2) 
 
 
 if (abs(varP2))&&(abs(varP3))&&(abs(varQ3))< E
 
 fprintf('\n CONVERGIU!\n\n');
 
 
 pause(1.5)
 
 else 
 
 fprintf('\n Não convergiu!\n\n');
 
 pause(3)
 
 end 
 
 
 end
 
 
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % SUBSISTEMA 2 % 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 
 
 %Calculos das potencias P1,Q1 e Q2.
 
 
 P1=v1*(v1*(G11)+v2*(G12*cos(t1-t2)+B12*sin(t1-t2))+v3*(G13*cos(t1-t3)+B13*sin(t1-t3)));
 
 
 Q1=v1*(v1*(-B11)+v2*(G12*sin(t1-t2)-B12*cos(t1-t2))+v3*(G13*sin(t1-t3)-B13*cos(t1-t3)));
 
 
 Q2=v2*(v1*(G21*sin(t2-t1)-B21*cos(t2-t1))+v2*(-B22)+v3*(G23*sin(t2-t3)-B23*cos(t2-t3)));
 
 
 fprintf('\n\nCalculando potêncais líquidas...\n\n');
 
 
 pause(2)
 
 
 P1, Q1, Q2 % Potencias líquidas
 
 pause(1) 
 
 fprintf('\n\nCalculando potêncais geradas...\n\n');
 
 % P=Pg-Pc
 
 pause(2)
 
 
 Pg1=P1+Pc(1) % Potências Geradas 
 
 Qg1=Q1+Qc(1)
 
 Qg2=Q2+Qc(2)
 
 pause (1)
 
 t2=t2*180/pi;
 
 t3=t3*180/pi;
 
 
 
 
 fprintf('\n\nA tensão e ângulo na barra 2 é:\n (%d/%.4f°) p.u.\n\n',v1, t2);
 pause(0.5)
 
 fprintf('A tensão e ângulo na barra 3 é:\n (%.4f/%.4f°) p.u.\n\n',v3, t3);
 pause(0.5)
 
 fprintf('A potência ativa gerada na barra 1 é:\n %.4f p.u.\n\n',Pg1);
 pause(0.5)
 
 fprintf('A potência reativa gerada na barra 1 é:\n %.4f p.u.\n\n',Qg1);
 pause(0.5)
 
 fprintf('A potência reativa gerada na barra 2 é:\n %.4f p.u.\n\n',Qg2);
 pause(0.5)
 
 fprintf('Iterações: %d\n\n',i);
 
 pause(0.5)
 
 
else
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
% SUBSISTEMA 2 % 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
fprintf('\n CONVERGIU!\n\n');
 
pause(2) 
 
%Calculos das potencias P1,Q1 e Q2.
 
 
P1=v1*(v1*(G11)+v2*(G12*cos(t1-t2)+B12*sin(t1-t2))+v3*(G13*cos(t1-t3)+B13*sin(t1-t3)));
 
 
Q1=v1*(v1*(-B11)+v2*(G12*sin(t1-t2)-B12*cos(t1-t2))+v3*(G13*sin(t1-t3)-B13*cos(t1-t3)));
 
 
Q2=v2*(v1*(G21*sin(t2-t1)-B21*cos(t2-t1))+v2*(-B22)+v3*(G23*sin(t2-t3)-B23*cos(t2-t3)));
 
 
fprintf('\n\nCalculando potêncais líquidas...\n\n');
 
pause(2)
 
P1, Q1, Q2 % Potencias líquidas
pause (1)
 
fprintf('\n\nCalculando as potêncais geradas...\n\n');
 
% P=Pg-Pc
 
pause(2)
 
Pg1=P1+Pc(1) % Potências Geradas 
 
Qg1=Q1+Qc(1)
 
Qg2=Q2+Qc(2)
 
 
t2=t2*180/pi; %passa os valores dos angulos de rad para deg
 
t3=t3*180/pi;
 
pause (0.5) 
 
fprintf('\n\nA tensão e ângulo na barra 2 é:\n (%d/%.4f°) p.u.\n\n',v1, t2);
pause(0.5)
 
fprintf('A tensão e ângulo na barra 3 é:\n (%.4f/%.4f°) p.u.\n\n',v3, t3);
pause(0.5)
 
fprintf('A potência ativa gerada na barra 1 é:\n %.4f p.u.\n\n',Pg1);
pause(0.5)
 
fprintf('A potência reativa gerada na barra 1 é:\n %.4f p.u.\n\n',Qg1);
pause(0.5)
 
fprintf('A potência reativa gerada na barra 2 é:\n %.4f p.u.\n\n',Qg2);
pause(0.5)
fprintf('Iterações: %d\n\n',i);
pause(0.5)
end

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Continue navegando