Vous êtes sur la page 1sur 34

flujo de potencia por Gauss Seidel en MATLAB

Publicado por dante omar cruz ing-omar16@hotmail.com (1 intervencin) el 25/11/2015


22:35:37

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(k1

3)),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

flujo de potencia por Gauss Seidel en MATLAB


Publicado por dante omar cruz ing-omar16@hotmail.com (1 intervencin) el 25/11/2015
22:35:37

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(k1

3)),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

Matlab - flujo de potencia por Gauss Seidel en MATLAB


Buscar

Volver

Nuevo Tema

<<>>

Vista:
arbol
flujo de potencia por Gauss Seidel en MATLAB
JavierD (04/05/2011 11:42:29)4.724 visitas
3 respuestas

flujo de potencia por Gauss Seidel en MATLAB


guillermo (30/11/2011 00:49:20)

flujo de potencia por Gauss Seidel en MATLAB


dante omar cruz (25/11/2015 22:35:37)

flujo de potencia por Gauss Seidel en MATLAB


Jorge Rojas (15/07/2016 23:50:08)

flujo de potencia por Gauss Seidel en MATLAB


Publicado por JavierD javierdglez@hotmail.com (1 intervencin) 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 generacin y dos de consumo, tengo los calculos

hechos (a mano) de matrid de admitancias nodales y la primera iteracin y ahora tengo que

progamarlo en matlab, porfabor alguien me puede hechar un cable?

Muchas gracias.

Un saludo.

Valora esta pregunta

0
Responder

Otras secciones de LWP con contenido de Matlab

- Cdigo fuente de Matlab


- Cursos de Matlab
- Temas de Matlab
- Chat de Matlab
Cdigos de Matlab

- Segunda Derivada Del Punto Intermedio En Matlab


- Aproximacin Discreta Minimos Cuadrados Exponencial En Matlab
- Aproximacin Discreta Minimos Cuadrados Lineal En Matlab

flujo de potencia por Gauss Seidel en MATLAB


Publicado por guillermo (1 intervencin) el 30/11/2011 00:49:20

pues no se pue ber tu trabajo pero me interesaria analisarlo

Valora esta respuesta

0
Comentar

flujo de potencia por Gauss Seidel en MATLAB


Publicado por dante omar cruz ing-omar16@hotmail.com (1 intervencin) el 25/11/2015
22:35:37
1

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(k1

3)),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


YBUS=[-14.5i,8.0i,4.0i,2.5i;8.0i,-17.0i,4.0i,5.0i;4.0i,4.0i,-
8.8i,0.0;2.5i,5.0i,0.0,-8.3i]

YBUS =

0.0000 -14.5000i 0.0000 + 8.0000i 0.0000 + 4.0000i 0.0000 +


2.5000i

0.0000 + 8.0000i 0.0000 -17.0000i 0.0000 + 4.0000i 0.0000 +


5.0000i

0.0000 + 4.0000i 0.0000 + 4.0000i 0.0000 8.8000i 0.0000 +


0.0000i

0.0000 + 2.5000i 0.0000 + 5.0000i 0.0000 + 0.0000i 0.0000


8.3000i

>> IBUS=[0;0;-i;-0.48-048i]

IBUS =

0.0000 + 0.0000i

0.0000 + 0.0000i

0.0000 1.0000i
-0.4800 -48.0000i

>> VBUS=inv(YBUS)*IBUS

VBUS =

30.3590 0.2973i

30.6630 0.3004i

27.8509 0.2717i

33.3991 0.3283i

>> abs(VBUS)

ans =

30.3604

30.6645

27.8522

33.4007

angle(VBUS)*57.3

ans =
-0.5611
-0.5613
-0.5589
-0.5633

Vous aimerez peut-être aussi