Εισαγωγή αρχείων δεδοµένων 1. Η εισαγωγή αρχείων δεδοµένων στο LaVIEW γίνεται στο Block Diagram µε την εντολή Read From Spreadsheet File. 2. Εισάγουµε την εντολή Read From Spreadsheet File στο Block Diagram µε δεξί κλικ και επιλογή της από το µενού File I/O (σχήµα 6.1). Με την εντολή Read From Spreadsheet File µπορούµε να εισάγουµε στο vi αρχεία τύπου txt. Σχήµα 6.1: Εισαγωγή της εντολής Read From Spreadsheet File στο Block Diagram. 3. Στο σχήµα 6.1 έχει παρουσιαστεί επίσης το µενού Help της Read From Spreadsheet File. Από το µενού αυτό βλέπουµε ότι στην είσοδο της Read From Spreadsheet File µπορούµε να δώσουµε το path, δηλαδή την ακριβή τοποθεσία του αρχείου που θέλουµε να εισάγουµε. Αν το αφήσουµε κενό, τότε µε την εκτέλεση της εντολής θα ανοίξει ένα πλαίσιο διαλόγου για να υποδείξουµε εµείς χειροκίνητα τη θέση του αρχείου. Επίσης, στην περίπτωση εισαγωγής διδιάστατου array µπορούµε να καθορίσουµε αν θα εισαχθεί µε αντιστραµένες τις γραµµές σε στήλες, εισάγοντας µία σταθερή µεταβλητή TRUE στην είσοδο transpose. Τέλος, µε το µενού που βρίσκεται στο κάτω µέρος της εντολής Read From Spreadsheet File µπορούµε να καθορίσουµε το είδος των δεδοµένων που περιέχονται στο εισαγόµενο αρχείο, δηλαδή αν θα είναι πραγµατικοί αριθµοί διπλής ακρίβειας, ακέραιοι αριθµοί ή κείµενο (string). Συνήθως δεν χρειάζεται να καλωδιώσουµε κάποιες από τις µεταβλητές εισόδου της εντολής. Αυτό που χρειάζεται να καλωδιώσουµε είναι η έξοδος στην οποία θα πάρουµε τα αρχεία που θέλουµε να εισάγουµε το vi. Τούτο γίνεται µε την έξοδο «all rows», στην πάνω δεξιά γωνία της Read From Spreadsheet File. 4. Αν θέλουµε να εισάγουµε ένα διδιάστατο array µε την εντολή Read From Spreadsheet File, τότε αρκεί να καλωδιώσουµε ένα διδιάστατο array indicator στην έξοδο «all rows» της εντολής (σχήµα 6.2α). Αντίθετα, αν θέλουµε να εισάγουµε ένα µονοδιάστατο array, τότε και πάλι θα καλωδιώσουµε την έξοδο
«all rows» αλλά αυτή τη φορά θα πρέπει να παρεµβάλουµε πριν το µονοδιάστατο array indicator τη συνάρτηση «Index array» (σχήµα 6.2β). Σχήµα 6.2: Εισαγωγή διδιάστατου και µονοδιάστατου array µε την Read From Spreadsheet File. 5. Γιατί όµως θα πρέπει να παρεµβάλουµε τη συνάρτηση index array στην περίπτωση που θέλουµε να εισάγουµε ένα µονοδιάστατο array; Καταρχήν ας δούµε πως εισάγεται και πως δουλεύει η index array. Εισάγουµε την index array µε δεξί κλικ στο Block Diagram και επιλογή της από το µενού «Array» (σχήµα 6.3), όπου βρίσκονται όλες οι συναρτήσεις οι σχετικές µε arrays. Στο σχήµα 6.3 παρουσιάζεται επίσης το µενού Help της index array. Σχήµα 6.3: Εισαγωγή και µενού Help της συνάρτησης index array. 6. Η συνάρτηση index array δέχεται ως είσοδό της ένα array. Αν το array αυτό είναι µονοδιάστατο, τότε κάτω από την είσοδο του array εµφανίζεται µία ακόµα είσοδος ακέραιου αριθµού. Η συνάρτηση index array επιστρέφει το στοιχείο από το array εισόδου που βρίσκεται στη θέση (index) n, η οποία έχει οριστεί στη δεύτερη είσοδο της index array (σχήµα 6.4α).
Σχήµα 6.4: Εναλλακτικοί τρόποι λειτουργίας της συνάρτησης index array. Αν το array εισόδου είναι διδιάστατο, τότε κάτω από την είσοδο του array εµφανίζονται δύο index, ένα για τη γραµµή και ένα για τη στήλη που βρίσκεται το στοιχείο του array εισόδου που θέλουµε να µας δώσει στην έξοδό της η index array (σχήµα 6.4β). Αν καλωδιώσουµε µόνο τη µία από τις δύο εισόδους µε ένα αριθµό n, τότε στην έξοδο της index array θα πάρουµε ένα µονοδιάστατο array, το οποίο θα είναι ολόκληρη η n γραµµή (αν καλωδιώσουµε την είσοδο γραµµής) ή ολόκληρη η n στήλη (αν καλωδιώσουµε την είσοδο στήλης) (σχήµα 6.4γ). Για παράδειγµα, στο σχήµα 6.4γ, καθώς έχουµε καλωδιώσει στην είσοδο της index array µόνο τη στήλη του διδιάστατου array µε index = 4, η έξοδος της συνάρτησης θα είναι ένα µονοδιάστατο array στο οποίο θα περιέχεται η 5 η στήλη του διδιάστατου array εισόδου (υπενθυµίζεται ότι η αρίθµηση στηλών και γραµµών σε arrays του LabVIEW ξεκινάει από το 0). 7. Μετά την παρουσίαση της λειτουργίας της συνάρτησης index array, είναι πλέον εύλογος ο τρόπος µε τον οποίο εισάγουµε µονοδιάστατα array µε τη συνάρητηση Read From Spreadsheet File. Όταν ανοίγουµε ένα µοδοδιάστατο array, τούτο τοποθετείται στην πρώτη στήλη (στήλη µε index 0) του array εξόδου από την Read From Spreadsheet File µε τίτλο «all row». Συνεπώς, για να πάρουµε το µονοδιάστατο array από τη Read From Spreadsheet File, εισάγουµε µία συνάρτηση index array, από την οποία ζητάµε να µας δώσει από το «all arrays» το µονοδιάστατο array που βρίσκεται στη στήλη 0, δηλαδή το array που έχουµε εισάγει. 8. Η εντολή Read From Spreadsheet File εκτελείται µία φορά για κάθε φορά που τρέχει το vi στο οποίο βρίσκεται, εισάγοντας αρχεία τύπου txt. Σε περίπτωση που είναι επιθυµητό να εκτελείται εισαγωγή αρχείων σε ένα vi σύµφωνα µε τη βούληση του χρήστη, τότε η εντολή Read From Spreadsheet File θα πρέπει να τοποθετηθεί εντός ενός while loop. Στην περίπτωση αυτή όµως η Read From Spreadsheet File θα εκτελείται συνεχόµενα για όσο επαναλαµβάνεται η εκτέλεση του βρόγχου while loop. Προφανώς κάτι τέτοιο δεν είναι επιθυµητό. Αντίθετα, θα ήταν επιθυµητό αν συνδυαζότανε η εντολή Read From Spreadsheet File µε ένα κουµπί, το οποίο πατώντας το θα έδινε σήµα για να εκτελεστεί η Read From Spreadsheet File. Η τεχνική αυτή παρουσιάζεται στο σχήµα 6.5. Όπως φαίνεται στο σχήµα 6.5, η εντολή Read From Spreadsheet File έχει τοποθετηθεί εντός της περίπτωσης TRUE µιας case structure. Η λογική µεταβλητή επιλογής της case structure έχει συνδεθεί µε ένα κουµπί ΟΚ του LabVIEW, το οποίο όποτε πατηθεί δίνει την τιµή TRUE, ενώ όσο παραµένει ανέγγιχτο, επιστρέφει την τιµή FALSE. Έτσι µόλις πατηθεί το κουµπί, λογική µεταβλητή επιλογής της case structure θα λάβει την τιµή TRUE και θα εκτελεστεί η αντίστοιχη περίπτωση, στην οποία έχει εισαχθεί η εντολή Read
From Spreadsheet File. Συνεπώς, µε το πάτηµα του κουµπιού ΟΚ θα δοθεί, ουσιαστικά, το σήµα για να εκτελεστεί µία και µόνη φορά η εντολή Read From Spreadsheet File. Σχήµα 6.5: Τεχνική εισαγωγής της εντολής Read From Spreadsheet File. Τονίζεται ότι η δοµή case structure πρέπει να είναι εντός ενός βρόγχου while loop, όπως στο σχήµα 6.5. Με τον τρόπο αυτό εξασφαλίζεται ότι το vi τρέχει συνεχώς και ότι ανά πάσα στιγµή θα είναι εκτελέσιµη η case structure µε το πάτηµα του κουµπιού ΟΚ. 9. Με τον ανωτέρω τρόπο επιτεύχθει η εισαγωγή ενός αρχείου να γίνεται στο vi µέσω της Read From Spreadsheet File σύµφωνα µε τη βούλη του χρήστη. Όµως το αποτέλεσµα είναι ότι το αρχείο αυτό βρίσκεται εντός της δοµής case structure και θα πρέπει να το πάρουµε έξω από αυτήν. Η επιλογή της απλής διασύνδεσης του αρχείου δεν µπορεί να λειτουργήσει, γιατί στην περίπτωση αυτή θα δηµιουργηθεί ένα tunnel εξόδου από την case structure (σχήµα 6.6), το οποίο θα πρέπει να καλωδιωθεί και από την περίπτωση FALSE της case structure, στην οποία όµως δεν είναι δυνατό να συνυπάρξει το αρχείο που έχει εισαχθεί. Σχήµα 6.6: Λανθασµένη εξαγωγή του εισαγόµενου αρχείου από την case structure. Για να ξεπεράσουµε το ανωτέρω πρόβληµα θα βασιστούµε στο ότι κάθε οντότητα στο LabVIEW έχει µία σειρά από ιδιότητες. Αυτές οι ιδιότητες επιλέγονται αν κάνουµε δεξί κλικ στην οντότητα και επιλέξουµε από το αναδυόµενο µενού την εντολή Create και από το δεύτερο αναδυόµενο µενού την εντολή Property Node. Μία από τις ιδιότητες που είναι διαθέσιµες από το µενού Property Node είναι οι τρέχουσες τιµές που έχει η οντότητα στο LabVIEW, οι οποίες είναι διαθέσιµες στην επιλογή
Value. Στο σχήµα 6.7 παρουσιάζεται η εισαγωγή της ιδιότητας Value από το µενού Property Node του αρχικού µενού Create, για το array στο οποίο έχουµε εισάγει το εισαγµένο αρχείο µε τη Read From Spreadsheet File. Τοποθετώντας την ιδιότητα Value εκτός του case structure, καταφέρνουµε να εξάγουµε από τη δοµή αυτή τις τρέχουσες τιµές του εισαγµένου array. Κάθε φορά που αλλάζουν οι τιµές του αρχικού array εισάγοντας ένα καινούργιο array εντός της case structure, οι τιµές του array στην ιδιότητα Value ενηµερώνονται αυτόµατα. Σχήµα 6.7: Εισαγωγή της ιδιότητας Value από το Property Node του εισαγόµενου array. 10. Στην ανωτέρω διαδικασία χρειάστηκε να εισάγουµε ένα κουµπί ΟΚ για να καλωδιώσουµε τη λογική µεταβλητή επιλογής της case structure. Η εισαγωγή του κουµπιού αυτού γίνεται στο Front Panel µε δεξί κλικ και επιλογή του κουµπιού από το µενού Boolean (σχήµα 6.8). Υπενθυµίζεται ότι από το ίδιο µενού είχαµε εισάγει το κουµπί STOP. Εισάγοντας το κουµπί ΟΚ στο Front Panel µπορούµε να του αλλάξουµε το µέγεθος µε χρήση των διαθέσιµων λαβών, να πατήσουµε πάνω στο κείµενο ΟΚ και να εισάγουµε ένα δικό µας κείµενο (π.χ. στην ανωτέρω περίπτωση θα µπορούσε να µπει το κείµενο «Εισαγωγή»), να µορφοποιήσουµε το νέο κείµενο κλπ.
Σχήµα 6.8: Εισαγωγή κουµπιού ΟΚ στο Front Panel. Εξαγωγή αρχείων δεδοµένων 1. Η εξαγωγή αρχείων δεδοµένων από ένα vi σε αρχείο txt γίνεται µε την εντολή Write To Spreadsheet File, η οποία εισάγεται µε δεξί κλικ στο Block Diagram και επιλογή της από το µενού File I/O (σχήµα 6.9). Σχήµα 6.9: Εισαγωγή της εντολής Write To Spreadsheet File και το µενού Help. 2. Στο σχήµα 6.9 παρουσιάζεται επίσης το µενού Help της εντολής Write To Spreadsheet File. Στην είσοδο 2D data θα πρέπει να καλωδιωθεί ένα διδιάστατο array που επιθηµούµε να εξάγουµε, ενώ αντίστοιχα στην είσοδο 1D data θα πρέπει να καλωδιωθεί ένα µονοδιάστατο εξαγόµενο array. Τέλος η
επιλογή transpose ορίζει την εξαγωγή ενός διδιάστατου array µετατρέποντας τις γραµµές σε στήλες. Στην περίπτωση ενός µονοδιάστατου array, αν η επιλογή transpose έχει την τιµή FALSE το array θα εξαχθεί σε µία σειρά. Για να εξαχθεί σε µία στήλη, θα πρέπει να ορίσουµε την τιµή της transpose σε TRUE. 3. Προκειµένου να αποφευχθεί η συνεχής εκτέλεση της Write To Spreadsheet File και η εκτέλεσή της σύµφωνα µε τη βούληση του χρήστη, εισάγουµε την εντολή αυτή σε µία case structure την οποία επίσης καλωδιώνουµε µε ένα κουµπί ΟΚ. Η case structure θα πρέπει να είναι εντός ενός while loop. Χρησιµοποιείται δηλαδή η ίδια τεχνική που παρουσιάστηκε ανωτέρω και για την περίπτωση της Read From Spreadsheet File. Στο ολοκληρωµένο παράδειγµα του σχήµατος 6.10 ανακεφαλαιώνονται τα όσα παρουσιάστηκαν ανωτέρω. Αρχικά χρησιµοποιείται µία εντολή Read From Spreadsheet File, την οποία εισάγουµε στην περίπτωση TRUE µίας case structure, για να εισάγουµε ένα αρχείο txt στο vi. Αποδίδουµε τις τιµές του εισαγµένου αρχείου στο µονοδιάστατο array «Ταχύτητα ανέµου (m/s)». Η λογική µεαβλητή εισόδου της δοµής case structure έχει καλωδιωθεί µε το κουµπί «Εισαγωγή». Όλη η δοµή βρίσκεται σε ένα βρόγχο while loop Παίρνουµε τις τιµές του array αυτού έξω από την case structure µε τη δηµιουργία µιας ιδιότητας Value του array. Σχήµα 6.10: Χρήση των εντολών Read From Spreadsheet File και Write To Spreadsheet File.
Στη συνέχεια κατασκευάζουµε τη γραφική παράσταση του αρχείου που εισάγαµε και την παρουσιάζουµε στο γράφηµα XY Graph. Για το σκοπό αυτό κατασκευάζουµε επίσης ένα array ακέραιων τιµών µε ένα βρόγχο For Loop, µε τις τιµές του άξονα Χ. Τέλος εισάγουµε άλλη µία case structure εντός του βρόγχου while loop, στην περίπτωση TRUE της οποίας εισάγουµε την εντολή Write To Spreadsheet File. Καλωδιώνουµε τη λογική µεταβλητή επιλογής της case structure µε το κουµπί «Εξαγωγή». Κάθε φορά που θα πατάµε το κουµπί «Εξαγωγή» το vi θα ανοίγει ένα πλαίσιο διαλόγου ζητώντας να υποδείξουµε ένα όνοµα αρχείου txt για να εξάγει τις τιµές του array «Ταχύτητα ανέµου (m/s)», το οποίο έχουµε καλωδιώσει στην εντολή Write To Spreadsheet File. Τέλος έχουµε καθορίσει την τιµή της παραµέτρου transpose της Write To Spreadsheet File σε TRUE προκειµένου το εξαγόµενο αρχείο «Ταχύτητα ανέµου (m/s)» να εξαχθεί σε µία στήλη και όχι σε µία γραµµή. Στην περίπτωση δηµιουργίας νέου αρχείου για την εξαγωγή array µε τη Write To Spreadsheet File, στην εισαγωγή του ονόµατος θα πρέπει να συµπληρώνουµε στο τέλος την κατάληξη του αρχείου, δηλαδή «.txt».