Indice |
Abstract
Risoluzione di una rete monofase in regime sinusoidale con approccio manuale e numerico con il codice Fortran Carichi_monofase.f90.
Introduzione
Come sa chi da qualche tempo frequenta Electroportal, l'obiettivo che il sito si propone è dar vita ad una community nella quale si possa creare l'unione, troppo spesso dimenticata, tra il mondo tecnico produttivo ed il mondo della scuola. In quest'ottica i partecipanti propongono loro articoli, che in genere emanano dalle discussioni del forum, dove il contatto, almeno virtualmente, si realizza. Possono essere relativi a chiarimenti od approfondimenti tecnici, affrontare analisi teoriche di un tema tecnico-scientifico, presentare un progetto, oppure risolvere classici esercizi di base, come quello qui proposto, affrontandoli sia con il tradizionale metodo manuale, che conserva ancora una profonda efficacia didattica, sia ricorrendo a implementazioni software ed a simulazioni, che moltiplicano enormemente le possibilità di analisi.
L'esercizio
Partendo da una richiesta del forum di Elettrotecnica, risolviamo il seguente esercizio.
Testo esercizio
Nel circuito di figura, alimentato dalla tensione V, si determinino le correnti assorbite dai due carichi e la corrente totale. I dati del problema sono:
- Tensione di alimentazione
- frequenza f = 50Hz
Dati del primo primo carico:
- R = 10Ω;
- X = 13,19Ω.
Dati nominali del secondo carico:
- Pn = 1800W;
- Vn = 230V;
.
Soluzione manuale
Iniziamo, calcolando l'impedenza del primo carico:
La corrente assorbita dal carico di impedenza vale:
Calcolata la corrente, possiamo determinare la potenza attiva e reattiva assorbita dal carico:
Assumendo, per ipotesi, che il secondo carico abbia una impedenza costante, è lecito scrivere:
La corrente assorbita dal secondo carico:
Calcolate le potenze assorbite dai carichi, determiniamo la potenza attiva e rettiva assorbita dal circuito:
PT = P1 + P2 = 1769 + 1647 = 3416W
QT = Q1 + Q2 = 2335 + 1400 = 3735var
Nota la potenza attiva e reattiva assorbita dal sistema, possiamo calcolare la corrente assorbita:
Abbiamo risolto l'esercizio.
Convenzione sui carichi
L'esercizio presenta due tipologie di carico.
Prima tipologia di carico.
Carico del quale è nota l'impedenza (resistenza e reattanza).
Seconda tipologia di carico.
Carico del quale è noto: tensione nominale, potenza nominale e fattore di potenza.
Nel seguito i due carichi saranno distinti in carico del primo tipo e carico del secondo tipo.
Il codice Fortran 90/95
Analizziamo l'approccio numerico, utilizzando il codice Fortran Carichi_monofase.f90.
!********************************************************************************* !* * !* Programmatore: EdmondDantes * !* * !* Copyright: Nessuno * !* * !* Data: 23 ottobre 2009 * !* * !********************************************************************************* ! !********************************************************************************* !* Descrizione: * !* * !* Questo codice Fortran risolve una rete monofase * !* * !* in regime sinusoidale con carichi collegati in parallelo. * !* * !********************************************************************************* PROGRAM Carichi_monofase IMPLICIT NONE REAL*8 :: Z(50,50), C(50,50), Impedenza(50), Ang_Z(50), V, Theta, & Corrente(50), Fase_I(50), Potenza_P(50), & Potenza_Q(50), Potenza_PT, Potenza_QT, & cosfi_T, pi INTEGER*4 :: i, j, N, M, num_tot, a OPEN(100,FILE='Ingressi.txt',STATUS='OLD',ACTION='READ',FORM='FORMATTED') OPEN(200,FILE='Uscite.txt',STATUS='REPLACE',ACTION='WRITE') !---------------------------------------------------------------------------------------- !*==================================================================================== ! Dizionario: ! N: numero di carichi (primo tipo) con impedenza nota; ! M: numero di carichi (secondo tipo) con dati di targa; ! N+M: carichi totali; ! V: tensione di alimentazione [V]; ! Theta: fase della tensione di alimentazione [rad]; ! Z: matrice che contiene le impedenze note dei carichi[ohm]; ! C: matrice che contiene i dati di targa dei carichi (secondo tipo); ! Impedenza: vettore che contiene il modulo delle impedenze di ! carico (primo tipo); ! Ang_Z: vettore che contiene l'argomento dell'impedenza precedente; ! Corrente e Fase_I: vettori che contengono le correnti [A] e ! le fasi delle diverse correnti; ! Potenza_P e Potenza_Q: potenza attiva e reattiva assorbita dai carichi; ! Potenza_PT e Potenza_QT: potenza attiva e reattiva del sistema [W], [var]; ! cosfi_T: fattore di potenza complessivo !*====================================================================================== !---------------FASE LETTURA--------------------- READ(100,*) N READ(100,*) M READ(100,*) V,Theta num_tot=N+M DO i=1,N READ(100,*) (Z(i,j), j=1,2) END DO DO i=1,M READ(100,*) (C(i,j), j=1,3) END DO !-----------------FINE LETTURA------------------ !--------------------------------------------------------------------- ! Definizione del pi-greco pi=4*ATAN(1.) ! Calcolo mudulo e argomento delle impedenze dei carichi (primo tipo) DO i=1,N Impedenza(i)=SQRT(Z(i,1)**2+Z(i,2)**2) END DO a=0 DO i=1,N a=a+1 Ang_Z(i)=ATAN(Z(i,2)/Z(a,1)) END DO !------------------------------------------------------------- ! Calcolo le correnti assorbite dai carichi (primo tipo) DO i=1,N Corrente(i)= V/Impedenza(i) Fase_I(i)=Theta-Ang_Z(i) Fase_I(i)=(Fase_I(i)*180)/pi END DO ! e la potenza assorbita DO i=1,M Potenza_P(i)=C(i,2)*(V/C(i,1))**2 Potenza_Q(i)=Potenza_P(i)*TAN(ACOS(C(I,3))) END DO !------------------------------------------------------------- ! Calcolo la corrente assorbita dai carichi (secondo tipo) DO i=1,M Corrente(i+N)=Potenza_P(i)/(V*C(i,3)) Fase_I(i+N)=Theta-ACOS(C(i,3)) Fase_I(i+N)=(Fase_I(i+N)*180)/pi END DO ! e la potenza assorbita DO i=1,N Potenza_P(i+M)=Z(i,1)*Corrente(i)**2 Potenza_Q(i+M)=Z(i,2)*Corrente(i)**2 END DO !------------------------------------------------------------ ! Calcolo della potenza totale Potenza_PT=0 Potenza_QT=0 DO i=1,num_tot Potenza_PT=Potenza_PT+Potenza_P(i) Potenza_QT=Potenza_QT+Potenza_Q(i) END DO ! del fattore di potenza e della corrente cosfi_T=COS(ATAN(Potenza_QT/Potenza_PT)) Corrente(num_tot+1)=Potenza_PT/(V*cosfi_T) !----------------------FASE DEI CALCOLI CONCLUSA-------------- !------------------Stampa dei risultati---------------------- WRITE(200,*) 'Correnti assorbite' DO i=1,num_tot WRITE(200,1100) i,Corrente(i), Fase_I(i) END DO 1100 FORMAT(1X,'I(',I2,')=',F7.2,3X,'A,',3X,'Fase =',F7.2,'°') WRITE(200,*) WRITE(200,*) 'Risultati totali' WRITE(200,1200) Potenza_PT, Potenza_QT, Corrente(num_tot+1), cosfi_T 1200 FORMAT(1X,'Potenza attiva totale =',F15.2,3X,'W',/,1X,& 'Potenza reattiva totale =', F15.2,3X,'var',/,1X,& 'Corrente totale =',F10.2,3X,'A',/,1X,& 'cos fi_tot =',F5.2) !------------------------------------------------------------------------------------------ CLOSE(100) CLOSE(200) STOP END PROGRAM Carichi_monofase
L'utilizzo del codice è molto semplice. All'interno di una cartella salviamo il codice precedente e un file testo Ingressi.txt.
Il file Ingressi.txt contiene i dati di ingresso del nostro problema, inseriti nel seguente ordine.
- Nella prima riga scriviamo il numero N dei carichi del primo tipo;
- nella seconda riga scriviamo il numero M dei carichi del secondo tipo;
- nella terza riga scriviamo i dati relativi alla tensione di alimentazione: Modulo [V] e fase [radianti];
- nella quarta (e righe successive) scriviamo i dati relativi ai carichi del primo tipo: resistenza [Ω] e reattanza [Ω];
- dopo aver inserito tutti i carichi del primo tipo, scriviamo i dati relati ai carichi del secondo tipo: tensione nominale [V], potenza nominale [W] e fattore di potenza (positivo se induttivo, negativo se capacitico).
Per l'esercizio in esame, il file Ingressi.txt si presenta così:
1 1 220 0.174 10 13.19 230 1800 0.76
Dopo aver compilato ed eseguito il codice Carichi_monofase.f90, apriamo il file Uscite.txt, creato dal codice stesso all'interno della cartella. Si presenta così:
Correnti assorbite I( 1)= 13.29 A, Fase = -42.86° I( 2)= 9.85 A, Fase = -30.57° Risultati totali Potenza attiva totale = 3413.46 W Potenza reattiva totale = 3738.47 var Corrente totale = 23.01 A cos fi_tot = 0.67
Abbiamo risolto il problema.