trabalho gauss

8
INSTITUTO FEDERAL SUL-RIO-GRANDENSE CURSO SUPERIOR DE ENGENHARIA ELÉTRICA DISCIPLINA DE ANÁLISE DE SITEMAS DE ENERGIA A PROFESSOR ANDRÉ LERM IMPLEMENTAÇÃO DE FLUXO DE POTÊNCIA EM MATLAB (GAUSS-SEIDEL) FABIANO LUIS LIMA PASSOS

Upload: fabiano-lima

Post on 03-Oct-2015

216 views

Category:

Documents


1 download

DESCRIPTION

Para analises de sistemas de energia

TRANSCRIPT

INSTITUTO FEDERAL SUL-RIO-GRANDENSECURSO SUPERIOR DE ENGENHARIA ELTRICADISCIPLINA DE ANLISE DE SITEMAS DE ENERGIA APROFESSOR ANDR LERM

IMPLEMENTAO DE FLUXO DE POTNCIA EM MATLAB(GAUSS-SEIDEL)

FABIANO LUIS LIMA PASSOS

DEZEMBRO, 2014So apresentadas a seguir as linhas de cdigo do programa executado em MATLAB, com seus devidos comentrios de programao. Aps so explicados, em linhas gerais, os princpios de funcionamento de algumas partes do trabalho que requerem uma ressalva maior.%Trabalho sobre Fluxo de Potncia - Mtodo de Gauss-Seidel%Disciplina de Analise de Sistemas de Energia A%Data:17/12/2014%Fabiano Luis Lima Passos %Dados conforme exemplo 8.1 Stevenson clc;clear all; %Tipo 0- Carga 2- Tenso 3-Referncia %Barras num_barra Tipo Tenso Fase(graus) PGerada QGerada PCarga QCarga Susceptncia shunt barra = [ 1 2 1.04 0 0 0 0.65 0.30 0; 2 0 1.0 0 0 0 1.15 0.60 0; 3 1 1.02 0 1.80 0 0.7 0.4 0; 4 0 1.0 0 0 0 0.7 0.3 0; 5 0 1.0 0 0 0 0.85 0.4 0]; %Trechos entre barras Origem Destino Resistncia Reatncia capacitor_serie Fase phi (graus) trechos = [ 1 2 0.0420 0.1680 0 0.0; 1 5 0.0310 0.1260 0 0.0; 2 3 0.0310 0.1260 0 0.0; 3 4 0.0840 0.3360 0 0.0; 3 5 0.0540 0.2100 0 0.0; 4 5 0.0630 0.2520 0 0.0]; % Determinao da dimenso das matrizes [num_barras, colun1] = size(barra);[num_trechos , colun2] = size(trechos); % Obteno dos dados de barratipo = (barra(:,2))'; %Indica tipo de barra: PQ, PV, ou VtetaV_esp = (barra(:,3))'; %Tenso na barra em putheta_esp = (barra(:,4))' * pi/180; %theta em radianosPesp_g = (barra(:,5))'; %Potncia ativa especificada geradaQesp_g = (barra(:,6))'; %Potncia reativa especificada geradaPesp_c = (barra(:,7))'; %Potncia ativa especificada cargaQesp_c = (barra(:,8))'; %Potncia reativa especificada cargaCap_paralelo = (barra(:,9))'; %Capacitor em paralelo com a barra (basta adicionar valores para resolver a letra b)P_esp = Pesp_g - Pesp_c; %Potncia ativa especificada (gerador - carga)Q_esp = Qesp_g - Qesp_c; %Potncia reativa especificada (gerador - carga) % Obteno dos dados do trecho entre as barrasbarra_origem = trechos(:,1); %Determina origembarra_destino = trechos(:,2); %Determina destinor = trechos(:,3); %Resitnciax = trechos(:,4); %Reatnciabs = trechos(:,5) / 2; %Montagem dos capacitores shunt no modelo piphi = trechos(:,6)*pi/180; %ngulo de defasagem nas barras em radianos (dado em graus) Y = zeros(num_barras,num_barras); %Cria um vetor de zeros para a admitancia com a dimenso do sistema %Matriz de admitncias for k = 1:num_barras Y(k,k) = i*Cap_paralelo(k);end for a = 1:num_trechos %Montagem da matriz de admitncias a partir dos dados fornecidos da linha e sistema k = barra_origem(a); m = barra_destino(a); y(a) = 1/(r(a) + i*x(a)); Y(k,k) = Y(k,k) + y(a) + i*bs(a); Y(m,m) = Y(m,m) + y(a) + i*bs(a); Y(k,m) = Y(k,m) - y(a); Y(m,k) = Y(m,k) - y(a);end G = real(Y); %Parte real de Y - matriz de condutnciasB = imag(Y); %Parte imaginria de Y - matriz de susceptncias n=length(tipo); %Especifica ordem do sistemafor a=1:1:n E_ant(a) = V_esp(a)*cos(theta_esp(a))+i*sin(theta_esp(a)); %Cria vetor com tenses e ngulos especificadosend iter_max=100; %Especifica nmero mximo de iteraesiter=1; %Inicia vetor que conta nmero de iteraes while iter~=iter_max for a=2:1:n %Comea em dois pois a barra 1 slack if tipo(a)==0 %Clculo para barras tipo PQ acc=0; acq=0;%Inicializa variveis que armazenan o somatrio de Yak*Ek for k=1:1:n acq=acq+Y(a,k)*E_ant(k); %Yak*Ek para todos valores de k if a~=k acc=acc+Y(a,k)*E_ant(k); %Yak*Ek com k diferente de a end end E(a) = (1/Y(a,a))*(((P_esp(a)-i*Q_esp(a))/conj(E_ant(a)))-acc);%Clculo da tenso na barra V(a) = abs(E(a));%Mdulo da tenso na barra theta(a) = angle(E(a));%ngulo da barra else if tipo(a)==1 %Clculo para barras tipo PV acq=0; acc=0; for k=1:1:n acq=acq+Y(a,k)*E_ant(k); if a~=k acc=acc+Y(a,k)*E_ant(k); end end Q(a) = -imag(conj(E_ant(a))*acq);%Qcalculada E(a) = (1/Y(a,a))*(((P_esp(a)-i*Q(a))/conj(E_ant(a)))-acc);%Clculo da tenso na barra E_corr(a) = E(a)*V_esp(a)/abs(E(a));%Adequao do mdulo da tenso theta(a)=angle(E_corr(a)); E(a)=E_corr(a); end Q(a) = -imag(conj(E(a))*acq);%Qcalculada end E_tol(a)=E_ant(a); E_ant(a)=E(a); end if abs(abs(E)-abs(E_tol))