ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ Η/Υ ΤΟΜΕΑΣ ΣΥΣΤΗΜΑΤΩΝ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ «Μελέτη Συστήματος Διαγνωστικών Αυτοκινήτων (OBD-II)» ΚΡΙΒΑΣ ΑΝΔΡΕΑΣ ΤΟΥ ΓΕΩΡΓΙΟΥ ΓΙΑΤΡΑΚΗΣ ΕΜΜΑΝΟΥΗΛ ΤΟΥ ΜΙΧΑΗΛ ΦΟΙΤΗΤΕΣ ΤΟΥ ΤΜΗΜΑΤΟΣ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΥΠΟΛΟΓΙΣΤΩΝ ΕΠΙΒΛΕΠΩΝ: ΚΑΛΥΒΑΣ ΓΡΗΓΟΡΙΟΣ, ΑΝΑΠΛΗΡΩΤΗΣ ΚΑΘΗΓΗΤΗΣ ΑΡΙΘΜΟΣ ΔΙΠΛΩΜΑΤΙΚΗΣ ΕΡΓΑΣΙΑΣ: / 2014 ΠΑΤΡΑ ΦΕΒΡΟΥΑΡΙΟΣ 2014-1 -
- 2 -
ΠΙΣΤΟΠΟΙΗΣΗ Πιστοποιείται ότι η διπλωματική εργασία με θέμα : Μελέτη Συστήματος Διαγνωστικών Αυτοκινήτων (OBD-II) των φοιτητών του τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών ΓΙΑΤΡΑΚΗ ΕΜΜΑΝΟΥΗΛ του ΜΙΧΑΗΛ (ΑΜ: 6728) ΚΡΙΒΑ ΑΝΔΡΕΑ του ΓΕΩΡΓΙΟΥ (ΑΜ: 6780) Παρουσιάστηκε δημόσια και εξετάστηκε στο Τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών στις / / Ο Επιβλέπων Ο Διευθυντής του Τομέα - 3 -
- 4 -
Ευχαριστίες Η σύλληψη του θέματος της παρούσας διπλωματικής ανήκει στον αείμνηστο καθηγητή μας, Κώστα Ευσταθίου, ο οποίος με το δικό του μοναδικό τρόπο, μας ενέπνευσε στο να ασχοληθούμε με το συγκεκριμένο επιστημονικό τομέα, αλλά και να εκτιμήσουμε σε βάθος το επάγγελμα του Ηλεκτρολόγου Μηχανικού. Υπήρξε για εμάς κάτι παραπάνω από καθηγητής. Αποτελούσε και αποτελεί πρότυπο προς μίμηση. Συνεχίζοντας, θα θέλαμε να ευχαριστήσουμε όλους όσους βοήθησαν στην περαίωση της διπλωματικής εργασίας και πιο συγκεκριμένα, τους κ. Π. Μητρόπουλο, Γ. Κωνσταντινίδη, Α. Μητρόπουλο και Γ. Τζουρά, οι οποίοι μας παρείχαν σημαντικές συμβουλές τόσο ως προς την κατασκευή της πλακέτας, όσο και στο χειρισμό του συστήματος γενικότερα. Επίσης, ευχαριστούμε τον επιβλέποντα της εργασίας, κ. Γ. Καλύβα, ο οποίος μας βοήθησε στο να την δομήσουμε και να την παρουσιάσουμε με τον καλύτερο δυνατό τρόπο. Για την πολύτιμη βοήθεια της στη δημιουργία εικόνων για το γραφικό περιβάλλον της εφαρμογής που αναπτύχθηκε, ευχαριστούμε θερμά τη γραφίστρια Δ. Γιατράκη. Τέλος, η βοήθεια των οικογενειών μας υπήρξε αμέριστη και καθοριστική όχι μόνο κατά τη διάρκεια της ενασχόλησής μας με τη διπλωματική εργασία, αλλά και καθ όλα τα χρόνια των σπουδών μας και για αυτό ένα μεγάλο μέρος των ευχαριστιών τους ανήκει δικαιωματικά. - 5 -
- 6 -
Αρ. Διπλωματικής Εργασίας : Θέμα: «Μελέτη Συστήματος Διαγνωστικών Αυτοκινήτων ( OBD-II )» των φοιτητών του Τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Η/Υ ΚΡΙΒΑ ΑΝΔΡΕΑ του ΓΕΩΡΓΙΟΥ ( ΑΜ: 6780 ) ΓΙΑΤΡΑΚΗ ΕΜΜΑΝΟΥΗΛ του ΜΙΧΑΗΛ ( ΑΜ: 6728 ) ΕΠΙΒΛΕΠΩΝ : ΚΑΛΥΒΑΣ ΓΡΗΓΟΡΙΟΣ, ΑΝΑΠΛΗΡΩΤΗΣ ΚΑΘΗΓΗΤΗΣ Περίληψη Στην παρούσα διπλωματική εργασία σχεδιάστηκε, μελετήθηκε και υλοποιήθηκε ένα σύστημα διαγνωστικών αυτοκινήτου ή αλλιώς ένα σύστημα On Board Diagnostics II (OBD-II), όπως είναι η διεθνής του ονομασία. Ένα τέτοιο σύστημα έχει καταστεί απαραίτητο, λόγω της πολυπλοκότητας των αυτοκινήτων σήμερα, σε μια ευρεία κατηγορία επαγγελματιών, που ξεκινάει από τους κατασκευαστές αυτοκινήτου μέχρι και το κάθε συνεργείο, αλλά και τον εκάστοτε ιδιώτη. Κύριοι στόχοι του είναι η πληροφόρηση του χρήστη για οποιαδήποτε παράμετρο του οχήματος και ο εντοπισμός και η ένδειξη τυχόν βλαβών. Για την επίτευξη των στόχων αυτών, σχεδιάστηκε και υλοποιήθηκε με τη μορφή πλακέτας ένα σύστημα το οποίο είναι υπεύθυνο για τη σωστή αποστολή και λήψη των μηνυμάτων μεταξύ του υπολογιστή και του οχήματος. Επιπλέον, αναπτύχθηκε το απαραίτητο λογισμικό για τη χρήση του συστήματος και όλων των δυνατοτήτων του. Για το σωστό έλεγχο τόσο του κυκλώματος όσο και του λογισμικού, χρησιμοποιήσαμε έναν προσομοιωτή ECU αυτοκινήτου. Γιατράκης Εμμανουήλ Κρίβας Ανδρέας Πάτρα, 2014-7 -
- 8 -
Περιεχόμενα 1. Εισαγωγή 1.1 On Board Diagnostics II (OBD-II)..12 1.2 Σύντομη Ιστορική Αναδρομή.12 1.3 Περίληψη του συστήματος που υλοποιήθηκε.14 2. Πρωτόκολλα OBD-II 2.1 Περιγραφή του υποδοχέα διασύνδεσης OBD-II..16 2.2 Αναφορά υποστηριζόμενων πρωτοκόλλων OBD-II 17 2.3 Controlled Area Network(CAN).20 2.3.1 Εισαγωγή.20 2.3.1.1 Ανάπτυξη του CAN Bus.20 2.3.1.2 Αρχιτεκτονική του CAN Bus..21 2.3.1.3 Πλεονεκτήματα του CAN.21 2.3.1.4 Ο ρόλος του CAN στην παρούσα διπλωματική εργασία..23 2.3.2 CAN Message Frames..23 2.3.2.1 Data Frames..23 2.3.2.2 Remote Frame.25 2.3.2.3 Error Frame 26 2.3.2.4 Overload Frame..27 2.3.2.5 Μηνύματα μεγαλύτερα των 8 bytes.27 2.3.3 Το πρωτόκολλο CAN στο OBD-II 32 3. Serial Peripheral Interface (SPI 3.1 Εισαγωγή.37 3.2 Τρόπος λειτουργίας του SPI Bus 39 4. Ο εξομοιωτής OBD-II ECUSim 2000.42 5. Σχεδίαση της πλακέτας διασύνδεσης 5.1 Ανάγκες σχεδίασης του συστήματος..45 5.2 Εισαγωγή της σχεδίασης που υλοποιήθηκε.47-9 -
5.3 Ανάλυση της σχεδίασης.47 5.3.1 Το ολοκληρωμένο FT-232H...47 5.3.1.1 Block Diagram του FT-232H..48 5.3.1.2 Λειτουργίες του FT-232H 49 5.3.1.3 Σχηματικό Διάγραμμα του FT-232H 50 5.3.2 EEPROM Microchip 93LC56B...53 5.3.3 Το ολοκληρωμένο MCP-2551..55 5.3.4 Το ολοκληρωμένο MCP-2515..57 5.3.4.1 CAN Module.58 5.3.4.2 Control Logic Block.62 5.3.4.3 SPI Block.63 5.4 Σχεδίαση του κυκλώματος 69 6. Λογισμικό 6.1 Εισαγωγή..71 6.2 Οδηγίες χρήσης του προγράμματος OBD-II Interface.73 6.2.1 Home Tab 73 6.2.2 Diagnostics Tab...76 6.2.3 Real-Time Tab 77 6.2.4 MIL Tab..80 6.2.5 Advanced Tab 82 6.2.6 About OBD-II Interface Tab...90 6.2.7 ECUSim 2000 Interface Tab.91 6.3 Διασύνδεση FT-232H με Η/Υ 92 6.4 Κώδικας...93 6.4.1 Αρχικοποίηση FT-232H/MCP-2515 93 6.4.2 Βασικές Ρουτίνες.97 6.4.3 Ο ρόλος του FT-232H στο λογισμικό.106 6.4.4 Ρουτίνες SPI επικοινωνίας 109-10 -
6.4.5 CAN Frame Transmit..110 7. Πειράματα Αποτελέσματα.112 8. Περαιτέρω έρευνα...114 Παράρτημα.116 Σχηματικό διάγραμμα της πλακέτας διασύνδεσης..116 PCB Layouts..117 Κώδικας 119 Βιβλιογραφία.248-11 -
Κεφάλαιο 1: Εισαγωγή Κεφάλαιο 1 : Εισαγωγή 1. Εισαγωγή 1.1 On Board Diagnostics II (OBD-II) Τα συστήματα διαγνωστικών αυτοκινήτων, ή όπως είναι ευρέως γνωστά On Board Diagnostic Systems, αντιπροσωπεύουν την ικανότητα του οχήματος να πληροφορεί το μηχανικό ή τον ιδιοκτήτη του για όλες τις παραμέτρους του και ταυτόχρονα να τον ειδοποιεί για τυχόν βλάβες σε οποιοδήποτε από τα υποσυστήματά του. Συστήματα τέτοιου τύπου έκαναν την εμφάνισή τους το 1980. Έκτοτε ο αριθμός των δυνατοτήτων τους αυξάνεται συνεχώς, με αποκορύφωμα τα τηλεμετρικά συστήματα που χρησιμοποιούνται στο μηχανοκίνητο αθλητισμό. Με το πέρασμα των χρόνων και την ραγδαία εξέλιξη των οχημάτων, έγινε επιτακτική η ανάγκη για πιο εξεζητημένα συστήματα διαγνωστικών, κάτι που οδήγησε στην εμφάνιση διαφορετικών πρωτοκόλλων, που αξιοποιούσαν όλο και μεγαλύτερο μέρος των δυνατοτήτων των οχημάτων. Σήμερα, είναι εφικτός τόσο ο έλεγχος όλων των μερών του κινητήρα όσο και η διαρκής παρακολούθηση του αμαξώματος και των υπολοίπων συστημάτων που απαρτίζουν το όχημα. Ακόμα, με τη στροφή των αυτοκινητοβιομηχανιών στις εναλλακτικές μορφές ενέργειας και τις διαρκείς δοκιμές για την εύρεση της βέλτιστης λύσης, προς την ίδια κατεύθυνση στρέφονται και τα OBD Systems, αναπτύσσοντας συνεχώς καινούριες δυνατότητες. 1.2 Σύντομη Ιστορική Αναδρομή Η ανάγκη για την υλοποίηση συστημάτων διαγνωστικών αυτοκινήτων εμφανίστηκε στην Αμερική το 1968, εξαιτίας των επικίνδυνων τιμών των ατμοσφαιρικών ρύπων, που οφείλονταν στον αυξανόμενο αριθμό των οχημάτων. Για την αντιμετώπιση του προβλήματος αυτού, ψηφίστηκε το 1970 από το Κογκρέσο ο Νόμος για τον καθαρό αέρα (Clean Air Act) και ταυτόχρονα θεσπίστηκε η λεγόμενη EPA (Environmental Protection Agency). Αυτό οδήγησε στην ανάπτυξη ηλεκτρονικά ελεγχόμενων συστημάτων καυσίμων, τα οποία είχαν τη δυνατότητα να - 12 -
Κεφάλαιο 1: Εισαγωγή παρακολουθούν την ποσότητα των αποβαλλόμενων ρύπων και να ρυθμίζουν κατάλληλα τη λειτουργία του κινητήρα. Παρότι τα πρώτα συστήματα διαγνωστικών αυτοκινήτου, με στοιχειώδη έλεγχο των παραμέτρων του, αναπτύχθηκαν αρχικά από την Volkswagen το 1969 και έπειτα από την Datsun το 1975, δεν υπήρχε μέχρι το 1980 ένα σύστημα που να υπακούει σε κάποια τυποποίηση. Τότε, υλοποιήθηκε από την General Motors το πρώτο ολοκληρωμένο σύστημα διαγνωστικών αυτοκινήτου και συγκεκριμένα του εγκεφάλου του κινητήρα μέσω της γραμμής assembly. Έτσι, το Assembly Line Diagnostic Link (ALDL), θεωρείται ο πρόγονος των σημερινών OBD Systems. Αρχικά, ενσωματώθηκε μόνο στα μοντέλα που κατασκευάστηκαν την ίδια χρονιά στην Καλιφόρνια, αλλά μέσα σε ένα χρόνο ήταν πλέον κομμάτι όλων των οχημάτων των Ηνωμένων Πολιτειών. Μέσα στην επόμενη δεκαετία, οι δυνατότητες του ALDL αυξήθηκαν, όπως και η ταχύτητα του που σκαρφάλωσε από 160 στα 8192 baud rate το 1986. Το 1991 έκανε την εμφάνιση του το OBD-I, εξαιτίας των προϋποθέσεων που έθεσε η EPA, η οποία είχε πλέον μετονομαστεί σε CARB (California Air Resources Board). Οι προϋποθέσεις αυτές, δεν είχαν τυποποιηθεί, κάτι που οδήγησε σε αποτυχία το OBD-I, καθώς αποδείχθηκε εξαιρετικά δύσκολο, κυρίως από τεχνικής πλευράς, να συλλεχθούν πληροφορίες από όλα τα μοντέλα για να επιχειρηθεί κάποια τυποποίηση. Συνεπώς ήταν αδύνατο να ελεγχθούν αποτελεσματικά οι προϋποθέσεις του CARB. Τρία χρόνια αργότερα, το 1994, το CARB αναγνώρισε την ανάγκη για μία παγκοσμίων προδιαγραφών τυποποίηση και έτσι, θέσπισε το OBD-II. Αρχικά, εφαρμόστηκε στην Αμερική αλλά μέσα στα επόμενα χρόνια κατέκτησε τόσο την Ευρώπη όσο και τον υπόλοιπο κόσμο. Η βελτίωση σε σχέση με το OBD-I ήταν προφανής, τόσο σε δυνατότητες όσο και στην τυποποίηση, καθώς περιείχε λεπτομερείς προδιαγραφές όσον αφορά τον τύπο των μηνυμάτων, τον απαραίτητο Connector, αλλά και την κωδικοποίηση και αποκωδικοποίηση των παραμέτρων του οχήματος. Ως τροφοδοσία χρησιμοποιείται πλέον η μπαταρία του αυτοκινήτου και όχι μια εξωτερική πηγή. Επίσης, θεσπίστηκε μια λεπτομερής λίστα με κατηγοριοποίηση όλων των πιθανών βλαβών και πως τις ερμηνεύει το σύστημα, κάτι που σε συνδυασμό με όλα τα παραπάνω, δικαιολογεί την παρουσία του OBD-II σε όλα τα οχήματα μέχρι και σήμερα. - 13 -
Κεφάλαιο 1: Εισαγωγή 1.3 Περίληψη του συστήματος που υλοποιήθηκε Η πλειοψηφία των συμβατικών συστημάτων διαγνωστικών αυτοκινήτων σήμερα αποτελείται κατά βάση από ένα μικροεπεξεργαστή, ο οποίος αναλαμβάνει τη μετάφραση των μηνυμάτων όπως επίσης και τη μετατροπή τους στην κατάλληλη μορφή. Είναι εφοδιασμένος με τα κατάλληλα πρωτόκολλα ώστε να μπορεί να ανταπεξέλθει σε οποιοδήποτε όχημα. Φυσικά, η παρουσία ενός τέτοιου ολοκληρωμένου, αυξάνει ελαφρώς το κόστος υλοποίησης. Στην παρούσα διπλωματική εργασία, ερευνήθηκε η δυνατότητα κατασκευής ενός τέτοιου συστήματος χωρίς την παρουσία μικροεπεξεργαστή. Στη θέση του, χρησιμοποιήθηκε ένας συνδυασμός ολοκληρωμένων, που, σε συνδυασμό με τον ηλεκτρονικό υπολογιστή, αποδείχθηκαν ικανά να εκτελέσουν τις ίδιες λειτουργίες και ταυτόχρονα το συνολικό κόστος να είναι μικρότερο. Αυτή η ομάδα ολοκληρωμένων αποτελείται από το FT-232H, της οικογένειας ολοκληρωμένων FTDI, το οποίο είναι υπεύθυνο για τη διασύνδεση του υπολογιστή με την πλακέτα διασύνδεσης, το MCP-2515 της Microchip που είναι υπεύθυνο για τη δημιουργία των μηνυμάτων, σε μορφή τέτοια, που να συμφωνεί με το πρωτόκολλο λειτουργίας, το MCP-2551 της Microchip που έχει ως ρόλο να διαμορφώσει το μήνυμα που κατασκευάζει το MCP-2515 στις σωστές στάθμες τάσης για την απευθείας σύνδεση με τον Connector του οχήματος και τέλος το MCP-93LC56 που είναι ένα ολοκληρωμένο μνήμης (EEPROM) και λειτουργεί επικουρικά στο FT-232H. Περισσότερες λεπτομέρειες για την αναλυτική λειτουργία τους θα δοθούν σε επόμενα κεφάλαια. - 14 -
Κεφάλαιο 1: Εισαγωγή Εικόνα 1.1: Πλακέτα διασύνδεσης και εξομοιωτής ECUsim 2000-15 -
Κεφάλαιο 2: Υποστηριζόμενα πρωτόκολλα σημάτων OBD-II Κεφάλαιο 2 : Υποστηριζόμενα πρωτόκολλα σημάτων OBD-II 2. Υποστηριζόμενα πρωτόκολλα σημάτων OBD-II 2.1 Περιγραφή του υποδοχέα διασύνδεσης OBD-II Σύμφωνα με τις προδιαγραφές του OBD-II, όλα τα οχήματα υποχρεούνται να διαθέτουν μια συγκεκριμένη μορφή Connector, ο οποίος συνδέεται με το εξωτερικό εργαλείο διαγνωστικών αυτοκινήτου, τον female 16-pin (2x8) J1962 connector, ο οποίος φαίνεται στην παρακάτω εικόνα. Εικόνα 2.1: Μορφή του Connector OBD-II Ο υποδοχέας πρέπει να βρίσκεται σε ακτίνα 60 εκατοστών από το τιμόνι του οχήματος σύμφωνα με τον πιο πρόσφατο κανονισμό, ενώ παλαιότερα βρισκόταν κάτω από το καπό του αυτοκινήτου. Παρακάτω παρουσιάζεται η λειτουργία του κάθε pin. Σημειώνεται ότι τα πρωτόκολλα που αναφέρονται θα αναλυθούν στη συνέχεια. 1. Manufacturer Choice 9. Manufacturer Choice 2. Bus positive Line of SAE J1850 PWM and SAE 1850 VPW 3. Ford DCL(+), Chrysler CCD Bus(+) pre OBD-II 10. Bus negative Line of SAE J1850 PWM only 11. Ford DCL(-), Chrysler CCD Bus(-) pre OBD-II - 16 -
Κεφάλαιο 2: Υποστηριζόμενα πρωτόκολλα σημάτων OBD-II 4. Chassis Ground 12. - 5. Signal Ground 13. Manufacturer Choice 6. CAN High (ISO 15765-4 and SAE J2284) 14. CAN Low (ISO 15765-4 and SAE J2284) 7. K line of ISO 9141-2 and ISO 14230-4 15. L line of ISO 9141-2 and ISO 14230-4 8. Manufacturer Choice 16. Battery Voltage Πίνακας 2.1: Λειτουργίες των pins του Connector OBD-II 2.2 Αναφορά υποστηριζόμενων πρωτοκόλλων OBD-II Πέντε είναι τα διαθέσιμα πρωτόκολλα στο OBD-ΙΙ και, εκτός από ειδικές περιπτώσεις, κάθε όχημα υποστηρίζει ένα από αυτά. Ο συνηθέστερος τρόπος για την αναγνώριση του υποστηριζόμενου πρωτοκόλλου είναι ο εντοπισμός των pins που υπάρχουν στον υποδοχέα, καθώς θα έχουν παραμείνει μόνο αυτά που είναι συμβατά. Παρακάτω αναφέρονται τα πρωτόκολλα και οι ιδιότητές τους: 1. SAE J1850 PWM (pulse-width modulation) Speed: 41,6 kb/sec pin 2: Bus + pin 10: Bus High Voltage: 5V (min/max: 3.80/5.25) Low Voltage: 0V (min/max: 0.00/1.20) Message length is restricted to 12 bytes, including CRC Employs a multi-master arbitration scheme called Carrier Sense Multiple Access with Non-Destructive Arbitration (CSMA/NDA) - 17 -
Κεφάλαιο 2: Υποστηριζόμενα πρωτόκολλα σημάτων OBD-II 2. SAE J1850 VPW (variable pulse width) Speed: 10,4 / 41,6 kb/sec pin 2: Bus + Bus idles low. Εικόνα 2.2: Πρωτόκολλο SAE J1850 PWM High Voltage: 7V (min/max: 6.25/8.00) Low Voltage: 0V (min/max: 0.00/1.50) Message length is restricted to 12 bytes, including CRC Employs a multi-master arbitration scheme called Carrier Sense Multiple Access with Non-Destructive Arbitration (CSMA/NDA) Εικόνα 2.3: Πρωτόκολλο SAE J1850 VPW 3. ISO 9141-2 Speed: 10,4kBaud Asynchronous Serial Data pin 7: K-Line pin 8: L-Line (optional) - 18 -
Κεφάλαιο 2: Υποστηριζόμενα πρωτόκολλα σημάτων OBD-II UART Signaling at 10,4kBaud, 8 Data Bits, 1 Stop Bits, No parity K-Line Idles High High Voltage: 12V (min/max: 9.60/13.5) Message may contain up to 255 bytes in the data field 4. ISO 14230 KWP2000 (Keyword Protocol 2000) Speed: 1,2 to 10,4 kbaud Asynchronous Serial Data pin 7: K-Line pin 8: L-Line (optional) UART Signaling at 10,4kBaud, 8 Data Bits, 1 Stop Bits, No parity K-Line Idles High High Voltage: 12V (min/max: 9.60/13.5) Message may contain up to 255 bytes in the data field Difference with ISO 9141-2: Requires Special Wake up processes. More difficult to handle. Basic Difference: CAN pins compatible Εικόνα 2.4: Πρωτόκολλα ISO 9141-2 και KWP2000 5. ISO 15765 CAN Speed: 250kBit/s or 500kBit/s pin 6: Bus High (CANH) pin 14: Bus Low (CANL) Voltage High: 3,5V (min/max: 2.75/4.50) Voltage Low: 1,5V (min/max: 0.5/2.25) - 19 -
Κεφάλαιο 2: Υποστηριζόμενα πρωτόκολλα σημάτων OBD-II 2.3 Controlled Area Network (CAN) 2.3.1 Εισαγωγή Εικόνα 2.5: Πρωτόκολλο ISO 15765 CAN 2.3.1.1 Ανάπτυξη του CAN Bus Το CAN Bus είναι το πλέον σύγχρονο δίκτυο μεταφοράς δεδομένων. Είναι ειδικά σχεδιασμένο για την αυτοκινητοβιομηχανία, όμως τα πολλά πλεονεκτήματά του έχουν οδηγήσει στην ανάπτυξη συστημάτων βασισμένων στο CAN και σε άλλους τομείς όπως η βιομηχανία, η αεροναυπηγική, η ναυπηγική και η βιοϊατρική. Το CAN αναπτύχθηκε με σκοπό να αντικαταστήσει την πολύπλοκη καλωδίωση των οχημάτων με ένα σύστημα δύο καλωδίων (dual wire bus). Η Bosch GmbH,το 1983, ήταν η πρώτη εταιρεία που επιχείρησε να αναπτύξει ένα τέτοιο σύστημα, ενώ η επίσημη παγκόσμια αναγνώριση του CAN, σαν πρωτόκολλο επικοινωνίας, ήρθε το 1986. Από τότε, η δημοτικότητά του αυξήθηκε ραγδαία και το 1993 θεσπίστηκε ως το παγκόσμιο πρωτόκολλο επικοινωνίας στο χώρο της αυτοκινητοβιομηχανίας, γνωστό και ως ISO 11898. Εικόνα 2.6: Ο ρόλος του CAN στο δίκτυο του αυτοκινήτου - 20 -
Κεφάλαιο 2: Υποστηριζόμενα πρωτόκολλα σημάτων OBD-II 2.3.1.2 Αρχιτεκτονική του CAN Bus Η βασική λειτουργία του διαύλου CAN είναι η διασύνδεση των διαφορετικών ECU (Electronic Control Unit) του αυτοκινήτου. Τα πιο σημαντικά ECU είναι το Engine Control Module, το Transmission Control Module και το ABS Module αλλά ακολουθούνται από ένα πολύ μεγάλο αριθμό ECUs που αντιστοιχεί στο κάθε υποσύστημα του οχήματος (τα σύγχρονα αυτοκίνητα έχουν περισσότερα από εβδομήντα ECU). Κάθε υποσύστημα που είναι συνδεδεμένο στο CAN Bus αποτελεί ένα CAN Node. Όταν ο δίαυλος CAN βρίσκεται σε αναμονή, οποιοδήποτε Node μπορεί να ξεκινήσει να μεταδίδει δεδομένα. Αυτή η λειτουργία ονομάζεται Carrier Sense Multiple Access (CSMA). Αν περισσότερα από ένα Nodes ξεκινήσουν να μεταδίδουν ταυτόχρονα, τότε επικρατεί το Node με το κυρίαρχο ID. Αυτή η δυνατότητα ονομάζεται Collision Detection (CD). Ο τρόπος αυτής της ανίχνευσης σύγκρουσης γίνεται στο CAN με τη μέθοδο Bitwise Arbitration (BA). Σύμφωνα με τη μέθοδο αυτή, υπάρχει πάντα προτεραιότητα μεταξύ δύο ή περισσότερων Nodes και προηγείται πάντα το ID με τον μικρότερο αριθμό. Αυτό συμβαίνει επειδή στο πρωτόκολλο CAN έχει θεσπιστεί σα Dominant State το 0 ενός Bit ενώ το 1 θεωρείται Recessive State. Έτσι, σε περίπτωση σύγκρισης, το 0 θα επικρατήσει. Αυτά τα δύο χαρακτηριστικά είναι ο λόγος που έχει επικρατήσει να αναφέρεται το CAN ως ένα πρωτόκολλο CMSA/BA. Ένα Node πρέπει να υποστηρίζεται αρχικά από μια κεντρική μονάδα επεξεργασίας, η οποία ερμηνεύει τα μηνύματα που δέχεται το CAN Bus και καθορίζει ποια πρέπει να είναι η απάντηση. Επίσης, πρέπει να υπάρχει ένας ελεγκτής CAN με σύγχρονο ρολόι, ο οποίος δέχεται τα δεδομένα από το CAN Bus σειριακά μέχρι να ολοκληρωθεί η λήψη και αντίστοιχα αποθηκεύει το μήνυμα προς αποστολή και το στέλνει σειριακά στο δίαυλο CAN. Τέλος, πρέπει να υπάρχει και ένας transceiver ο οποίος ρυθμίζει τα επίπεδα τάσης μεταξύ του CAN Bus και του ελεγκτή CAN. 2.3.1.3 Πλεονεκτήματα του CAN Έχουν ήδη αναφερθεί τα πλεονεκτήματα του CAN τόσο σε επίπεδο ταχύτητας όσο και ελαχιστοποίησης της πολυπλοκότητας του δικτύου του οχήματος. Υπάρχουν, όμως, περαιτέρω πλεονεκτήματα που έχουν εδραιώσει το CAN στην αυτοκινητοβιομηχανία: - 21 -
Κεφάλαιο 2: Υποστηριζόμενα πρωτόκολλα σημάτων OBD-II Α) Χαμηλό κόστος δικτύου - Μείωση του βάρους του οχήματος. Η αντικατάσταση της χαώδους καλωδίωσης με ένα σύστημα δύο καλωδίων προσφέρει πολλά οφέλη. Αφενός, μειώνεται το κόστος κατασκευής και η πιθανότητα κατασκευαστικών λαθών αλλά ταυτόχρονα αυξάνεται η ανθεκτικότητα του συστήματος. Αφετέρου, όλες οι ηλεκτρονικές μονάδες μπορούν να έχουν κοινή CAN διεπαφή, αντί το καθένα να έχει ξεχωριστές αναλογικές και ψηφιακές συσκευές, κάτι που λειτουργεί υπέρ της μείωσης του συνολικού βάρους του οχήματος. Β) Αυτόνομη Επικοινωνία Όπως αναφέραμε, κάθε CAN Node έχει έναν ελεγκτή. Αυτό σημαίνει ότι υπάρχει δυνατότητα άμεσης επικοινωνίας μεταξύ των διαφόρων Nodes χωρίς την ανάγκη παρέμβασης κάποιου κεντρικού ελεγκτή. Υπάρχει επίσης η δυνατότητα παρακολούθησης όλων των μηνυμάτων από όλες τις διασυνδεδεμένες συσκευές καθώς και η απόρριψη ή αποδοχή τους από το κάθε Node. Αυτή η αυτονομία επιτρέπει την πρόσθεση ή αφαίρεση κάποιου Node χωρίς να επηρεαστεί το συνολικό δίκτυο. Γ) Προτεραιότητα Μηνυμάτων Είδαμε ότι ο δίαυλος CAN υποστηρίζει λειτουργία Bitwise Arbitration. Ο καθορισμός της προτεραιότητας των μηνυμάτων μέσω αυτής της λειτουργίας επιτρέπει στα μηνύματα που παραχωρούν την προτεραιότητά τους να μεταδοθούν στη συνέχεια. Έτσι, δε χάνεται κανένα μήνυμα. Δ) Εντοπισμός Λαθών Ένα μήνυμα CAN αποτελείται από διάφορα κομμάτια που θα αναλυθούν σε επόμενο κεφάλαιο. Ένα από αυτά είναι ο κυκλικός έλεγχος λαθών (Cyclic Redundancy Code CRC), ο οποίος ελέγχει για λάθη το περιεχόμενο των μηνυμάτων. Σε περίπτωση εντοπισμού λαθών, όλα τα Nodes θα απορρίψουν το μήνυμα και ένα error frame (θα αναλυθεί στη συνέχεια) θα μεταδοθεί για να ενημερωθεί το σύστημα ότι εντοπίστηκε λάθος. - 22 -
Κεφάλαιο 2: Υποστηριζόμενα πρωτόκολλα σημάτων OBD-II 2.3.1.4 Ο ρόλος του CAN στην παρούσα διπλωματική εργασία Όπως αναλύθηκε παραπάνω, το CAN Bus έχει σημαντικά πλεονεκτήματα σε σχέση με τα υπόλοιπα πρότυπα. Κύρια εξ αυτών είναι η μεγαλύτερη ταχύτητα ροής των δεδομένων, η αυτονομία των συνδεδεμένων υποσυστημάτων, το μειωμένο κόστος και η απλή αρχιτεκτονική του δικτύου. Επίσης, την τελευταία δεκαετία τείνει να καθιερωθεί σαν πρωτόκολλο σε όλες τις βιομηχανίες αυτοκινήτων. Συνεπώς, θεωρήσαμε ότι το CAN ήταν ο ιδανικός υποψήφιος, για αυτό και επιλέχθηκε η υλοποίηση της σχεδίασης με αυτό το πρωτόκολλο. Η απαραίτητη παρουσία του ελεγκτή CAN, σίγουρα, δημιουργεί μεγαλύτερες απαιτήσεις κυρίως στην ανάπτυξη του κατάλληλου λογισμικού, αλλά ταυτόχρονα αυξάνει τις δυνατότητες του συστήματος. 2.3.2 CAN Message Frames Το CAN και συγκεκριμένα το πρωτόκολλο ISO 15765 που χρησιμοποιείται στο OBD-II, υποστηρίζει τεσσάρων ειδών Message Frames, το καθένα από τα οποία επιτελεί διαφορετική λειτουργία. Η δομή τους είναι συγκεκριμένη και τυποποιημένη από το πρότυπο CAN 2.0b που δημοσιεύτηκε από την Bosch το 1991. 2.3.2.1 Data Frames Όπως υποδεικνύει η ονομασία τους, πρόκειται για τα frames που είναι υπεύθυνα να μεταφέρουν το μήνυμα είτε από το CAN Bus στο διαγνωστικό σύστημα είτε το ανάποδο. Τα Data Frames χωρίζονται σε δύο κατηγορίες: τα Standard Data Frames και τα Extended Data Frames. Α) Standard Data Frame Εικόνα 2.7: Η μορφή του CAN Standard Data Frame - 23 -
Κεφάλαιο 2: Υποστηριζόμενα πρωτόκολλα σημάτων OBD-II Το Standard Data Frame περιέχει ένα σύνολο 44 bits τα οποία επιτελούν λειτουργίες όπως έλεγχος λαθών, αναγνώριση ID του CAN Node, σήμανση έναρξης ή λήξης του frame. Μπορεί να μεταφέρει μέχρι 8 Bytes των 8 Bits δεδομένα. Πιο συγκεκριμένα, μετά από ένα αρχικό 0 που σημαίνει την έναρξη του frame (το δίκτυο όταν βρίσκεται σε αναμονή είναι σε λογικό 1), ακολουθεί ένα πεδίο από 11 bits που ονομάζεται 11Bit Identifier και είναι υπεύθυνο για την αναγνώριση της ταυτότητας ID του κάθε CAN Node. Στη συνέχεια, ακολουθεί το Remote Transmission Request (RTR) Bit, το οποίο είναι 0 όταν έχουμε Data Frame και 1 όταν έχουμε Remote Frame, το οποίο θα αναλυθεί στη συνέχεια. Το bit αυτό μαζί με το πεδίο 11Bit Identifier αποτελούν το Arbitration Field. Αυτό είναι το πεδίο που επιτελεί τη λειτουργία Bitwise Arbitration που αναφέρθηκε σε προηγούμενη ενότητα. Τα επόμενα 6 Bit αποτελούν το Control Field. Το πρώτο κατά σειρά Bit είναι υπεύθυνο για τη διαφοροποίηση ενός Standard (το bit θα είναι 0) από ένα Extended Data Frame (το bit θα είναι 1) και ονομάζεται Identifier Extension Bit (IDE bit). Το bit που ακολουθεί, είναι δεσμευμένο στην τιμή 0 από τις προδιαγραφές του CAN, κάτι που φαίνεται και από την ονομασία του, Reserved Bit Zero (RB0). Τα υπόλοιπα τέσσερα bits υποδεικνύουν τον αριθμό των data bytes που περιέχονται στο μήνυμα. Ο αριθμός αυτός ονομάζεται Data Length Code (DLC) και είναι μια από τις σημαντικότερες παραμέτρους σε ένα Data Frame. Αμέσως μετά το DLC, ακολουθούν τα bytes πληροφορίας προς αποστολή. Όπως αναφέρθηκε προηγουμένως, ότι υπάρχει δυνατότητα αποστολής μέχρι 8 Bytes στο κάθε Data Frame και ότι το κάθε byte αποτελείται από 8 bits. Το επόμενο πεδίο είναι το Cyclic Redundancy Check (CRC) και αποτελείται από 15 bits που εντοπίζουν και υποδεικνύουν το πλήθος των λαθών μετάδοσης και ένα bit στο τέλος που έχει σταθερά την τιμή 1 και σημαίνει το τέλος του ελέγχου λαθών (CRC Delimiter Bit). Το επόμενο bit ονομάζεται Acknowledge Slot Bit, που είναι μια μορφή handshake μεταξύ του CAN Bus και των διαφόρων Nodes. Όταν ένα Node παραλάβει ένα μήνυμα χωρίς λάθη, το bit γίνεται 1. Το bit αυτό ακολουθείται από το Acknowledge Delimiter bit που είναι πάντα 1, ακριβώς όπως και το CRC Delimiter Bit.Το τέλος του Standard Data Frame σημαίνουν 7 bits σε κατάσταση λογικού 1. - 24 -
Κεφάλαιο 2: Υποστηριζόμενα πρωτόκολλα σημάτων OBD-II B) Extended Data Frame Εικόνα 2.8: Η μορφή CAN Extended Data Frame Το Extended Data Frame είναι κατά βάση το ίδιο με το Standard Data Frame. Η μόνη διαφορά έγκειται στο Arbitration Field, το οποίο αποτελείται από 20 bit επιπλέον, δηλαδή συνολικά από 32 bit. Τα πρώτα 11bit αποτελούν τα Most Significant Bits του συνολικού Identifier, που σε αυτή την περίπτωση αποτελείται από 29 bits αντί 11. Μετά ακολουθεί το SRR Bit (Substitute Remote Request Bit) που είναι σταθερά σε λογικό 1 και αμέσως μετά βρίσκεται το IDE Bit που αυτή τη φορά είναι 1 και όχι 0. Τα επόμενα 18 bits αποτελούν το υπόλοιπο ID του CAN Node. Η χρησιμότητα ενός Extended Data Frame γίνεται πιο ξεκάθαρη στα δίκτυα CAN που περιέχουν μεγάλο αριθμό CAN Nodes και υπάρχει τεράστιο πλήθος διαφορετικών ID. 2.3.2.2 Remote Frame Όπως αναφέρθηκε στα πρώτα κεφάλαια, το δίκτυο CAN λειτουργεί αυτόνομα. Με άλλα λόγια, κάθε CAN Node μπορεί να στείλει Data Frame στην κεντρική μονάδα επεξεργασίας χωρίς να του ζητηθεί. Υπάρχουν όμως περιπτώσεις, που ζητούνται δεδομένα από κάποιο συγκεκριμένο CAN Node. Αυτή την ανάγκη ικανοποιεί το Remote Frame. - 25 -
Κεφάλαιο 2: Υποστηριζόμενα πρωτόκολλα σημάτων OBD-II Εικόνα 2.9: Η μορφή του CAN Remote Frame Δύο είναι οι βασικές διαφορές ανάμεσα σε ένα Data Frame και ένα Remote Frame. Πρώτον, στο Remote Frame δεν υπάρχει Data Field, καθώς αποτελεί ουσιαστικά ένα σήμα που ειδοποιεί ένα συγκεκριμένο Node ότι πρέπει να στείλει δεδομένα. Η δεύτερη διαφορά είναι ότι το RTR Bit είναι πλέον 1 και όχι 0. Από αυτό φαίνεται τι θα συμβεί στη σπάνια περίπτωση που ένα Data Frame και ένα Remote Frame μεταδοθούν ταυτόχρονα. Το Data Frame θα επικρατήσει λόγω του RTR Bit που βρίσκεται σε dominant state και έτσι το Node θα λάβει αμέσως τα δεδομένα του Data Frame. 2.3.2.3 Error Frame Ένα Error Frame μεταδίδεται από οποιοδήποτε Node όταν εκείνο ανιχνεύσει κάποιο λάθος μετάδοσης στο δίκτυο. - 26 -
Κεφάλαιο 2: Υποστηριζόμενα πρωτόκολλα σημάτων OBD-II Εικόνα 2.10: Η μορφή του CAN Error Frame Ένα τέτοιο Frame αποτελείται κατά βάση από δύο πεδία. Το Error Flag Field και το Error Delimiter. Το πρώτο πεδίο υποδεικνύει την κατάσταση του Node τη στιγμή που έγινε το λάθος, active ή passive. Στην περίπτωση που το Node είναι error-active τα 6 πρώτα bits είναι 0 ενώ αν είναι error-passive είναι 1. Η βασική διαφορά μεταξύ active και passive state, είναι στο πεδίο Echo Error Flag. Αν το error frame μεταδοθεί από active node, υπάρχει παραβίαση του Bit- Stuffing κανόνα. Ο κανόνας αυτός αποτελεί μέρος της κωδικοποίησης Non-Return to zero (NRZ) που χρησιμοποιείται στο CAN και υπαγορεύει ότι για κάθε 5 συνεχόμενα bits της ίδιας κατάστασης ακολουθεί ένα bit της αντίθετης κατάστασης. Συνεπώς, περισσότερα από 5 συνεχόμενα bits σε κατάσταση 0 ή 1, αναγνωρίζονται στο CAN σα λάθος. Αυτό έχει σαν αποτέλεσμα, όλα τα υπόλοιπα nodes να αναγνωρίζουν το λάθος αυτό και να στέλνουν τα ίδια error frames, τα οποία ονομάζονται Echo Error Flags και αντιστοιχούν σε λογικό 0 στο πεδίο του Error Frame. Στην περίπτωση ενός error-passive Node, θα έχουμε Echo Error Flags που θα αντιστοιχούν σε λογικό 1. Όμως, ένα τέτοιο Node δεν επηρεάζει τη λειτουργία του δικτύου και συνεπώς θα συνεχιστεί η μετάδοση του μηνύματος, μέχρις ότου να εντοπιστεί το λάθος από ένα error-active Node. Τέλος, ένα error frame ολοκληρώνεται με το Error Delimiter Field που είναι και στις δύο περιπτώσεις σε recessive state, δηλαδή αποτελείται από 8 bits σε λογικό 1. - 27 -
Κεφάλαιο 2: Υποστηριζόμενα πρωτόκολλα σημάτων OBD-II 2.3.2.4 Overload Frame Το Overload Frame έχει πολλές ομοιότητες με το Error Frame. Η βασική διαφορά τους είναι ότι το Overload Frame μεταδίδεται μόνο στο χρονικό διάστημα που το δίκτυο είναι σε αδράνεια (Interframe Space), κάτι που σημαίνει ότι το CAN Bus είναι σε λογικό 1, ενώ το Error Frame μπορεί να διακόψει τη μετάδοση ενός μηνύματος. Εικόνα 2.11: Η μορφή του CAN Overload Frame Το Overload Frame Αποτελείται από δύο πεδία. Το Overload Flag και το Overload Delimiter. Ομοίως με το error flag, το Overload Flag αποτελείται από 6 bit σε dominant state (0) ακολουθούμενα από echo overload flags άλλων Nodes. Το πεδίο Overload Delimiter περιέχει 8 bit σε recessive state (1). Ένα τέτοιο frame μπορεί να μεταδοθεί σε δύο περιπτώσεις. Πρώτον, αν μεταδοθεί ένα bit με τιμή 0 κατά τη διάρκεια του Interframe Space και δεύτερον αν καθυστερήσει η μετάδοση του επόμενου μηνύματος εξαιτίας εσωτερικών αιτιών κάποιου Node. 2.3.2.5 Μηνύματα μεγαλύτερα των 8 Bytes Όλα τα προηγούμενα είδη Frames που αναφέραμε μπορούν να μεταφέρουν κατά το μέγιστο 8 Bytes δεδομένων σε κάθε μήνυμα. Όμως υπάρχουν πολλές περιπτώσεις που το μέγεθος του μηνύματος ξεπερνάει κατά πολύ τα 8 Bytes. Για την ικανοποίηση αυτής της ανάγκης, θεσπίστηκε το πρωτόκολλο ISO 15765-2, που ενσωματώνεται στο CAN, και μέσω ειδικών μορφών frames καθιστά δυνατή τη μεταφορά μέχρι και 4095 Bytes. Η διαφοροποίηση των frames γίνεται μέσω του - 28 -
Κεφάλαιο 2: Υποστηριζόμενα πρωτόκολλα σημάτων OBD-II πρώτου Data Byte στο πεδίο των δεδομένων. Από τη θέσπιση του ISO 15765-2, το byte αυτό ονομάζεται Protocol Control Information (PCI) byte και περιέχει πληροφορία τόσο για το είδος του frame που μεταδίδεται, όσο και για τον αριθμό των υπολειπόμενων data bytes προς αποστολή. Μέσω του PCI διακρίνουμε τεσσάρων ειδών frames. Address Field A) Single Frame Single Frame Message PCI Field Byte 1 Data Field (7 Bytes) CAN ID b7 b6 b5 b4 b3 b2 b1 b0 Byte2 Byte3 Byte4 Byte5 Byte6 Byte7 Byte8 AI 0 0 0 0 DL Data Data Data Data Data Data Data Πίνακας 2.2: Το πεδίο δεδομένων του Single Frame Message Ένα Single Frame χρησιμοποιείται όταν θέλουμε να μεταδώσουμε δεδομένα που χωράνε σε ένα frame. Ουσιαστικά, όλα τα προηγούμενα frames που αναφέραμε, ανάγονται σε single frames. Παρατηρούμε ότι σε ένα Single Frame, τα πρώτα τέσσερα bits είναι 0000 (MSB First). Αυτό είναι και το χαρακτηριστικό του single frame που θα το ξεχωρίσει από τα υπόλοιπα είδη. Τα υπόλοιπα 4 bits του PCI, δηλώνουν το μέγεθος του Data Field που ακολουθεί (Data Length). Επιτελεί ακριβώς την ίδια λειτουργία με το DLC. Συνεπώς, το DL μπορεί να πάρει τιμές από 0 μέχρι 7, καθώς τόσες είναι οι θέσεις που απομένουν για να συμπληρωθεί ένα frame. Οι υπόλοιπες θέσεις είναι δεσμευμένες από το πρωτόκολλο ISO 15765-2. Address Field B) First Frame First Frame Message PCI Field Byte 1-29 - Data Field (7 Bytes) CAN ID b7 b6 b5 b4 b3 b2 b1 b0 Byte2 Byte3 Byte4 Byte5 Byte6 Byte7 Byte8 AI 0 0 0 1 XDL DL Data Data Data Data Data Data Πίνακας 2.3: Το πεδίο δεδομένων του First Frame Message Το First Frame είναι το πρώτο από μια σειρά συνεχόμενων frames για τη μετάδοση ενός μηνύματος που αδυνατεί να μεταδοθεί σαν single frame, εξαιτίας του μεγέθους του πακέτου δεδομένων. Σε αυτή την περίπτωση βλέπουμε ότι τα τέσσερα πρώτα bits του PCI Field είναι 0001, που χαρακτηρίζουν την μετάδοση ενός First Frame. Τα υπόλοιπα 4 bits μαζί με το Byte 2 του data field, σχηματίζουν ένα αριθμό από 12 bits που εκφράζει το συνολικό αριθμό των bytes προς αποστολή. Συνεπώς, υπάρχει η δυνατότητα για αποστολή μέχρι 4095 bytes (από 000 έως FFF
Κεφάλαιο 2: Υποστηριζόμενα πρωτόκολλα σημάτων OBD-II σε δεκαεξαδικό σύστημα). Στη συνέχεια ακολουθούν τα 6 πρώτα bytes πληροφορίας του συνολικού πακέτου δεδομένων. Address Field Γ) Consecutive Frame Consecutive Frame Message PCI Field Byte 1 Data Field (7 Bytes) CAN ID b7 b6 b5 b4 b3 b2 b1 b0 Byte2 Byte3 Byte4 Byte5 Byte6 Byte7 Byte8 AI 0 0 1 0 SN Data Data Data Data Data Data Data Πίνακας 2.4: Το πεδίο δεδομένων του Consecutive Frame Message Στην περίπτωση ενός Consecutive Frame, τα τέσσερα πρώτα bits του PCI Field είναι 0010 και χαρακτηρίζουν την ύπαρξη ενός Consecutive Frame. Τα υπόλοιπα τέσσερα bits ονομάζονται Sequence Number και είναι ένας μετρητής, από 1 έως F δεκαεξαδικό, του πλήθους των Consecutive Frames που στέλνονται. Συμπερασματικά, όταν πρέπει να μεταδοθεί ένα μήνυμα μεγαλύτερο των 7 Bytes, δημιουργείται πρώτα ένα First Frame που σημαίνει την έναρξη της μετάδοσης ενός μεγάλου πακέτου δεδομένων και ακολουθείται από ένα αριθμό consecutive frames που περιέχουν ολόκληρο το μήνυμα σε πακέτα των 7 Bytes. Address Field Δ) Flow Control Frame Flow Control Frame Message PCI Field Byte 1 Data Field (7 Bytes) CAN ID b7 b6 b5 b4 b3 b2 b1 b0 Byte2 Byte3 Byte4 Byte5 Byte6 Byte7 Byte8 AI 0 0 1 1 FS BS MAX ST MIN -- -- -- -- -- Πίνακας 2.5: Το πεδίο δεδομένων του Flow Control Frame Message Μεγάλη σημασία στην αποτελεσματική συνεργασία του πομπού και του δέκτη κατά τη διάρκεια της μετάδοσης ενός CAN μηνύματος, έχει το flow control frame, το οποίο στέλνει ο δέκτης στον πομπό. Χαρακτηρίζεται από τις τιμές 0011 στα πρώτα τέσσερα bits του PCI Field. Τα υπόλοιπα τέσσερα, Flow Status (FS) μπορούν να πάρουν είτε την τιμή 0000 που σημαίνει ότι επιτρέπεται η αποστολή των δεδομένων (Clear To Send CTS) είτε την τιμή 0001 που σταματάει προσωρινά την αποστολή των δεδομένων (Wait WT). Το δεύτερο byte του Data Field - 30 -
Κεφάλαιο 2: Υποστηριζόμενα πρωτόκολλα σημάτων OBD-II ονομάζεται Block Size (BS MAX ) και μπορεί να πάρει τιμές από 0 μέχρι 255. Η τιμή του συγκεκριμένου byte εκφράζει το μέγιστο αριθμό των consecutive frames που θα μεταδοθούν μέχρι να σταλεί στον πομπό ένα επόμενο flow control frame. Αν η τιμή του είναι 0, τότε θα σταλούν όλα τα consecutive frames που χρειάζονται για να ολοκληρωθεί η μετάδοση του μηνύματος, χωρίς να περιμένει ο πομπός επόμενο flow control frame. Το τρίτο byte του data field ονομάζεται Separation Time (ST MIN ) byte και παίρνει τιμές από 0 μέχρι 127 (0x00 μέχρι 0x7F) όταν το BS MAX byte είναι 0. Εκφράζει τον ελάχιστο χρόνο μεταξύ δύο συνεχόμενων consecutive frames και μετριέται σε milliseconds. Στην περίπτωση που το BS MAX byte είναι μεγαλύτερο του 0, το ST MIN παίρνει τιμές από 0xF1 μέχρι 0xF9 που μεταφράζεται σε 100 microseconds μέχρι 900 microseconds. Μία τυπική διαδικασία αποστολής-λήψης, με χρήση first, consecutive και flow control frames φαίνεται στο παρακάτω διάγραμμα. Ο αποστολέας (Sender Node) ξεκινάει την αποστολή με ένα first frame, στο οποίο δηλώνει το πλήθος των bytes που περιλαμβάνει το πακέτο των μηνυμάτων όπως περιγράφηκε παραπάνω. Αμέσως, ακολουθεί flow control frame από τον δέκτη που περιλαμβάνει BS MAX και ST MIN. Ανάλογα με τις τιμές των BS MAX και ST MIN που θα λάβει, ο αποστολέας συνεχίζει τη μετάδοση των consecutive frames μέχρι να φτάσει το πλήθος που δηλώθηκε μέσω του BS MAX, ή να λάβει ένα flow control frame με τιμή FS: 0001 που θα παύσει τη μετάδοση μέχρι η τιμή του FS να γίνει ξανά 0000 (CTS). Η διαδικασία αυτή επαναλαμβάνεται μέχρι να αποσταλούν ορθώς όλα τα δεδομένα του πακέτου από τον αποστολέα. - 31 -
Κεφάλαιο 2: Υποστηριζόμενα πρωτόκολλα σημάτων OBD-II Εικόνα 2.12: Μετάδοση μηνύματος με χρήση Flow Control Frame 2.3.3 To πρωτόκολλο CAN στο OBD-II Σε προηγούμενα κεφάλαια αναλύθηκαν το υπόβαθρο και οι δυνατότητες του OBD-II και του πρωτοκόλλου CAN ξεχωριστά. Σε αυτήν την παράγραφο, θα επεξηγηθεί η διαδικασία που ακολουθείται από το χειριστή ενός συστήματος διαγνωστικών αυτοκινήτου. Η τυποποίηση των κωδικών που χρησιμοποιούνται σε συστήματα διαγνωστικών αυτοκινήτου έγινε το 1979, από την Ένωση Μηχανικών Αυτοκινητοβιομηχανίας (Society of Automotive Engineers SAE) και είναι γνωστή - 32 -
Κεφάλαιο 2: Υποστηριζόμενα πρωτόκολλα σημάτων OBD-II ως πρότυπο SAE J1979. Σύμφωνα με τη συμφωνία αυτή, θεσπίζονται συγκεκριμένοι κωδικοί για κάθε λειτουργία του οχήματος και ονομάζονται Parameter IDs (PIDs). Δημιουργήθηκε μια λίστα από τυποποιημένους PIDs που όλες οι βιομηχανίες είναι ακόμα και σήμερα υποχρεωμένες να την εφαρμόζουν στα διαγνωστικά συστήματά τους. Βέβαια, δόθηκε η δυνατότητα στην κάθε αυτοκινητοβιομηχανία να αναπτύξει μερικούς δικούς της κωδικούς που θα εφαρμόζονται στα δικά της μοντέλα και μόνο. Εκτός από τους PIDs, ορίστηκε μια λίστα με κωδικούς που περιγράφουν τις βλάβες σε οποιοδήποτε υποσύστημα του οχήματος. Αυτοί οι κωδικοί ονομάζονται Diagnostic Trouble Codes (DTCs). Η κωδικοποίηση των DTCs έχει συγκεκριμένη λογική και μορφή. Το κάθε DTC αποτελείται από 5 χαρακτήρες. Ο πρώτος χαρακτήρας είναι ένα από τα γράμματα P (Powertrain), C (Chassis), B (Body), U (Network) και δηλώνει το σύστημα του αυτοκινήτου που έχει υποστεί τη βλάβη. Οι υπόλοιποι 4 χαρακτήρες είναι δεκαεξαδικά ψηφία, δηλαδή παίρνουν τιμές από 0-9 ή A-F (εκτός από τον πρώτο χαρακτήρα εκ των τεσσάρων που μπορεί να πάρει τιμές από 0-3) και θα πρέπει κανείς να ανατρέξει στην τυποποιημένη λίστα για να εξακριβώσει σε ποια βλάβη αναφέρεται κάθε συνδυασμός αριθμών. Συνεπώς, θα μπορούσε κανείς να συνοψίσει τη διαδικασία που ακολουθείται για το χειρισμό του διαγνωστικού συστήματος στα εξής βήματα: Α) Ο χειριστής του διαγνωστικού εργαλείου εισάγει τον PID που τον ενδιαφέρει. Β) Το διαγνωστικό εργαλείο στέλνει το μήνυμα στο δίκτυο του αυτοκινήτου, σύμφωνα με το κατάλληλο πρωτόκολλο. Γ) Το σύστημα αναγνωρίζει τον PID και επιστρέφει το ζητούμενο δεδομένο. Δ) Το διαγνωστικό εργαλείο διαβάζει την απάντηση και τη δείχνει στο χειριστή. Ακόμα, στο πρότυπο SAE J1979 καθορίστηκαν δέκα Modes Of Operation. Κάθε Mode επιτελεί διαφορετική λειτουργία, συνεπώς έχει διαφορετικούς PIDs. Ο διαχωρισμός αυτός έγινε κυρίως για λόγους κατηγοριοποίησης των λειτουργιών ενός διαγνωστικού συστήματος αυτοκινήτου. Πριν αναλυθεί το κάθε Mode ξεχωριστά, αξίζει να αναφερθεί ότι η κωδικοποίηση τόσο των PIDs όσο και των Modes γίνεται σύμφωνα με το δεκαεξαδικό σύστημα. - 33 -
Κεφάλαιο 2: Υποστηριζόμενα πρωτόκολλα σημάτων OBD-II a) Mode 1 Modes of Operation Πρόκειται για τη βασική λειτουργία του διαγνωστικού εργαλείου. Μέσω του Mode 1, ο χρήστης έχει τη δυνατότητα να ζητήσει οποιαδήποτε πληροφορία για το όχημα σε πραγματικό χρόνο, κάτι που σημαίνει ότι η συγκεκριμένη λειτουργία μπορεί να χρησιμοποιηθεί και για τη γραφική απεικόνιση των μεταβαλλόμενων μεγεθών, όπως είναι η ταχύτητα ή οι στροφές του οχήματος. Σημειώνεται ότι το κάθε Mode έχει ένα δεκαεξαδικό κωδικό που χρησιμοποιείται από το λογισμικό του διαγνωστικού εργαλείου για την αναγνώρισή του από το σύστημα. Συνεπώς, στη συγκεκριμένη περίπτωση, ο κωδικός αυτός είναι ο δεκαεξαδικός αριθμός 0x01. b) Mode 2 Η δεύτερη λειτουργία είναι υπεύθυνη για την ανάδειξη του αποθηκευμένου στιγμιοτύπου μετά από τον εντοπισμό κάποιας βλάβης. Το στιγμιότυπο αυτό δημιουργείται αμέσως μετά την εύρεση κάποιου DTC και περιέχει τις τιμές όλων των υποσυστημάτων του οχήματος εκείνη τη δεδομένη στιγμή. Με το Mode 2, το οποίο αντίστοιχα χαρακτηρίζεται από το δεκαεξαδικό αριθμό 0x02, είναι δυνατή η επιλογή του επιθυμητού στιγμιότυπου ή Freeze Frame όπως ονομάζεται, ακόμα και στην περίπτωση που υπάρχουν περισσότερες από μία βλάβες και συνεπώς περισσότερα Freeze Frames. c) Mode 3 Το τρίτο Mode είναι ένα από τα τρία Modes που είναι υπεύθυνα για την ανάδειξη των διαφόρων ειδών DTCs. Στη συγκεκριμένη περίπτωση, μπορεί κανείς να πάρει πληροφορίες για τα αποθηκευμένα ή αλλιώς Stored DTCs, τα οποία αποθηκεύονται αμέσως μετά τον εντοπισμό κάποιας βλάβης και την ολοκλήρωση ενός κύκλου ρολογιού. Ο κωδικός που αντιστοιχεί σε ένα τέτοιο DTC υποδηλώνει μια συγκεκριμένη βλάβη και ο χρήστης του διαγνωστικού εργαλείου πρέπει να ανατρέξει στην τυποποιημένη λίστα από το SAE J1979 για να εξακριβώσει τι σημαίνει ο συγκεκριμένος κωδικός DTC. Αντίστοιχα με τα προηγούμενα Modes, ο χαρακτηριστικός δεκαεξαδικός αριθμός του Mode 3 είναι ο 0x03. - 34 -
Κεφάλαιο 2: Υποστηριζόμενα πρωτόκολλα σημάτων OBD-II d) Mode 4 Το Mode 4 επιτελεί στην ουσία τη λειτουργία της εκκαθάρισης των DTCs και των Freeze Frames. Με άλλα λόγια, χρησιμοποιώντας αυτό το Mode, ο χρήστης διαγράφει τα αποθηκευμένα Freeze Frames, τα Stored DTCs (Mode 3) και τα Pending DTCs (Mode 7). Ο δεκαεξαδικός αριθμός που αντιστοιχεί σε αυτό το Mode είναι ο 0x04. e) Mode 5 Η συγκεκριμένη λειτουργία είναι προσανατολισμένη εξ ολοκλήρου στους αισθητήρες οξυγόνου του οχήματος. Περιέχει μια λίστα με PIDs που δίνουν όλων των ειδών πληροφορίες για τους συγκεκριμένους μόνο αισθητήρες, όπως διάφορους χρονισμούς και επίπεδα τάσης. Βέβαια, πληροφορίες για τους Oxygen Sensors είναι δυνατόν να εξαχθούν και από το Mode 1. Η διαφορά είναι στο πλήθος των πληροφοριών αυτών που στο Mode 5 είναι αισθητά περισσότερες. Αντίστοιχα, ο 0x05 είναι ο δεκαεξαδικός κωδικός για το Mode 5. Πρέπει να τονιστεί, ότι το Mode 5 είναι συμβατό με όλα τα πρωτόκολλα εκτός του CAN. Τη λειτουργία αυτή για το CAN, την επιτελεί το επόμενο Mode. f) Mode 6 Όπως αναφέρθηκε στο Mode 5, το συγκεκριμένο Mode επιτελεί τη λειτουργία του Mode 6 αλλά για το CAN μόνο. Ταυτόχρονα, παρέχει τη δυνατότητα για την ανάδειξη των αποτελεσμάτων από συνεχείς ή τμηματικούς ελέγχους σε διάφορα υποσυστήματα του οχήματος. g) Mode 7 Το δεύτερο Mode που είναι υπεύθυνο για την ανάδειξη των DTCs είναι το Mode 7. Τα DTCs που αντιστοιχούν στο Mode 7 ονομάζονται Pending DTCs και είναι κωδικοί βλάβης που εντοπίστηκαν είτε κατά τη διάρκεια του αμέσως προηγούμενου κύκλου ρολογιού είτε στον τωρινό κύκλο ρολογιού. Η λειτουργία αυτή είναι πολύ χρήσιμη στον έλεγχο της διόρθωσης μιας βλάβης, καθώς μόλις μετά από ένα κύκλο ελέγχων, μπορεί να διαπιστωθεί αν επισκευάστηκε η βλάβη. Ο δεκαεξαδικός κωδικός για το Mode 7 είναι ο 0x07. - 35 -
Κεφάλαιο 2: Υποστηριζόμενα πρωτόκολλα σημάτων OBD-II h) Mode 8 Το συγκεκριμένο Mode αναλαμβάνει να παραδώσει τον έλεγχο ενός On Board συστήματος, σε ένα ελεγκτικό σύστημα διαγνωστικών Off Board. Αυτό συνεπάγεται ότι ο πλήρης χειρισμός του δικτύου του αυτοκινήτου είναι πλέον ευθύνη του εξωτερικού εργαλείου. Ο δεκαεξαδικός αριθμός είναι αντίστοιχα ο 0x08. i) Mode 9 Η λειτουργία αυτή περιέχει PIDs που περιέχουν διάφορες πληροφορίες του οχήματος. Η σημαντικότερη όλων είναι ο Vehicle Identification Number (VIN), ο οποίος είναι ένας αριθμός που χαρακτηρίζει το συγκεκριμένο μοντέλο αυτοκινήτου και περιέχει κωδικοποιημένες πληροφορίες για το έτος παραγωγής, το καύσιμο, τον τύπο του οχήματος και την εταιρία παραγωγής. Για το Mode 9, ο δεκαεξαδικός κωδικός είναι το 0x09. j) Mode A Το τρίτο Mode υπεύθυνο για τα DTCs είναι το Mode A, το οποίο περιέχει τους Permanent DTCs. Ως Permanent χαρακτηρίζονται οι κωδικοί βλάβης που αποθηκεύονται στη μόνιμη μνήμη του συστήματος (non-volatile memory) και είναι κατά βάση μεγαλύτερης σημασίας από τους προηγούμενους. Ο 0x0A είναι ο δεκαεξαδικός αριθμός για αυτό το Mode. - 36 -
Κεφάλαιο 3: Serial Peripheral Interface Bus (SPI) Κεφάλαιο 3: Serial Peripheral Interface Bus (SPI) 3.1 Εισαγωγή Ο καταλληλότερος τρόπος μετάδοσης των δεδομένων στην πλακέτα που υλοποιήσαμε, αποδείχθηκε ότι είναι η σύγχρονη μετάδοση, και πιο συγκεκριμένα το Serial Peripheral Interface Bus ή αλλιώς SPI. Το πρωτόκολλο επικοινωνίας του διαύλου αυτού αναπτύχθηκε από τη Motorola και αυτό που το κάνει εξαιρετικά χρήσιμο είναι η δυνατότητα ταυτόχρονης αμφίδρομης μετάδοσης δεδομένων (full duplex). Μια επικοινωνία SPI προϋποθέτει την ύπαρξη μίας Master συσκευής και μιας ή περισσοτέρων Slave συσκευών. Οι συσκευές αυτές συνδέονται μεταξύ τους όπως δείχνει το παρακάτω σχήμα. Εικόνα 3.1: Μετάδοση SPI Όπως φαίνεται στο σχήμα, υπάρχουν τέσσερις γραμμές επικοινωνίας. Η πρώτη (SCLK) είναι το ρολόι, Serial Clock και η έναρξη του σημαίνει και την έναρξη της επικοινωνίας SPI. Οι δύο επόμενες γραμμές, MOSI (Master Output Slave Input) και MISO (Master Input Slave Output) είναι οι γραμμές δεδομένων. Η MOSI μεταφέρει δεδομένα από τη Master συσκευή προς τη Slave, ενώ η MISO μεταφέρει δεδομένα από τη Slave συσκευή προς τη Master. Τέλος, υπάρχει η γραμμή Slave Select (SS) η οποία είναι υπεύθυνη για την επιλογή της Slave συσκευής που θα επικοινωνήσει με τη Master και είναι σε active low state. Στην περίπτωση που υπάρχουν περισσότερες από μία Slave συσκευές, υπάρχουν δύο δυνατές συνδεσμολογίες. Η πρώτη, που είναι και η πιο συνηθισμένη, ονομάζεται Independent Slave SPI Configuration και διαθέτει ξεχωριστά Slave Select για κάθε Slave συσκευή. - 37 -
Κεφάλαιο 3: Serial Peripheral Interface Bus (SPI) Εικόνα 3.2: Μετάδοση SPI με πολλαπλές Slave συσκευές-independent Slave Configuration Η δεύτερη συνδεσμολογία ονομάζεται Daisy Chain SPI Configuration. Οι Slave συσκευές συνδέονται όλες σε ένα Slave Select της Master συσκευής. Η ιδιαιτερότητα της συγκεκριμένης συνδεσμολογίας έγκειται στην αλυσιδωτή σύνδεση των εισόδων και εξόδων δεδομένων των Slave συσκευών. Εικόνα 3.2: Μετάδοση SPI με πολλαπλές Slave συσκευές-daisy Chain SPI Configuration - 38 -
Κεφάλαιο 3: Serial Peripheral Interface Bus (SPI) Όταν ολοκληρωθεί ένας κύκλος ρολογιού και ξεκινήσει ένας επόμενος, τα slaves στέλνουν τα δεδομένα που πήραν από τον προηγούμενο κύκλο. Συνεπώς, το σύστημα λειτουργεί ουσιαστικά σαν shift register. 3.2 Τρόπος Λειτουργίας του SPI Bus Η μετάδοση δεδομένων μέσω SPI Bus αποτελείται από τέσσερα βήματα. Αρχικά πρέπει να οριστεί από τη Master συσκευή η ταχύτητα μετάδοσης των δεδομένων, η οποία πρέπει να είναι ίση ή μικρότερη με τη μέγιστη ταχύτητα που υποστηρίζει η slave συσκευή. Το επόμενο βήμα είναι να επιλεγεί η slave συσκευή που θα επικοινωνήσει με τη Master συσκευή. Αυτό γίνεται στέλνοντας στη γραμμή SS λογικό 0 καθώς είναι σε active low state. Εικόνα 3.3: Τρόπος λειτουργίας SPI Σε κάθε κύκλο ρολογιού, πραγματοποιείται αμφίπλευρη μετάδοση δεδομένων όπως δείχνει το από πάνω σχήμα. Η Master συσκευή στέλνει ένα bit πληροφορίας μέσω της MOSI γραμμής και η slave συσκευή αναγνωρίζει το δεδομένο και αντίστοιχα στέλνει ένα bit πληροφορίας μέσω της MISO γραμμής και η Master συσκευή το δέχεται. Η ακριβείς χρονικές στιγμές που γίνονται αυτές οι δύο ενέργειες καθορίζονται από το χρήστη και πιο συγκεκριμένα από τη Master συσκευή. Ο συνδυασμός δύο παραμέτρων καθορίζει ποιες χρονικές στιγμές θα επικοινωνήσει η Master με τη slave συσκευή. Η πρώτη παράμετρος είναι η πολικότητα του ρολογιού (Clock Polarity CPOL), δηλαδή αν το ρολόι σε αδράνεια είναι σε κατάσταση λογικού 1 ( CPOL = 1) ή σε κατάσταση λογικού 0 (CPOL = 0). Η δεύτερη παράμετρος είναι η φάση του ρολογιού (Clock Phase CPHA), δηλαδή αν η - 39 -
Κεφάλαιο 3: Serial Peripheral Interface Bus (SPI) ανερχόμενη παρυφή του ρολογιού αντιστοιχεί στη μετάδοση των δεδομένων από τις δύο γραμμές και η κατερχόμενη στο διάβασμα τους ή το ανάποδο. Οι διαφορετικοί συνδυασμοί των παραμέτρων αυτών, δημιούργησε τέσσερα διαφορετικά Modes λειτουργίας του SPI Bus. Εικόνα 3.4: Σύνοψη των SPI Modes Mode 0 ( CPOL = 0, CPHA = 0) Η πρώτη λειτουργία αντιστοιχεί σε ρολόι σε κατάσταση 0 όταν βρίσκεται στην αδράνεια. Ένας κύκλος ρολογιού αρχίζει στην ανερχόμενη παρυφή (High-Low Cycle). Η φάση ρολογιού σε λογικό 0 ορίζει ότι τα δεδομένα θα στέλνονται στην ανερχόμενη παρυφή του ρολογιού (Low-High Transition) και θα διαβάζονται στην κατερχόμενη (High-Low Transition). Mode 1 ( CPOL = 0, CPHA = 1) Όπως στο Mode 0, έτσι και εδώ, το ρολόι βρίσκεται σε λογικό 0 κατά τη διάρκεια της αδράνειας και ο κύκλος ρολογιού ξεκινάει στην ανερχόμενη παρυφή. Η φάση ρολογιού είναι ανάποδα σε σχέση με το Mode 0 και συνεπώς, τα δεδομένα στέλνονται στην κατερχόμενη παρυφή του ρολογιού ( High-Low Transition) και διαβάζονται στην ανερχόμενη (Low-High Transition). Mode 2 ( CPOL = 1, CPHA = 0) - 40 -
Κεφάλαιο 3: Serial Peripheral Interface Bus (SPI) Στη συγκεκριμένη λειτουργία, το ρολόι έχει αντίστροφη πολικότητα. Στην αδράνεια βρίσκεται σε λογικό 1 και ο κύκλος ρολογιού ξεκινάει στην κατερχόμενη παρυφή (Low-High Cycle). Η φάση του ρολογιού ορίζει ότι τα δεδομένα στέλνονται στην κατερχόμενη παρυφή του ρολογιού (High-Low Transition) και διαβάζονται στην ανερχόμενη παρυφή (Low-High Transition). Mode 3 ( CPOL = 1, CPHA =1 ) Στην τέταρτη λειτουργία, το ρολόι είναι όπως και στο Mode 2, δηλαδή βρίσκεται σε λογικό 1 όσο αδρανεί, ενώ ένας κύκλος ρολογιού ξεκινάει στην κατερχόμενη παρυφή του. Σε αντίθεση με το Mode 2, τα δεδομένα στέλνονται στην ανερχόμενη παρυφή του ρολογιού (Low-High Transition) και διαβάζονται στην κατερχόμενη παρυφή (High-Low Transition). - 41 -
Κεφάλαιο 4: Ο εξομοιωτής OBD-II ECUsim 2000 Κεφάλαιο 4 : O εξομοιωτής OBD-II ECUsim 2000 ECUsim 2000 Προτού συνδέσουμε την πλακέτα διασύνδεσης σε πραγματικό αυτοκίνητο για τη δοκιμή του κυκλώματος και του λογισμικού, χρησιμοποιήθηκε ο ECUsim 2000 OBD-II Simulator της εταιρίας Scantool για την προσομοίωση του δικτύου του αυτοκινήτου. Ο εξομοιωτής αυτός έχει δυνατότητα υποστήριξης όλων των πρωτοκόλλων καθώς και Diagnostic Trouble Codes (DTCs), Freeze Frames, τυποποιημένους και προγραμματιζόμενους PIDs και αρκετές επιπλέον SAE J1979 υπηρεσίες. Για τις ανάγκες αυτής της διπλωματικής εργασίας ενσωματώθηκε μόνο το ISO 15765-4 πρωτόκολλο που αντιστοιχεί στην επικοινωνία με το CAN Bus. Είναι διαθέσιμος σε τρεις εκδόσεις: standard, professional, ultimate. Χρησιμοποιήθηκε η standard έκδοση, η οποία στα πλαίσια αυτής της εργασίας ήταν επαρκής. Εικόνα 4.1: Ο εξομοιωτής ECUsim 2000-42 -
Κεφάλαιο 4: Ο εξομοιωτής OBD-II ECUsim 2000 Ο εξομοιωτής είναι μια μικρογραφία του δικτύου του αυτοκινήτου και υποστηρίζει λειτουργίες τριών διαφορετικών ECU (Engine ECU, Transmission ECU, ABS ECU). Στις professional και ultimate εκδόσεις είναι δυνατή η δημιουργία custom ECU από το χρήστη. Ο εξομοιωτής υποστηρίζει πέντε Knobs (Εικόνα 4.2, [1]) τα οποία αντιστοιχούν σε συγκεκριμένους PIDs, οι οποίοι είναι, ξεκινώντας από τα αριστερά στην Εικόνα 4.1, η θερμοκρασία του ψυκτικού ( Engine Coolant Temperature ), οι στροφές του κινητήρα ( RPM ), η ταχύτητα του αυτοκινήτου ( Vehicle Speed ), η τάση ενός από τους αισθητήρες οξυγόνου του κινητήρα ( Oxygen Sensor ) και τέλος η ροή του αέρα μέσα στον κινητήρα ( Mass Air Flow ). - 43 -
Κεφάλαιο 4: Ο εξομοιωτής OBD-II ECUsim 2000 Εικόνα 4.2: Ανάλυση του εξομοιωτή ECUsim 2000 Δεξιά από τα knobs υπάρχει το Fault Button (Εικόνα 4.2, [2]) το οποίο δημιουργεί μια εικονική βλάβη στον εξομοιωτή, η οποία βλάβη ανάβει το Led με την ένδειξη MIL (Malfunction Indicator Lamp) (Εικόνα 4.2, [3]). Το Led που βρίσκεται ακριβώς πάνω από το MIL Led ονομάζεται Link Led (Εικόνα 4.2, [4]) και ενεργοποιείται όταν υπάρχει επιτυχής επικοινωνία του εξομοιωτή με το διαγνωστικό εργαλείο. Πάνω από το Link Led βρίσκεται το Power Led (Εικόνα 4.2, [5]) που μένει ενεργοποιημένο για όσο διάστημα είναι συνδεδεμένος στην τροφοδοσία (Εικόνα 4.2, [6]) ο εξομοιωτής. Η σύνδεση με τον υπολογιστή γίνεται μέσω θύρας USB 2.0 (Εικόνα 4.2, [7]) και η σύνδεση με το διαγνωστικό εργαλείο μέσω connector που πληροί τις προδιαγραφές του OBD-II (Εικόνα 4.2, [8]). Τέλος, υπάρχει δυνατότητα επιλογής τόσο της ταχύτητας του διαύλου ( 500kbps ή 250kbps ) όσο και της χρήσης Standard ή Extended Identifier. Η επιλογή γίνεται μέσω δύο διακοπτών(εικόνα4.2,[9]) - 44 -
Κεφάλαιο 5: Σχεδίαση της Πλακέτας διασύνδεσης Κεφάλαιο 5: Σχεδίαση της Πλακέτας διασύνδεσης 5.1 Ανάγκες σχεδίασης του συστήματος Οι ανάγκες για τη σχεδίαση του συστήματος που υλοποιήθηκε, όπως αναλύονται παραπάνω, χωρίζονται σε τρεις κύριους στόχους προς επίτευξη: Ξεκινώντας από τη μεριά του αυτοκινήτου, πρέπει να επιτύχουμε σωστή σύνδεση του συστήματος OBD-II του οχήματος με την πλακέτα διασύνδεσης. Αυτό πρέπει να γίνει, από τη μία, μηχανικά, μέσω του Connector και από την άλλη ηλεκτρικά, μέσω των κατάλληλων ολοκληρωμένων που θα ρυθμίσουν τις στάθμες της διαφορικής εξόδου (CAN high και CAN low) με τέτοιο τρόπο, ώστε να συμμορφώνονται με τους εξής κανόνες: Το CANH και το CANL να παίρνουν τιμές από 2V μέχρι 3V για την recessive κατάσταση. Το CANH να κυμαίνεται σε τιμές από 2.75V έως 4.5V για τη dominant κατάσταση. Το CANL να κυμαίνεται σε τιμές από 0.5V έως 2.25V για τη dominant κατάσταση. Οι προαναφερθέντες κανόνες του φυσικού επιπέδου (physical layer) του πρωτοκόλλου του CAN (ISO 11898) φαίνονται στην εικόνα που ακολουθεί. - 45 -
Κεφάλαιο 5: Σχεδίαση της Πλακέτας διασύνδεσης Εικόνα 5.1: Τα επίπεδα τάσης του CAN Physical layer protocol Αφού επιτύχουμε τη σύνδεση της πλακέτας με το OBD-II σύστημα του οχήματος, πρέπει να υλοποιήσουμε το κομμάτι της λογικής του συστήματος. Η πλακέτα διασύνδεσης πρέπει να είναι σε θέση να ενσωματώνει όλες τις ιδιαίτερες απαιτήσεις του πρωτοκόλλου CAN (ISO 15765), όπως την ικανότητα δημιουργίας όλων των ειδών των CAN frames, τη δυνατότητα μετάδοσης δεδομένων με ταχύτητες 250kbps και 500kbps και όλες τις άλλες παραμέτρους του CAN, που αναπτύσσονται στο κεφάλαιο 2.3. Ακόμη, η πλακέτα διασύνδεσης πρέπει να είναι ικανή να ανταπεξέλθει στις ανάγκες που τίθενται από το χρήστη, όπως η ταχεία ροή δεδομένων για εφαρμογές απεικόνισης πραγματικού χρόνου, η πολλαπλή επικοινωνία με διαφορετικούς PIDs ταυτόχρονα και άλλες σύνθετες απαιτήσεις του λογισμικού. Τέλος, ως τρίτο στόχο θέτουμε τη σωστή επικοινωνία της πλακέτας διασύνδεσης με τον υπολογιστή, μέσω θύρας USB 2.0. Αυτό σημαίνει ότι είναι απαραίτητη η χρήση κάποιου ολοκληρωμένου που ενσωματώνει το πρωτόκολλο USB για είσοδο και έξοδο δεδομένων, το οποίο χρησιμοποιεί την NRZI (Non Return to Zero Invert) κωδικοποίηση. Από την άλλη, πρέπει φυσικά να μπορεί να επικοινωνήσει και με το υπόλοιπο σύστημα, που είναι υπεύθυνο για την επίτευξη των δύο παραπάνω στόχων. Με βάση τα παραπάνω, σχεδιάστηκε και υλοποιήθηκε η πλακέτα διασύνδεσης όπως θα αναλυθεί στη συνέχεια. Προτού καταλήξουμε στην τελική σχεδίαση, επιχειρήσαμε μία απλούστερη σχεδίαση, η οποία απορρίφθηκε αμέσως εξαιτίας της ανικανότητάς της να δημιουργήσει ολόκληρο το CAN frame, όπως αυτό περιγράφεται στο κεφάλαιο 2.3 και να λειτουργήσει στα 250kbps. Ωστόσο, η σχεδίαση αυτή οδήγησε στη βαθύτερη κατανόηση των αναγκών και την επιλογή - 46 -
Κεφάλαιο 5: Σχεδίαση της Πλακέτας διασύνδεσης των ιδανικών ολοκληρωμένων, ώστε να επιτευχθούν όλοι οι στόχοι της εργασίας αυτής. Η τελική σχεδίαση παρουσιάζεται αναλυτικά στην επόμενη ενότητα. 5.2 Εισαγωγή της σχεδίασης που υλοποιήθηκε Σύμφωνα με τους στόχους που αναφέρθηκαν και επιπρόσθετα, λαμβάνοντας υπόψιν τον αρχικό στόχο της διπλωματικής εργασίας, ο οποίος θέλει το κόστος του συστήματος να παραμείνει χαμηλό, αναζητήθηκαν και επιλέχθηκαν τα κατάλληλα στοιχεία που θα απαρτίζουν την πλακέτα διασύνδεσης. Για το ρόλο του ρυθμιστή των στάθμεων των CANH και CANL, σύμφωνα με το πρότυπο για το physical layer του ISO 11898, επιλέχθηκε το ολοκληρωμένο MCP- 2551. Η ενσωμάτωση του πρωτοκόλλου του CAN καλύπτεται πλήρως από το MCP- 2515 το οποίο λειτουργεί ως ένα αυτόνομο CAN node, που εξυπηρετεί όλες τις απαιτήσεις ενός σύγχρονου διαγνωστικού συστήματος. Τελευταίο στη σειρά, ξεκινώντας από το όχημα, είναι το FT-232H, το οποίο έχει όλες τις απαραίτητες δυνατότητες τόσο για την επικοινωνία με το MCP-2515 σε υψηλές ταχύτητες, μέσω του πρωτοκόλλου SPI, όσο και για την επικοινωνία με τον ηλεκτρονικό υπολογιστή, μέσω USB. Επιλέχθηκε η χρήση του ολοκληρωμένου μνήμης EEPROM MCP- 93LC56B, το οποίο επιτελεί επικουρικές λειτουργίες και βοηθάει στην αναγνώριση της πλακέτας διασύνδεσης από τον υπολογιστή. Ακολουθεί εκτενής περιγραφή των δυνατοτήτων των ολοκληρωμένων που χρησιμοποιήθηκαν. 5.3 Ανάλυση των στοιχείων της σχεδίασης 5.3.1 Το ολοκληρωμένο FT-232H Το ολοκληρωμένο FT-232H, της εταιρίας FTDI (Future Technology Devices International Ltd), είναι ένα IC (Integrated Circuit) μονού καναλιού και έχει τη δυνατότητα να μεταδίδει δεδομένα είτε ασύγχρονα σειριακά είτε σύγχρονα μέσω επικοινωνίας με USB 2.0 High Speed. Χρησιμοποιείται σε ένα ευρύ φάσμα βιομηχανικών εφαρμογών, λόγω των πολλών διαφορετικών δυνατοτήτων του. Παρακάτω παρουσιάζεται το δομικό διάγραμμα του ολοκληρωμένου και ακολουθεί μια σύντομη περιγραφή των επιμέρους κομματιών του. - 47 -
Κεφάλαιο 5: Σχεδίαση της Πλακέτας διασύνδεσης 5.3.1.1 Block Diagram του FT-232H Εικόνα 5.2: Το δομικό διάγραμμα του FT-232H Low-Dropout(LDO) Regulator +1.8/3.3V: Πρόκειται για ένα καταμεριστή τάσης ο οποίος τροφοδοτεί εσωτερικά με +1.8 Volts και +3.3 Volts συγκεκριμένα κομμάτια του ολοκληρωμένου, ενώ ταυτόχρονα παρέχει δυνατότητα τροφοδότησης εξωτερικών στοιχείων με αυτά τα επίπεδα τάσης. EEPROM Interface: Το FT-232H υποστηρίζει χρήση εξωτερικού ολοκληρωμένου μνήμης, του οποίου ο προγραμματισμός γίνεται μέσω ενός προγράμματος της FTDI που ονομάζεται FT Prog. Για να είναι συμβατό ένα ολοκληρωμένο μνήμης με το FT- 232H πρέπει να πληροί κάποιες προϋποθέσεις. Καταρχάς, θα πρέπει να υποστηρίζει μέγεθος λέξης 16bit, 1Mbit/s ταχύτητα ρολογιού και τέλος τάση τροφοδοσίας από +2.97V μέχρι +3.63V. UTMI PHY: Το Universal Transceiver Macrocell Interface (UTMI) Physical Interface Cell (PHY) χειρίζεται τη μετατροπή των δεδομένων σε σειριακά USB δεδομένα, όπως και το ανάποδο. Ταυτόχρονα, παρέχει το ρολόι στο υπόλοιπο ολοκληρωμένο και για το σκοπό αυτό πρέπει να συνδεθεί με ένα κρύσταλλο 12MHz. Στη συνέχεια, ένας εσωτερικός πολλαπλασιαστής μετατρέπει τα 12MHz σε τιμές που απαιτούν οι διάφορες λειτουργίες του ολοκληρωμένου. - 48 -
Κεφάλαιο 5: Σχεδίαση της Πλακέτας διασύνδεσης USB Protocol Engine and FIFO Control: Το κομμάτι αυτό είναι υπεύθυνο για τη διαχείριση του πρωτοκόλλου USB και της διεπαφής μεταξύ του UTMI PHY και των FIFO Ports. Port FIFO TX Buffer (1Kbytes): Δεδομένα από τον υπολογιστή αποθηκεύονται σε αυτόν τον buffer για να χρησιμοποιηθούν από τους Multi-Purpose UART/FIFO Controllers. Ο buffer αυτός ελέγχεται από το USB Protocol Engine and FIFO Control. Port FIFO RX Buffer (1Kbytes): Δεδομένα από τους Multi-Purpose UART/FIFO Controllers αποθηκεύονται σε αυτόν τον buffer για να σταλούν στον υπολογιστή όποτε τους ζητηθεί. Και αυτός ο buffer ελέγχεται από το USB Protocol Engine and FIFO Control. Baud Rate Generators: Παρέχουν ρολόι δεκαπλάσιο ή δεκαεξαπλάσιο από μια συχνότητα αναφοράς 120MHz, η οποία δημιουργείται από τη συχνότητα του κρυστάλλου με τη βοήθεια εσωτερικού πολλαπλασιαστή, όταν έχει επιλεγεί UART επικοινωνία. Αποτελείται από ένα 14bit pre-scaler και 4 register bits που βοηθούν στην επίτευξη της επιθυμητής συχνότητας με μεγάλη ακρίβεια, η οποία μπορεί να είναι από 183 baud μέχρι 12Mbaud. Multi-Purpose UART/FIFO Controllers/MPSSE: Το FT-232H περιέχει ένα ανεξάρτητο ελεγκτή UART/FIFO. Ο ελεγκτής αυτός είναι υπεύθυνος για τη διαχείριση των περισσότερων λειτουργιών του ολοκληρωμένου (UART, 245 FIFO, Fast Serial, Bit- Bang) που θα αναλυθούν στη συνέχεια. Επίσης, περιέχει μια μηχανή MPSSE (Multi Protocol Synchronous Serial Engine). Η χρήση της μηχανής αυτής παρέχει τη δυνατότητα επιλογής του κατάλληλου πρωτοκόλλου επικοινωνίας (SPI, JTAG, I 2 C). RESET Generator: Στο FT-232H υπάρχει ενσωματωμένο κύκλωμα που επιτελεί τη λειτουργία του Reset όταν συνδεθεί στην τροφοδοσία το ολοκληρωμένο. Υπάρχει και η δυνατότητα για βοηθητικό εξωτερικό κύκλωμα Reset μέσω του αντίστοιχου pin. 5.3.1.2 Λειτουργίες του FT-232H Το ολοκληρωμένο FT-232H υποστηρίζει ένα πλήθος ασύγχρονων και σύγχρονων λειτουργιών. Αρχικά, μπορεί να προγραμματιστεί για ασύγχρονη σειριακή λειτουργία (UART), με ταχύτητες που μπορούν να φτάσουν τα 12Mbaud. Επίσης, μπορεί να επιλεγεί ασύγχρονη FIFO λειτουργία που ονομάζεται FT245 Style Asynchronous FIFO και υποστηρίζει ταχύτητες μέχρι 8Mbyte/sec. Λειτουργία FIFO μπορούμε να έχουμε και σε σύγχρονη μετάδοση, μέσω της αντίστοιχης επιλογής - 49 -
Κεφάλαιο 5: Σχεδίαση της Πλακέτας διασύνδεσης FT245 Synchronous Parallel FIFO με ταχύτητα μέχρι 40Mbyte/sec. Επόμενη επιλογή είναι η λειτουργία Bit-Bang που μπορεί να χρησιμοποιηθεί είτε σύγχρονα είτε ασύγχρονα. Στη συνέχεια, έχουμε τις λειτουργίες Fast Serial Interface, που είναι σειριακή σύγχρονη αμφίδρομη μετάδοση, τη FT1248 λειτουργία που ενεργοποιείται μέσω της EEPROM και είναι σύγχρονη μετάδοση και τη λειτουργία CPU-style FIFO, που επιτρέπει τη χρήση επεξεργαστή για την για την επικοινωνία με τη USB και ενεργοποιείται επίσης από την EEPROM. Τέλος, υπάρχει η λειτουργία MPSSE, που χρησιμοποιεί τη Multi Protocol Engine του ολοκληρωμένου, η οποία και επιλέχθηκε στην παρούσα υλοποίηση. Οι λόγοι που επιλέχθηκε η μηχανή MPSSE είναι πολλοί και εστιάζουν στις πολλές δυνατότητες που παρέχει, καθώς είναι πλήρως προγραμματιζόμενη, δηλαδή καθορίζει εξ ολοκλήρου τη συμπεριφορά του ολοκληρωμένου. Ταυτόχρονα, υποστηρίζει τρία ευρέως χρησιμοποιούμενα πρωτόκολλα σειριακής σύγχρονης επικοινωνίας (SPI, JTAG, I 2 C). Το σημαντικότερο πλεονέκτημα είναι ο εύχρηστος έλεγχος των διαθέσιμων pins γενικής εισόδου-εξόδου (GPIO-General Purpose Input Output). 5.3.1.3 Σχηματικό Διάγραμμα του FT-232H Παρακάτω δίνεται το σχηματικό διάγραμμα του FT-232H, με αρίθμηση των pins. Όπως βλέπουμε, το ολοκληρωμένο αυτό έχει 48 pins που υποστηρίζουν διάφορες λειτουργίες, οι οποίες θα αναφερθούν στη συνέχεια. - 50 -
Κεφάλαιο 5: Σχεδίαση της Πλακέτας διασύνδεσης Εικόνα 5.3: Το σχηματικό διάγραμμα του FT-232H Pins Τροφοδοσίας Αριθμός Όνομα Τύπος Περιγραφή 40 VREGIN Power-Input +5.0V or +3.3V power supply input 37 VCCA Power-Output +1.8V output 38 VCORE Power-Output +1.8V output 39 VCCD Power-I/O +3.3V output or input 12,24,46 VCCIO Power-Input +3.3V input. (I/O Interface) 8 VPLL Power-Input +3.3V input. Internal PLL Power Supply input 3 VPHY Power-Input +3.3V input. Internal USB PHY power supply input 4,9,41 AGND Power-Input 0V Ground input 10,11,22,23, GND Power-Input 0V Ground input 35,36,47,48 Πίνακας 5.1: Pins τροφοδοσίας - 51 -
USB Pins Κεφάλαιο 5: Σχεδίαση της Πλακέτας διασύνδεσης Αριθμός Όνομα Τύπος Περιγραφή 6 DM Input USB Data Signal Minus 7 DP Input USB Data Signal Plus Πίνακας 5.2: Τα Pins της USB Pins Κρυστάλλου Αριθμός Όνομα Τύπος Περιγραφή 1 OSCI Input Oscillator Input 2 OSCO Output Oscillator Output Πίνακας 5.3: Pins Κρυστάλλου Pins Διαφόρων Λειτουργιών Αριθμός Όνομα Τύπος Περιγραφή 5 REF Input Current Reference 42 TEST Input IC Test Pin. For normal operation must be connected to GND 34 RESET# Input Reset Input (Active Low) Πίνακας 5.4: Pins Διαφόρων Λειτουργιών EEPROM Pins Αριθμός Όνομα Τύπος Περιγραφή 45 EECS I/O Chip Select 44 EECLK Output Clock 43 EEDATA I/O Data I/O Πίνακας 5.5: Ta Pins της EEPROM Όλα τα παραπάνω pins έχουν την ίδια λειτουργία σε όλα τα modes του FT- 232H. Τα pins που αντιστοιχούν στο ADBUS και ACBUS επιτελούν διαφορετικές λειτουργίες ανάλογα με το επιλεγμένο mode. Όπως αναφέρθηκε και παραπάνω, στην παρούσα υλοποίηση επιλέχθηκε η μηχανή MPSSE. Ακολουθεί η περιγραφή των pins κατά τη λειτουργία αυτή και συγκεκριμένα στο πρωτόκολλο SPI. - 52 -
Κεφάλαιο 5: Σχεδίαση της Πλακέτας διασύνδεσης Αριθμός Όνομα Τύπος Περιγραφή 13 SK Output Serial Clock 14 DO Output SPI Data Output 15 DI Input SPI Data Input 16 CS Output Serial Chip Select 17,18,19,20 GPIOL0-3 I/O General Purpose I/O 21,25,26,27,28,29,30,31 GPIOH0-7 I/O General Purpose I/O Πίνακας 5.6: ADBUS και ACBUS σε λειτουργία MPSSE Οι θύρες γενικής χρήσης (General Purpose I/O) μπορούν να χρησιμοποιηθούν είτε σαν είσοδοι είτε σαν έξοδοι δεδομένων και είναι στην ευχέρεια του χρήστη να επιλέξει αν θα τις χρησιμοποιήσει και πως. Στην παρούσα εφαρμογή χρησιμοποιήθηκαν τρεις τέτοιες θύρες για να εξυπηρετηθούν συγκεκριμένες ανάγκες, οι οποίες θα αναλυθούν στη συνέχεια. 5.3.2 EEPROM Microchip 93LC56B Όπως αναφέρθηκε σε προηγούμενη ενότητα, το FT-232H έχει δυνατότητα υποστήριξης εξωτερικής EEPROM, η οποία επιτελεί βοηθητικές λειτουργίες, όπως τροποποίηση την πληροφοριών της USB και των χαρακτηριστικών του ίδιου του FT- 232H όπως serial number και product description strings. Η μη ύπαρξη εξωτερικής EEPROM οδηγεί αντίστοιχα σε default values σε αυτά τα χαρακτηριστικά, που καθορίζονται από το ίδιο το FT-232H. Επιλέχθηκε το συγκεκριμένο ολοκληρωμένο γιατί πληροί όλες τις προϋποθέσεις συμβατότητας με το FT-232H. Η τάση τροφοδοσίας κυμαίνεται από 2,5V μέχρι 5,5V και το μέγεθος λέξης είναι 16bit. - 53 -
Κεφάλαιο 5: Σχεδίαση της Πλακέτας διασύνδεσης Εικόνα 5.4: Το δομικό διάγραμμα του 93LC56B Παραπάνω παραθέτουμε το δομικό διάγραμμα του συγκεκριμένου ολοκληρωμένου, που αποτελείται από μια γεννήτρια ρολογιού, ένα register όπου αποθηκεύονται τα δεδομένα με τη βοήθεια του Memory Array, τους Address Decoder και Address Counter που χειρίζονται τις διευθύνσεις της μνήμης, τον buffer εξόδου δεδομένων και τέλος το Mode Decode Logic Ακολουθεί το σχηματικό του ολοκληρωμένου και η περιγραφή των pins του ολοκληρωμένου. Εικόνα 5.5: Το σχηματικό της EEPROM 93LC56B Αριθμός Όνομα Τύπος Περιγραφή 1 CS Input Chip Select 2 CLK Input Serial Clock 3 DI Input Data In 4 DO Output Data Out 5 Vss Input Ground 6 ORG/NC - No operation 7 NC - No operation 8 Vcc Input Power Supply - 54 -
Κεφάλαιο 5: Σχεδίαση της Πλακέτας διασύνδεσης Το pin No.6 δε χρησιμοποιείται στις εκδόσεις A και B της συγκεκριμένης οικογένειας ολοκληρωμένων. Χρησιμοποιείται μόνο στις εκδόσεις C και αν συνδεθεί με την τροφοδοσία (ή με λογικό High) επιλέγεται 16bit μέγεθος λέξης, ενώ αν συνδεθεί με τη γείωση (ή με λογικό Low) επιλέγεται 8bit μέγεθος λέξης. Υπενθυμίζεται πως στη συγκεκριμένη υλοποίηση είναι απαραίτητο το μέγεθος των 16bit. 5.3.3 Το ολοκληρωμένο MCP-2551 To MCP-2551 είναι ένας high speed Transceiver, δηλαδή ένας πομπός-δέκτης υψηλής ταχύτητας, ειδικά σχεδιασμένος ώστε να ενσωματώνει τις απαιτήσεις του φυσικού επιπέδου του ISO 11898 (CAN). Όπως έχουμε προαναφέρει, έχει ως κύρια λειτουργία τη μετατροπή των σημάτων εξόδου, από την ψηφιακή μορφή που τα παράγει το MCP-2515, σε διαφορική μορφή, δηλαδή CAN high και CAN low. Αντίστοιχα για τα σήματα εισόδου που λαμβάνει από το OBD-II σύστημα του οχήματος, η μετατροπή γίνεται από διαφορική μορφή σε ψηφιακή μορφή. Είναι ικανό να μεταδώσει δεδομένα σε ταχύτητες μέχρι 1Mb/s, μια ταχύτητα ικανοποιητική για την εφαρμογή μας, καθώς το CAN στο OBD-II συνήθως λειτουργεί στα 250Kbps ή 500kbps. Παρακάτω φαίνονται το Pinout και το Block διάγραμμα της συσκευής. Όπως φαίνεται από το pinout, αλλά κυρίως από το Block διάγραμμα, πρόκειται για μία απλή ψηφιακή συσκευή. Κατά την μετατροπή ενός σήματος από ψηφιακή σε διαφορική μορφή, το σήμα εισέρχεται από το TXD pin, περνάει το στάδιο ελέγχου όπου γίνεται και ο διαχωρισμός σε high και low και αφού περάσει το στάδιο εξόδου καταλήγει στις εξόδους CANH και CANL. Εικόνα 5.6:Διάγραμμα MCP-2551 Αντίθετα, κατά τη μετατροπή από διαφορική σε ψηφιακή μορφή, το σήμα εισέρχεται μέσω των CANH και CANL και τίθεται ως διαφορική είσοδος ενός τελεστικού ενισχυτή του οποίου η έξοδος είναι το ψηφιακό σήμα RXD, που συνδέεται στην είσοδο του MCP-2515. - 55 -
Κεφάλαιο 5: Σχεδίαση της Πλακέτας διασύνδεσης Εικόνα 5.7: Το δομικό διάγραμμα του MCP-2551 Η συσκευή τροφοδοτείται με +5V, τάση η οποία παρέχεται από την USB, μέσω του pin V DD και συνδέεται με τη γείωση μέσω του pin V SS. Το ολοκληρωμένο ολοκληρώνουν η έξοδος V REF, που λειτουργεί ως τάση αναφοράς για την κατάσταση της λειτουργίας του και θα πρέπει πάντα να κυμαίνεται στο 45-55% της τάσης τροφοδοσίας V DD και η είσοδος R S μέσω της οποίας επιλέγεται η λειτουργία της συσκευής. Το MCP-2551 έχει τρεις επιλογές λειτουργίας: Stand-By Mode: Το ολοκληρωμένο, με το R S pin στη στάθμη τροφοδοσίας V DD, είναι σε κατάσταση αδρανοποίησης με τον πομπό τελείως απενεργοποιημένο και τον δέκτη ενεργό μόνο για χαμηλές ταχύτητες. Slope-Control Mode: Το ολοκληρωμένο ρυθμίζει τον χρονισμό των εναλλαγών της τάσης από high σε low και αντίστροφα (slew rate) για τα CANH και CANL μέσω μίας εξωτερικής αντίστασης R EXT που συνδέει την γείωση με το pin R S. High-Speed Mode: Το ολοκληρωμένο λειτουργεί σε υψηλές ταχύτητες, δηλαδή στο μέγιστο δυνατό slew rate, όταν συνδέσουμε το R S pin στην γείωση V SS. Για τις δικές μας ανάγκες, χρησιμοποιούμε το MCP-2551 σε High-Speed Mode. - 56 -
Κεφάλαιο 5: Σχεδίαση της Πλακέτας διασύνδεσης 5.3.4 Το ολοκληρωμένο MCP-2515 Το MCP-2515 είναι ένας ελεγκτής CAN, υψηλής ταχύτητας (μέχρι 1Mb/s), με πολλές δυνατότητες που περιλαμβάνουν όλα όσα ενσωματώνει το πρωτόκολλο CAN (ISO 11898), καθώς και το πρωτόκολλο SPI για επικοινωνία με άλλες συσκευές. Το Block Διάγραμμα που περιγράφει τη συσκευή αυτή φαίνεται στην εικόνα που ακολουθεί. Εικόνα 5.8: Το δομικό διάγραμμα του MCP-2515 Όπως φαίνεται και στην Εικόνα 5.3.χ, το MCP-2515 μπορεί να χωριστεί σε τρία βασικά μέρη. Το πρώτο είναι το CAN Module το οποίο περιλαμβάνει τη μηχανή που υλοποιεί το CAN πρωτόκολλο, τους buffers αποστολής και λήψης (TX και RX Buffers), τις μάσκες και τα φίλτρα. Το δεύτερο μέρος που ξεχωρίζουμε είναι το Block Λογικού Ελέγχου το οποίο ρυθμίζει και ελέγχει τη συσκευή. Τρίτο και τελευταίο είναι το Block του SPI, το οποίο περιέχει όλες τις παραμέτρους και τα λειτουργικά στοιχεία του πρωτοκόλλου SPI. Το MCP-2515 περιλαμβάνει 256 θέσεις μνήμης του ενός byte η καθεμία. Σε αυτές χωρίζονται οι Transmit και Receive Buffers, τα φίλτρα και οι μάσκες, καθώς και κάποιοι άλλοι καταχωρητές (registers) ελέγχου της συσκευής στους οποίους θα αναφερθούμε εκτενέστερα στη συνέχεια. - 57 -
Κεφάλαιο 5: Σχεδίαση της Πλακέτας διασύνδεσης 5.3.4.1 CAN Module Το κομμάτι αυτό του εσωτερικού κυκλώματος του MCP-2515 είναι υπεύθυνο για όλες τις διαδικασίες αποστολής και λήψης μηνυμάτων μέσω ενός δικτύου CAN. Περιλαμβάνει τρεις Transmit Buffers για αποστολή (TXB0, TXB1 και TXB2) και δύο Receive Buffers (RXB0 και RXB1) για λήψη μηνυμάτων. Επίσης περιλαμβάνει έξι φίλτρα για τους receive buffers, δύο εκ των οποίων αντιστοιχούν στον RXB0 και τα υπόλοιπα τέσσερα στον RXB1. Τέλος περιλαμβάνει δύο μάσκες, μία για κάθε receive buffer. Transmit Buffers Σε αυτούς τους buffers αποθηκεύονται τα μηνύματα (CAN frames) που προορίζονται για αποστολή στο δίκτυο CAN. Αποτελούνται από δεκατρείς θέσεις μνήμης, ή αλλιώς bytes μνήμης, όπου κάθε byte έχει οχτώ bits. Επιπροσθέτως, υπάρχει για κάθε έναν από τους TXB0, TXB1 και TXB2 ένας καταχωρητής TXBxCTRL, όπου x ο αύξων αριθμός του buffer, ο οποίος ρυθμίζει όλες τις παραμέτρους του εκάστοτε transmit buffer. Κάθε transmit buffer έχει αρκετό χώρο ώστε να χωρέσουν όλα τα δεδομένα που μπορεί να περιλαμβάνονται σε ένα CAN frame, είτε αυτό είναι standard, είτε extended. Σε καθέναν από τους transmit buffers υπάρχουν δύο ξεχωριστοί καταχωρητές για το standard και δύο για το extended κομμάτι του identifier του μηνύματος. Η επιλογή για Standard ή Extended CAN frame γίνεται μέσω του bit EXIDE καταχωρητή TXBxSIDL. Για κάθε transmit buffer υπάρχει επίσης μία θέση για το DLC του frame. Τέλος υπάρχουν οχτώ bytes μνήμης που αντιπροσωπεύουν τα 8 bytes δεδομένων του μηνύματος. Η διαδικασία μετάδοσης ενός μηνύματος περιγράφεται στο παρακάτω λογικό διάγραμμα. Μόλις το bit TXREQ του καταχωρητή TXBxCTRL γίνει 1 ξεκινάει η διαδικασία της αποστολής του μηνύματος. Αφού ελεγχθεί το κατά πόσον το δίκτυο είναι διαθέσιμο για μετάδοση, ελέγχεται, σε περίπτωση που περισσότερα από ένα μηνύματα επιχειρούν να μεταδοθούν την ίδια στιγμή, η προτεραιότητα των transmit buffers μέσω του bit TXP του εκάστοτε TXBxCTRL. Αφού αποφασιστεί ποιος buffer έχει προτεραιότητα, γίνεται η αποστολή του μηνύματος και γίνεται επαναφορά του bit TXREQ στην κατάσταση 0. Σημείωση: Οι έλεγχοι για interrupts μέσω του καταχωρητή CANINTE δε μας ενδιαφέρουν για τις ανάγκες της συγκεκριμένης σχεδίασης, οπότε και δεν αναλύονται. - 58 -
Κεφάλαιο 5: Σχεδίαση της Πλακέτας διασύνδεσης Εικόνα 5.9: Διάγραμμα ροής Αποστολής μηνυμάτων Receive Buffers, Φίλτρα και Μάσκες Οι receive buffers έχουν αντίστοιχη δομή με τους transmit buffers, αλλά σε αυτούς αποθηκεύονται τα μηνύματα που λαμβάνονται από το δίκτυο CAN. Αποτελούνται, λοιπόν και αυτοί από δεκατρείς καταχωρητές ή θέσεις μνήμης και έναν καταχωρητή ελέγχου του buffer έκαστος. - 59 -
Κεφάλαιο 5: Σχεδίαση της Πλακέτας διασύνδεσης Κατά τη λήψη των μηνυμάτων υπάρχει δυνατότητα επιλογής των μηνυμάτων που θα αποθηκεύονται στους buffers. Αυτό γίνεται με τα φίλτρα, τα οποία χωρίζονται σε RXF0 και RXF1 για τον RXB0 και σε RXF2, RXF3, RXF4 και RXF5 για τον RXB1. Τα φίλτρα εφαρμόζονται στους identifiers των standard και extended frames και υπάρχει η δυνατότητα να εφαρμοσθούν και στα δύο πρώτα bytes δεδομένων μόνο για την περίπτωση ενός standard frame. Οι μάσκες είναι αυτές που προσδιορίζουν ποιo κομμάτι του identifier θα ελεγχθεί με βάσει τα φίλτρα και ακολουθεί τη λογική που φαίνεται στον παρακάτω πίνακα αληθείας. Πίνακας 5.7: Φίλτρα και Μάσκες των Receive Buffers Η διαδικασία της λήψης των μηνυμάτων φαίνεται στο λογικό διάγραμμα που ακολουθεί. Μόλις ανιχνευθεί η αρχή ενός μηνύματος ενεργοποιείται η διαδικασία της λήψης και το μήνυμα αποθηκεύεται σε ένα προσωρινό buffer, που ονομάζεται Message Assembly Buffer (MAB). Στη συνέχεια, ελέγχεται αν το μήνυμα που αποθηκεύτηκε στον MAB είναι έγκυρο, μέσω του ελέγχου CRC. Αν είναι έγκυρο γίνεται σύγκριση με τα φίλτρα και αν κάποιο αυτά ταιριάζει, τότε το μήνυμα αποθηκεύεται στον αντίστοιχο receive buffer. Σε περίπτωση που το μήνυμα προορίζεται για αποθήκευση στον RXB0 και αυτός είναι ήδη γεμάτος, τότε αν το bit BUKT του καταχωρητή RXB0CTRL είναι 1, το μήνυμα θα καταχωρηθεί στον RXB1. Αν και αυτός είναι γεμάτος, θα δημιουργηθεί σφάλμα υπερχείλισης. Απαιτείται, λοιπόν, μεγάλη προσοχή όσον αφορά τον τρόπο με τον οποίο χειριζόμαστε τους receive buffers και είναι απαραίτητη η άμεση ανάγνωσή τους, ώστε να είναι και πάλι διαθέσιμοι για αποθήκευση. Μόλις αποθηκευτεί σε έναν από τους δύο receive buffers το μήνυμα, καταγράφεται το φίλτρο με το οποίο ταίριαξε το μήνυμα στο bit FILHIT του καταχωρητή ελέγχου του receive buffer RXBxCTRL. Για την ευκολία αναγνώρισης της λήψης κάποιου μηνύματος το MCP-2515 περιλαμβάνει τα pins και αντίστοιχα, για κάθε receive buffer, τα - 60 -
Κεφάλαιο 5: Σχεδίαση της Πλακέτας διασύνδεσης οποία λειτουργούν σαν σημαίες (flags) ένδειξης ότι κάποιο μήνυμα έχει ληφθεί επιτυχώς. Σε περίπτωση που κάποιο μήνυμα ληφθεί και αποθηκευτεί επιτυχώς σε κάποιον από τους receive buffers, τότε το αντίστοιχο pin ή θα γίνει 0, γιατί οι έξοδοι αυτές είναι σε μορφή συμπληρώματος. Η ενεργοποίηση αυτών των εξόδων γίνεται μέσω του καταχωρητή BFPCTRL. Εικόνα 5.10: Διάγραμμα ροής Λήψης μηνυμάτων - 61 -
Κεφάλαιο 5: Σχεδίαση της Πλακέτας διασύνδεσης 5.3.4.2 Control Logic Block Το κομμάτι αυτό του ολοκληρωμένου αποτελείται από όλους τους καταχωρητές που έχουν να κάνουν με τις ρυθμίσεις των παραμέτρων του MCP- 2515. Αυτές οι ρυθμίσεις χωρίζονται σε ρυθμίσεις χρονισμού του κυκλώματος, ρυθμίσεις και επιλογές λειτουργικής συμπεριφοράς του ολοκληρωμένου και κάποιες εξωτερικές ρυθμίσεις που δίνουν τη δυνατότητα σε εξωτερικά κυκλώματα να ελέγξουν συγκεκριμένες λειτουργίες του MCP-2515. Ρυθμίσεις χρονισμού Για τη λειτουργία του MCP-2515 είναι απαραίτητη η σύνδεση ενός εξωτερικού ταλαντωτή κεραμικού τύπου ή κρυστάλλου. Η σύνδεση αυτή γίνεται στα pins OSC1 και OSC2. Είναι δυνατή, επίσης, η χρήση ενός εξωτερικού ρολογιού, το οποίο συνδέεται στην είσοδο OSC1. Στη συγκεκριμένη σχεδίαση συνδέεται ένας κρύσταλλος 20MHz. Μέσω του εξωτερικού ρολογιού, το ολοκληρωμένο παράγει όλους τους παλμούς που είναι απαραίτητοι για τη λειτουργία του, όπως και για το σωστό χρονισμό της μετάδοσης και λήψης. Για τον ακριβή προσδιορισμό των χρόνων διάρκειας ενός παλμού ή ενός bit, αρκεί να οριστούν συγκεκριμένες τιμές στους καταχωρητές CNF1, CNF2 και CNF3. Ρυθμίσεις και επιλογές λειτουργικής συμπεριφοράς Σε αυτήν την κατηγορία ανήκουν δύο πολύ σημαντικοί καταχωρητές του MCP-2515 οι CANCTRL και CANSTAT. Ο CANCTRL είναι ο καταχωρητής μέσω του οποίου επιλέγεται ένα από τα πέντε Modes of operation του ολοκληρωμένου, τα οποία θα αναλυθούν στη συνέχεια. Επίσης, μέσω του ABAT bit μπορούν ανά πάσα στιγμή να ακυρωθούν όλες οι μεταδόσεις. Το OSM bit δίνει τη δυνατότητα να επιχειρείται μόνο μία φορά η αποστολή κάποιου μηνύματος, ώστε να αποφευχθεί η επιβάρυνση του συστήματος (είναι χρήσιμο για συστήματα με πολλά Nodes). Τέλος μέσω των bits CLKEN, CLKPRE1 και CLKPRE0 δίνεται η δυνατότητα αναπαραγωγής του ρολογιού εισόδου, από το CLKOUT pin, με συχνότητες ίσες με το μισό, ένα τέταρτο και ένα όγδοο της συχνότητας του. Τα διάφορα Modes of Operation είναι: Configuration Mode: Είναι η λειτουργία κατά την οποία μπορούν να ρυθμιστούν τα φίλτρα και οι μάσκες για τους receive buffers, καθώς και οι καταχωρητές CNF1-3 και TXRTSCTRL. - 62 -
Κεφάλαιο 5: Σχεδίαση της Πλακέτας διασύνδεσης Sleep Mode: Σε αυτήν την κατάσταση το MCP-2515 αδρανοποιείται και σταματάει το εσωτερικό του ρολόι. Το MCP-2515 βγαίνει αυτόματα από Sleep Mode αν ανιχνεύσει κάποιο εισερχόμενο μήνυμα. Listen-only Mode: Το MCP-2515 είναι σε λειτουργία, όπου μόνο δέχεται μηνύματα από το δίκτυο και δεν έχει τη δυνατότητα να στείλει. Loopback Mode: Αυτή η λειτουργία επιτρέπει την λήψη μηνυμάτων που έχουν σταλεί από το ίδιο το ολοκληρωμένο, χωρίς να είναι συνδεδεμένο σε κάποιο δίκτυο CAN. Normal Mode: Κανονική κατάσταση λειτουργίας, όπου το ολοκληρωμένο είναι έτοιμο να στείλει και να λάβει μηνύματα από ένα εξωτερικό δίκτυο CAN. Ο CANSTAT είναι ένας πολύ χρήσιμος καταχωρητής, διότι εμφανίζει όλα τα interrupts που έχουν συμβεί κατά τη λειτουργία του κυκλώματος και είναι εύκολο με αυτόν τον τρόπο να ελεγχθεί η ορθή λειτουργία του κυκλώματος. Εξωτερικές ρυθμίσεις Σε αυτές τις ρυθμίσεις περιλαμβάνονται τα pins εισόδου, όπου x είναι ο αύξων αριθμός του transmit buffer, στον οποίο αναφέρεται το pin και τα pins εξόδου, και. Τα pins δίνουν τη δυνατότητα σε κάποιο εξωτερικό κύκλωμα να ελέγξει την αποστολή του μηνύματος που είναι αποθηκευμένο στον αντίστοιχο transmit buffer, χωρίς να χρειαστεί κάποια επιπρόσθετη εσωτερική λειτουργία του MCP-2515. Το pin γίνεται λογικό 0 όταν είναι ενεργοποιημένη αυτή η δυνατότητα μέσω του καταχωρητή CANINTE και παρουσιασθεί κάποιο interrupt από την MCU (micro-controller unit) του ολοκληρωμένου. Η λειτουργία των και εξηγήθηκε παραπάνω, στην παράγραφο για την λήψη των μηνυμάτων. 5.3.4.3 SPI Block To πρωτόκολλο SPI, όπως περιγράφηκε στο Κεφάλαιο 3, ενσωματώνεται πλήρως στο MCP-2515. Έτσι γίνεται πολύ εύκολη η επικοινωνία του με το FT-232H. Η σύνδεση των δύο αυτών ολοκληρωμένων πραγματοποιείται μέσω των pin SI, SO και και SCK. Το MCP-2515 λαμβάνει δεδομένα από το pin SI και στέλνει - 63 -
Κεφάλαιο 5: Σχεδίαση της Πλακέτας διασύνδεσης δεδομένα μέσω του pin SO. Σύμφωνα με όσα έχουν αναφερθεί στο Κεφάλαιο 3, χρησιμοποιείται το Mode 0 του SPI και για κάθε διαδικασία που εκτελείται πρέπει το να κρατιέται σε λογικό 0. Οι εντολές που αναγνωρίζει το MCP-2515, μέσω του SPI και οι εργασίες που εκτελούν περιγράφονται στη συνέχεια με τη βοήθεια του πίνακα. Κάθε εντολή ξεκινάει να εκτελείται από τη στιγμή που το γίνει λογικό 0: Reset (0xC0): Επαναφέρει το MCP στις αρχικές του ρυθμίσεις και το θέτει σε Configuration Mode. Το ίδιο συμβαίνει και αν θέσουμε λογικό 0 στο pin του ολοκληρωμένου. Read (0x03): Η εντολή αυτή παίρνει ως όρισμα μία εναρκτήρια διεύθυνση μνήμης και επιστρέφει σειριακά τα bytes που είναι αποθηκευμένα σε αυτήν και τους επόμενους καταχωρητές, μέχρις ότου το να γίνει λογικό 1. Read RX Buffer (0x90,0x94,0x92[data only],0x96[data only]): Η εντολή αυτή εκτελεί τη διαδικασία Read όπως περιγράφεται από πάνω, με τη διαφορά ότι μπορεί να επιστρέψει αποκλειστικά τα περιεχόμενα ενός εκ των δύο receive buffers και τη δυνατότητα να επιστρέψει μόνο τα bytes του Data Field. Write (0x02): Η εντολή αυτή παίρνει ως ορίσματα την εναρκτήρια διεύθυνση και ένα, τουλάχιστον, byte δεδομένων και τα εγγράφει σειριακά στις επόμενες θέσεις μνήμης έως ότου το να γίνει λογικό 1. Load TX Buffer (0x40,0x42,0x44): Με την οδηγία αυτή μπορούμε απευθείας να καταχωρήσουμε μία τιμή σε έναν από τους τρεις transmit buffers, ξεκινώντας είτε από τον identifier είτε από το Data field. Λεπτομέρειες για τον ορισμό αυτής της εντολής φαίνονται παρακάτω. Request to Send (0x81,0x82,0x84,0x87[all buffers]): Με αυτή την εντολή μπορούμε άμεσα να εκκινήσουμε τη διαδικασία αποστολής ενός μηνύματος για όλους ή για επιλεγμένους transmit buffers. Read Status (0xA0): Με αυτή την εντολή μπορούμε γρήγορα να διαβάσουμε κάποια bits από συγκεκριμένες θέσεις μνήμης, συγκεντρωμένα σε ένα byte, που μας δείχνουν την κατάσταση του ολοκληρωμένου. RX Status (0xB0): Με αυτή την εντολή το SPI επιστρέφει το φίλτρο που ταίριαξε με το τελευταίο μήνυμα που αποθηκεύτηκε σε κάποιον - 64 -
Κεφάλαιο 5: Σχεδίαση της Πλακέτας διασύνδεσης από τους receive buffers και τι τύπος μηνύματος ήταν (standard, extended ή remote). Bit Modify(0x05): Με αυτή την εντολή μας δίνεται η δυνατότητα να αλλάξουμε την τιμή σε επιλεγμένα bits ενός καταχωρητή και όχι ολόκληρο το byte που είναι αποθηκευμένο σε αυτόν. Αυτό επιτρέπεται μόνο σε επιλεγμένους καταχωρητές. Ο τρόπος που ορίζονται οι παραπάνω εντολές και οι χρονισμοί τους σε συνδυασμό με το SCK και το δίνονται αναλυτικά στους πίνακες και τα διαγράμματα που ακολουθούν. Πίνακας 5.8: Εντολές SPI Εικόνα 5.11: Εντολή Bit Modify - 65 -
Κεφάλαιο 5: Σχεδίαση της Πλακέτας διασύνδεσης Πίνακας 5.9: Εντολή Read RX Buffer Πίνακας 5.9: Εντολή Load TX Buffer - 66 -
Κεφάλαιο 5: Σχεδίαση της Πλακέτας διασύνδεσης Εικόνα 5.12: Εντολή RX Status Εικόνα 5.13: Εντολή Read Status Στη συνέχεια, παρατίθεται ο πίνακας με το σύνολο των καταχωρητών του MCP-2515 και τις διευθύνσεις που τους αντιστοιχούν. Οι καταχωρητές που είναι σκιασμένοι - 67 -
Κεφάλαιο 5: Σχεδίαση της Πλακέτας διασύνδεσης είναι αυτοί, για τους οποίους δίνεται η δυνατότητα να επεξεργασθούν μεμονωμένα bits τους, μέσω της εντολής Bit Modify. Πίνακας 5.10: Χάρτης καταχωρητών του MCP-2515-68 -
Κεφάλαιο 5: Σχεδίαση της Πλακέτας διασύνδεσης 5.4 Σχεδίαση του κυκλώματος Τα ολοκληρωμένα που αναλύθηκαν παραπάνω αποτελούν τα βασικά κομμάτια της σχεδίασης που υλοποιήθηκε, της οποίας το σχηματικό διάγραμμα φαίνεται παρακάτω. Εικόνα 5.14: Σχηματικό διάγραμμα κυκλώματος Η τροφοδοσία του κυκλώματος γίνεται εξ ολοκλήρου από τη θύρα USB, καθώς τα 5 Volt σαν επίπεδο τάσης και τα 100mA σαν όριο συνολικής κατανάλωσης ρεύματος καλύπτουν πλήρως τις ενεργειακές ανάγκες του κυκλώματος. Για την επικοινωνία με τη θύρα USB του υπολογιστή χρησιμοποιήθηκε ένας USB B Connector, του οποίου τα Data pins (plus και minus) συνδέθηκαν στα pins 5,6 του FT-232H και το pin τροφοδοσίας συνδέθηκε στο pin 40 του FT-232H, ώστε να έχουμε απευθείας τροφοδοσία του κυκλώματος από τη USB. Στα pins 43,44,45 συνδέθηκε η EEPROM 93LC56B της Microchip με τον τρόπο που αναλύθηκε σε προηγούμενο κεφάλαιο. Έχοντας επιλέξει MPSSE λειτουργία, συνδέουμε στη συνέχεια το FT-232H με το MCP-2515. Είδαμε προηγουμένως, ότι στην MPSSE λειτουργία, τα pin 13,14,15,16 του FT-232H μεταφράζονται στα Serial Clock (SK), Data Output (DO), Data Input (DI) - 69 -
Κεφάλαιο 5: Σχεδίαση της Πλακέτας διασύνδεσης και Chip Select (CS) αντίστοιχα. Χρειάζεται ιδιαίτερη προσοχή, στη σύνδεση των pins αυτών με τα αντίστοιχα του MCP-2515, καθώς πρέπει να συνδεθεί το pin DO του FT- 232H με το SI (Serial Input) του MCP-2515 και αντίστοιχα το pin DI του FT-232H με το SO (Serial Output) του MCP-2515. Η σύνδεση του MCP-2515 με το MCP-2551 επιτυγχάνεται συνδέοντας το pin 1 και των δύο ολοκληρωμένων που αντιστοιχούν στη αποστολή δεδομένων από το MCP-2515 στο MCP-2551 και συνδέοντας το pin 2 του MCP-2515 με το pin 4 του MCP-2551 που επιτελεί την ανάποδη λειτουργία, δηλαδή αποστολή δεδομένων από το MCP-2551 στο MCP-2515. Ιδιαίτερη σημασία έχουν τα δύο κυκλώματα στα reset pins του FT-232H και του MCP-2515, τα οποία συντελούν στη σωστή αρχικοποίηση των ολοκληρωμένων κατά τις πρώτες χρονικές στιγμές της σύνδεσης του κυκλώματος στην τροφοδοσία. Τέλος, χρησιμοποιήσαμε 3 GPIO pins του FT-232H για να χρησιμοποιήσουμε κάποιες επιπλέον δυνατότητες του MCP-2515. Συνδέσαμε τα pins 17,18 του FT- 232H με τα pins 11,10 αντίστοιχα του MCP-2515 που αντιστοιχούν στα RX0BF και RX1BF. Η σύνδεση αυτή μας επιτρέπει να αναγνωρίζουμε, σε επίπεδο σημάτων, πότε έχουν λάβει κάποιο μήνυμα αυτοί οι buffers, χωρίς να είναι αναγκαίο να γίνει αυτή η διαδικασία με προγραμματιστικό τρόπο. Επίσης, συνδέσαμε το pin 20 του FT-232H με το pin 12 του MCP-2515, το οποίο επιτελεί λειτουργία Interrupt και μας επιτρέπει να ελέγχουμε την κατάσταση του MCP-2515. - 70 -
Κεφάλαιο 6: Λογισμικό διασύνδεσης χρήστη Κεφάλαιο 6: Λογισμικό διασύνδεσης χρήστη 6.1 Εισαγωγή Στο Κεφάλαιο 6 θα αναφερθούμε στο λογισμικό που αναπτύχθηκε, σε περιβάλλον Windows, για την διασύνδεση πλακέτας-χρήστη. Προτού όμως περάσουμε στην ανάλυση της τελικής έκδοσης του λογισμικού που υλοποιήσαμε, αξίζει να αναφερθούμε σε μία πρώιμη έκδοση, που υλοποιήθηκε με στόχο τον έλεγχο των δυνατοτήτων του hardware που κατασκευάστηκε, καθώς και την εξοικείωση με το προγραμματιστικό περιβάλλον. Ακόμη, αυτή η έκδοση του λογισμικού ήταν πολύ χρήσιμη, όσον αφορά στον πειραματισμό με διαφορετικούς τρόπους προγραμματισμού των διαφόρων δυνατοτήτων του υλικού. Το πρόγραμμα που χρησιμοποιήσαμε για τον προγραμματισμό και των δύο εκδόσεων είναι το Visual Studio της Microsoft και η γλώσσα στην οποία προγραμματίσαμε η Visual Basic. Καταλήξαμε σε αυτή τη γλώσσα προγραμματισμού, διότι παρέχει όλες τις δυνατότητες που χρειάστηκαν, ενώ παραμένει εύκολη στη χρήση και είναι κατανοητή και πολύ διαδεδομένη. Το παράθυρο διαλόγου της πρώτης έκδοσης λογισμικού φαίνεται στην επόμενη σελίδα. Αυτό το πρόγραμμα υλοποιήθηκε βήμα προς βήμα, ξεκινώντας από τη σωστή σύνδεση του FT-232H με τον υπολογιστή, την κατανόηση όλων των βιβλιοθηκών που το απαρτίζουν και των δυνατοτήτων του, οι οποίες θα αναφερθούν σε επόμενη υποενότητα και συνέχισε με τον πλήρη έλεγχο των δυνατοτήτων του MCP-2515, μέσω των εντολών του πρωτοκόλλου SPI. Το πρόγραμμα αυτό αρχικοποιεί μέσω του πάνελ Initialization Process το FT-232H και το καθιστά έτοιμο για λειτουργία. Στη συνέχεια, όπως φαίνεται και στην εικόνα, στο κομμάτι Transmission υλοποιούνται οι περισσότερες εντολές της SPI επικοινωνίας μεταξύ MCP-2515 και FT-232H. Παρόλο που από το κομμάτι Transmission ο χρήστης μπορεί να ελέγξει και να ρυθμίσει όλες τις παραμέτρους του MCP2515, μέχρι και να στείλει μήνυμα στο CAN δίκτυο, θεωρήθηκε σκόπιμο να δημιουργηθεί ξεχωριστό κομμάτι του παραθύρου διαλόγου από όπου θα μπορεί να - 71 -
Κεφάλαιο 6: Λογισμικό διασύνδεσης χρήστη ελεγχθεί αποκλειστικά το μέρος του MCP-2515 που έχει να κάνει με τη λήψη και αποστολή μηνυμάτων. Εκτενείς δοκιμές πραγματοποιήθηκαν για το κομμάτι των δεδομένων πραγματικού χρόνου (real-time) και τη δημιουργία γραφημάτων με τα συλλεγόμενα στοιχεία. Επίσης, σε αυτήν την έκδοση δοκιμάσθηκε για πρώτη φορά το αίτημα στο OBD-II για μηνύματα μεγέθους μεγαλύτερου του ενός frame, μέσω flow control frames (βλ. κεφάλαιο 2.3.2.1-Β) και η σωστή λήψη και αποθήκευση αυτών. Τέλος, υλοποιήθηκε και ένα ξεχωριστό κομμάτι κώδικα για την επικοινωνία μέσω USB με τον εξομοίωτη ECU Sim 2000, για τον έλεγχο του. Εικόνα 6.1: Αρχικό δοκιμαστικό πρόγραμμα Αξίζει να σημειωθεί ότι όλοι οι πειραματισμοί με τον κώδικα και την πλακέτα έγιναν σε σύνδεση με τον εξομοιωτή ECU Sim 2000 και όχι με πραγματικό αυτοκίνητο. - 72 -
Κεφάλαιο 6: Λογισμικό διασύνδεσης χρήστη Όλες οι δυνατότητες που περιγράφηκαν για την πρώτη έκδοση του προγράμματος, αφού διευρύνθηκαν και επανασχεδιάστηκαν σε ένα πολύ πιο πλούσιο γραφικό περιβάλλον, αποτελούν τα δομικά στοιχεία του τελικού προγράμματος με όνομα OBD-II Interface. Το πρόγραμμα αυτό σχεδιάστηκε με τέτοιο τρόπο ώστε να είναι εύκολο στη χρήση, κατανοητό από τον απλό χρήστη και απολύτως ικανό να παρέχει όλη την πληροφόρηση που μπορεί να επιζητά ο κοινός χρήστης αυτοκινήτου. 6.2 Οδηγίες χρήσης του προγράμματος OBD-II Interface Σε αυτή την ενότητα θα περιγράψουμε σύντομα τη χρήση του λογισμικού που υλοποιήθηκε παρέχοντας εικόνες για ευκολότερη κατανόηση. Το πρόγραμμα χωρίζεται σε 7 καρτέλες. 6.2.1 Home Tab Στην εικόνα που ακολουθεί φαίνεται η οθόνη έναρξης του προγράμματος (Home Tab) στην οποία ο χρήστης μπορεί με το που ανοίξει το πρόγραμμα να δει κατά πόσον ο υπολογιστής έχει συνδεθεί σωστά με το FT-232H και όλες οι αρχικοποιήσεις έχουν γίνει κανονικά. Επίσης, κατά την έναρξη, το πρόγραμμα αναζητεί το VIN (Vehicle Identification Number) του οχήματος, μέσω του PID 0x02 του mode 9, τον τύπο του OBD-II που ενσωματώνει το όχημα μέσω του PID 0x1C του mode 1 και τον τύπο καυσίμου του οχήματος μέσω του PID 0x51 του mode 1 και τα τυπώνει στο κάτω μέρος του παραθύρου. Από το VIN εξάγεται η πληροφορία για την εταιρεία κατασκευής του οχήματος, της οποίας το σήμα εμφανίζεται πάνω δεξιά. Όλα τα παραπάνω προϋποθέτουν τη σωστή σύνδεση με την πλακέτα που φαίνεται με πράσινο χρώμα στο κουμπί Connection Status κάτω αριστερά. Οι τέσσερις πληροφορίες (VIN, OBD Type, Fuel Type και Connection Status) είναι ορατές από όλες τις καρτέλες. Σε αυτό το γενικό πεδίο υπάρχει μία επιπρόσθετη οθόνη στην οποία εμφανίζονται μηνύματα για την κατάσταση του προγράμματος. - 73 -
Κεφάλαιο 6: Λογισμικό διασύνδεσης χρήστη Εικόνα 6.2: Καρτέλα Home Ακόμα, στην οθόνη εμφανίζεται ένα εικονικό ταμπλό αυτοκινήτου το οποίο είναι πλήρως λειτουργικό κατ επιλογήν του χρήστη. Σε αυτήν την καρτέλα, δίνεται η δυνατότητα να απεικονισθούν σε real-time η ταχύτητα με την οποία κινείται το αυτοκίνητο, οι στροφές ανά λεπτό του κινητήρα, ο ρυθμός κατανάλωσης καυσίμου καθώς και το ποσοστιαίο πάτημα του πεντάλ γκαζιού. Μπορεί να ενεργοποιηθεί η επιλογή real-time για καθένα από αυτά, πατώντας πάνω στο αντίστοιχο καντράν για την ταχύτητα και τις στροφές του κινητήρα και στο textbox ή το progressbar για το Fuel Rate και Throttle αντίστοιχα. Η λειτουργία του Real-time μπορεί να διακοπεί και να επανεκκινηθεί από εκεί που σταμάτησε με τη χρήση των κουμπιών τύπου Play-Pause, που βρίσκονται στην πάνω δεξιά γωνία της καρτέλας. Στο γενικό παράθυρο διαλόγου, κάτω από την επιλογή για αλλαγή της ECU, εμφανίζεται ο μέσος ρυθμός με τον οποίο ανανεώνονται τα δεδομένα (Refresh Rate) για όλες τις λειτουργίες πραγματικού χρόνου (Home Tab και Real-Time Tab). Ο ρυθμός αυτός βγαίνει σύμφωνα με τον τύπο: Η καρτέλα έναρξης σε λειτουργία Real-Time φαίνεται στη συνέχεια. - 74 -
Κεφάλαιο 6: Λογισμικό διασύνδεσης χρήστη Εικόνα 6.3: Καρτέλα Home σε λειτουργία Πέραν των ενδείξεων που ανανεώνονται σε πραγματικό χρόνο υπάρχουν και ενδείξεις για τη θερμοκρασία του ψυκτικού του αυτοκινήτου, για τη θερμοκρασία των λαδιών, για το επίπεδο των καυσίμων στο ντεπόζιτο και για το Mass Air Flow (MAF) του κινητήρα που ανανεώνονται μία φορά, κάνοντας κλικ με τον κέρσορα πάνω τους. Ακόμη υπάρχει η δυνατότητα να ελεγχθεί αν υπάρχει κάποια βλάβη στο όχημα, αν δηλαδή το MIL (Malfunction Identification Light) είναι αναμμένο. Αυτό φαίνεται στην ένδειξη MIL, η οποία βρίσκεται κάτω από το καντράν της ταχύτητας δίπλα από την ένδειξη για ανοιχτές πόρτες. Παρακάτω έχουμε ένα στιγμιότυπο κατά το οποίο η ένδειξη MIL είναι αναμμένη. Για τους σκοπούς αυτής της καρτέλας, όλες οι πληροφορίες λαμβάνονται από την ECU0 η οποία είναι η Engine Control ECU. - 75 -
Κεφάλαιο 6: Λογισμικό διασύνδεσης χρήστη Εικόνα 6.4: Καρτέλα Home με ενεργοποιημένο το MIL 6.2.2 Diagnostics Tab Η δεύτερη κατά σειρά καρτέλα του προγράμματος OBD-II Interface έχει την ονομασία Diagnostics και όπως δηλώνει το όνομα αυτό, ασχολείται εξ ολοκλήρου με την λήψη δεδομένων σχετικά με όλες τις παραμέτρους (PIDs) του αυτοκινήτου. Όπως φαίνεται στην εικόνα, η καρτέλα αυτή χωρίζεται σε 3 κύρια μέρη. Αριστερά διακρίνεται η οθόνη στην οποία τυπώνονται οι διαθέσιμοι PIDs για το συγκεκριμένο όχημα και την επιλεγμένη ECU. Κατά την έναρξη του προγράμματος αναζητούνται αυτόματα οι διαθέσιμοι PIDs, αλλά δίνεται η δυνατότητα να γίνει αυτό χειροκίνητα, μέσω του κουμπιού Supported PIDs. Στη συγκεκριμένη καρτέλα, δίνεται η δυνατότητα να επιλεγεί η ECU από την οποία θα ζητηθούν και θα ληφθούν τα δεδομένα, αφού πρώτα επιβεβαιωθεί ότι αυτή υπάρχει. Για κάθε διαφορετική ECU διατίθενται διαφορετικοί PIDs, οπότε ο χρήστης πρέπει να ελέγχει για τη διαθεσιμότητα κάθε φορά που επιθυμεί την αλλαγή ECU. - 76 -
Κεφάλαιο 6: Λογισμικό διασύνδεσης χρήστη Εικόνα 6.5: Καρτέλα Diagnostics και επιλογή ECU Στο μέσο της καρτέλας αυτής επιλέγεται ένας από τους PIDs από το Tree- View στο οποίο είναι καταχωρημένοι. Με διπλό κλικ επάνω σε έναν από αυτούς εμφανίζεται η τιμή που του αντιστοιχεί στην οθόνη στο δεξιό μέρος που σχετίζεται με την πληροφορία που ζητήθηκε. Με τα κουμπιά Clear, δεξιά κάθε οθόνης, γίνεται η εκκαθάριση των τυπωμένων δεδομένων. 6.2.3 Real-Time Tab Σε αυτήν την καρτέλα, ο χρήστης μπορεί να δει τις τιμές τριών, το μέγιστο σε πλήθος, PIDs σε ανανέωση πραγματικού χρόνου σε μορφή γραφήματος. Στο επάνω μέρος επιλέγεται ο PID που θα καταγραφεί στο εκάστοτε γράφημα (Chart Area). Σημειώνεται, ότι για αυτήν την καρτέλα έχει γίνει εξαίρεση κάποιων PIDς, σε περιπτώσεις που η γραφική απεικόνιση θα ήταν ανώφελη. Ο τρόπος με τον οποίο γίνεται η επιλογή των PID φαίνεται στην παρακάτω εικόνα. - 77 -
Κεφάλαιο 6: Λογισμικό διασύνδεσης χρήστη Εικόνα 6.6: Καρτέλα Real-Time Επιλογή PID Αφού επιλεγεί ο PID προς αποτύπωση, πρέπει να επιλεχθεί από ποια ECU θα ληφθεί η πληροφορία αυτή. Επειδή εδώ έχουμε, δυνητικά, τρεις διαφορετικές ECUs από τις οποίες μπορεί να λαμβάνουμε δεδομένα, δε μπορεί να γίνει χρήση του γενικού ComboBox που περιέχει τις διαθέσιμες ECUs. Έτσι δίνονται τρία ξεχωριστά ComboBoxes, ένα για κάθε γράφημα, από τα οποία γίνεται η επιλογή. Αυτή η διαδικασία φαίνεται για το τρίτο γράφημα στην επόμενη φωτογραφία. Αν επιλεγεί μία ECU η οποία δεν υποστηρίζεται από το OBD-II του οχήματος, τότε η επιλογή αυτή παίρνει κόκκινο χρώμα και δεν είναι δυνατό να εκκινήσει η καταγραφή των δεδομένων. - 78 -
Κεφάλαιο 6: Λογισμικό διασύνδεσης χρήστη Εικόνα 6.7: Καρτέλα Real-Time επιλογή ECU Η γραφική παράσταση των δεδομένων φαίνεται με πράσινο χρώμα πάνω στα διαγράμματα, τα οποία είναι με κλίμακα αντίστοιχη του μεγέθους που απεικονίζουν. Επάνω και δεξιά δίνεται η δυνατότητα έναρξης και παύσης όλων των καταγραφών με κουμπιά τύπου Play-Pause, ενώ στα δεξιά κάθε γραφήματος υπάρχουν αντίστοιχα κουμπιά που επιδρούν μόνο σε αυτό. Εικόνα 6.8: Καρτέλα Real-Time σε λειτουργία - 79 -
Κεφάλαιο 6: Λογισμικό διασύνδεσης χρήστη 6.2.4 MIL Tab Όπως έχουμε αναφέρει σε προηγούμενα κεφάλαια, το σύστημα OBD-II μπορεί να καταγράψει και να εμφανίσει δεδομένα που σχετίζονται με βλάβες στο όχημα. Αυτά τα δεδομένα μπορεί να τα χειριστεί ο χρήστης από την καρτέλα MIL. Εικόνα 6.9: Καρτέλα MIL Στην παραπάνω εικόνα παρουσιάζεται η καρτέλα κατά την λειτουργία όπου δεν υπάρχουν βλάβες. Για να ελέγξει ο χρήστης την πιθανή ύπαρξη κάποιας βλάβης πρέπει να πατήσει το κουμπί Monitor Status. Όταν υπάρξει βλάβη, τότε θα έχουμε μία εικόνα αντίστοιχη με αυτή που ακολουθεί. Σε κάθε πάτημα του κουμπιού Monitor Status ανανεώνεται και η ένδειξη για MIL της αρχικής καρτέλας (Home) στο εικονικό ταμπλό. - 80 -
Κεφάλαιο 6: Λογισμικό διασύνδεσης χρήστη Εικόνα 6.10: Καρτέλα MIL με ενεργοποιημένο το MIL Στην οθόνη κάτω από το κουμπί Monitor Status παρουσιάζονται τα δεδομένα που επιστρέφει ο PID 1 του Mode 1, τα οποία δίνουν πληροφορίες για την κατάσταση διαφόρων συστημάτων του οχήματος. Άπαξ και βρεθεί κάποια βλάβη, τότε όλες οι επιλογές της καρτέλας αυτής μπορούν να χρησιμοποιηθούν. Στο κέντρο της καρτέλας υπάρχουν διάφορα κουμπιά, τα οποία δίνουν πληροφορίες για το ιστορικό της βλάβης, στις οθόνες που βρίσκονται στα δεξιά καθενός από αυτά. Κάτω από αυτά τα κουμπιά βρίσκεται το Textbox στο οποίο εισάγουμε τον αύξοντα αριθμό του στιγμιότυπου (Freeze Frame) σε δεκαεξαδική μορφή. Έχοντας επιλέξει τον αριθμό του Freeze Frame (FF #) διαλέγουμε έναν PID από το Tree-View στα αριστερά και πατάμε το κουμπί Freeze Frame Values για να δούμε ποια τιμή είχε ο συγκεκριμένος PID τη στιγμή που συνέβη η βλάβη. Τέλος, στα δεξιά αυτής της καρτέλας, εμφανίζονται τα τρία είδη Diagnostic Trouble Codes (DTCs), αφού πατήσουμε το κουμπί για καθένα από αυτά (Stored, Pending, Permanent). Όπως και στην καρτέλα των Diagnostics, έτσι και εδώ δίνεται η επιλογή στο χρήστη να επιλέξει όποια ECU επιθυμεί και να δει τις πληροφορίες βλαβών που περιέχει η καθεμία από αυτές. - 81 -
Κεφάλαιο 6: Λογισμικό διασύνδεσης χρήστη Στην εικόνα που ακολουθεί έχουν ληφθεί δεδομένα για τον PID 0x0C (RPM) από το Freeze Frame με αριθμό 0x00. Επίσης έχουν ληφθεί και εμφανιστεί όλοι οι DTCs. Εικόνα 6.11: Λειτουργίες της καρτέλας MIL 6.2.5 Advanced Tab Στην καρτέλα Advanced μπορεί κάποιος που έχει βαθιά γνώση της σχεδιάσης και της θεωρίας που υπάρχει πίσω από αυτή, να επιβλέψει τη λειτουργία της πλακέτας και των ολοκληρωμένων μεμονωμένα. Ξεκινώντας, στο επάνω αριστερό μέρος βρίσκεται το πάνελ ελέγχου των ολοκληρωμένων FT-232H και MCP-2515. Όπως φαίνεται και στην εικόνα που ακολουθεί, ο χρήστης μπορεί να ελέγξει τη σύνδεση του FT-232H με τον υπολογιστή, καθώς και την αρχικοποίησή του. Στην κορυφή αυτού κομματιού του παραθύρου μπορεί κάποιος να μάθει πόσες συσκευές της εταιρείας FTDI είναι συνδεδεμένες στον υπολογιστή. Στο κομμάτι με τίτλο MCP-2515 Controls, ο χρήστης μπορεί να επιλέξει σε ποιο Mode of Operation θα λειτουργεί το MCP-2515, το χρονισμό των Bits μέσω των καταχωρητών CNF1, CNF2, CNF3, και να επιλέξει τη λειτουργία των receive buffers σε σχέση με τα φίλτρα που τίθενται σε αυτούς σύμφωνα με το ToolTip που φαίνεται στην εικόνα. Τέλος, μπορεί να επιλεγεί η λειτουργία Rollover (BUKT) του RXB0 επιλέγοντας το Checkbox με την επιγραφή - 82 -
Κεφάλαιο 6: Λογισμικό διασύνδεσης χρήστη Rollover. Κάτω από τα κουμπιά των διαφόρων λειτουργειών του MCP-2515 υπάρχει το κουμπί Default Buffers/Filters Values, το οποίο θέτει τις αρχικές ρυθμίσεις των διαφόρων buffers και των φίλτρων των receive buffers. Εικόνα 6.12: Καρτέλα Advanced Επιλογή των Masks/Filters Δεξιά από το κομμάτι ελέγχου των ολοκληρωμένων βρίσκεται το κομμάτι που υλοποιεί όλες τις εντολές SPI στις οποίες αναφερθήκαμε εκτενώς στο κεφάλαιο 5.3.4.3. Πάνω από τις εντολές SPI Write, Read και Bit Modify υπάρχει η επιλογή να στείλουμε οποιοδήποτε αριθμό bytes θέλουμε, μέσω του SPI πρωτοκόλλου στο MCP-2515. Τα bytes εισάγονται στο textbox με τίτλο Byte το ένα μετά το άλλο, με τη χρήση του πλήκτρου Enter, του πληκτρολογίου, ενδιάμεσα. Ο πίνακας των bytes προς αποστολή φαίνεται ακριβώς δίπλα σε κάθετη μορφή. Με το πάτημα του κουμπιού Send Byte το πρόγραμμα στέλνει όλα τα bytes του πίνακα στο MCP-2515. Ένα τέτοιο παράδειγμα φαίνεται στην εικόνα που ακολουθεί. Για λόγους παρουσίασης τα bytes έχουν μετακινηθεί προς τα κάτω, ενώ φαίνεται το ToolTip για τη συγκεκριμένη λειτουργία. Όπως παρατηρούμε, πρώτο byte είναι το byte 0x02 το οποίο αντιστοιχεί στην εντολή Write του SPI. Ακολουθούν το όρισμα της εναρκτήριας διεύθυνσης (0x36) και έξι bytes δεδομένων (συμπεριλαμβανομένου του byte 0xf2). - 83 -
Κεφάλαιο 6: Λογισμικό διασύνδεσης χρήστη Εικόνα 6.13: Καρτέλα Advanced Χρήση Send Byte Button Κάτω από την εντολή Send Byte υπάρχει η εντολή Write, η οποία έχει ένα textbox για είσοδο της εναρκτήριας διεύθυνσης και ένα textbox που δουλεύει όμοια με αυτό του Send Byte, δηλαδή με χρήση του πλήκτρου Enter ενδιάμεσα. - 84 -
Κεφάλαιο 6: Λογισμικό διασύνδεσης χρήστη Εικόνα 6.14: Καρτέλα Advanced Χρήση Write Button Ένα παράδειγμα με τη χρήση της εντολής Write,που εκτελεί την ίδια ακριβώς εργασία με το παράδειγμα της εντολής Send Byte παραπάνω, φαίνεται στην προηγούμενη εικόνα. Η εντολή Read ακολουθεί, η οποία είναι πιο απλή, καθώς απαιτεί την εισαγωγή μόνο της εναρκτήριας διεύθυνσης και του πλήθους των bytes που αναμένεται να επιστραφούν. Τα αποτελέσματα τυπώνονται στην οθόνη Received Messages. Στο παράδειγμα που ακολουθεί διαβάζονται 8 bytes από τη θέση 0x36 και βλέπουμε ότι τα έξι από αυτά είναι αυτά που γράψαμε με τις εντολές Send Byte και Write παραπάνω. Για τον καθαρισμό της οθόνης Received Messages, που βρίσκεται στα δεξιά της καρτέλας, υπάρχει κάτω από αυτήν το κουμπί Clear το οποίο εκτελεί αυτήν την εργασία. - 85 -
Κεφάλαιο 6: Λογισμικό διασύνδεσης χρήστη Εικόνα 6.15: Καρτέλα Advanced Λήψη μηνυμάτων Η τελευταία από τις εντολές που υλοποιείται σε αυτό το κομμάτι είναι η εντολή Bit Modify (Bit Mod). Παίρνει τρία ορίσματα. Τη διεύθυνση στην οποία θα εκτελεστεί, τη μάσκα σύμφωνα με την οποία θα εκτελεστεί και το byte που θα εγγραφεί. Το επόμενο κομμάτι που υπάρχει σε αυτήν την καρτέλα, το οποίο βρίσκεται κάτω και αριστερά, είναι το κομμάτι της αποστολής μηνυμάτων τύπου Single Frame και λήψης των δεδομένων που απαντάει το σύστημα OBD-II. Το κομμάτι της κατασκευής του μηνύματος απαρτίζεται από τον Identifier, το Mode, το PCI, τον PID και σε περίπτωση που το Mode επιλογής είναι το 0x02, δηλαδή ζητάμε πληροφορίες για κάποιο Freeze Frame, πρέπει να δοθεί μία τιμή και στο Freeze Frame Count (FFC). Τα παραπάνω φαίνονται στην επόμενη εικόνα. - 86 -
Κεφάλαιο 6: Λογισμικό διασύνδεσης χρήστη Εικόνα 6.16: Καρτέλα Advanced Χρήση αποστολής Single Frame Αφού εισαχθούν όλα τα στοιχεία του μηνύματος, ο χρήστης πρέπει να επιλέξει έναν από τους τρεις transmit buffers, ή και όλους και να πατήσει το κουμπί Set Data για να αποθηκευτεί το μήνυμα. - 87 -
Κεφάλαιο 6: Λογισμικό διασύνδεσης χρήστη Εικόνα 6.17: Καρτέλα Advanced Επιλογή Transmit Buffer στο Single Frame Transmit Τέλος για την αποστολή του Single Frame, ο χρήστης πρέπει να επιλέξει ποιού transmit buffer το μήνυμα θέλει να αποστείλει, μέσω των τριών διαθέσιμων CheckBoxes και να πατήσει το κουμπί Single Frame Transmit. Εάν υπάρχουν δεδομένα απάντησης από το σύστημα OBD-II θα εμφανιστούν στην οθόνη Received Messages. - 88 -
Κεφάλαιο 6: Λογισμικό διασύνδεσης χρήστη Εικόνα 6.18 Καρτέλα Advanced Λήψη μηνυμάτων από τη χρήση Single Frame Transmit Με αντίστοιχο τρόπο, δουλεύει και το κομμάτι για τα μηνύματα που πολλαπλών frames (Multi Frame). Αφού κατασκευαστεί το μήνυμα προς αποστολή, πρέπει να πατηθεί το κουμπί Multi Frame Transmit για να γίνει η αποστολή. Σε περίπτωση που το OBD-II απαντήσει, τα μηνύματά θα εμφανιστούν και πάλι στην οθόνη Received Messages. Ένα τέτοιο παράδειγμα φαίνεται στην επόμενη εικόνα. Τα κουμπιά Abort All Pending Transmissions, Reset RXBuffers και One Shot Mode ολοκληρώνουν αυτήν την καρτέλα και μαζί τον πλήρη έλεγχο του MCP-2515. Το κουμπί Reset RXBuffers είναι πολύ χρήσιμο, γιατί πατώντας το αδειάζει τους receive buffers, καθιστώντας τους με αυτόν τον τρόπο ικανούς να δεχτούν εκ νέου δεδομένα. Όταν το One Shot Mode Checkbox είναι επιλεγμένο τότε τα μηνύματα επιχειρούν μόνο μία φορά να σταλούν στο δίκτυο CAN. Τέλος το κουμπί Abort All Pending Transmissions ακυρώνει στιγμιαία όλες τις μεταδόσεις δεδομένων. - 89 -
Κεφάλαιο 6: Λογισμικό διασύνδεσης χρήστη Εικόνα 6.19: Καρτέλα Advanced Χρήση αποστολής Multi Frame 6.2.6 About OBD-II Interface Tab Η καρτέλα που ακολουθεί περιλαμβάνει ενημερωτικές πληροφορίες σχετικά με αυτή τη διπλωματική εργασία. Εικόνα 6.20: Καρτέλα About OBD-II Interface - 90 -
Κεφάλαιο 6: Λογισμικό διασύνδεσης χρήστη 6.2.7 ECU Sim-2000 Interface Tab Αν έχουμε τον ECU Sim 2000 συνδεδεμένο μέσω USB στον ίδιο ηλεκτρονικό υπολογιστή, ενεργοποιείται μία καρτέλα που μας επιτρέπει να συνδεθούμε με αυτόν, να δούμε όλη την κίνηση του δικτύου, και να κάνουμε κάποιες ρυθμίσεις, μέσω των εντολών που αναγράφονται στο παράθυρο διαλόγου. Για τη σύνδεση με τον Simulator πρέπει να επιλεγεί η σωστή σειριακή θύρα COM του υπολογιστή και να πατήσουμε το κουμπί Open Port. Οι εντολές του Simulator εισάγονται στο πεδίο αριστερά του κουμπιού Send to Sim, το οποίο είναι αυτό που πρέπει να πατηθεί για να σταλεί η εντολή. Τέλος για εκκαθάριση της οθόνης του Sim χρησιμοποιείται το κουμπί Clear. Εικόνα 6.21: Καρτέλα Simulator - 91 -
Κεφάλαιο 6: Λογισμικό διασύνδεσης χρήστη 6.3 Διασύνδεση FT232H με Η/Υ Είδαμε σε προηγούμενο κεφάλαιο ότι το ολοκληρωμένο FT232H επικοινωνεί με τον υπολογιστή μέσω USB 2.0. Για να γίνει δυνατή αυτή η επικοινωνία χρειάζεται να εγκατασταθεί ένα πρόγραμμα οδήγησης, καθώς και να εξοπλιστεί ο υπολογιστής με τις κατάλληλες βιβλιοθήκες, οι οποίες είναι καθαρά σχεδιασμένες για τη λειτουργία του FT-232H. Για το σκοπό αυτό, υπάρχει το Windows Combined Driver Model (CMD), το οποίο αναλαμβάνει τόσο την εγκατάσταση του απαραίτητου λογισμικού για την επικοινωνία μέσω USB όσο και την εγκατάσταση των απαιτούμενων βιβλιοθηκών. Αν δούμε την αρχιτεκτονική του προγράμματος οδήγησης CMD, θα παρατηρήσουμε ότι αποτελείται από ένα bus layer που ονομάζεται FTDIBUS.sys και ευθύνεται για την εγκατάσταση και λειτουργικότητα των βιβλιοθηκών (FTD2XX.dll) και από ένα serial COM Port layer με όνομα FTSER2k.sys το οποίο αναλαμβάνει την επικοινωνία με τη USB Port. Πρέπει να σημειωθεί, ότι παρόλο που συνήθως υπάρχουν και οι δύο δυνατότητες επικοινωνίας, δηλαδή και μέσω COM Port αλλά και μέσω του FTD2XX.dll με συναρτήσεις σχεδιασμένες αποκλειστικά για την οικογένεια ολοκληρωμένων FTDI, μόνο μία μπορεί να χρησιμοποιηθεί μια δεδομένη στιγμή. Με άλλα λόγια, αν επιλεγεί επικοινωνία μέσω FTD2XX.dll (την οποία προτιμήσαμε στην παρούσα διπλωματική) τότε δεν μπορεί να υπάρξει ταυτόχρονη μετάδοση με χρήση του COM Port layer. Εικόνα 6.22: Διασύνδεση του FT-232 με τον Η/Υ - 92 -