Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

2
voti

Calcolo di una rete magliata mediante programma in Fortran

Vorrei proporre un rudimentale programma scritto in Fortran 90 per la risoluzione di una rete magliata di media tensione composta di un numero n di nodi ed n_rami. Supponiamo di avere una rete come quella rappresentata nel disegno sottostante

Retemagliata.jpg

Retemagliata.jpg


La rete è composta di 3 nodi più il nodo 0 e 5 rami. Supponiamo, per ragioni di semplicità, che sia utilizzato per tutta la rete aerea MT il conduttore in rame da 70 mm2
Le caratteristiche della rete sono le seguenti:
Tensione nominale Vn_c = 20 kV
Resistenza conduttore Rl= 0.268 ohm/km
Reattanza conduttore Xl= 0.367 ohm/km
Le lunghezze dei rami in km risultano dallo schema così come le potenze in KW erogate nei vari nodi con i rispettivi fattori di potenza.(NB) La numerazione dei vari rami è individuata da un numero cerchiato. La rete si suppone alimentata dal nodo 0 (zero). Dopo aver inserito il numero dei nodi della rete si inserisce la tensione concatenata nominale, si inseriscono le potenze ed i rispettivi fattori di potenza, si inseriscono inoltre la resistenza e la reattanza chilometriche della rete ed il numero di rami della maglia. A questo punto si inseriscono i due nodi tra cui è compreso il ramo in oggetto e la sua lunghezza in km, (i valori vanno inseriti in sequenza utilizzando la barra spaziatrice per separare un valore dall'altro).

Il programma calcola le tensioni concatenate in modulo nei nodi della maglia, calcola inoltre le correnti in forma complessa ed in modulo nei rami della stessa. Il valore in forma complessa delle correnti può essere utile in quanto rappresentativo, se con segno negativo, della inversione del flusso di potenza attiva. Se esaminiamo i risultati dell'esempio riportato, nei rami 3 e 4 si ha il segno negativo in corrispondenza della parte reale della corrente, quindi, nel caso specifico, la potenza attiva fluisce dal nodo 0 verso il nodo 3 e dal nodo 3 verso il nodo 2.
Allego immagine con i risultati del calcolo ed il codice sorgente del programma.

Retemagliata.PNG

Retemagliata.PNG

PROGRAM ReteMagliata
! 07/02/2022 - CarloSolo
IMPLICIT NONE
REAL:: Vn_c! Tensione concatenata in kV
REAL,DIMENSION(20)::P ! Potenza in kW assorbita dal carico
REAL,DIMENSION(20)::cos_f ! Fattore di potenza del carico   
COMPLEX,DIMENSION(20)::Ic ! Corrente corrispondente al carico
REAL:: Rl  ! Resistenza della linea in ohm/km
REAL:: Xl  ! Reattanza della linea  in ohm/km
COMPLEX::Zl ! Impedenza della linea in forma complessa in ohm/km
COMPLEX,DIMENSION(20)::Zx ! Impedenza dei vari rami in forma complessa 
COMPLEX,DIMENSION(20)::Yx ! Ammettenza dei vari rami in forma complessa 
INTEGER::n_rami !Numero dei rami del circuito
INTEGER::n  ! Numero dei nodi
INTEGER::ni ! Nodo iniziale del ramo
INTEGER::nf ! Nodo finale   del ramo
INTEGER,DIMENSION(20)::nix ! Memorizzazione dei nodi iniziali dei rami
INTEGER,DIMENSION(20)::nfx ! Memorizzazione dei nodi finali dei rami
COMPLEX,DIMENSION(20,20)::Y ! Ammettenze della matrice
INTEGER::i,j,nm1,m,mp1,jp1,k ! Variabili di servizio
COMPLEX,DIMENSION(20)::V  ! Tensione di fase ai nodi rispetto al nodo zero
COMPLEX,DIMENSION(20)::Vf ! Tensione effettiva di fase in volt nel nodo
REAL,DIMENSION(20)::Vc    ! Tensione effettiva concatenata in KV nel nodo
COMPLEX,DIMENSION(20)::Iu ! Corrente corrispondente ai vari rami di linea
COMPLEX::qz ! Rapporto tra due elementi della matrice
REAL,DIMENSION(20)::arc ! Arco in radianti corrispondente al cos_f
REAL,DIMENSION(20)::tng ! Tangente corrispondente al cos_f
REAL,DIMENSION(20)::L ! Lunghezza dei rami di linea

DO i = 1,20
  DO j= 1,20
    Y(i,j)=0
  END DO
END DO  

WRITE(*,"( ' Inserire il numero dei nodi')")
READ(*,*) n

WRITE(*,"(' Inserire la tensione concatenata nominale dei carichi in kV')")
READ(*,*) Vn_c

WRITE(*,"(' Inserire le potenze dei carichi  ',/)")
       
DO i= 1,n
  WRITE(*,"(' Inserire la potenza in Kw assorbita dal carico P'I2)") i
  READ(*,*) P(i)
  WRITE(*,"(' Inserire il fattore di potenza del carico P',I2)")i
  READ(*,*) cos_f(i)
  arc(i) = ACOS(cos_f(i))
  tng(i) = TAN(arc(i)) 
  Ic(i)= CMPLX(P(i)/(SQRT(3.)*Vn_c),-P(i)/(SQRT(3.)*Vn_c)*tng(i))
END DO  

DO i= 1,n
  WRITE(*,"(' Corrente assorbita dal carico Ic',I1,F6.1,F6.1,' amp')")&
         & i,Ic(i)
  WRITE(*,"(' Corrente in modulo Ic',I1,F6.1,' amp')") i,&
         & SQRT(REAL(Ic(i))**2+AIMAG(Ic(i))**2)
END DO         

WRITE(*,"(' Inserire la resistenza della linea in ohm/km')")
READ(*,*) Rl
WRITE(*,"(' Inserire la reattanza della linea  in ohm/km')")
READ(*,*) Xl  
Zl= CMPLX(Rl,Xl)
WRITE(*,"(' Inserire il numero dei rami del circuito')")
READ(*,*) n_rami

DO i= 1,n_rami
  WRITE(*,"(' Inserire i due nodi tra cui e'' compreso il ramo',I2,/&
         &  ' e la sua lunghezza in Km')")i
  READ(*,*) ni,nf,L(i)
  Zx(i)=Zl*L(i)
  Yx(i) = 1./Zx(i)
  nix(i)= ni
  nfx(i)= nf
  IF(ni /= 0) THEN
    Y(ni,ni)= Y(ni,ni)+Yx(i)
  END IF  
  IF(nf /= 0)THEN
    Y(nf,nf)= Y(nf,nf)+Yx(i)
  END IF  
  IF(ni /= 0 .AND. nf /= 0) THEN
    Y(ni,nf)= Y(ni,nf)-Yx(i)
    Y(nf,ni)= Y(nf,ni)-Yx(i)
  END IF
END DO

nm1= n-1
DO m= 1,nm1
  mp1= m+1
  DO j= mp1,n
    qz= Y(j,m)/Y(m,m)
    Ic(j)= Ic(j)-(Ic(m)*qz)
    DO k= m,n
      Y(j,k)= Y(j,k)-(Y(m,k)*qz)
    END DO
  END DO
END DO

V(n)= Ic(n)/Y(n,n)

DO m= 1,nm1
  j= n-m
  jp1= j+1
  DO k= jp1,n
    Ic(j)= Ic(j)-(Y(j,k)*V(k))
  END DO
  V(j)= Ic(j)/Y(j,j)
END DO

WRITE(*,"(' Le tensioni concatenate nei nodi sono :')")
DO i= 1,n
  Vf(i)= ((Vn_c*1000)/ SQRT(3.))- V(i) 
  Vc(i)=SQRT(3.0)*(SQRT(REAL(Vf(i))**2+AIMAG(Vf(i))**2))*1E-3
  WRITE(*,"(' Vc',I2,F8.2,A)")i,Vc(i),' KV'
END DO  

WRITE(*,"(' Le correnti nei rami sono :')")
DO i= 1,n_rami
  ni= nix(i)
  nf= nfx(i)
  Iu(i)=Yx(i)*(V(nf)-V(ni))
  WRITE(*,"(' Corrente in forma complessa Iu',I2,'  ',2F8.2,' amp')") i,Iu(i)
  WRITE(*,"(' In modulo Iu',I2,F8.2,' amp')") i,&
         & SQRT(REAL(Iu(i))**2+AIMAG(Iu(i))**2)
END DO
READ(*,*)
END PROGRAM ReteMagliata
0

Commenti e note

Inserisci un commento

Inserisci un commento

Per inserire commenti è necessario iscriversi ad ElectroYou. Se sei già iscritto, effettua il login.