ΛΟΓΙΣΜΙΚΟ ΛΕΙΤΟΥΡΓΙΑΣ ΚΑΙ ΕΛΕΓΧΟΥ ΗΛΙΑΚΟΥ ΘΕΡΜΙΚΟΥ ΣΥΣΤΗΜΑΤΟΣ Επιμέλεια: Νίκος Βασιλειάδης (φοιτητής ΤΜΜ, 6 ο εξάμηνο) 1 η έκδοση προγράμματος (Μάιος 2014) Αναπτύσσεται πρόγραμμα, το οποίο προσομοιώνει τη λειτουργία και τον έλεγχο ηλιακών θερμικών συστημάτων. Συγκεκριμένα υπολογίζεται η θερμοκρασία του δοχείου αποθήκευσης. Στο πρόγραμμα εισάγονται αρχικά τα δεδομένα που αφορούν το περιβάλλον του συστήματος, όπως η ημερήσια κατανομή της θερμοκρασίας και της ηλιακής ακτινοβολίας, η ώρα ανατολής του ηλίου και οι ώρες ηλιοφάνειας. Στη συνέχεια, εισάγονται δεδομένα που αφορούν τον συλλέκτη, το φορτίο και το δοχείο αποθήκευσης. Μια σειρά μηνυμάτων καθοδηγεί τον χρήστη στα δεδομένα που πρέπει να εισάγει κάθε φορά. Στο συγκεκριμένο πρόγραμμα θεωρείται ότι η θερμοκρασία και ακτινοβολία ακολουθούν ημιτονοειδής κατανομές της μορφής: Σε περίπτωση διαφορετικής θεώρησης για τις κατανομές της θερμοκρασίας και της ακτινοβολίας, οι παραπάνω σχέσεις μπορούν να τροποποιηθούν κατάλληλα από τον χρήστη. Ο χρήστης καθορίζει το χρονικό βήμα εξαγωγής/εκτύπωσης αποτελεσμάτων και τον αριθμό των χρονικών βημάτων. Εφόσον έχουν εισαχθεί όλα τα δεδομένα, το πρόγραμμα εξάγει δύο αρχεία txt στον φάκελο που είναι αποθηκευμένο. Στο πρώτο αρχείο SolSys-Results εξάγονται σαν αποτελέσματα οι ημέρες, οι χρόνοι των αποτελεσμάτων t, η θερμοκρασίες του δοχείου αποθήκευσης Tst, το θερμικό φορτίο Qst, η ηλιακή ακτινοβολία Qs και η θερμοκρασία περιβάλλοντος Ta. Στο δεύτερο αρχείο εμφανίζονται μόνο οι θερμοκρασίες του δοχείου αποθήκευσης για ευκολότερη δημιουργία πινάκων και διαγραμμάτων με προγράμματα όπως το Excel. Ακολουθεί ο κώδικας σε Fortran: Program SolSys Implicit none real,parameter::pi=3.141592 real::t,trise,td,qs,qmax,qref,ta,tam,dta,a,ta_eff,b,fr,u,mc,c,qu=0,qst=0,mst,ust & &,Ast,Ql,ml,g,Tfin,Tfout,DTl,Tlmin,Tst,Tstmax,Tstag,dc,dl,tr Integer::maxi,daycount Write(*,'("Enviromental Data Input",(/))') Write(*,'("Insert reference heat flux Qs,ref [W/m^2]:")') Read*,qref Write(*,'("Insert max heat flux Qs,max [W/m^2] :")') Read*,qmax Write(*,'("Insert mean temperature Ta,mean [K] :")') Read*,Tam Write(*,'("Insert temperature variation DTa [K] :")')
Read*,DTa Write(*,'("Insert time of sunrise in minutes :")') Read*,trise Write(*,'("Insert time of daylight in minutes :",)') Read*,td Write(*,'("Collector Data Input",(/))') Write(*,'("Insert collector surface A [m^2] :")') Read*,A Write(*,'("Insert collector property ta_eff :")') Read*,ta_eff Write(*,'("Insert collector heat removal parameter FR :")') Read*,Fr Write(*,'("Insert collector value b :")') Read*,b Write(*,'("Insert collector mass flow rate mc [Kg/s]")') Read*,mc Write(*,'("Insert specific heat of working fluid [J/kg*K] :"))') Read*,c Write(*,'("Load Data Input",(/))') Write(*,'("Insert load QL [W] :")') Read*,Ql Write(*,'("Insert load mass flow ml [Kg/s] :")') Read*,ml Write(*,'("Insert load minimum temperature Tl,min [K] :")') Read*,Tlmin Write(*,'("Storage Data Input",(/))') Write(*,'("Insert storage capacity Mst*Cp [J/K] :")') Read*,Mst Write(*,'("Insert storage surface Ast [m^2] :")') Read*,Ast Write(*,'("Insert storage heat transfer coefficient Ust [W/m^2*K] :")') Read*,Ust Write(*,'("Insert maximum storage temperature Tst,max [K] :")') Read*,Tstmax Write(*,'("Insert initial storage temperature Tst,initial [K] :")') Read*,Tst Write(*,'("Calculation Data Input")') Write(*,'("Insert time between outpout in minutes :")') Read*,tr Write(*,'("Enter number of time steps [integer] :")') Read*,maxi t=trise dl=0 U=b*qref/Tam g=mc*c*tam/qref/a daycount=1 open (10,file='SolSysExcel Results.txt') open (20,file='SolSys Results.txt')
Write (20,'(11x,"Day",4x,"Time [min]",5x,"tstorage[k]",5x,"qstorage [W]",3x,"Qsun [W/m^2]",4x,"Tambient [K]",10x,"n")') Write(20,'(/)') Do While (t<=maxi*tr+trise) Daycount=t/60/24+1 If (t>=(daycount 1)*24*60+trise.and. t<=(daycount 1)*24*60+trise+td) then qs=800*sin(pi*((t (daycount 1)*24*60) trise)/td) qs=0 Ta=Tam+Dta*Sin(2*Pi*(t (trise+360))/1440) Tfin=Tst Tstag=Ta+ta_eff*qs/b/qref*Tam Tfout=Tfin*(1 Fr*b/g)+Fr*Tam/g*(ta_eff*qs/qref+b*Ta/Tam) If (Tstag Tfin>6) then If (Tst>Tstmax) then If (Tfout Tfin>2) then dc=1 DTl=Ql/ml/c If (DTl>2) then If (Tst<Tlmin) then dl=0 dl=1 dl=0 Qu=mc*c*(Tfout Tfin) Qst=dc*Qu dl*ql Ust*Ast*(Tst Ta) If (mod(t trise,tr)==0) then Write (10,*) Tst Write (20,*) Daycount,((t (daycount 1)*24*60)),Tst,Qst,qs,Ta
Tst=Tst+60*Qst/Mst t=t+1 Enddo End Στη συνέχεια ο κώδικας εφαρμόζεται σε ένα παράδειγμα: Έστω ηλιακό θερμικό σύστημα στο οποίο ζητείται η χρονική εξέλιξη της θερμοκρασίας του δοχείου αποθήκευσης με τα εξής δεδομένα: q 800 W/m 2 S,ref t trise qs t qs, ref sin W/m 2 td trise 7 π.μ.=420min t 10 h=600min (μέγιστος διαθέσιμος χρόνος ηλιακής ακτινοβολίας εντός 24h) d T 290 K, 8 K a T a 2 t trise 360 Ta t Ta Tasin 1440 t t rise 7 π.μ.=420min: ελάχιστη θερμοκρασία περιβάλλοντος t t rise 12 7 μ.μ.=1140 min: μέγιστη θερμοκρασία περιβάλλοντος Συλλέκτης: 30, F 095., b 1.2, m 20 kg/min, c 4. 2 KJ/(kg o C) A m 2, 08 eff. R Φορτίο: απαιτείται σταθερό φορτίοq L 4.2 kw σε θερμοκρασία TLin, 300 Κ, m 10 kg/min, μέγιστη επιτρεπόμενη θερμοκρασία ασφαλείας 373Κ L Δοχείο αποθήκευσης: U st 0 W/(m 2o C), T, 300 Κ, mc 5000kJ/K st initial Υπολογίστε τη χρονική εξέλιξη της θερμοκρασίας στο δοχείο αποθήκευσης Tst t? Εισάγονται τα δεδομένα του προβλήματος και το πρόγραμμα τυπώνει αποτελέσματα με χρονικό βήμα 60 λεπτών για 24 χρονικά βήματα, δηλαδή από τις 7 πμ. της πρώτης μέρας έως τις 7 πμ της δεύτερης μέρας. Ακολουθούν τα δεδομένα εισαγωγής και τα αποτελέσματα από το αρχείο Solsys-Results σε πίνακα. st p p
Day Time [min] Real Time Tstorage Qstorage Qsun Ta 1 420 7:00 300.000-4200.00 0.00 282.00 1 480 8:00 299.950-4200.00 247.21 282.27 1 540 9:00 300.028-238.916 470.22 283.07 1 600 10:00 301.740 4765.33 647.21 284.34 1 660 11:00 306.576 8468.40 760.84 286.00
1 720 12:00 313.489 10565.8 800.00 287.92 1 780 13:00 321.265 10907.2 760.84 290.00 1 840 14:00 328.649 9511.61 647.21 292.07 1 900 15:00 334.457 6564.94 470.22 294.00 1 960 16:00 337.694 2401.55 247.21 295.65 1 1020 17:00 337.280-4200.00 0.00 296.92 1 1080 18:00 334.280-4200.00 0.00 297.72 1 1140 19:00 331.281-4200.00 0.00 298.00 1 1200 20:00 325.282-4200.00 0.00 297.72 1 1260 21:00 322.283-4200.00 0.00 296.92 1 1320 22:00 319.284-4200.00 0.00 295.65 1 1380 23:00 316.285-4200.00 0.00 294.00 1 1440 24:00 313.285-4200.00 0.00 292.07 2 60 1:00 310.286-4200.00 0.00 290.00 2 120 2:00 307.287-4200.00 0.00 287.92 2 180 3:00 304.288-4200.00 0.00 286.00 2 240 4:00 301.288-4200.00 0.00 284.34 2 300 5:00 299.989-4200.00 0.00 284.34 2 360 6:00 299.989 0.00 0.00 283.07 2 420 7:00 299.989 0.00 0.00 282.00 Στην συνέχεια, το πρόγραμμα τρέχει για 96 χρονικά βήματα (4 μέρες) και τα αποτελέσματα από το αρχείο SolSysExcel-Results μετά από επεξεργασία σε Excel απεικονίζονται στο παρακάτω γράφημα (χρονική εξέλιξη της θερμοκρασίας αποθήκευσης). Παρατηρείται ότι για ένα χρονικό διάστημα το πρωί, περίπου 3 ωρών ανά 24ωρό, ο συλλέκτης δεν επαρκεί για την πλήρη κάλυψη του απαιτούμενου φορτίου και απαιτείται βοηθητική πηγή ενέργειας. Συγκεκριμένα η θερμοκρασία του δοχείου αποθήκευσης πέφτει κάτω από τους 300 Κ μεταξύ 5:30 πμ και 8:30 πμ, ενώ το ποσοστό του χρόνου κατά το οποίο καλύπτεται το απαιτούμενο φορτίο είναι 87,63%.