Baixe o app para aproveitar ainda mais
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
Compartilhar