Matlab - flujo de potencia por Gauss Seidel en MATLAB

 
Vista:

flujo de potencia por Gauss Seidel en MATLAB

Publicado por JavierD (1 intervención) el 04/05/2011 11:42:29
Hola, el tema está en que tengo que programar en matlab un problema de flujo de potencia por Gauss Seidel de una red de 4 nudos dos de generación y dos de consumo, tengo los calculos hechos (a mano) de matrid de admitancias nodales y la primera iteración y ahora tengo que progamarlo en matlab, porfabor alguien me puede hechar un cable?

Muchas gracias.
Un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

flujo de potencia por Gauss Seidel en MATLAB

Publicado por guillermo (1 intervención) el 30/11/2011 00:49:20
pues no se pue ber tu trabajo pero me interesaria analisarlo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

flujo de potencia por Gauss Seidel en MATLAB

Publicado por dante omar cruz (1 intervención) el 25/11/2015 22:35:37
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
clc;clear;
ZDATA=[1 2 0.02 0.04;1 3 0.01 0.03;2 3 0.0125 0.0250];
na=ZDATA(:,1);nb=ZDATA(:,2);R=ZDATA(:,3);X=ZDATA(:,4);nbr=length(ZDATA(:,1));
nb1=length(ZDATA(:,1));nbus=max(max(na),max(nb));
Z=R+X*1i;
y=ones(nbr,1)./Z;
Y=zeros(nbus,nbus);
for k=1: nbr
    if na(k)>0 && nb(k)>0
        Y(na(k),nb(k))=Y(na(k),nb(k))-y(k);
        Y(nb(k),na(k))=Y(na(k),nb(k));
    end
end
    for n=1: nbus
        for k=1:nbr
        if na(k)==n || nb(k)==n
            Y(n,n)=Y(n,n)+y(k);
        end
        end
    end
   n1=na;nr=nb;
 
%inicia el ciclo de interaciones para determinar voltajes nodales
    %Datos el ejemplo 6.12 
    Edata=[1 0 0 1.05 0;2 -4 -2.5 1.0 0;3 2 0 1.04 0];
    ntn=length(Edata(:,1)); P=Edata(:,2); Q=Edata(:,3); mv=Edata(:,4);
    av=Edata(:,5).*pi/180;
    nosc= input('No. de nodo oscilante: ');
    nvc= input('No. de nodo de voltaje controlado: ');
    tol= input('Valor del error: ');
    Pbase=input('potencia base :');
    V= mv.*(cos(av)+ 1i*sin(av));
    iter=0;
    VA=V;
    while iter<50
    for k1=1:ntn
            sum=0;
      if k1 == nosc
            else
                for k2=1:ntn
                    if k2 == k1 % igual a k
                    else
                        %n diferente de k
                        sum=sum+Y(k1,k2)*V(k2);
                    end
                    if k1 == nvc %Se calcula la potencia reactiva
                        suma=0;
                        for k3=1:ntn
                            suma=suma+Y(k1,k3)*V(k3);
                        end
                        qima=conj(V(k1))*suma;
                        Q(k1)= -imag(qima);
                    else
                    end
                end
                %se determina voltaje calculado y se corrije
                d=0;
                while d<=1;
                    V(k1)=((1+0i)/(Y(k1,k1))*((P(k1)-1i*Q(k1))/conj(V(k1))-sum));
                    d=d+1;
                end
      end
    end
        % se calcula el error(partes real e imaginaria:a)
        for k4=1:ntn
        e(k4)=abs(real(V(k4))-real(VA(k4)));
        f(k4)=abs(imag(V(k4))-imag(VA(k4)));
        end
        %Se comparan las partes real e imaginaria con el error
        for k=1:ntn
        if e(k)<tol && f(k)<tol
            flag=1;
        else
            flag=0;
        end
        end
 
           if flag==1
 
        %Si la respuesta es si, se llego a la convergencia, se interrumpen
       %las interacciones y se mantiene la magnitud de voltaje constante en
        %el nodo de voltaje controlado
 
          anvc=angle(V(nvc));
          V(nvc)=Edata(nvc,4)*(cos(anvc) + 1i*sin(anvc));
          break
            else
                %Si la respuesta es no,se continua el ciclo de interaciones
            end
 
 
        iter=iter+1;
        %manteniendo la magnitud de voltaje constante en el nodo de voltaje
        %controlado
        anvc=angle(V(nvc));
        V(nvc)=Edata(nvc,4)*(cos(anvc) + 1i*sin(anvc));
        VA=V;
    end
    %Se terminas las iteraciones
 
    %Se calcula las potencias de los nodos
    for k7=1:ntn
        suma=0;
        for k8=1:ntn
            suma=suma+Y(k7,k8)*V(k8);
        end
        S(k7)=conj(V(k7))*suma*Pbase;
    end
    P=real(S);
    Q=-imag(S);
    % se calculas las corrientes en las lineas de transmision
    for k9=1:nb1
        C(n1(k9),nr(k9))=(V(n1(k9))-V(nr(k9)))/Z(k9);
    end
 
 
% Se calcula potencia trasmitida y la potencia recibida en c/linea
    for k11=1:nb1
        ST(n1(k11),nr(k11))=V(n1(k11))*conj(C(n1(k11),nr(k11)))*Pbase;
        SR(n1(k11),nr(k11))=V(n1(k11))*conj(C(n1(k11),nr(k11)))*Pbase;
    end
 
    %Se hace la preparacion de la informacion para la impresion en pantalla
    PG=zeros(ntn);QG=zeros(ntn);PC=zeros(ntn);QC=zeros(ntn);
    for k12=1:ntn
    if k12==nosc || k12==nvc
        PG(k12)=P(k12);QG(k12)=Q(k12);PC(k12)=0;QC(k12)=0;
    else
        PG(k12)=0;QG(k12)=0;PC(k12)=P(k12);QC(k12)=Q(k12);
    end
    end
        %Se imprime en pantalla el reporte final
        fprintf ('\nNodo  Mag. Voltaje  Ang.fase     Generacion(MW y MVAR)       Cargas(MW y MVAR)\n');
                for k5=1:ntn
         fprintf('%g       %3.3f     %3.3f     %5.2f    %5.2f           %5.2f  %5.2f \n\n\n',k5,abs(V(k5)),angle(V(k5))*180/pi,PG(k5),QG(k5),PC(k5),QC(k5));
                end
 
                 fprintf('\n Flujos de potencia \n');
                  fprintf('\nNodo - Nodo  P(MW)    Q(MVAR)    P(MW)  Q(MVAR)\n');
                  PT=real(ST);QT=imag(ST);PR=real(SR);QR=imag(SR);
                  for k13=1:nb1
                          fprintf('\n%g      %g    %5.2f  %5.2f   %5.2f    %5.2f\n',n1(k13),nr(k13),PT(n1(k13),nr(k13)),QT(n1(k13),nr(k13)),PR(n1(k13),nr(k13)),QR(n1(k13),nr(k13)));
                  end
                  fprintf('\n No. de interaciones : %g \n',iter);
 
                  fprintf('\n Dante omar cruz #11580499 \n');
                  fprintf('\n Sitemas Electricos De Potencia \n');
                  clear;
         %Fin del programa

nota: Este programa es para un estudio de flujos de potencias de 3 nodos puedes modificar datos si te ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

flujo de potencia por Gauss Seidel en MATLAB

Publicado por Jorge Rojas (1 intervención) el 15/07/2016 23:50:08
Hola estimado Omar, el código implementado está basado en un ejemplo 6.12...¿en que libro o texto puedo encontrar este ejemplo?

Agradecería la respuesta.

Jorge
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar