ΕΞΑΜΑΗΝΙΑΙΑ Β - ΕΠΕΞΗΓΗΣΕΙΣ Μέρος Α : Ένα Απλό Μοντέλο Πρόβλεψης Σ αυτή την ενότητα, θα δημιουργήσουμε το απλό μοντέλο πρόβλεψης, για τη παραγωγή ενέργειας από το φωτοβολταικό πάρκο. Μέσα από αυτή την άσκηση, θα δούμε μία μέθοδο, για να απαλείφουμε το σφάλμα σε μία μέτρηση και να κάνουμε προβλέψεις με πολλές εφαρμογές στην ψηφιακή επεξεργασία σήματος και εικόνας, τη ρομποτική και τα συστήματα μετρήσεων. Θα δούμε ακόμα πολύ χαρακτηριστικές δομές και λειτουργίες του προγραμματισμού, όπως ο πίνακας, η επεξεργασία συμβολοσειρών, η επανάληψη, η αναδρομή. Συνήθως, ξεκινάμε ένα πρόγραμμα στο LabVIEW, δημιουργώντας πρώτα το front panel αυτού του προγράμματος. Εκεί δημιουργούμε τα εικονικά όργανα που θα μας επιτρέψουν είτε να εισάγουμε δεδομένα στο πρόγραμμα ή να βλέπουμε μετρήσεις και τα αποτελέσματα της επεξεργασίας του προγράμματος. Για να εισάγουμε δεδομένα στο πρόγραμμα, χρησιμοποιούμε εικονικά όργανα ελέγχου (controls), ενώ για να βλέπουμε τα αποτελέσματα της επεξεργασίας του προγράμματος, χρησιμοποιούμε ενδείξεις (indicators). Αυτή είναι η βασική διαφορά ανάμεσα στα εικονικά όργανα ελέγχου (controls) που χρησιμεύουν για να δίνουμε τιμές και να ρυθμίζουμε τη λειτουργία του προγράμματος και στις ενδείξεις (indicators) που χρησιμεύουν για τη παράσταση των αποτελεσμάτων του προγράμματος. Εικόνα 1: Για το front panel του προγράμματος, δημιουργούμε τις ενδείξεις (indicators), για δύο δισδιάστατους πίνακες. Ένας από αυτούς θα παριστάνει τις μετρήσεις παραγωγής ενέργειας και ο άλλος 1 θα παριστάνει τις προβλέψεις του προγράμματος.
Α ΣΥΛΛΟΓΗ ΚΑΙ ΕΠΕΞΕΡΓΑΣΙΑ ΔΕΔΟΜΕΝΩΝ Έτσι, πριν διαβάσουμε τα δεδομένα παραγωγής ενέργειας από το αρχείο Excel, δημιουργούμε στο front panel, μία ένδειξη για ένα δισδιάστατο πίνακα, για να παραστήσουμε μετρήσεις παραγωγής ενέργειας, από το αρχείο 100 kw Park.xls. Παρόμοια, δημιουργούμε μία ακόμα ένδειξη για ένα δεύτερο δισδιάστατο πίνακα που θα παριστάνει τις προβλέψεις που θα υπολογίζει το πρόγραμμα (Εικόνα 1). Αφού δημιουργήσουμε τις ενδείξεις για τους πίνακες που θα παριστάνουν τις μετρήσεις παραγωγής ενέργειας, από τη περίοδο 3 17 ΜΑΙ και τις προβλέψεις από το πρόγραμμα, για τη περίοδο 3 18 ΜΑΙ, πηγαίνουμε στο δομικό διάγραμμα του προγράμματος, για να ξεκινήσουμε το πρόγραμμα, για το απλό μοντέλο πρόβλεψης. Πριν διαβάσουμε τα δεδομένα παραγωγής ενέργειας από το αρχείο 100 kw Park.xls, δίνουμε την αρχική τιμή μηδέν (0) σε όλα τα στοιχεία του πίνακα που θα παριστάνει αυτές τις μετρήσεις (Εικόνα 2). Δίνουμε ακόμα την αρχική τιμή 0 σε όλα τα στοιχεία, στο πίνακα των προβλέψεων από το πρόγραμμα (Εικόνα 2). Για να δώσουμε την αρχική τιμή 0 στα στοιχεία των δύο αυτών πινάκων, χρησιμοποιούμε / προσθέτουμε στο δομικό διάγραμμα, το μπλοκ Initialize Array, από τη κατηγορία Programming Arrays Initialize Array Προσθέτουμε στο δομικό διάγραμμα του προγράμματος ένα μπλοκ Initialize Array για το πίνακα των μετρήσεων και ένα αντίστοιχο μπλοκ, για το πίνακα των προβλέψεων (Εικόνα 2). Συνδέουμε στον έναν ακροδέκτη του μπλοκ, τη σταθερά 0 που είναι η αρχική τιμή που δίνουμε σε όλα τα στοιχεία, κάθε πίνακα. Στους άλλους δύο ακροδέκτες συνδέουμε σταθερές που προσδιορίζουν τον αριθμό των γραμμών και των στηλών, αντίστοιχα, κάθε πίνακα. Έχοντας δώσει την αρχική τιμή 0 σε όλα τα στοιχεία στο πίνακα των τιμών παραγωγής ενέργειας και στο πίνακα των προβλέψεων, έχουμε απαντήσει στο ερώτημα Α.2, πριν ακόμα απαντήσουμε στο Α.1. Για να απαντήσουμε τώρα στο Α.1 και να διαβάσουμε τα δεδομένα από το αρχείο 100 kw Park.xls, στο πρόγραμμα, χρησιμοποιούμε την εντολή: Programming File I/O Read Spreadsheet Η εντολή Read from Spreadsheet διαβάζει δεδομένα από ένα αρχείο Excel. Αφήνουμε κενό τον ακροδέκτη εισόδου του μπλοκ και υποδεικνύουμε το όνομα και το κατάλογο, όπου έχουμε αποθηκεύσει το αρχείο 100 kw Park.xls, στον υπολογιστή μας, χρησιμοποιώντας τον οδηγό εξερεύνησης, κατά την εκτέλεση του προγράμματος. Η Read from Spreadsheet θα διαβάσει όλα τα δεδομένα από το αρχείο Excel. Όμως, για να οργανώσουμε, να παραστήσουμε δηλαδή αυτά τα δεδομένα σε πίνακα, όπου κάθε στήλη θα περιέχει τις τιμές παραγωγής ενέργειας, από μία αντίστοιχη ημέρα λειτουργίας του πάρκου, όπως φαίνεται στην Εικόνα 3, χρειάζεται πρώτα να χωρίσουμε τα δεδομένα που διαβάζει η Read from Spreadsheet από το αρχείο 100 kw Park.xls, σε τρείς στήλες που αντιστοιχούν στην ημερομηνία, τη παραγωγή ενέργειας και τα έσοδα από τη παραγωγή ενέργειας. 2
Εικόνα 2: Το μέρος του προγράμματος, για τα ερωτήματα Α.1 και Α.2. Δίνουμε την αρχική τιμή 0, σε όλα τα στοιχεία, στο πίνακα τιμών παραγωγής ενέργειας και στο πίνακα των προβλέψεων. Μετά, διαβάζουμε τα δεδομένα από το αρχείο 100 kw Park.xls, και χωρίζουμε αυτά τα δεδομένα σε τρείς στήλες που αντιστοιχούν στην ημερομηνία, τη παραγωγή ενέργειας και τα έσοδα από τη παραγωγή ενέργειας, κάθε τέταρτο της ώρας. 3
Για να χωρίσουμε τα δεδομένα που διαβάζει η εντολή από το αρχείο, σε τρείς στήλες, χρησιμοποιούμε την εντολή Programming Arrays Index Array Χρησιμοποιούμε τρία μπλοκ Index Array. Κάθε μπλοκ θα εξάγει μία διαφορετική στήλη, από το πίνακα παραγωγής ενέργειας που διαβάζει η Read from Spreadsheet. Στην είσοδο κάθε μπλοκ, τροφοδοτούμε το πίνακα τιμών ενέργειας που διαβάζει η Read from Spreadsheet και υποδεικνύουμε τη στήλη ημερομηνία, ενέργεια ή έσοδα που θα εξάγει, κάθε μπλοκ Index Array (Εικόνα 2). Μέχρι τώρα, έχουμε δώσει την αρχική τιμή 0, σε όλα τα στοιχεία, στους πίνακες που θα παριστάνουν τη παραγωγή ενέργειας από το πάρκο, ανά ημέρα λειτουργίας και τις προβλέψεις από το πρόγραμμα. Έχουμε ακόμα διαβάσει τα δεδομένα παραγωγής ενέργειας και τα έχουμε χωρίσει σε τρείς στήλες. Όμως, παρατηρούμε πως τα δεδομένα παραγωγής ενέργειας, από τις ημέρες 3 17 ΜΑΙ, είναι όλα σε μία στήλη. Για να κάνουμε προβλέψεις, χρειάζεται να χωρίσουμε τα δεδομένα παραγωγής ενέργειας και να τοποθετήσουμε / αποθηκεύσουμε τα δεδομένα από κάθε ημέρα, σε μία ξεχωριστή στήλη, στο πίνακα παραγωγής ενέργειας, όπως φαίνεται στην Εικόνα 3. Αυτό των διαχωρισμό των δεδομένων παραγωγής ενέργειας, από κάθε ημέρα λειτουργίας του πάρκου, επιχειρούμε στο επόμενο ερώτημα. Η λειτουργία που εξετάζουμε σ αυτό το ερώτημα, είναι καθαρά προγραμματιστική. Δεν κάνουμε κάποια πρόβλεψη. Απλά, σ αυτό το ερώτημα, επεξεργαζόμαστε την ημερομηνία, για να αναδιοργανώσουμε / α- ναπαραστήσουμε τα δεδομένα, έτσι ώστε να μπορούμε να κάνουμε προβλέψεις. Από τη παράσταση της παραγωγής ενέργειας, από όλες τις ημέρες λειτουργίας, σε μία στήλη, επιχειρούμε μία παράσταση αυτών των δεδομένων, όπου η παραγωγή ενέργειας, ανά τέταρτο της ώρας, θα είναι σε μία ξεχωριστή στήλη, στο δισδιάστατο πίνακα παραγωγής ενέργειας, για κάθε ημέρα λειτουργίας του πάρκου (Εικόνα 3). Για να χωρίσουμε τα δεδομένα παραγωγής ενέργειας σε ξεχωριστές στήλες, στο πίνακα παραγωγής ενέργειας, στη βάση της ημέρας λειτουργίας, χρειάζεται πρώτα, να διαχωρίσουμε την ημέρα από την ημερομηνία και μετά, την ώρα και τα λεπτά από τη συνδυασμένη παράσταση ημερομηνίας / ώρας, στη πρώτη στήλη, κάθε γραμμής δεδομένων (Εικόνα 4). Για να αποσπάσουμε την ημέρα, αλλά και την ώρα και τα λεπτά, από την ημερομηνία, στη πρώτη στήλη κάθε γραμμής των δεδομένων (Εικόνα 4), χρησιμοποιούμε μία από τις εντολές επεξεργασίας συμβολοσειρών, την: Programming String Match pattern 4
Εικόνα 3: Για να μπορούμε να κάνουμε προβλέψεις, χρειάζεται να παραστήσουμε τα δεδομένα παραγωγής ενέργειας σε στήλες, όπου κάθε στήλη θα παριστάνει τη παραγωγή ενέργειας, από μία αντίστοιχη ημέρα λειτουργίας του πάρκου. 5
Εικόνα 4: Για να παραστήσουμε τα δεδομένα παραγωγής ενέργειας σε στήλες, ό- πως στην Εικόνα 3, χρειάζεται πρώτα, να διαχωρίσουμε κάθε ημερομηνία, στην ημέρα, την ώρα και τα λεπτά (το τέταρτο), από τα οποία αποτελείται. Η Match pattern είναι μία χαρακτηριστική εντολή επεξεργασίας κειμένου. Στην είσοδό της παίρνει μία συμβολοσειρά, για παράδειγμα, την ημερομηνία στη πρώτη στήλη, μίας γραμμής δεδομένων. Στην άλλη είσοδό της, η Match pattern παίρνει τη περιγραφή μίας μορφής χαρακτήρων, όπως στην Εικόνα 5. Η Match pattern αναζητά τη πρώτη εμφάνιση της συγκεκριμένης μορφής χαρακτήρων, στη συμβολοσειρά εισόδου. Σ αυτή την άσκηση, χρησιμοποιούμε τη Match pattern, πρώτα, για να αποσπάσουμε την ημέρα και μετά την ώρα και τα λεπτά, από την ημερομηνία και ώρα, στη πρώτη στήλη, κάθε γραμμής δεδομένων, από το πάρκο. Έτσι, στη μία είσοδο της Match pattern, τροφοδοτούμε την ημερομηνία από τη πρώτη στήλη, κάθε γραμμής δεδομένων. Επειδή μία ημέρα αποτελείται από ένα (όπως η 3 ΜΑΙ) ή δύο ψηφία (όπως η 12 ΜΑΙ), για να εξάγουμε την ημέρα, από την ημερομηνία, προσδιορίζουμε στη Match pattern, να αναζητήσει στην ημερομηνία, μία ακολουθία από ένα ή περισσότερα ψηφία, χρησιμοποιώντας / συνδέοντας στην άλλη είσοδο το γενικό τύπο / προσδιορισμό [0 1] + (Εικόνα 5). Η Match pattern θα εντοπίσει στη συμβολοσειρά εισόδου (την ημερομηνία), το πρώτο υποσύνολο χαρακτήρων που ταιριάζει στο προσδιορισμό [0 1] +, δηλαδή τη πρώτη συνεχή ακολουθία από ένα ή περισσότερα ψηφία που θα είναι η ημέρα (Εικόνα 5). Η Match pattern θα χωρίσει τη συμβολοσειρά στην είσοδό της σε τρία τμήματα και θα δώσει σε κάθε έξοδο, ένα αντίστοιχο τμήμα, δηλαδή: το υποσύνολο χαρακτήρων που ταιριάζει στο προσδιορισμό [0 1] + (την ημέρα), το τμήμα που προηγείται και το τμήμα που ακολουθεί αυτό το υποσύνολο (Εικόνα 5). 6
Εικόνα 5: Χρησιμοποιούμε τη Match pattern, για να διαχωρίσουμε διαδοχικά, την ημέρα, την ώρα και το τέταρτο από τη συνδυασμένη παράσταση ημερομηνίας και ώρας και έτσι να υπολογίσουμε τη στήλη και τη γραμμή στο πίνακα παραγωγής ενέργειας που πρέπει να αποθηκεύσουμε τη τιμή παραγωγής που αντιστοιχεί σε κάθε ημερομηνία. 7
Αφού αποχωρίσουμε την ημέρα από την ημερομηνία, επιχειρούμε μετά, να αποχωρίσουμε την ώρα και τα λεπτά. Η πρώτη Match pattern αποσπά την ημέρα από την υπόλοιπη ημερομηνία και ώρα και δίνει στη μία έξοδό της, την ημέρα και στην άλλη έξοδο, την υπόλοιπη ημερομηνία και ώρα. Τροφοδοτούμε την υπόλοιπο τμήμα της ημερομηνίας, μετά την ημέρα, σε μία δεύτερη Match pattern. Υποδεικνύουμε στη δεύτερη Match pattern να βγάλει το μήνα και το έτος, χρησιμοποιώντας το γενικό προσδιορισμό /5/12/. Έτσι, η δεύτερη Match pattern, θα χωρίσει την ημερομηνία που απομένει, αφού βγάλουμε την ημέρα, σε δύο επιμέρους τμήματα, το έτος/μήνα και την ώρα με τα λεπτά (Εικόνα 5). Για να χωρίσουμε την ώρα από τα λεπτά, χρησιμοποιούμε δύο ακόμα Match pattern. Η μία από αυτές, λειτουργεί ώστε να χωρίσει την ώρα από τα λεπτά, αναζητώντας μία ακολουθία από ένα ή περισσότερα ψηφία και δίνοντας στη μία έξοδό της, την ώρα που παριστάνεται από ένα ή από δύο ψηφία και στην άλλη έξοδο, την υπόλοιπη συμβολοσειρά, μετά την ώρα που περιλαμβάνει το χαρακτήρα : που χωρίζει την ώρα από τα λεπτά και τα λεπτά. Έχοντας πάρει την ώρα, χρησιμοποιούμε μία ακόμα Match pattern, για να αποχωρίσει τα λεπτά από το διαχωριστικό χαρακτήρα : (Εικόνα 5).. Αφού διασπάσουμε την συνδυασμένη παράσταση ημερομηνίας και ώρας, στην ημέρα, την ώρα και τα λεπτά, μετατρέπουμε κάθε μία από αυτές τις μονάδες χρόνου, από κείμενο σε πραγματική τιμή, χρησιμοποιώντας την εντολή: Όλη αυτή η διαδικασία, για να χωρίσουμε μία ημερομηνία, στην ημέρα, την ώρα και τα λεπτά που την αποτελούν, είναι για να επιτρέψει στο πρόγραμμα να αποθηκεύσει τη τιμή παραγωγής ενέργειας που αντιστοιχεί σ αυτή την ημερομηνία, στη κατάλληλη στήλη και γραμμή στο δισδιάστατο πίνακα παραγωγής ενέργειας. Η ημέρα από μία ημερομηνία, καθορίζει τη στήλη όπου θα αποθηκεύσουμε τη τιμή ενέργειας που αντιστοιχεί στη συγκεκριμένη ημερομηνία. Η ώρα και τα λεπτά καθορίζουν τη γραμμή που θα αποθηκεύσουμε αυτή τη τιμή ενέργειας. Για να βρούμε τη γραμμή στο πίνακα παραγωγής ενέργειας που θα αποθηκεύσουμε μία τιμή ενέργειας, πολλαπλασιάζουμε την ώρα που αντιστοιχεί σ αυτή τη τιμή ενέργειας επί 4 και διαιρούμε τα λεπτά (το τέταρτο) δια 15. Αποθηκεύουμε δηλαδή κάθε τιμή παραγωγής ενέργειας από τη στήλη των τιμών ενέργειας, σε μία θέση (i, j) στο δισδιάστατο πίνακα παραγωγής ενέργειας, όπου: j = ημέρα i = ώρα 4 + λεπτά 15 Μ αυτό τον τρόπο, κατανέμουμε τις τιμές παραγωγής ενέργειας από μία στήλη, στις 15 στήλες του πίνακα παραγωγής ενέργειας, όπου κάθε στήλη παριστάνει τα δεδομένα πα 8
Εικόνα 6: Αφού χωρίσουμε την ημέρα, την ώρα και το τέταρτο, από μία ημερομηνία, χρησιμοποιούμε τη τιμή της ημέρας για να υπολογίσουμε τη στήλη και τις τιμές της ώρας και του τετάρτου, για να υπολογίσουμε τη γραμμή, στο δισδιάστατο πίνακα παραγωγής ενέργειας που θα αποθηκεύσουμε την αντίστοιχη τιμή ενέργειας. 9
ραγωγής ενέργειας από μία αντίστοιχη ημέρα λειτουργίας του πάρκου (Εικόνα 6). Μπορούμε τώρα να ξεκινήσουμε να κάνουμε προβλέψεις, χρησιμοποιώντας το απλό μοντέλο πρόβλεψης. 10