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
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.
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