Υλοποίηση του πρωτόκολλου FlexRay για επικοινωνία συστημάτων κίνησης ηλεκτρικού αυτοκινήτου

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Υλοποίηση του πρωτόκολλου FlexRay για επικοινωνία συστημάτων κίνησης ηλεκτρικού αυτοκινήτου"

Transcript

1 ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ Η/Υ Υλοποίηση του πρωτόκολλου FlexRay για επικοινωνία συστημάτων κίνησης ηλεκτρικού αυτοκινήτου Διπλωματική Εργασία Εκπόνηση: Κωνσταντίνος Κανδύλας Επίβλεψη: Χρήστος Μαδεμλής Αναπληρωτής Καθηγητής ΤΗΜΜΥ Α.Π.Θ Θεσσαλονίκη, Ιανουάριος 2017

2 1

3 Περίληψη Τα δίκτυα επικοινωνίας είναι ένα σημαντικό κομμάτι στην σύγχρονη βιομηχανία οχημάτων. Σχεδόν όλα τα κομμάτια που απαρτίζουν ένα σύγχρονο όχημα είναι συνδεδεμένα με ηλεκτρονικά συστήματα. Αυτό το στοιχείο, οδήγησε στην ραγδαία αύξηση του αριθμού των ECU (Electronic Control Unit) στα οχήματα. Για να είναι δυνατή η επικοινωνία μεταξύ των διάφορων ECU, ήταν αναγκαία η ανάπτυξη ενός προτυποποιημένου τρόπου επικοινωνίας. Η ραγδαία ανάπτυξη της βιομηχανίας των ηλεκτρονικών οδήγησε στην ανάπτυξη και των πρωτοκόλλων επικοινωνίας. Ως αποτέλεσμα του αυξανόμενου αριθμού των ηλεκτρονικών συσκευών μέσα στα οχήματα, η ανάγκη για επικοινωνία, αυξήθηκε επίσης. Είναι πολύ σημαντικό να διατηρηθεί υψηλό επίπεδο ανοχής σε σφάλματα στοιχείο που αναδεικνύει τα μειονεκτήματα των ήδη γνωστών πρωτοκόλλων επικοινωνίας όπως το Controller Area Network CAN, το Local Interconnect Network - LIN και του Time-Triggered CAN TTCAN. Η ανάγκη για ένα πρωτόκολλο επικοινωνίας υψηλού επιπέδου, με ανοχή σε σφάλματα και υψηλό εύρος ζώνης, έχει αυξηθεί ραγδαία ως αποτέλεσμα της απότομης αύξησης των ECU s (Electronic Control Unit) στα οχήματα. Το FlexRay αναπτύχθηκε έτσι ώστε να καλύψει αυτές τις συνεχόμενα αυξανόμενες ανάγκες, προσφέροντας, ταυτόχρονα, time-triggered αλλά και event-triggered λειτουργία με υψηλότερο bandwidth από όλα τα υπόλοιπα γνωστά πρωτόκολλα επικοινωνίας, όπως πχ. το Controller Area Network CAN. 2

4 3

5 Ευχαριστίες Με την ολοκλήρωση αυτής της διπλωματικής εργασίας θα ήθελα καταρχήν να ευχαριστήσω τον αναπληρωτή καθηγητή του Τμήματός Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ του Αριστοτελείου Πανεπιστημίου Θεσσαλονίκης κ. Χρήστο Μαδεμλή ο οποίος μου έδωσε το ερέθισμα, απαραίτητες χρήσιμες συμβουλές αλλά και όλους τους διαθέσιμους, και μη, πόρους ώστε να μπορέσω να ολοκληρώσω την έρευνα για το συγκεκριμένο θέμα, καθώς και τους υποψήφιος διδάκτορες Νεκτάριο Καρακάση και Νικόλαο Ζαμπούρ. Επίσης ένα μεγάλο ευχαριστώ στον υποψήφιο διδάκτορα του τμήματος Ευάγγελο Τσιούμα για την καθοδήγηση του καθ όλη την διάρκεια εκπόνησης της εργασίας μου αυτής, σε θεωρητικά, τεχνικά, οργανωτικά και φιλοσοφικά θέματα. Τέλος, ένα πολύ θερμό και μεγάλο ευχαριστώ στους γονείς μου οι οποίοι με στήριξαν τόσο οικονομικά όσο και ψυχολογικά όλα αυτά τα χρόνια ώστε να μπορέσω να αποκτήσω το δίπλωμά μου. Στο σημείο αυτό δεν θα μπορούσα να παραλείψω, την κοπέλα και τους φίλους μου διότι ο καθένας ξεχωριστά και με τον τρόπο του βοήθησαν στην αντιμετώπιση των δυσκολιών που συνάντησα καθ όλη την διάρκεια των σπουδών μου. Κωνσταντίνος Κανδύλας Θεσσαλονίκη, Ιανουάριος

6 5

7 Περιεχόμενα Σημειογραφία Γραφήματα Πίνακες Εισαγωγή Περιγραφή του προβλήματος Σκοπός Περιορισμοί Ενσωματωμένα Συστήματα Οχημάτων Το παρασκήνιο Μοντέλο OSI Στρώμα 1: Φυσικό Στρώμα (Physical Layer) Στρώμα 2: Στρώμα ζεύξης δεδομένων (Data Link Layer) Στρώμα 3: Στρώμα Δικτύου (Network Layer) Στρώμα 4: Στρώμα Μεταφοράς (Transport Layer) Στρώμα 5: Στρώμα συνεδρίας (Session Layer) Στρώμα 6: Στρώμα Παρουσίασης (Presentation Layer) Στρώμα 7: Στρώμα Εφαρμογής (Application Layer) Τοπολογίες Δικτύων Διασύνδεση σημείου-σημείου (Point-to-Point) Δίαυλος (Bus) Αστέρας (Star) Υβριδική (Hybrid) Δαχτυλίδι (Ring) Αλυσίδα (Daisy Chain) Προϋποθέσεις Διακριτή συμπεριφορά Αξιοπιστία Εύρος ζώνης (Bandwidth) Ευελιξία Ευρωστία

8 2.4.6 Κόστος και αγορά Περιοχές λειτουργίας Περιοχή μετάδοσης της κίνησης (Powertrain domain) Περιοχή σασί (Chassis domain) Περιοχή κυρίως σώματος οχήματος (Body domain) Πολυμέσα, τηλεματική, HMI Κλάσεις διεπαφών Κλάση Α Κλάση Β Κλάση C Κλάση D Έλεγχος πρόσβασης Χρονικά διεγειρόμενος δίαυλος (Time-triggered bus) TDMA Δίαυλος διεγειρόμενος από γεγονότα (Event-Triggered Bus) CSMA CSMA/CD CSMA/CA CSMA/CR Minislotting Διαχείριση σφαλμάτων Εντοπισμός σφάλματος Παρατήρηση διαύλου Bus Monitoring Κυκλικός Έλεγχος Εφεδρείας Cyclic Redundancy Check (CRC) Parity check Έλεγχος του πλαισίου μηνύματος Σήμα αποδοχής - Acknowledgement Ειδοποίηση σφάλματος Συγχρονισμός ρολογιού (Clock synchronization) Bit γέμισης - Bit stuffing Επιτηρητής διαύλου - Bus Guardian Στρατηγική Never-Give-Up Ηλεκτρομαγνητική συμβατότητα EMC Ανάλυση Πρωτόκολλων Επικοινωνίας CAN, FlexRay

9 3.1 Controller Area Network CAN CAN Ιστορική αναδρομή Τυποποίηση Είσοδος στον δίαυλο και διαιτησία Το πρόβλημα της καθυστέρησης Επίπεδα OSI στο πρωτόκολλο CAN Σφάλματα και η διαχείρισή τους Θετική και αρνητική αποδοχή δεδομένων Διαχείριση Σφάλματος Μηνύματα Σφαλμάτων Παρατήρηση του δίαυλου Κυκλικός έλεγχος εφεδρείας - CRC Code (Cyclic Redundancy Code) Έλεγχος δομής μηνύματος Bit γέμιση (Bit stuffing) Αποδοχή μηνυμάτων Διάδοση μηνύματος σφάλματος μετά την ανίχνευση Τεχνική κωδικοποίησης Πλαίσια CAN Πλαίσιο δεδομένων (Data frame) Βασική μορφή πλαισίου CAN 2.0A Εκτεταμένη μορφή πλαισίου CAN 2.0B Απομακρυσμένο πλαίσιο (Remote frame) Πλαίσιο σφάλματος (Error frame) Πλαίσιο υπερφόρτισης (Overload frame) Πλαίσιο διαπλαισιακής απόστασης (Interframe space) Καλωδίωση Τοπολογία Δικτύου Πρότυπα Εφαρμογές υψηλότερων στρωμάτων Ασφάλεια FlexRay Η γέννηση του FlexRay Το FlexRay Consortium Η φιλοσοφία του πρωτόκολλου FlexRay Δομική ιεραρχία

10 3.2.5 Χρονική ιεραρχία του FlexRay Local Clock Clock Tick MicroTick μτ Global Time MacroTick - MT Communication Cycle Κανάλια και κύκλοι επικοινωνίας Κανάλι(α) επικοινωνίας - Communication channel(s) Κύκλος επικοινωνίας Communication Cycle Segments Slots και Minislots Πλαίσια επικοινωνίας Communication frames Header field Payload field Trailer field CRC of End of Frame Κωδικοποίηση πλαισίων σε slots και minislots Bits Bytes BSS, FSS, Action Point και FES BSS Byte Start Sequence FSS Frame Start Sequence TSS Transmission Start Sequence Action Point -AP FES Frame End Sequence CID και DTS CID - Channel Idle Delimiter, static (και dynamic) πλαίσια DTS Dynamic Trailing Sequence, Dynamic Πλαίσιο Μέγιστο μέγεθος ενός στατικού πλαισίου Symbol Window SW segment Network Idle Time NIT segment Είσοδος στον δίαυλο και διαιτησία ID πλαισίου Frame ID Πλέγμα διαιτησίας Arbitration Grid Τεχνική εισόδου στον δίαυλο

11 Παρουσία φυσικού σήματος στον δίαυλο Καλωδίωση Τοπολογίες δικτύων Point-to-point Παθητικός γραμμικός δίαυλος Παθητικός αστέρας Ενεργός αστέρας και συνδέσεις μεταξύ ενεργών αστέρων Hybrid Διαχείριση σφαλμάτων Cyclic Redundancy Code Bus guardian Ηλεκτρομαγνητική συμβατότητα EMC Πρότυπα Ασφάλεια Υλοποίηση του πρωτόκολλου FlexRay σε συστήματα τύπου X-by-Wire Συστήματα X-by-Wire Υψηλές Ταχύτητες X-by-Wire Εφεδρεία Προϋποθέσεις υψηλού επιπέδου εφαρμογών Υψηλή απόδοση Ταχύτητα επικοινωνίας Φυσικό στρώμα Είσοδος στον δίαυλο και έλεγχος Μέθοδος συγχρονισμού Τοπολογίες δικτύου Υλοποίηση συστήματος αποφυγής σύγκρουσης (Collision Avoidance System) με προπορευόμενο όχημα με την χρήση του πρωτόκολλου επικοινωνίας FlexRay Περιγραφή Τοπολογία Υλοποίηση Υλικό Hardware Λογισμικό Προγραμματισμός επικοινωνίας FlexRay

12 Παραμετροποίηση και λειτουργία κόμβου Υλοποίηση ηλεκτρονικού διαφορικού συστήματος κίνησης ηλεκτροκινητήρων (Differential by Wire) με την χρήση του πρωτόκολλου επικοινωνίας FlexRay Περιγραφή Τοπολογία Υλοποίηση Προγραμματισμός επικοινωνίας FlexRay Παραμετροποίηση και λειτουργία κόμβου Μετρήσεις Συμπεράσματα και θέματα για μελλοντική διερεύνηση Περιοχή μετάδοσης της κίνησης και περιοχή σασί (Powertrain and Chassis domain) Συμπεράσματα για το πρωτόκολλο FlexRay μέσω των εφαρμογών X-by-Wire Θέματα για μελλοντική διερεύνηση Βιβλιογραφία A Παράρτημα Άλφα Β Παράρτημα Βήτα

13 12

14 Σημειογραφία Αρκτικόλεξο ABS ADC AP BD BER BSS CAN CC CHI CID CPU CPU/ECU CRC CSMA CSMA/CA CSMA/CD CSMA/CR CSS DLC DTS D2B DUT EMC ESD FES FIFO FSS FTDMA GTDMA HIL HMI IEEE I2C LIN MOST MTs MTS NIT NRZ OEM OS Περιγραφή Anti-Braking System Analogue to Digital Conversion Action Point Bus Driver Bit Error Rate Byte Start Sequence Controller Area Network Communication Controller Controller-Host Interface Channel Idle Delimiter Central Processing Unit Central Processing Unit/Electronic Control Unit Cyclic Redundancy Check Carrier Sense Multiple Access CSMA with Collision Avoidance CSMA with Collision Detection CSMA with Collision Resolution Clock Synchronization Startup Data Length Coding Dynamic Trailing Sequence Domestic Digital Bus Device Under Test Electromagnetic Compatibility Electrostatic Discharge Frame End Sequence First In, First Out Frame Start Sequence Flexible Time Division Multiple Access Global Time Division Multiple Access Hardware In the Loop Human-Machine Interface Institute of Electrical and Electronics Engineers Inter-Integrated Circuit Local Interconnect Network Media Oriented Systems Transport MacroTicks Media Access Test Symbol Network Idle Time Non-Return to Zero Original Equipment Manufacturer Operating Systems 13

15 OSI OSI/ISO PLL Rx SAE SD SOC ST SW TDMA TSS TMS TTA TTCAN TTP/A TTP/C Tx Open Systems Interconnection Open Systems Interconnection/International Standard Organisation Phase Locked Loop Receive signal Society of Automotive Engineers Dynamic Segment Start of Cycle Static Segment Symbol Window Time Division Multiple Access Transmission Start Sequence Media Access Test Symbol Time-Triggered Architecture Time-Triggered communication on CAN Time-Triggered Protocol class A Time Triggered Protocol Class C Transmission signal 14

16 15

17 Γραφήματα Γράφημα 2.1. Μοντέλο Open System Interconnection (OSI) 25 Γράφημα 2.2. Διασύνδεση σημείου-σημείου (point-to-point)...27 Γράφημα 2.3a. Παράδειγμα διαύλου με ένα κανάλι Γράφημα 2.3β. Παράδειγμα διαύλου με δύο κανάλια Γράφημα 2.4α. Τοπολογία παθητικού αστέρα (Passive Star).. 28 Γράφημα 2.4β. Τοπολογία ενεργού αστέρα (Active Star) 28 Γράφημα 2.5. Σύμπλεγμα τριών ενεργών αστέρων με σύνολο επτά κόμβων (Cluster of active stars) Γράφημα 2.6. Υβριδική τοπολογία αποτελούμενη από ενεργό, παθητικό αστέρα και ένα δίαυλο Γράφημα 2.7. Δίκτυο με τοπολογία δαχτυλιδιού (Ring).30 Γράφημα 2.8. Τοπολογία αλυσίδας με τέσσερις κόμβους συνδεδεμένους σε σειρά 30 Γράφημα 2.9. Συγκριτικό διάγραμμα κόστους-εύρους ζώνης για τα πρωτόκολλα επικοινωνίας LIN, CAN, FlexRay, MOST..31 Γράφημα Παράδειγμα δικτύου TDMA Γράφημα Παράδειγμα διαιτησίας δικτύων CSMA/CR, CSMA/CA. Η ECU1 έχει χαμηλότερη τιμή αναγνωριστικού αριθμού και έτσι μεγαλύτερη προτεραιότητα στο δίκτυο 37 Γράφημα Παράδειγμα δύο κόμβων οι οποίοι στέλνουν δεδομένα στον δίαυλο με χρήση minislots..37 Γράφημα Παράδειγμα μεθόδου bit γέμισης (Bit stuffing)..39 Γράφημα Παράδειγμα τοπικού επιτηρητή διαύλου (Bus Guardian) 39 Γράφημα 3.1. Η ραγδαία αύξηση χρήσης του πρωτοκόλλου CAN με τη πάροδο του χρόνου Γράφημα 3.2. Πιθανότητα διανομής καθυστέρησης συναρτήσει της ίδιας της καθυστέρησης Γράφημα 3.3. Πρωτεύουσα και δευτερεύουσα αναφορά σφάλματος Γράφημα 3.4. Στρατηγική Περιορισμού Σφάλματος ή "Fault Confinement Strategy" του πρωτόκολλου CAN Γράφημα 3.5. Στάδια διαχείρισης σφαλμάτων Γράφημα 3.6. Τεχνική bit γέμισης ή αλλιώς bit stuffing Γράφημα 3.7. Βασική μορφή πλαισίου δεδομένων - CAN 2.0A Γράφημα 3.8. Εκτεταμένη μορφή πλαισίου δεδομένων - CAN 2.0B Γράφημα 3.9. Απομακρυσμένο Πλαίσιο - Remote frame Γράφημα Πλαίσιο σφάλματος (Error frame) Ενεργή σημαία Γράφημα Πλαίσιο σφάλματος (Error frame) - Παθητική σημαία Γράφημα Πλαίσιο υπερφόρτισης (Overload frame) Γράφημα Πλαίσιο υπερφόρτισης (Overload frame) Γράφημα Σήμα CAN διαύλου στα δύο καλώδια, CAN_L και CAN_H Γράφημα Η δημιουργία του FlexRay Consortium Γράφημα Οι δύο περιοχές ενός κύκλου επικοινωνίας του FlexRay Γράφημα Το πρωτόκολλο FlexRay Γράφημα Ιεραρχία χρονικών σταθερών του δικτύου FlexRay Γράφημα Communication Cycle and Segments of FlexRay Protocol Γράφημα Εφαρμογές κύκλου επικοινωνίας Γράφημα Διαίρεση του στατικού και δυναμικού segment σε slots και minislots Γράφημα Δομική παρουσίαση στατικού και δυναμικού πλαισίου επικοινωνίας Γράφημα Η διαίρεση του στατικού και δυναμικού πλαισίου στα διάφορα κομμάτια τους Γράφημα FlexRay πλαίσιο επικοινωνίας: Κομμάτια του "Header field" Γράφημα Ομαδοποίηση bit σε byte 10-ψηφίων (10 bits) Γράφημα TSS, FSS και BSS Γράφημα Action Point Γράφημα Παράδειγμα τερματισμού μιας minislot Γράφημα Παράδειγμα εφαρμογής του Channel Idle Delimiter CID

18 Γράφημα Παράδειγμα τερματισμού μιας minislot με την χρήση του Dynamic Trailing Sequence DTS Γράφημα Πλήρη μορφή ενός static segment Γράφημα Πλήρη μορφή ενός dynamic segment Γράφημα Το MTS συνοδευόμενο από ένα CID Γράφημα Τα τέσσερα διαφορετικά στάδια λειτουργία του FlexRay.Το λογικό μηδέν και το λογικό ένα, παρουσιάζονται ως διαφορές δυναμικού μεταξύ των δύο καλωδίων. BP και BM είναι τα ονόματα των διαφορικών σημάτων Γράφημα Παράδειγμα σύνδεσης των δύο καναλιών ενός FlexRay δικτύου σε δύο διαφορετικές τοπολογίες. 94 Γράφημα 4.1. Σύστημα αποφυγής σύγκρουσης - Collision Avoidance System Γράφημα 4.2. Τοπολογικό διάγραμμα συστήματος αποφυγής σύγκρουσης με χρήση του FlexRay Γράφημα 4.3. Τοπολογία εφαρμογής Collision Avoidance σε συμβατικό όχημα Γράφημα 4.4. Ασύγχρονοι κινητήρες οπίσθιων τροχών οχήματος Γράφημα Φασική γέφυρα IGBT για την οδήγηση κινητήρα Γράφημα 4.6. Μετρητική διάταξη του συστήματος οδήγησης του ενός κινητήρα Γράφημα 4.7. Αναπτυξιακό πακέτο 4300STARTERKIT από την NXP Semiconductors (πρώην Freescale Semiconductors)..105 Γράφημα 4.8. Application Programming Interface στον προγραμματισμό των Low Level Device Drivers Γράφημα 4.9. Παράδειγμα εντολών προγραμματισμού των LLD Drivers τύπου macros Γράφημα Παράδειγμα διαμόρφωσης δύο buffer, ενός Receive FIFO buffer και ενός Transmit buffer..109 Γράφημα Παράδειγμα διαμόρφωσης δύο timer..110 Γράφημα CodeWarrior - Δένδρο Εργασίας..111 Γράφημα Γραφικό περιβάλλον FreeMASTER Tool Support 112 Γράφημα Διαμόρφωση κύκλου επικοινωνίας του FlexRay δικτύου στο σύστημα αποφυγής σύγκρουσης..113 Γράφημα Διαμόρφωση buffer μηνυμάτων στον κόμβο Γράφημα Περιγραφή πινάκων δεδομένων των αντίστοιχων buffer αποστολής στο static segment του κύκλου επικοινωνίας του κόμβου Γράφημα Περιγραφή πινάκων δεδομένων των αντίστοιχων buffer αποστολής στο dynamic segment του κύκλου επικοινωνίας του κόμβου Γράφημα Διαμόρφωση buffer μηνυμάτων στον κόμβο Γράφημα Περιγραφή πινάκων δεδομένων των αντίστοιχων buffer αποστολής στο static segment του κύκλου επικοινωνίας του κόμβου Γράφημα Περιγραφή πινάκων δεδομένων των αντίστοιχων buffer αποστολής στο dynamic segment του κύκλου επικοινωνίας του κόμβου Γράφημα Διάταξη ηλεκτρονικού διαφορικού σε ένα πειραματικό όχημα.119 Γράφημα Διάταξη οχήματος με συμβατικό κινητήρα, κιβώτιο ταχυτήτων και μηχανικό διαφορικό..120 Γράφημα Διάταξη οχήματος με ηλεκτροκινητήρες ελεγχόμενους από μετατροπείς ισχύος και ηλεκτρονικό διαφορικό Γράφημα Τοπολογία ηλεκτρονικού διαφορικού με χρήση επικοινωνίας FlexRay.121 Γράφημα Διαμόρφωση κύκλου επικοινωνίας του FlexRay δικτύου στο σύστημα αποφυγής σύγκρουσης 123 Γράφημα Διαμόρφωση buffer μηνυμάτων στον κόμβο Γράφημα Περιγραφή πινάκων δεδομένων των αντίστοιχων buffer αποστολής στο static segment του κύκλου επικοινωνίας του κόμβου Γράφημα Περιγραφή πινάκων δεδομένων των αντίστοιχων buffer αποστολής στο dynamic segment του κύκλου επικοινωνίας του κόμβου Γράφημα Διαμόρφωση buffer μηνυμάτων στον κόμβο Γράφημα Περιγραφή πινάκων δεδομένων των αντίστοιχων buffer αποστολής στο static segment του κύκλου επικοινωνίας του κόμβου Γράφημα Περιγραφή πινάκων δεδομένων των αντίστοιχων buffer αποστολής στο dynamic segment του κύκλου επικοινωνίας του κόμβου Γράφημα Πλαίσια 2 και 18 Flex Ray επικοινωνίας στο Differential By Wire.129 Γράφημα Δομή πλαισίου επικοινωνίας της static slot Γράφημα Μηδενική τιμή γκαζιού

19 Γράφημα Τιμή γκαζιού λίγο κάτω από το μισό της μέγιστης διαδρομής του 131 Γράφημα Μέγιστη τιμή γκαζιού 132 Γράφημα Στατικό μέρος της FlexRay επικοινωνίας στο κανάλι Α

20 19

21 Πίνακες Πίνακας 1. Ιστορική αναδρομή πρωτόκολλου CAN Πίνακας 2. Μέγιστη απόσταση σε σχέση με την ταχύτητα του δίαυλου...63 Πίνακας 3. Ιστορική αναδρομή του FlexRay.69 Πίνακας 4. Μέγιστο μέγεθος ενός στατικού πλαισίου.88 Πίνακας 5. Απαιτούμενα Header Files Πίνακας 6. Δεδομένα παραμετροποίησης επικοινωνίας FlexRay.113 Πίνακας 7. Δεδομένα παραμετροποίησης επικοινωνίας FlexRay

22 21

23 1 Εισαγωγή Με αυτή την ενότητα ξεκινάει η παρούσα διπλωματική εργασία και αποτελεί μία υπενθύμιση στον αναγνώστη όσον αφορά το σκοπό αλλά και τον τρόπο που αυτή πραγματοποιήθηκε. 1.1 Περιγραφή του προβλήματος Τα δίκτυα επικοινωνίας είναι ένα σημαντικό κομμάτι στην σύγχρονη βιομηχανία οχημάτων. Σχεδόν όλα τα κομμάτια που απαρτίζουν ένα σύγχρονο όχημα είναι συνδεδεμένα με ηλεκτρονικά συστήματα. Αυτό το στοιχείο, οδήγησε στην ραγδαία αύξηση του αριθμού των ECU (Electronic Control Unit) στα οχήματα. Για να είναι δυνατή η επικοινωνία μεταξύ των διάφορων ECU, ήταν αναγκαία η ανάπτυξη ενός προτυποποιημένου τρόπου επικοινωνίας. Η ραγδαία ανάπτυξη της βιομηχανίας των ηλεκτρονικών οδήγησε στην ανάπτυξη και των πρωτοκόλλων επικοινωνίας. Ως αποτέλεσμα του αυξανόμενου αριθμού των ηλεκτρονικών συσκευών μέσα στα οχήματα, η ανάγκη για επικοινωνία, αυξήθηκε επίσης. Είναι πολύ σημαντικό να διατηρηθεί υψηλό επίπεδο ανοχής σε σφάλματα στοιχείο που αναδεικνύει τα μειονεκτήματα των ήδη γνωστών πρωτοκόλλων επικοινωνίας όπως το Controller Area Network CAN, το Local Interconnect Network - LIN και του Time-Triggered CAN TTCAN. Η ανάγκη για ένα πρωτόκολλο επικοινωνίας υψηλού επιπέδου, με ανοχή σε σφάλματα και υψηλό εύρος ζώνης, έχει αυξηθεί ραγδαία ως αποτέλεσμα της απότομης αύξησης των ECU s (Electronic Control Unit) στα οχήματα. Το FlexRay αναπτύχθηκε έτσι ώστε να καλύψει αυτές τις συνεχόμενα αυξανόμενες ανάγκες, προσφέροντας, ταυτόχρονα, time-triggered αλλά και event-triggered λειτουργία με υψηλότερο bandwidth από όλα τα υπόλοιπα γνωστά πρωτόκολλα επικοινωνίας, όπως πχ. το Controller Area Network CAN. 1.2 Σκοπός Ο σκοπός της συγκεκριμένης διπλωματικής εργασίας είναι η ανάλυση του Controller Area Network CAN ως το πιο σημαντικό και ευρέως χρησιμοποιούμενο πρωτόκολλο επικοινωνίας στην βιομηχανία οχημάτων, η ανάλυση του πρωτόκολλου επικοινωνίας FlexRay ως ένα τρόπο επικοινωνίας που συνδυάζει timetriggered και event-triggered επικοινωνία ταυτόχρονα, και αποτελεί μία αξιόπιστη λύση με μεγάλη εφεδρεία και ταχύτητα επικοινωνίας για τα σύγχρονα safe-critical και ολοένα πιο απαιτητικά 22

24 ενσωματωμένα συστήματα οχημάτων, καθώς και η ανάλυση δύο X-by-Wire συστημάτων ως εργαστηριακές εφαρμογές με την χρήση του πρωτόκολλου FlexRay, με σκοπό την ανάδειξη των χαρακτηριστικών του. 1.3 Περιορισμοί Στα πλαίσια της συγκεκριμένης διπλωματικής εργασίας η υλοποίηση και η ανάλυση του FlexRay δικτύου, έγινε με την χρήση του αναπτυξιακού πακέτου FlexRay 4300STARTERKIT το οποίο αποτελεί ευγενική χορηγία της εταιρίας NXP Semiconductors στα πλαίσια της ανάπτυξης και ανάλυσης των αναγκών της συγκεκριμένης εργασίας. Οι μόνοι περιορισμοί που υπήρξαν κατά την διάρκεια των εργαστηριακών δοκιμών, ήταν ο τύπος του διαθέσιμου υλικού, καθώς τα υλικά που χρησιμοποιήθηκαν δεν προορίζονται για χρήση σε εφαρμογές οχημάτων αλλά προορίζονται για εφαρμογές βιομηχανικής χρήση. Αυτό το στοιχείο, βέβαια, δεν επηρέασε καθόλου την έκβαση των πειραμάτων, ούτε των μετρήσεων και γενικά κανένα στάδιο ανάπτυξης της συγκεκριμένης εργασίας. 23

25 24

26 2 Ενσωματωμένα Συστήματα Οχημάτων Το παρακάτω κεφάλαιο αποτελεί μία σύντομη περιγραφή του παρασκηνίου γύρω από την χρήση των ενσωματωμένων συστημάτων στην αυτοκινητοβιομηχανία. Επίσης, παρακάτω μπορεί να βρεθεί μία γενικότερη παρουσίαση του μοντέλου OSI, το οποίο χρησιμοποιείται για τον ορισμό των πρωτοκόλλων επικοινωνίας και των τοπολογιών αυτών. Για να καθοριστεί ο τρόπος με τον οποίο πρέπει να συμπεριφέρεται ένα ενσωματωμένο σύστημα μέσα σε ένα όχημα, θα πρέπει πρώτα να οριστεί σε πιο κομμάτι του οχήματος θα λειτουργεί και τι εργασίες θα διεκπεραιώνει. Αυτή η ανάγκη οδήγησε στην δημιουργία διαφορετικών λειτουργικών περιοχών καθώς και του διαχωρισμού των επικοινωνιακών διεπαφών σε διάφορες κλάσεις. Γενικά, υπάρχουν δύο βασικά παραδείγματα ελέγχου του τρόπου με τον οποίο επικοινωνούν οι διάφορες μονάδες ελέγχου ECU (Electronic Control Unit). Μία περιγραφή αυτών καθώς και διαφορετικοί τρόποι διαχείρισης των σφαλμάτων μπορούν να ευρεθούν στις παρακάτω υπόενότητες. Τέλος, θα αναλυθεί και η ηλεκτρομαγνητική συμβατότητα όλων των παραπάνω. 2.1 Το παρασκήνιο Ο αριθμός των ηλεκτρονικών συστημάτων στα οχήματα έχει αυξηθεί δραματικά από την στιγμή της πρώτης παρουσίασής τους λίγο μετά το Αυτά τα συστήματα έκαναν πραγματικότητα την βελτίωση τόσο των συστημάτων ασφαλείας όσο και αυτών που αφορούσαν την άνεση, προσθέτοντας παράλληλα το χαρακτηριστικό της λειτουργικότητας. Το σύστημα κατά του μπλοκαρίσματος των τροχών ABS (Antilock Breaking System), οι ενεργές αναρτήσεις, ο έλεγχος των μηχανών καθώς και οι εφαρμογές πολυμέσων αποτελούν κάποια παραδείγματα της συμβολής τους. Αρχικά, η κάθε διεργασία εκτελούνταν από την εκάστοτε ECU. Παρ όλα αυτά, η λειτουργικότητα του συστήματος ήταν διανεμημένη σε ένα σύνολο από πολλές μονάδες ελέγχου. Αυτή η διαχείριση, προφανώς αύξησε την λειτουργικότητα αλλά κατέστησε το σύστημα πολύ περίπλοκο και ακριβό, αποτέλεσμα των πολλών διασυνδέσεων. Επίσης, τα συστήματα έγιναν πιο ογκώδη, προσθέτοντας επιπλέον βάρος στα οχήματα. Αυτές οι εφαρμογές, λοιπόν, οδήγησαν στην υιοθέτηση άλλων τοπολογιών, όπως αυτή του δίαυλου. 2.2 Μοντέλο OSI Το μοντέλο OSI ή αλλιώς Open Systems Interconnection Model (OSI) είναι ένας τρόπος με τον οποίο μπορεί να οριστεί ένα πρωτόκολλο επικοινωνίας. Αποτελείται από επτά στρώματα (layers) τα οποία είναι 25

27 ανεξάρτητα από υλικό-λογισμικές εφαρμογές. Αυτά τα στρώματα είναι τοποθετημένα σε αυστηρή ιεραρχία (όπως παρουσιάζεται και στο γράφημα 2.1) και αποτελούνται από ομαδοποιημένες διεργασίες. Γράφημα 2.1. Μοντέλο Open System Interconnection (OSI). Το μοντέλο OSI δεν ορίστηκε έχοντας στο μυαλό τα συστήματα πραγματικού χρόνου. Τα περισσότερα συστήματα διαύλου αναφέρονται στα κατώτερα στρώματα του μοντέλου. Τα τρία ανώτερα στρώματα είναι ανεξάρτητα του χρησιμοποιούμενου μέσου διάδοσης των μηνυμάτων. Το στρώμα το οποίο διαχωρίζει τα τρία κατώτερα από τα τρία ανώτερα στρώματα είναι το στρώμα. Στρώμα 1: Φυσικό Στρώμα (Physical Layer) Το φυσικό στρώμα είναι το κατώτατο επίπεδο του μοντέλου OSI. Ορίζει το μέσο σύνδεσης μεταξύ των κόμβων καθώς και τα ηλεκτρικά και μηχανικά χαρακτηριστικά του. Αυτό το στρώμα ορίζει τον τρόπο που αποδίδεται το κάθε bit καθώς και τον συγχρονισμό, τα ηλεκτρικά και οπτικά επίπεδα, τα χαρακτηριστικά των καλωδίων, τους κόμβους καθώς και τον τερματισμό των γραμμών. Στρώμα 2: Στρώμα ζεύξης δεδομένων (Data Link Layer) Το δεύτερο στρώμα είναι αυτό της ζεύξης συνδέσμου δεδομένων, το οποίο αποτελείται από την πλαισίωση των μηνυμάτων, την διαιτησία και την διαχείριση των αναγνωρίσεων των μηνυμάτων. Επίσης, είναι υπεύθυνο για την επικοινωνία δίχως σφάλματα μεταξύ των κόμβων και ως εκ τούτου τον εντοπισμό των σφαλμάτων καθώς και την διαχείρισή τους. To στρώμα ζεύξης δεδομένων είναι επίσης υπεύθυνο για την διευθυνσιοδότηση των μηνυμάτων σε μία point-to-point διασύνδεση. Στρώμα 3: Στρώμα Δικτύου (Network Layer) Το στρώμα δικτύου είναι υπεύθυνο για την δρομολόγηση των μηνυμάτων σε ένα δίκτυο, από την πηγή στον προορισμό του. Παρέχει επιπρόσθετη διευθυνσιοδότηση η οποία δεν σχετίζεται με αυτή του 26

28 στρώματος ζεύξης δεδομένων. Τέλος, είναι επίσης υπεύθυνο για την θέσπιση, την αποκατάσταση και τον τερματισμό των συνδέσεων του δικτύου. Στρώμα 4: Στρώμα Μεταφοράς (Transport Layer) Αυτό το στρώμα ελέγχει τον διαμοιρασμό των δεδομένων μεταξύ δύο τελικών χρηστών και εγγυάται ότι το μήνυμα θα φθάσει στον τελικό του προορισμό. Επίσης, αναθέτει λογικές διευθύνσεις στις φυσικές διευθύνσεις του στρώματος δικτύου. Στρώμα 5: Στρώμα συνεδρίας (Session Layer) Το στρώμα συνεδρίας ορίζει τον τρόπο με τον οποίο οι τελικοί χρήστες ξεκινάνε και τερματίζουν μία συνεδρία καθώς και το πώς θεσπίζεται η ανταλλαγή δεδομένων. Στρώμα 6: Στρώμα Παρουσίασης (Presentation Layer) Αυτό το στρώμα είναι υπεύθυνο για τον τρόπο με τον οποίο η ληφθείσα πληροφορία θα μεταφραστεί και θα διαχειριστεί από το στρώμα παρουσίασης. Στρώμα 7: Στρώμα Εφαρμογής (Application Layer) Όλα τα παραπάνω στρώματα του μοντέλου OSI είναι προσβάσιμα μέσω του στρώματος εφαρμογής. Αυτό προσφέρει μία διεπαφή τέτοια ώστε να μπορεί να χρησιμοποιηθεί από μία εφαρμογή. 2.3 Τοπολογίες Δικτύων Σε αυτή την ενότητα θα παρουσιαστούν διάφορες τοπολογίες δικτύων καθώς και τα αρνητικά ή θετικά τους χαρακτηριστικά. Επίσης, θα παρουσιαστούν διάφορα παραδείγματα φυσικών διατάξεων σε γραφήματα έτσι ώστε να αναδειχθούν τα χαρακτηριστικά τους Διασύνδεση σημείου-σημείου (Point-to-Point) Οι διασυνδέσεις σημείου-σημείου είναι οι πιο γνωστές για την διασύνδεση μεταξύ ECU από τις αρχές του Κάθε διεργασία ήταν επιπρόσθετη σαν μία ξεχωριστή-ανεξάρτητη μονάδα μέσα στα οχήματα. Καθώς όλο και περισσότερες διεργασίες διαχωρίζονταν σε όλο και περισσότερες ECU, η ανάγκη για επικοινωνία μεγάλωνε. Η ένωση όλων των κόμβων μεταξύ τους αύξανε τον αριθμό των καναλιών επικοινωνίας κατά n 2, όπου n είναι ο αριθμός των ECU. Η πολυπλοκότητα, το κόστος αλλά και το βάρος αυξήθηκαν καθώς τα δίκτυα μεγάλωναν και παράλληλα η αξιοπιστία μειώθηκε. Αυτά τα προβλήματα οδήγησαν στην χρήση άλλων τοπολογιών δικτύων. Στο γράφημα 2.2 φαίνεται ένα παράδειγμα διασύνδεσης σημείου-σημείου (point-to-point). 27

29 Γράφημα 2.2. Διασύνδεση σημείου-σημείου (point-to-point) Δίαυλος (Bus) Ο δίαυλος, επίσης γνωστός σαν γραμμικός δίαυλος, είναι μία απλή τοπολογία δικτύου. Αποτελείται από ένα ή περισσότερα καλώδια χωρίς κάποιον εξοπλισμό για ενίσχυση ή δρομολόγηση των σημάτων, όπως φαίνεται στα γραφήματα 2.3α και 2.3β. Μεγάλο νούμερο συνδεδεμένων κόμβων μπορεί να επηρεάσει την απόδοση αρνητικά αφού μόνο ένας κόμβος κάθε φορά μπορεί να στείλει δεδομένα. Αν τα «κλαδιά» του διαύλου, τα στελέχη, δεν είναι κατάλληλα τερματισμένα μπορούν να δημιουργήσουν ανακλάσεις στο σήμα. Αυτό το πρόβλημα μπορεί να ατονεί σε χαμηλές συχνότητες αλλά είναι εντονότερο καθώς η συχνότητα αυξάνεται. Οι προϋποθέσεις του φυσικού στρώματος πολύ συχνά ορίζουν σταθερές όσον αφορά το μήκος έτσι ώστε να ελαττωθεί το φαινόμενο. Αυτό που τον διαχωρίζει από την τοπολογία του παθητικού αστέρα είναι οι συνδέσεις. Ένας δίαυλος έχει πάντα περισσότερες από μία. Γράφημα 2.3α. Παράδειγμα διαύλου με ένα κανάλι Γράφημα 2.3β. Παράδειγμα διαύλου με δύο κανάλια 28

30 2.3.3 Αστέρας (Star) Υπάρχουν δύο είδη της τοπολογίας αστέρα και αυτά είναι ο ενεργός και ο παθητικός αστέρας. Η τοπολογία του ενεργού αστέρα αποτελείται από έναν αριθμό κόμβων οι οποίοι είναι συνδεδεμένοι μεταξύ τους μέσω ενός κεντρικού σημείου το οποίο ενισχύει τα εισερχόμενα σήματα και τα μεταδίδει στους υπόλοιπους κόμβους ή τα δρομολογεί σε κάποιο συγκεκριμένο κόμβο. Τα καλώδια πρέπει να είναι τερματισμένα και στα δύο άκρα καθώς ο αστέρας είναι μία «ενεργή» τοπολογία. Ο παθητικός αστέρας αποτελεί ουσιαστικά ένα σημείο σύνδεσης καθώς ούτε ενισχύει ούτε δρομολογεί με κάποιο τρόπο το σήμα. Βέβαια, διαφέρει από την τοπολογία του διαύλου διότι έχει μόνο μία σύνδεση. Οι τοπολογίες αστέρα είναι αρκετά ευέλικτες καθώς υπάρχει η δυνατότητα πρόσθεσης ή αφαίρεσης κόμβων. Παρ όλα αυτά υπάρχει η πιθανότητα να χρειάζεται αρκετή καλωδίωση, το οποίο αποτελεί και ένα μειονέκτημά του. Στα γραφήματα 2.4α και 2.4β μπορούν να βρεθούν παραδείγματα παθητικού και ενεργού αστέρα. Η τοπολογία ενεργού αστέρα μπορεί να συνδεθεί σε σειρά με μία άλλη τοπολογία ενεργού αστέρα συνδέοντας στη θέση ενός κόμβου της μιας τοπολογίας τον ενεργό αστέρα της άλλης. Γράφημα 2.4a. Τοπολογία παθητικού αστέρα (Passive Star) Γράφημα 2.4β. Τοπολογία ενεργού αστέρα (Active Star) Οι μονάδες ελέγχου στα σύγχρονα οχήματα συχνά τοποθετούνται σε δυσπρόσιτα σημεία και η απόσταση μεταξύ τους είναι αρκετά μεγάλη. Συμπλέγματα από ECU τα οποία βρίσκονται γύρω από αλληλένδετους ενεργούς αστέρες μπορούν να μειώσουν την καλωδίωση και να αυξήσουν την διακριτότητα. Ο αριθμός των ενεργών αστέρων σε ένα δίκτυο περιορίζεται λόγω της καθυστέρησης που προσθέτει ο κάθε ένας στην διάδοση του σήματος. Ένα σύμπλεγμα (cluster) ενεργών αστέρων φαίνεται στο γράφημα

31 Γράφημα 2.5. Σύμπλεγμα τριών ενεργών αστέρων με σύνολο επτά κόμβων (Cluster of active stars) Υβριδική (Hybrid) Η υβριδική τοπολογία πρόκειται για έναν συνδυασμό των πιο πάνω τοπολογιών η οποία δεν έχει χαρακτηριστικά μιας αυτούσιας τοπολογίας αλλά συνδυάζει τα χαρακτηριστικά των τοπολογιών από τις οποίες, κάθε φορά, αποτελείται. Στο γράφημα 2.6 παρουσιάζεται μία υβριδική τοπολογία. Γράφημα 2.6. Υβριδική τοπολογία αποτελούμενη από ενεργό, παθητικό αστέρα και ένα δίαυλο Δαχτυλίδι (Ring) Σε ένα σύνολο n κόμβων, κάθε κόμβος έχει μία είσοδο και μία έξοδο και μέσω αυτών συνδέεται στους γειτονικούς κόμβους χρησιμοποιώντας n 1 διασυνδέσεις όπως φαίνεται στο γράφημα 2.7. Κάθε κόμβος 30

32 μπορεί να είναι είτε σε παθητική κατάσταση και απλά να αναμεταδίδει τα δεδομένα είτε σε ενεργή κατάσταση μεταβάλλοντάς τα. Γράφημα 2.7. Δίκτυο με τοπολογία δαχτυλιδιού (Ring) Αλυσίδα (Daisy Chain) Η τοπολογία της αλυσίδα είναι ουσιαστικά ένας αριθμός από κόμβους συνδεδεμένους σε σειρά όπως φαίνεται στο γράφημα 2.8. Η προτεραιότητα των κόμβων δίνεται μέσω της σειράς τους στην αλυσίδα. Γράφημα 2.8. Τοπολογία αλυσίδας με τέσσερις κόμβους συνδεδεμένους σε σειρά 2.4 Προϋποθέσεις Τα ενσωματωμένα συστήματα είναι ένα συστατικό των σύγχρονων οχημάτων το οποίο προσθέτει λειτουργικότητα σε αυτά. Σε κάποιες περιπτώσεις μπορούν να αντικαταστήσουν μηχανικά ή υδραυλικά συστήματα ή ακόμα να εφαρμόσουν λειτουργίες που αλλιώς δεν θα μπορούσαν να είναι εφαρμόσιμες. Αυτό προϋποθέτει κάποια συστήματα τα οποία θα αναλυθούν σε αυτή την ενότητα. Οι σημερινές βιομηχανίες αυτοκινήτων πρέπει να λαμβάνουν υπόψιν τις ανάγκες των καταναλωτών, τις ισχύουσες 31

33 νομοθεσίες καθώς και τον ανταγωνισμό σε μία παγκόσμια αγορά με στόχο τον σχεδιασμό κατάλληλων προϊόντων. Η ραγδαία εξέλιξη στον υλικό-λογισμικό τομέα καθιστά αυτό τον στόχο επιτεύξιμο. Οι προϋποθέσεις ενός ενσωματωμένου συστήματος εξαρτώνται κατά κόρον από την περιοχή χρήσης τους μέσα σε ένα όχημα. Αυτές οι περιοχές θα αναλυθούν στην ενότητα Διακριτή συμπεριφορά Πολλά συστήματα ασφαλείας (safe-critical systems) στην αυτοκινητοβιομηχανία απαιτούν διακριτή συμπεριφορά έτσι ώστε να εγγυηθούν την σωστή λήψη ενός συστήματος. Οι προϋποθέσεις πραγματικού χρόνου (real-time requirements) είναι άλλος ένας σημαντικός παράγοντας διότι ο χρονισμός και η μέγιστη απόκριση είναι πολύ σημαντικά στοιχεία για κάποια συστήματα. Ο στατικός προγραμματισμός της επικοινωνίας (θα αναλυθεί στην ενότητα 2.7.1) μπορεί να βοηθήσει στην εφαρμογή αυστηρών χρονικών ορίων Αξιοπιστία Η ανοχή σε σφάλματα, ο εντοπισμός σφαλμάτων καθώς και η διαχείρισή τους είναι πολύ σημαντικές λειτουργίες σε συστήματα που απαιτούν ασφάλεια. Μια λεπτομερής ανάλυση των παραπάνω θα γίνει στην ενότητα Εύρος ζώνης (Bandwidth) Το απαιτούμενο εύρος ζώνης για ένα ενσωματωμένο σύστημα στον τομέα των οχημάτων έχει αυξηθεί με το πέρασμα των χρόνων καθώς ο αριθμός των ECU αυξήθηκε. Η τηλεματική, τα πολυμέσα καθώς και οι HMI εφαρμογές βοήθησαν προς αυτό το σκοπό. Γράφημα 2.9. Συγκριτικό διάγραμμα κόστους-εύρους ζώνης για τα πρωτόκολλα επικοινωνίας LIN, CAN, FlexRay, MOST 32

34 2.4.4 Ευελιξία Οι διεπαφές επικοινωνιών πρέπει να είναι ευέλικτες όσον αφορά την επεκτασιμότητα, την διαχείριση μεταβαλλόμενων φορτίων και την ικανότητα να διαχειρίζονται σύγχρονα και ασύγχρονα γεγονότα. Υπάρχουν δύο είδη δικτύων. Το πρώτο είναι το Time Division Multiple Access (TDMA) (αναλύεται στην ενότητα 2.7.1) το οποίο προσφέρει την ελάχιστη δυνατή ευελιξία καθώς είναι off-line προγραμματιζόμενο. Από την άλλη μεριά, υπάρχει το Carrier Sense Multiple Access (CSMA) (περιγράφεται στην ενότητα 2.7.2) το οποίο προσφέρει μεγάλη ευελιξία. Κάποια πρωτόκολλα επικοινωνίας είναι ταυτόχρονα χρονικά διεγέρσιμα αλλά και διεγέρσιμα από γεγονότα (time-triggered, event-triggered). Ο σχεδιασμός, η ενσωμάτωση και η διαμόρφωση της ευελιξίας είναι σημαντική έτσι ώστε διευκολυνθεί η ανάπτυξη του συστήματος. Η λειτουργική ευελιξία είναι σημαντική απαίτηση των σύγχρονων οχημάτων έτσι ώστε να υποστηριχτεί μία ποικιλία από διεργασίες Ευρωστία Το περιβάλλον μέσα σε μία εφαρμογή οχημάτων μπορεί να είναι σκληρό όσον αφορά τις μηχανικές καταπονήσεις και ειδικά σε οχήματα βαρέως τύπου. Οι διεπαφές θα πρέπει να είναι σε θέση να διαχειριστούν ένα περιβάλλον σαν και αυτό με υψηλές και χαμηλές θερμοκρασίες, δονήσεις, ηλεκτρομαγνητικό θόρυβο, μεγάλα μήκη καλωδίων κλπ Κόστος και αγορά Ο σχεδιασμός ενσωματωμένων συστημάτων για οχήματα είναι μία διαρκής αναζήτηση χρυσής τομής μεταξύ κόστους, λειτουργικότητας και απόδοσης. Ακόμη ένα χαρακτηριστικό είναι η ύπαρξη η μη, του τεχνολογικού δικτύου στην αγορά. Τα συστήματα πρέπει να είναι διαθέσιμα για χρόνια και πρέπει να αναπροσαρμόζονται στις προϋποθέσεις του μέλλοντος. Ένα συγκριτικό διάγραμμα κόστους-εύρους ζώνης διάφορων πρωτοκόλλων επικοινωνίας, παρουσιάζεται στο γράφημα Περιοχές λειτουργίας Η χρήση των ενσωματωμένων συστημάτων στα οχήματα μπορεί να χωριστεί σε διάφορες περιοχές λειτουργίες. Αυτές είναι η μετάδοση της κίνησης (powertrain), το σασί (chassis), το κυρίως σώμα (body), τα πολυμέσα (multimedia), η τηλεματική (telematics), HMI (Human-Machine Interface) και X-by-Wire Περιοχή μετάδοσης της κίνησης (Powertrain domain) Αυτή η περιοχή αποτελείται από τα συστήματα τα οποία ελέγχουν την μηχανή, το κιβώτιο ταχυτήτων, τον άξονα κίνησης και το διαφορικό κλπ. ενός οχήματος. Τυπικά, αυτά τα συστήματα παράγουν και αποστέλλουν πληροφορίες για την ταχύτητα του οχήματος, την περιστροφική ταχύτητα της μηχανής κλπ. Η ECU της περιοχής HMI, η οποία ελέγχει το καντράν του οχήματος, προβάλει αυτές τις πληροφορίες στον 33

35 οδηγό. Το ταραχώδες περιβάλλον απαιτεί συμπεριφορά πραγματικού χρόνου, εύρους ζώνης, αξιοπιστίας, ανοχής σφαλμάτων κλπ. Αυτές οι προϋποθέσεις καθιστούν δυνατή τη χρήση συστημάτων με χαμηλή ευελιξία Περιοχή σασί (Chassis domain) Η περιοχή του σασί αποτελείται από συστήματα τα οποία είναι υπεύθυνα για την σταθερότητα, την ευκινησία καθώς και την δυναμική του οχήματος. Αυτό προϋποθέτει τα συστήματα να ελέγχουν την στρέψη του τιμονιού και το φρενάρισμα όπως το ABS (Anti-block Breaking System) καθώς και την οδήγηση των τροχών. Τα συστήματα X-by-Wire, επίσης, μπορούν να τοποθετηθούν σε αυτή την περιοχή διότι έχουν πολλές ομοιότητες στις προϋποθέσεις της επικοινωνιακής τους διεπαφής. Ο όρος X-by-Wire αναφέρεται στις ηλεκτρονικές εφαρμογές οι οποίες αντικαθιστούν μηχανικά ή υδραυλικά συστήματα. Ένα παράδειγμα είναι το σύστημα οδήγησης του οχήματος το οποίο στα σύγχρονα οχήματα θα εφαρμόζεται μέσω αισθητηρίων και κινητήρων. Τα συστήματα στην περιοχή του σασί απαιτούν μεγαλύτερη ευελιξία σε σχέση με την περιοχή της μετάδοσης της κίνησης. Παρ όλα αυτά και σε αυτή την περιοχή απαιτείται μεγάλη αξιοπιστία και εύρος ζώνης Περιοχή κυρίως σώματος οχήματος (Body domain) Τα συστήματα τα οποία βοηθούν τον οδηγό, όπως οι υαλοκαθαριστήρες, τα φώτα, οι αερόσακοι, ο έλεγχος της θερμοκρασίας καμπίνας, τα καθίσματα, οι καθρέπτες κλπ. ανήκουν στην περιοχή του κυρίως σώματος του οχήματος. Αυτή η περιοχή περιέχει ένα μεγάλο αριθμό από μονάδες οι οποίες όμως ανταλλάσσουν μικρό κομμάτι δεδομένων. Χρησιμοποιούνται πρωτόκολλα με χαμηλό αλλά και υψηλό εύρος ζώνης, όπως το LIN ή το CAN. Σε αυτή την περιοχή η αξιοπιστία δεν είναι το κύριο χαρακτηριστικό των συστημάτων καθώς αυτά τα συστήματα δεν απαιτούν ασφάλεια Πολυμέσα, τηλεματική, HMI Αυτή η περιοχή αναφέρεται στα συστήματα τα οποία είναι υπεύθυνα για τον ήχο, την εικόνα, τις οθόνες, τους διακόπτες, το ραδιόφωνο, την πρόσβαση στο Internet κλπ. ενός οχήματος. Το κύριο χαρακτηριστικό αυτής της περιοχής είναι ότι απαιτεί υψηλό εύρος ζώνης. 2.6 Κλάσεις διεπαφών Οι διεπαφές επικοινωνιών μπορούν να διαχωριστούν σε τέσσερις κατηγορίες σύμφωνα με το εύρος ζώνης τους και την περιοχή λειτουργίας τους. Μόνο οι τρεις από αυτές έχουν οριστεί από την παγκόσμια κοινότητα μηχανικών οχημάτων - SAE (Society of Automotive Engineers). Μία σύντομη περιγραφή μπορεί να βρεθεί παρακάτω. 34

36 Κλάση Α Σε αυτή τη κλάση ανήκουν οι διεπαφές οι οποίες έχουν εύρος ζώνης κατώτερο των 10 kb/s και χρησιμοποιούνται κυρίως για αισθητήρια συστήματα. Τα πρωτόκολλα LIN και TTP/A είναι κάποια παραδείγματα διεπαφών της κλάσης Α. Κλάση Β Ένα δίκτυο κλάσης Β έχει ταχύτητα kb/s. Χρησιμοποιείται κυρίως για ανταλλαγή δεδομένων μεταξύ των ECU αποστέλλοντας πληροφορίες στην περιοχή του κυρίως σώματος του οχήματος. Κάποια παραδείγματα πρωτοκόλλων αυτής της κλάσης είναι το J1850 καθώς και το Low-Speed CAN. Κλάση C Σε αυτή την κλάση ανήκουν διεπαφές οι οποίες λειτουργούν μεταξύ 125 kb/s και 1 Mb/s. Αυτές οι διεπαφές χρησιμοποιούνται στις περιοχές του σασί και της μετάδοσης της κίνησης. Το High-Speed CAN είναι ένα παράδειγμα αυτής της κλάσης. Κλάση D Παρ όλο που η κλάση D δεν έχει επίσημα οριστεί ακόμη από την SAE International, είναι ευρέως χρησιμοποιούμενη μέσα στην αυτοκινητοβιομηχανία. Η ανοχή σε σφάλματα καθώς και το υψηλό εύρος ζώνης τα οποία ανταποκρίνονται σε σύγχρονα και απαιτητικά συστήματα, διακρίνει αυτές τις διεπαφές από τις υπόλοιπες. Τα δίκτυα κλάσης D χρησιμοποιούν ταχύτητες πάνω από 1 Mb/s και χρησιμοποιούνται τόσο στις περιοχές του σασί και της μετάδοσης της κίνησης όσο και σε αυτή των πολυμέσων, της τηλεματικής και του HMI. Παράδειγμα πρωτόκολλων επικοινωνίας αυτής της κλάσης είναι το MOST, το FlexRay κλπ. 2.7 Έλεγχος πρόσβασης Τα πρωτόκολλα επικοινωνίας βασίζονται σε δύο βασικές σχεδιαστικές επιλογές όσον αφορά τον τρόπο με τον οποίο θα διεγείρεται το σύστημα, διέγερση με βάση τον χρόνο (time-triggered) και διέγερση με βάση γεγονότα (event-triggered). Το κύριο χαρακτηριστικό ενός συστήματος το οποίο διεγείρεται με γεγονότα είναι ότι αντιδρά όταν υπάρχει κάποιο εσωτερικό ή εξωτερικό γεγονός. Τα μηνύματα μεταδίδονται όσο το δυνατόν πιο γρήγορα και δίνονται προτεραιότητες έτσι ώστε να αποφευχθούν διενέξεις στον δίαυλο. Τα συστήματα τα οποία διεγείρονται με τον χρόνο βασίζονται σε έναν στατικό προγραμματισμό όπου κάθε κόμβος έχει την δική του χρονική θυρίδα (slot). Μια πιο αναλυτική περιγραφή για αυτές τις σχεδιαστικές επιλογές μπορεί να βρεθεί παρακάτω. 35

37 2.7.1 Χρονικά διεγειρόμενος δίαυλος (Time-triggered bus) TDMA Οι δίαυλοι που διεγείρονται χρονικά βασίζονται σε έναν στατικό προγραμματισμό. Κάθε κόμβος έχει την δική του χρονική θυρίδα (timeslot) έτσι ώστε να στείλει δεδομένα βασιζόμενος στην αρχή του Time Division Multiple Access (TDMA). Η προβλεψιμότητα των δικτύων που χρησιμοποιούν αυτό το σχήμα κάνει εύκολη την διαδικασία εντοπισμού εσφαλμένων μηνυμάτων καθώς και την έλλειψή τους. Αυτή η διακριτή συμπεριφορά και η προβλεψιμότητα τους τα καθιστά ικανά για να χρησιμοποιηθούν σε πραγματικού χρόνου εφαρμογές που απαιτούν-εξαρτώνται από την ασφάλεια. Το εύρος ζώνης μπορεί επίσης να αυξηθεί καθώς δεν απαιτείται κάποιο είδος διαιτησίας ή προτεραιότητας μεταξύ των μηνυμάτων. Αυτά τα συστήματα, βέβαια, δεν έχουν ευελιξία καθώς ο προγραμματισμός τους πρέπει να τροποποιείται κάθε φορά που προστίθεται ή αφαιρείται ένας κόμβος ή η λειτουργία τους αλλάζει. Ακόμα ένα σημαντικό στοιχείο είναι ότι απαιτείται συγχρονισμός λόγω του στατικού προγραμματισμού που υλοποιείται. Το TDMA είναι ένα μοντέλο δικτυακής πρόσβασης βασισμένο σε χρόνο-θυρίδες (timeslots) οι οποίες αναθέτονται σε ξεχωριστούς κόμβους όπως φαίνεται στο γράφημα Αυτές οι χρόνο-θυρίδες δεν είναι απαραίτητα του ίδιου μεγέθους αλλά μπορούν να αναπροσαρμόζουν το μέγεθός τους ανάλογα με το μέγεθος των δεδομένων που θέλει να στείλει ο κάθε κόμβος. Ο συγχρονισμός μεταξύ των κόμβων είναι πολύ σημαντικός καθώς η προτεραιότητα είναι προκαθορισμένη. Τη διεργασία του συγχρονισμού την αναλαμβάνει ο master κόμβος στέλνοντας ένα μήνυμα συγχρονισμού πριν από τον κάθε κύκλο επικοινωνίας. Υπάρχει, βέβαια, και η τεχνική του αποκεντρωμένου συγχρονισμού κάτι το οποίο όμως είναι πέρα από τους στόχους αυτής της διατριβής. Γράφημα Παράδειγμα δικτύου TDMA Δίαυλος διεγειρόμενος από γεγονότα (Event-Triggered Bus) Τα μηνύματα τα οποία αποστέλλονται αφού γίνει κάποιο συμβάν είναι ουσιαστικά μία αντίδραση σε ασύγχρονα γεγονότα, εσωτερικά ή εξωτερικά. Για να καθοριστεί αν ένα μήνυμα πρέπει να σταλεί ή αν κάποιο άλλο με μεγαλύτερη προτεραιότητα αποστέλλεται την ίδια στιγμή, εκτελείται η διαδικασία της διαιτησίας έτσι ώστε να αποφευχθούν διενέξεις στο δίαυλο. Αυτά τα συστήματα έχουν μεγάλη ευελιξία και μπορούν εύκολα να επεκταθούν καθώς δεν υπάρχει το στοιχείο του στατικού προγραμματισμού. Έχουν αναπτυχθεί διάφορες αρχές διαιτησίας έτσι ώστε να διαχειριστεί η προτεραιότητα των μηνυμάτων. 36

38 CSMA Μία μέθοδος διαιτησίας είναι η CSMA. Η βασική ιδέα είναι να εντοπιστεί εάν το κανάλι είναι κατειλημμένο πριν από κάθε αποστολή έτσι ώστε τα επόμενα μηνύματα να σταλούν όσο το δυνατόν πιο γρήγορα. Βέβαια, υπάρχει το ενδεχόμενο να δημιουργηθούν διενέξεις στον δίαυλο λόγω των καθυστερήσεων που συνοδεύουν την διάδοση των μηνυμάτων. Δύο κόμβοι μπορούν να στείλουν μηνύματα σε ένα κανάλι το οποίο βρίσκεται στην φάση της αδράνειας και πριν εντοπιστεί το μήνυμα από τον επόμενο κόμβο. Όταν ένας κόμβος εντοπίζει μία διένεξη τότε περιμένει για απροσδιόριστο χρόνο έως ότου επαναεπιχειρήσει να στείλει το μήνυμα. Μεγάλες καθυστερήσεις στην διάδοση του σήματος εγείρουν μεγάλους κινδύνους διενέξεων και έτσι μειώνουν την απόδοση. CSMA/CD Αυτή η μέθοδος (CSMA with Collision Detect) εντοπίζει και τις διενέξεις αυξάνοντας έτσι το εύρος ζώνης και μειώνοντας τις καθυστερήσεις στο κανάλι. Όταν ένας κόμβος εντοπίσει μία διένεξη αυτομάτως σταματάει την αποστολή του μηνύματός του. Τότε ο κόμβος περιμένει για ένα απροσδιόριστο διάστημα πριν ελέγξει το κανάλι ξανά και επαναεπιχειρήσει την αποστολή του μηνύματός του. Οι διενέξεις των μηνυμάτων εντοπίζονται «ακούγοντας» το κανάλι και συγκρίνοντας αυτό που «διαβάζει» με αυτό που στέλνει. Ειδικές κωδικοποιήσεις αυξάνουν την δυνατότητα εντοπισμού. CSMA/CA Η μέθοδος CSMA/CA (CSMA with Collision Avoidance) είναι ένας άλλος τύπος για την μέθοδο ελέγχου πρόσβασης. Όταν ένας κόμβος αναγνωρίζει το κανάλι μη-κατειλημμένο αποστέλλει το μήνυμα του. Αν το κανάλι είναι κατειλημμένο τότε το μήνυμα αποστέλλεται όταν θα είναι σε αδράνεια. Οι διενέξεις διαχειρίζονται με την αναμονή, του κόμβου, για απροσδιόριστο, τυχαίο χρονικό διάστημα. Επίσης, υπάρχει ένας μηχανισμός ο οποίος επιλέγει πιο μήνυμα θα «κυριαρχήσει» στον δίαυλο όταν δύο ή περισσότερα μηνύματα αποστέλλονται την ίδια στιγμή. Το κανάλι είναι σχεδιασμένο να δέχεται «ισχυρά» και «αδύναμα» bit. Αν και τα δύο αποστέλλονται την ίδια στιγμή, τότε ένα ισχυρό bit κυριαρχεί έναντι ενός αδύναμου, τυπικά ένα «0» κυριαρχεί επί ενός «1». Εάν το μήνυμα το οποίο «διαβάζεται» από τον κόμβο διαφέρει από αυτό που είχε στείλει τότε ο κόμβος σταματάει την αποστολή. Στο τέλος μόνο ο κόμβος με την χαμηλότερη τιμή αναγνωριστικού αριθμού (ID) στέλνει το μήνυμα του. Ένα παράδειγμα παρουσιάζεται στο γράφημα CSMA/CR Η μέθοδος CSMA/CR (with collision Resolution) ξεκινάει με μία φάση διαιτησίας κατά την οποία όλοι οι κόμβοι οι οποίοι ενδιαφέρονται για να αποστείλουν ένα μήνυμα, στέλνουν τον αναγνωριστικό τους αριθμό. Οι κόμβοι με την χαμηλότερη προτεραιότητα απλά περιμένουν. Οι διενέξεις προλαμβάνονται μέσω την προτεραιότητας. Όπως και πριν έτσι και εδώ χρησιμοποιούνται «ισχυρά» και «αδύναμα» bit για να σχηματιστεί ο αναγνωριστικός αριθμός κάθε κόμβου, με αυτόν που έχει την χαμηλότερη τιμή να του δίνεται η μεγαλύτερη προτεραιότητα όπως φαίνεται και στο γράφημα Σε αντίθεση με τα CSMA/CD και CSMA/CA, τα μηνύματα δεν καταστρέφονται ποτέ αφού η προτεραιότητα δίνεται εξ αρχής. 37

39 Γράφημα Παράδειγμα διαιτησίας δικτύων CSMA/CR, CSMA/CA. Η ECU1 έχει χαμηλότερη τιμή αναγνωριστικού αριθμού και έτσι μεγαλύτερη προτεραιότητα στο δίκτυο Γράφημα Παράδειγμα δύο κόμβων οι οποίοι στέλνουν δεδομένα στον δίαυλο με χρήση minislots Minislotting Η μέθοδος Minislotting ή αλλιώς Flexible Time Division Multiple Access (FTDMA), διαχωρίζει τον κύκλο επικοινωνίας σε έναν αριθμό από ίσου μέγεθος θυρίδες (slots). Το μέγεθος της κάθε slot επεκτείνεται έτσι ώστε να ταιριάζει στα δεδομένα που αποστέλλονται ειδάλλως διατηρεί το αρχικό της μέγεθος και καταλήγει σαν ένα χρονικό διάστημα αδράνειας του δικτύου. Όπως και στον στατικό προγραμματισμό θυρίδων, έτσι και εδώ οι minislots αριθμούνται και αναθέτονται σε κόμβους έτσι ώστε αυτοί να μπορούν να στείλουν τα δεδομένα τους μέσω των minislots που τους ανατέθηκαν. Βέβαια, καθώς το μέγεθος του δυναμικού αυτού κομματιού, που απαρτίζεται από τις minislots, είναι συγκεκριμένο, υπάρχει η πιθανότητα να μην μπορέσουν όλοι οι κόμβοι να στείλουν κάποιο μήνυμα κατά το δυναμικό κομμάτι. Αυτά τα δεδομένα, τα οποία δεν στάλθηκαν, πρέπει να περιμένουν την επόμενη φορά που θα ξαναέρθει ένα δυναμικό κομμάτι ώστε να στείλουν τα δεδομένα τους. Η μέθοδος αυτή αποτελεί και ένα μέρος του τρόπου επικοινωνίας που υλοποιείται στο πρωτόκολλο FlexRay, το οποίο θα αναλυθεί αναλυτικότερα στις επόμενες ενότητες. Ένα παράδειγμα για την μέθοδο Minislotting ή αλλιώς FTDMA, παρουσιάζεται στο γράφημα Κλείνοντας αυτή την ενότητα, θα πρέπει να αναφερθεί ότι υπάρχουν κάποια πρωτόκολλα επικοινωνίας τα οποία συνδυάζουν τις παραπάνω μεθόδους. Αυτό επιτυγχάνεται με τον διαχωρισμό του κύκλου 38

40 επικοινωνίας σε στατικό και δυναμικό κομμάτι. Στο στατικό κομμάτι λαμβάνει τόπο ο στατικός προγραμματισμός θυρίδων (static segment, static slots) ενώ το δυναμικό κομμάτι υλοποιείται μέσω του Minislotting (dynamic segment, minislots). Παράδειγμα τέτοιου πρωτοκόλλου είναι το FlexRay. 2.8 Διαχείριση σφαλμάτων Σφάλματα μπορούν να υπάρξουν σε τρεις περιοχές, τον χρόνο, τον χώρο και την τιμή. Τα χρονικά σφάλματα προκαλούνται από μηνύματα τα οποία στέλνονται, λαμβάνονται ή υπολογίζονται σε λάθος χρόνο ή ακόμα και καθόλου. Η απορρύθμιση του ρολογιού με την πάροδο του χρόνου (clock drift) θα μπορούσε να αποτελέσει ένα χρονικό σφάλμα. Μηνύματα τα οποία υπολογίστηκαν λανθασμένα και στάλθηκαν ή λήφθηκαν, αποτελούν σφάλμα τιμής. Τα χωρικά σφάλματα αποτελούν σφάλματα λόγω μηχανικής καταστροφής καλωδίων και μπορεί να επηρεάσουν πολλές ECU. Δίκτυα με υλική εφεδρεία είναι λιγότερο ευαίσθητα σε τέτοια σφάλματα Εντοπισμός σφάλματος Γενικά έχουν αναπτυχθεί πολλές τεχνικές που καθιστούν υπαρκτό τον εντοπισμό σφαλμάτων. Παρατήρηση διαύλου Bus Monitoring Ο κόμβος-αποστολέας συγκρίνει το σήμα του με τα δεδομένα στο δίκτυο. Αν αυτά τα δύο διαφέρουν τότε έχει εντοπίσει σφάλμα και δρα αναλόγως. Κυκλικός Έλεγχος Εφεδρείας Cyclic Redundancy Check (CRC) Ορισμένα πρωτόκολλα χρησιμοποιούν έναν κυκλικό κώδικα εφεδρείας έτσι ώστε να εντοπίσουν σφάλματα. Η εφαρμογή του είναι σχετικά απλή με καταχωρητές ολίσθησης. Parity check Ορισμένα πρωτόκολλα χρησιμοποιούν απλά έναν κώδικα ισοτιμίας. Έλεγχος του πλαισίου μηνύματος Αυτός ο έλεγχος υλοποιείται με την χρησιμοποίηση κάποιων «ρεζερβέ» bit μέσα στο πλαίσιο του μηνύματος τα οποία διαχωρίζουν τα διάφορα πεδία του μηνύματος μεταξύ τους. Αν αυτά τα bit δεν ακολουθούν τη προκαθορισμένη διαδικασία τότε έχουμε εντοπισμό σφάλματος. Σήμα αποδοχής - Acknowledgement Ο κόμβος που δέχεται τα δεδομένα στέλνει ένα σήμα αποδοχής (ack) έτσι ώστε να ενημερώσει ότι το σήμα παραλήφθηκε σωστά. 39

41 Ειδοποίηση σφάλματος Όταν ένας κόμβος εντοπίσει ένα σφάλμα τότε ειδοποιεί τους υπόλοιπους κόμβους για την εσφαλμένη αποστολή Συγχρονισμός ρολογιού (Clock synchronization) Ο συγχρονισμός είναι πολύ σημαντικός σε συστήματα πραγματικού χρόνου έτσι ώστε όλοι οι κόμβοι να είναι συγχρονισμένοι με τις χρόνο-θυρίδες τους (time-slots). Αυτό καθορίζεται από την ποιότητα του ταλαντωτή του κάθε κόμβου αλλά και από τον αλγόριθμο συγχρονισμού. Υπάρχουν δύο είδη αλγορίθμων συγχρονισμού. Ο αλγόριθμος μέσου όρου, ο οποίος μετράει τις προηγούμενες τιμές του ρολογιού του κάθε κόμβου και τις συγκρίνει με αυτές των υπολοίπων και ορίζει το ρολόι στο μέσο όρο αυτών των τιμών, και ο αλγόριθμος που βασίζεται σε κάποιο γεγονός και βασίζεται σε κάποιο μήνυμα που διαδίδεται μεταξύ των κόμβων. Έτσι, ο κάθε κόμβος ορίζει το ρολόι του όταν έχει λάβει συγκεκριμένο αριθμό από συμβάντα από τους άλλους κόμβους Bit γέμισης - Bit stuffing Μερικά πρωτόκολλα επικοινωνίας όπως το CAN, FlexRay κλπ. χρησιμοποιούν μία μέθοδο αυτή της bit γέμισης ή αλλιώς bit stuffing. Σύμφωνα με αυτή τη μέθοδο, μετά από συγκεκριμένο αριθμό συνεχόμενων bit ίδιας τιμής, προστίθεται ένα έξτρα bit αντίθετης τιμής «σπάζοντας» την ακολουθία. Έτσι, μετά από πέντε συνεχόμενα «ισχυρά» bit θα είχαμε την παρουσία ενός «αδύναμου». Βέβαια, αυτή η μέθοδος αυξάνει κατά κάποιο ποσοστό το συνολικό πλαίσιο μηνύματος, μειώνοντας το ωφέλιμο εύρος ζώνης αλλά αυτή πρόκειται για μία παράπλευρη απώλεια καθώς με αυτό τον τρόπο έχουμε μεγαλύτερη πιθανότητα εντοπισμού σφαλμάτων. Ένα παράδειγμα της μεθόδου bit γέμισης φαίνεται στο γράφημα Γράφημα Παράδειγμα μεθόδου bit γέμισης (Bit stuffing) Επιτηρητής διαύλου - Bus Guardian Κάποια πρωτόκολλα επικοινωνίας όπως το FlexRay, χρησιμοποιούν μία συσκευή η οποία ελέγχει την είσοδο στο δίκτυο έτσι ώστε να αποφευχθούν σφάλματα διενέξεων. Προλαμβάνει έναν κόμβο από το να ξεκινήσει αποστολή στο κανάλι αλλά δεν πρόκειται για μία συσκευή η οποία επικοινωνεί αυτή καθ αυτή. 40

42 Αυτή την λειτουργία την επιτελεί ο λεγόμενος Bus Guardian ή αλλιώς επιτηρητής διαύλου. Ο επιτηρητής διαύλου ενεργεί καθ αυτό τον τρόπο ώστε να προλάβει τον κόμβο από το να στείλει πληροφορίες σε λανθασμένη θυρίδα. Η αποστολή του μηνύματος ξεκινάει όταν το επιτρέψει ο επιτηρητής διαύλου διότι έτσι εγγυάται μια επικοινωνία χωρίς διενέξεις. Οι επιτηρητές διαύλου υλοποιούνται τοπικά σε κάθε κόμβο ή κεντρικά σε τοπολογίες όπως και αυτή του ενεργού αστέρα. Ένα παράδειγμα τοπικού επιτηρητή διαύλου φαίνεται στο γράφημα Γράφημα Παράδειγμα τοπικού επιτηρητή διαύλου (Bus Guardian) Στρατηγική Never-Give-Up Η στρατηγική never-give-up είναι ένας μηχανισμός ο οποίος επαναφέρει ένα σύστημα με σφάλματα, σε ασφαλή κατάσταση. Πρέπει να είναι ικανός να εντοπίζει λογισμικά σφάλματα κατά την διάρκεια της εκτέλεσης, να τα διαχειρίζεται, διατηρώντας την ασφάλεια του οχήματος. 2.9 Ηλεκτρομαγνητική συμβατότητα EMC Η ηλεκτρομαγνητική συμβατότητα, EMC, είναι πολύ σημαντική στην αυτοκινητοβιομηχανία για ένα σύνολο λόγων. Πρώτα απ όλα, υπάρχουν νομικές υποχρεώσεις για τα επίπεδα ακτινοβολίας, οι οποίες πρέπει να ικανοποιηθούν. Δεύτερον, η εκτεταμένη χρήση ηλεκτρονικών συσκευών και κυκλωμάτων στα οχήματα έχει δημιουργήσει την ανάγκη, αυτά, να μην επηρεάζουν το ένα την λειτουργία του άλλου και αντίστροφα. Επίσης, οι ανάγκες των πελατών είναι ένα στοιχείο που καθιστά ακόμη πιο σημαντική την ηλεκτρομαγνητική συμβατότητα. 41

43 Τα ψηφιακά σήματα είναι ένας μεγάλος παράγοντας που συμβάλει στην εκπομπή ακτινοβολίας ενός ενσωματωμένου συστήματος. Μικροί χρόνοι ανόδου και καθόδου μπορούν να επιτευχθούν μόνο με στοιχεία υψηλότερων συχνοτήτων, προκαλώντας έτσι υψηλότερα επίπεδα ακτινοβολίας. Η επικοινωνία, σε ένα ηλεκτρικό μέσο, μεταξύ δύο κόμβων μπορεί να επιτευχθεί με την χρήση απλά τερματιζόμενης σηματοδότησης (single-ended signaling) ή διαφορικής σηματοδότησης (differential signaling). Η πρώτη χρησιμοποιεί ένα καλώδιο για την διάδοση του σήματος ενώ ένα άλλο καλώδιο με δυναμικό γης παίζει τον ρόλο της τάσης αναφοράς. Αυτά τα συστήματα είναι περισσότερο ευαίσθητα σε εξωτερικές διαταραχές, στοιχείο που μπορεί να προκαλέσει προβλήματα σε μία εφαρμογή οχήματος. Επίσης, το επίπεδο της τάσης αναφοράς (γη) μπορεί να μεταβάλλεται συνεχώς λόγω αντιστάσεων και αυτεπαγωγών. Η διαφορική σηματοδότηση χρησιμοποιεί ένα ζεύγος καλωδίων στα οποία πραγματοποιείται η διάδοση δύο συμπληρωματικών σημάτων. Με αυτό το είδος σηματοδότησης δεν απαιτείται καλώδιο με δυναμικό γης διότι το τελικό σήμα παρουσιάζεται ως η διαφορά δυναμικού μεταξύ των δύο καλωδίων. Σε κάθε περίπτωση, το συνεστραμμένο ζεύγος καλωδίων μειώνει τις εκπομπές. Σε περίπτωση μη σωστού τερματισμού των καλωδίων, υπάρχει σοβαρό ενδεχόμενο παρουσίας ανακλάσεων στις γραμμές. Η πρωτοτυποποιημένη διαδικασία τερματισμού ενός ζεύγους καλωδίου για το πρωτόκολλο CAN ή του FlexRay αναφέρεται στην τοποθέτηση μίας αντίστασης σε κάθε τερματισμό του καλωδίου. Τα καλώδια μπορούν να λειτουργούν ως πηγές ή αποδέκτες ηλεκτρομαγνητικού θορύβου στα ενσωματωμένα συστήματα. Άλλος ένα τρόπος θωράκισης είναι η χρησιμοποίηση καλωδίων με προστασία έναντι ηλεκτρομαγνητικού θορύβου έτσι ώστε να μειωθεί η εκπομπή. Οι μηχανισμοί οι οποίοι προκαλούν ηλεκτρομαγνητικό θόρυβο είναι κυρίως δύο: η ανάκλαση των σημάτων, η οποία εντοπίζεται σε χαμηλές συχνότητες και οι παράσιτες αγωγιμότητες, οι οποίες εντοπίζονται σε υψηλές συχνότητες. Επίσης, υπάρχουν δύο τρόποι θωράκισης: μανδύας αλουμινίου και πλέγμα χαλκού. Ο πρώτος αποτελεί ένα στρώμα αλουμινίου γύρω από τον αγωγό ενώ ο δεύτερος τρόπος πρόκειται για ένα πλέγμα χαλκού γύρω από τον αγωγό. Τα καλώδια θωρακίζονται επωφελώς στο ένα τους άκρο έτσι ώστε να αποφευχθούν βρόγχοι μέσω της γης. 42

44 43

45 3 Ανάλυση Πρωτόκολλων Επικοινωνίας CAN, FlexRay Το περιεχόμενο της ενότητας αναφέρεται σε μία αναλυτική περιγραφή των δύο πρωτοκόλλων επικοινωνίας, τα οποία επιλέχθηκαν για παρουσίαση στην συγκεκριμένη μεταπτυχιακή διατριβή. Αυτά είναι το Controller Area Network CAN και το FlexRay. 3.1 Controller Area Network CAN Το μέγεθος της αγοράς του μηχανοκίνητου τομέα οδήγησε τους κατασκευαστές στο να σχεδιάσουν ενσωματωμένα κυκλώματα τα οποία θα μπορούσαν να διαχειριστούν το πρωτόκολλο CAN (Controller Area Network). Αυτό πέτυχε, κάτι το οποίο μέχρι τότε δεν ήταν απαραίτητος κανόνας στα υπάρχοντα πρωτόκολλα, να δημιουργήσει ένα θετικό τεχνο-οικονομικό αποτέλεσμα, δηλαδή κατάφεραν να μεγαλώσουν τον δείκτη απόδοσης προς κόστος, καταλήγοντας έτσι σε έναν τύπο διαύλου ο οποίος τους ικανοποιούσε. Το πρωτόκολλο CAN ήταν ένα δυναμικό εγχείρημα, του οποίου η μεγάλη επιτυχία και προώθηση βασίστηκε στο γεγονός ότι την κατάλληλη στιγμή έδωσε στο ευρύ κοινό ένα πρωτόκολλο επικοινωνίας το οποίο κάλυπτε όχι μόνο τις υπάρχουσες ανάγκες αλλά ήταν σχεδιασμένο και για μελλοντικές απαιτήσεις. Έτσι, μέσα σε 2-3 χρόνια η εξάπλωσή του ήταν ραγδαία και βασίστηκε στο ότι ήταν ένα ακριβές και ολοκληρωμένο πρωτόκολλο, με πιστοποίηση κατά ISO για μηχανοκίνητες εφαρμογές καθώς και στο ότι δεν είχε σε τίποτα να ζηλέψει από τα «ανταγωνιστικά» πρωτόκολλα μιας και δημιουργήθηκε μια ευρεία βάση δεδομένων με άρθρα, βιβλία κλπ. Ακόμη, μεγάλο ρόλο στην εξάπλωση του πρωτόκολλου CAN έπαιξε και η δημιουργία βιομηχανικών γκρουπ (CiA κλπ.) τα οποία βοήθησαν στην διείσδυση του πρωτοκόλλου στην βιομηχανία, επεκτείνοντας έτσι την χρήση του CAN Ιστορική αναδρομή Τον Φεβρουάριο του 1986, η εταιρία Robert Bosch GmbH εισήγαγε το σειριακό σύστημα διαύλου Controller Area Network (CAN) στο συνέδριο της Society of Automotive Engineers (SAE). Αυτό αποτέλεσε την αφετηρία για την εμφάνιση ενός από τα πιο επιτυχημένα πρωτόκολλα δικτύου που έχουν ποτέ εμφανιστεί. Σήμερα, σχεδόν κάθε καινούργιο επιβατικό αυτοκίνητο που κατασκευάζεται είναι 44

46 εξοπλισμένο με τουλάχιστον ένα δίκτυο CAN. Επίσης χρησιμοποιείται σε άλλους τύπους οχημάτων όπως σε τρένα, πλοία, αεροπλάνα καθώς και στη βιομηχανία. Στις αρχές της δεκαετίας του 1980, οι μηχανικοί της Robert Bosch GmbH μελετούσαν την πιθανότητα χρησιμοποίησης γνωστών πρωτοκόλλων δικτύου σε επιβατικά αυτοκίνητα. Επειδή κανένα από τα διαθέσιμα πρωτόκολλα δικτύου δεν ήταν σε θέση να ανταποκριθεί στις απαιτήσεις της αυτοκινητοβιομηχανίας, ο Uwe Kiencke ξεκίνησε την ανάπτυξη ενός νέου σειριακού συστήματος επικοινωνίας. Το νέο πρωτόκολλο κυρίως δημιουργήθηκε για να προσθέσει νέες λειτουργίες. Παράλληλα η μείωση των καλωδιώσεων ήταν απλώς ένα ακόμα θετικό αποτέλεσμα, όχι όμως η κινητήρια δύναμη πίσω από την ανάπτυξη του πρωτοκόλλου CAN. Μηχανικοί από τη Mercedes Benz ασχολήθηκαν με τις προδιαγραφές του νέου συστήματος, το ίδιο έκανε και η Intel σαν κύριος υποψήφιος προμηθευτής του υλικού για τα νέα συστήματα. Ο καθηγητής Dr. Wolfhard Lawrenz από το Πανεπιστήμιο Εφαρμοσμένων Επιστημών του Braunschweig Wolfenbüttel της Γερμανίας, ο οποίος είχε προσληφθεί ως σύμβουλος, έδωσε στο νέο πρωτόκολλο το όνομα Controller Area Network (CAN). Επίσης ακαδημαϊκή βοήθεια έδωσε και ο καθηγητής Dr. Horst Wettstein από το Πανεπιστήμιο της Καρλσρούης. Στη συνέχεια εισήχθη το multi-master πρωτόκολλο δικτύου, βασισμένο σε ένα μη καταστρεπτικό μηχανισμό διαιτησίας, ο οποίος επιτρέπει την πρόσβαση στο δίκτυο, στο μήνυμα με την υψηλότερη προτεραιότητα χωρίς καθυστερήσεις. Επιπλέον εφαρμόστηκαν διάφοροι μηχανισμοί ανίχνευσης σφαλμάτων, αντιμετώπισης λαθών όπως επίσης και μηχανισμοί αυτόματης αποσύνδεσης ελαττωματικών κόμβων, προκειμένου να διατηρηθεί η ομαλή επικοινωνία μεταξύ των υπόλοιπων κόμβων. Γράφημα Η ραγδαία αύξηση χρήσης του πρωτοκόλλου CAN με τη πάροδο του χρόνου Λόγω του γεγονότος ότι το CAN προοριζόταν για την βιομηχανία αυτοκινήτων, σχεδιάστηκε έτσι ώστε να μπορεί να λειτουργεί υπό υψηλές συνθήκες ρύπανσης, λόγω ηλεκτρομαγνητικού θορύβου. Επίσης, σχεδιάστηκε ώστε να υλοποιεί μία έμπιστη επικοινωνία λόγω του αποδοτικού μηχανισμού ανίχνευσης 45

47 σφαλμάτων αυξάνοντας συγχρόνως τις πιθανότητες διόρθωσης αυτών. Επίσης, στην περίπτωση της εισόδου των κόμβων στον δίαυλο, μέσω της τεχνικής της διαιτησίας που εφαρμόζει, είναι εφικτό να υλοποιεί μία τεχνική «μη-καταστροφική» για την επικοινωνία, στην περίπτωση που πολλαπλοί κόμβοι προσπαθούν να εισέλθουν στον δίαυλο. Έτσι, σε περίπτωση που παραπάνω από ένας κόμβος θέλουν να εισέλθουν στον δίαυλο, τότε εισέρχεται αυτός με την μεγαλύτερη προτεραιότητα και έτσι δεν χαραμίζεται άδικα το εύρος ζώνης του διαύλου. Αυτή η τεχνική διαιτησίας παρουσιάζει ως αρνητικό ότι μεγάλες αποστάσεις μεταξύ των κόμβων μπορούν να υλοποιηθούν με μικρές ταχύτητες επικοινωνίας, και το αντίθετο. Επίσης εξ ορισμού, για να μειωθεί ο ηλεκτρομαγνητικός θόρυβος, ο οποίος κυρίως οφείλεται στις αιχμές των ηλεκτρονικών σημάτων κατά την διάρκεια της επικοινωνίας στον δίαυλο, η ταχύτητα της επικοινωνίας θα πρέπει να επιλέγεται όσο το δυνατόν μικρότερη. Έτος Περιγραφή 1983 Ανάπτυξη δικτύου εντός του οχήματος από την Robert Bosch GmbH Επίσημη εισαγωγή του CAN πρωτόκολλου Πρώτη χρησιμοποίηση ελεγκτή CAN από την Intel και την Philips Semiconductors Δημοσίευση προδιαγραφών CAN 2.0 από την Robert Bosch GmbH Εμφάνιση του CAN Kingdom, πρωτόκολλο υψηλότερου στρώματος βασισμένο στο CAN, δημοσιευμένο από τον Kvaser Ίδρυση του CAN in Automation (CiA) από διεθνείς χρήστες και τους κατασκευαστές Εμφάνιση του πρωτοκόλλου CAN Application Layer (CAL) που δημοσιεύτηκε από την CiA Εμφάνιση των πρώτων αυτοκινήτων από την Mercedes Benz που χρησιμοποιούν το δίκτυο της CAN Δημοσίευση του πρώτου ISO ο Διεθνές Συνέδριο CAN το οποίο διοργανώνεται από την CiA Εμφάνιση του πρωτοκόλλου DeviceNet από την Allen Bradley Επανέκδοση του προτύπου ISO με δημοσίευση της εκτεταμένης μορφής πλαισίου CAN 2.0B Εμφάνιση του πρωτοκόλλου CANopen που δημοσιεύθηκε από την CiA Εμφάνιση του time-triggered communication πρωτοκόλλου για CAN (TTCAN). Πίνακας 1. Ιστορική αναδρομή πρωτόκολλου CAN Τυποποίηση Η προδιαγραφή CAN (version 2.0) υποβλήθηκε για διεθνή τυποποίηση στις αρχές της δεκαετίας του 1990 από τη Robert Bosch GmbH. Μετά από λίγα χρόνια, τον Νοέμβριο του 1993, δημοσιεύθηκε το πρότυπο ISO για CAN. Επιπλέον το πρωτόκολλο CAN ορίζεται επίσης ως ένα φυσικό στρώμα για ρυθμούς μετάδοσης μέχρι και 1 Mbit/s. Παράλληλα, ένας ανεκτικός σε σφάλματα τρόπος μετάδοσης δεδομένων μέσω CAN τυποποιείται στο πρότυπο ISO Το 1995, το πρότυπο ISO επεκτάθηκε με προσθήκη που περιγράφει την 29-bit αναγνωριστικού αριθμού (ID) του CAN που θα αναλυθεί παρακάτω. Επειδή κάποιες δημοσιευμένες προδιαγραφές και τυποποιήσεις CAN περιείχαν λάθη ή ήταν ελλιπείς, η Bosch φρόντισε ώστε όλοι να πρέπει να συμμορφώνονται με τα ολοκληρωμένα κυκλώματά της σαν μοντέλο αναφοράς. 46

48 3.1.3 Είσοδος στον δίαυλο και διαιτησία Τα διανεμημένα συστήματα ελέγχου πραγματικού χρόνου τα οποία βασίζονται σε ένα λειτουργικό σύστημα ενός επεξεργαστή και είναι διασυνδεδεμένα μέσω ενός δίαυλου επικοινωνίας με άλλους διανεμημένους επεξεργαστές, αυτή τη στιγμή αποτελούν ένα πολύ καλό πρόσθετο στα παράλληλα συστήματα. Επιπρόσθετα, αυτή η διαδικασία πρέπει να είναι συγχρονισμένη, δηλαδή θα πρέπει να υπακούει σε κάποιες λογικές ακολουθίες. Σε αυτά τα συστήματα, τα μηνύματα τα οποία αναφέρονται σε συγχρονισμό είναι γενικά μικρά και μπορούν να δημιουργηθούν μέσω οποιασδήποτε διαδικασίας ή κάποιου γεγονότος στο σύστημα καθώς και πρέπει να λαμβάνονται συνεχώς ώστε να διατηρείται ο συγχρονισμός στο παράλληλο σύστημα. Όλοι οι σταθμοί-κόμβοι δημιουργούν δικά τους μηνύματα όσον αφορά τις δικιές τους διεργασίες σε τυχαίες χρονικές στιγμές (καθοδηγούμενες από γεγονότα). Αυτή η λειτουργία, η οποία είναι καθοδηγούμενη από γεγονότα, χαρακτηρίζει την επικοινωνία βασισμένη στο πρωτόκολλο CAN. Η επικοινωνία με το CAN πρωτόκολλο βασίζεται στην λεγόμενη διαιτησία όπως θα δούμε και παρακάτω. Από την στιγμή που όλοι οι σταθμοί-κόμβοι επιθυμούν να μιλήσουν, θα πρέπει να ακουστεί αυτός με την μεγαλύτερη προτεραιότητα. Το πρωτόκολλο CAN βασίζεται πάνω στην αρχή διαιτησίας CSMA/CR, η οποία αναλύθηκε παραπάνω. Αυτή ενεργεί με μία διαδικασία όχι κατά το επίπεδο της προσπάθειας εισόδου του σταθμού-κόμβου στον δίαυλο αλλά στο επίπεδο του ίδιου του bit. Δηλαδή, ενεργεί σαν διαχειριστής διενέξεων κατά την διάρκεια του κάθε bit. Αυτή η τεχνική διαιτησίας, λοιπόν, έχει επιλεγεί από το CAN πρωτόκολλο. Σε περίπτωση «διαμάχης» μεταξύ των μηνυμάτων, το μήνυμα με την μεγαλύτερη προτεραιότητα κερδίζει πάντα την παραμονή στον δίαυλο. Για παράδειγμα έστω ένα 11-bit ID CAN δίκτυο, με δύο κόμβους που έχουν ID 15 ( ) και ID 16 ( ). Εάν οι παραπάνω κόμβοι μεταδίδουν ταυτόχρονα, ο καθένας θα μεταδώσει τα πρώτα έξι 0 της ταυτότητάς του χωρίς να έχει ληφθεί κάποια απόφαση της διαδικασίας διαιτησίας που θα εφαρμοστεί. Όταν θα μεταδοθεί το 7 ο bit, ο κόμβος με το ID 16 μεταδίδει το 1 (χαμηλής προτεραιότητας bit), και ο κόμβος με το ID 15 μεταδίδει το 0 (υψηλής προτεραιότητας bit). Όταν συμβαίνει αυτό, ο κόμβος με το ID 16 θα σταματήσει τη μετάδοση και θα επιτρέψει στο κόμβο με ID 15 να συνεχίσει την μετάδοσή του. Αυτό εξασφαλίζει ότι ο κόμβος που θα έχει μικρότερη τιμή για ID θα προηγείται πάντοτε των υπολοίπων στη μετάδοση των μηνυμάτων. Προφανώς, με αυτόν τον τρόπο, η καθυστέρηση του κάθε μηνύματος εξαρτάται από το επίπεδο προτεραιότητας που του έχει αποδοθεί Το πρόβλημα της καθυστέρησης Η καθυστέρηση, η οποία πάντα πρέπει να λαμβάνεται υπόψιν κατά τον σχεδιασμό ενός συστήματος, προσδιορίζεται ως ο χρόνος που μεσολαβεί από την στιγμή που δημιουργείται το αίτημα αποστολής μέχρι την στιγμή της πραγματικής έναρξής της. Η αλήθεια είναι ότι μόνο μερικά μηνύματα χρειάζεται να έχουν εξασφαλισμένη καθυστέρηση και ακολούθως σε καταστάσεις υψηλής φόρτισης του διαύλου. Έτσι, έχουμε δύο είδη μηνυμάτων: R S = μηνύματα των οποίων η καθυστέρηση αποστολής πρέπει να είναι εξασφαλισμένη = όλα τα άλλα μηνύματα Προφανώς, M = R + S, είναι ο συνολικός αριθμός των μηνυμάτων. 47

49 Η παρακάτω καμπύλη μας δείχνει αυτή τη σχέση, δηλαδή την πιθανότητα διανομής της καθυστέρησης συναρτήσει της ίδιας της καθυστέρησης (όταν το αίτημα αποστολής έχει γίνει μία φορά). Γράφημα Πιθανότητα διανομής καθυστέρησης συναρτήσει της ίδιας της καθυστέρησης Επίπεδα OSI στο πρωτόκολλο CAN Το πρωτόκολλο CAN, όπως και πολλά άλλα πρωτόκολλα δικτύωσης, αναλύεται σε όλα τα στρώματα του μοντέλου OSI. Όμως, το μεγαλύτερο μέρος του επικεντρώνεται στο στρώμα μεταφοράς. Το στρώμα μεταφοράς λαμβάνει μηνύματα από το φυσικό στρώμα και μεταδίδει τα μηνύματα στο στρώμα αντικειμένου. Το στρώμα μεταφοράς είναι υπεύθυνο για το χρονοδιάγραμμα, το συγχρονισμό, τη διαμόρφωση του μηνύματος, τη διαιτησία, την αναγνώριση, τον εντοπισμό σφαλμάτων, τη σηματοδότηση και τον περιορισμό των σφαλμάτων. Εκτελεί: Ανίχνευση σφάλματος, Επικύρωση, Αναγνώριση, Διαιτησία, Διαμόρφωση μηνύματος, Ταχύτητα μεταφοράς, Πληροφορίες δρομολόγησης. 48

50 3.1.6 Σφάλματα και η διαχείρισή τους Θετική και αρνητική αποδοχή δεδομένων Στο πρωτόκολλο CAN οι αναγνωριστικοί αριθμοί (ID) των μηνυμάτων αποστέλλονται σε όλους τους συμμετέχοντες στον δίαυλο και επίσης λαμβάνονται από όλους τους κόμβους. Αυτό, δημιουργεί την ανάγκη να γίνει τοπικά έλεγχος σφαλμάτων σε κάθε έναν από τους σταθμούς. Για το πετύχει αυτό, το CAN χρησιμοποιεί ένα συνδυασμό από θετικά και αρνητικά μηνύματα αποδοχής. Η θετική αποδοχή ACK+, εκφράζεται ως ακολούθως: ACK+ = ACK + i, για κάθε i. Η θετική αποδοχή του μηνύματος στέλνεται από κάθε σταθμό i ο οποίος έχει κάνει σωστή λήψη του μηνύματος και στέλνει την θετική αποδοχή σε μία συγκεκριμένη στιγμή (ACK time slot). Τα παραπάνω μπορούν να διατυπωθούν και ως εξής: Από μία αισιόδοξη σκοπιά, κατά την οποία η θετική αποδοχή του μηνύματος υποδεικνύει ότι «τουλάχιστον ένας σταθμός έχει κάνει σωστή λήψη του μηνύματος», Και από μία λιγότερο αισιόδοξη σκοπιά, κατά την οποία «Η αρνητική αποδοχή του μηνύματος πρέπει να έχει μία μορφή η οποία να είναι ικανή να υποδείξει ότι υπάρχει τουλάχιστον ένα σφάλμα στο ευρύτερο σύστημα». Εν τέλει, το μήνυμα το οποίο υποδεικνύει την ύπαρξη σφάλματος πρέπει να σταλεί απευθείας σε όλους τους σταθμούς μέσω του διαύλου με το που ανιχνευτεί το σφάλμα. Αυτή η μέθοδος κάνει εφικτό τον άμεσο επανα-συγχρονισμό των σταθμών κατά την διάρκεια ενός μηνύματος. Προφανώς, κάτι τέτοιο είναι πολύ σημαντικό για την ασφάλεια του συστήματος και της εφαρμογής στην οποία υλοποιείται. Διαχείριση Σφάλματος Ο συνδυασμός, η επαλήθευση καθώς και η ανάλυση των θετικών ή αρνητικών αποδοχών των μηνυμάτων, οι οποίες στέλνονται από τους διάφορους κόμβους μπορούν να προσδιορίσουν και την πηγή του σφάλματος (από τον παραλήπτη ή τον αποστολέα), για παράδειγμα: Η ύπαρξη τουλάχιστον μία θετικής αποδοχής μηνύματος, σε συνδυασμό με ένα μήνυμα σφάλματος, υποδεικνύει ότι το μήνυμα έχει τουλάχιστον σταλεί με επιτυχία. Αντιθέτως, αν δεν υπάρχει θετικής αποδοχή, και σε συνδυασμό πάλι με ένα μήνυμα σφάλματος, τότε αυτό υποδεικνύει ότι όλοι οι παραλήπτες κόμβοι έχουν ανιχνεύσει ένα σφάλμα και ότι υπάρχει μεγάλη πιθανότητα το σφάλμα να βρίσκεται στην αποστολή και όχι στην λήψη. 49

51 Μηνύματα Σφαλμάτων Τα μηνύματα σφάλματος τα οποία χρησιμοποιούνται από τον CAN είναι δύο ειδών: Πρωτεύουσα αναφορά σφάλματος, Όταν ένα σταθμός (ή πολλαπλοί σταθμοί μαζί) ανιχνεύσει ένα σφάλμα, τότε αυτό οδηγεί στην άμεση αποστολή ενός μηνύματος σφάλματος. Σε αυτό το σημείο, το μήνυμα σφάλματος αποτελείται από μία ακολουθία «ισχυρών» bit και το μήνυμα δεδομένων παραγκωνίζεται. Δευτερεύουσα αναφορά σφάλματος, Μετά, λοιπόν, τον παραγκωνισμό του μηνύματος, όλοι οι υπόλοιποι σταθμοί ανιχνεύουν την παραβίαση των κανονισμών στην μορφοποίηση του μηνύματος (όπως φαίνεται στο γράφημα 3.3) και ξεκινάνε και αυτοί με την σειρά τους την αποστολή ενός μηνύματος σφάλματος. Αυτά τα μηνύματα προστίθενται στο αρχικό μήνυμα σφάλματος αυξάνοντας την διάρκειά του. Οι πρωτεύον αναφορές σφάλματος δημιουργούνται σε έναν σταθμό στον οποίο ανιχνεύτηκε το σφάλμα σε αντίθεση με τις δευτερεύουσες, οι οποίες δημιουργούνται ως «απάντηση» σε ένα ήδη ανιχνευμένο σφάλμα. Γράφημα Πρωτεύουσα και δευτερεύουσα αναφορά σφάλματος Για να μπορέσουμε να πετύχουμε σωστή διαχείριση των σφαλμάτων, απαιτείται η ανάπτυξη μιας στρατηγικής διαδικασίας για την «μεταχείριση» των σφαλμάτων. Για το CAN, έχει καθοριστεί αυτή η στρατηγική διαδικασία να είναι αυτή που φαίνεται γράφημα 3.4 και η οποία καλείται «Στρατηγική Περιορισμού Σφάλματος» ή αλλιώς Fault Confinement Strategy. 50

52 Γράφημα Στρατηγική Περιορισμού Σφάλματος ή "Fault Confinement Strategy" του πρωτόκολλου CAN Αυτή η στρατηγική βασίζεται στα εξής. Πρώτα απ όλα κάθε σταθμός πρέπει να έχει δύο ξεχωριστούς μετρητές σφαλμάτων. Ο ένας για να καταγράφει τι συμβαίνει κατά την διάρκεια της αποστολής ενός μηνύματος και ο άλλος για να καταγράφει τα συμβάντα κατά την λήψη. Έτσι, σύμφωνα με την αναφορά σφαλμάτων που εξετάσαμε πριν καθώς και με τις συνθήκες λειτουργίας του κάθε σταθμού, οι μετρητές αυξάνουν την μέτρησή τους κατά διαφορετικό τρόπο βασιζόμενοι στην ισχύουσες συνθήκες ή επίσης μπορεί να μειώνουν και την μέτρησή τους. Η σημασία αυτών των μετρητών είναι να αντικατοπτρίζουν το τι συμβαίνει στους άλλους κόμβους άμεσα ή έμμεσα. Έτσι, θα λέγαμε ότι αυτοί οι μετρητές μας δίνουν και μία τοπική στατιστική άποψη για την ποιότητα του δικτύου. Ακόμη, σύμφωνα με αυτήν την στρατηγική, καθορίζεται ότι αν στατιστικά συμβούν πάρα πολλά σφάλματα σε έναν σταθμό τότε η κατάστασή του αλλάζει από την «ενεργή κατάσταση σφάλματος» στην «παθητική κατάσταση σφάλματος» κατά την οποία πλέον δεν επικοινωνεί με τους υπόλοιπους κόμβους αλλά μπορεί να διαχειρίζεται τα σφάλματα που συμβαίνουν στον δίαυλο. Επίσης, με βάση αυτό πρέπει να διευκρινιστεί ότι αν υπάρχουν πολλά σφάλματα στον δίαυλο τότε αυτός μπορεί να «μπλοκαριστεί» (υπερφορτωθεί) με αποτέλεσμα να διακοπεί η επικοινωνία. Για να αποφευχθεί αυτή η κατάσταση είναι απαραίτητο να οριστεί ένα συγκεκριμένο όριο πέρα από το οποίο κάθε σταθμός θα μεταβαίνει σε ένα τρίτο στάδιο, το λεγόμενο «εκτός διαύλου» ή αλλιώς bus off, κατά το οποίο ο κόμβος είναι αποσυνδεδεμένος πλέον από τον δίαυλο έτσι ώστε να μην τον 51

53 υπερφορτώσει. Αυτό το όριο για τον πρωτόκολλο CAN έχει οριστεί στο 255. Σε αυτή την περίπτωση, ο κόμβος βρίσκεται σε μία κατάσταση παρατήρησης του διαύλου (monitor function). Τα στάδια στα οποία μπορεί να μεταβεί ο κάθε κόμβος μέσω της στρατηγικής περιορισμού σφάλματος φαίνονται στο γράφημα 3.5. Γράφημα Στάδια διαχείρισης σφαλμάτων Το πρωτόκολλο CAN χρησιμοποιεί τους παρακάτω μηχανισμούς ανίχνευσης σφαλμάτων: Παρατήρηση του δίαυλου, Κυκλικός έλεγχος εφεδρείας, Έλεγχος της δομής του μηνύματος, Bit γέμιση (Bit stuffing), Αποδοχή μηνυμάτων, Διάδοση μηνύματος σφάλματος μετά την ανίχνευση. Παρατήρηση του δίαυλου Ο κόμβος-αποστολέας συγκρίνει το σήμα που θέλει να στείλει με αυτό που βρίσκεται στον δίαυλο. Αν τα δύο σήματα είναι διαφορετικά τότε ο αποστολέας στέλνει μία δομή σφάλματος (θα αναλυθεί στη συνέχεια), εκτός από την φάση της διαιτησίας και της αποδοχής ή απόρριψης του μηνύματος. 52

54 Κυκλικός έλεγχος εφεδρείας - CRC Code (Cyclic Redundancy Code) Ο 15-bit CRC κώδικας υπολογίζεται από κάθε bit από την αρχή της δομής του μηνύματος (Start of Frame) έως και το τελευταίο bit δεδομένων. Έλεγχος δομής μηνύματος Η αρχή της δομής του μηνύματος, το κομμάτι της «ηρεμίας» του διαύλου, το τέλος της δομής του μηνύματος κλπ. καθώς και τα τερματικά τους πρέπει να ακολουθούν πιστά τον ορισμό του CAN. Δεν επιτρέπεται καμία δομική παραβίαση. Bit γέμιση (Bit stuffing) Η παραβίαση της τεχνικής bit stuffing μεταξύ της αρχής της δομής του μηνύματος και του CRC κώδικα αποτελεί σφάλμα. Αποδοχή μηνυμάτων Ο αποστολέας της δομής του μηνύματος ή της απομακρυσμένης δομής μηνύματος εκλαμβάνει την απουσία αποδοχής του μηνύματος ως σφάλμα και καταστρέφει το τέλος της δομής μηνύματος δημιουργώντας μία δομή σφάλματος. Διάδοση μηνύματος σφάλματος μετά την ανίχνευση Κάθε σταθμός ο οποίος ανιχνεύει κάποιο σφάλμα ή κάποια δομή σφάλματος από άλλο σταθμό στο δίκτυο, βλέπει την παραβίαση στην τεχνική bit stuffing και στέλνει με την σειρά του ένα μήνυμα σφάλματος Τεχνική κωδικοποίησης Η τεχνική η οποία χρησιμοποιείται στο πρωτόκολλο του CAN, ονομάζεται NRZ τεχνική κωδικοποίησης ή αλλιώς (NRZ coding). Σύμφωνα με αυτήν την τεχνική περιληπτικά θα αναφέρουμε ότι βασίζεται στην αρχή ότι κατά την συνολική διάρκεια ενός bit αυτό δεν αλλάζει την τιμή του και παραμένει σταθερό, είτε είναι «ισχυρό» είτε «αδύναμο». Λόγω του γεγονότος ότι το bit είναι κωδικοποιημένο κατά την τεχνική NRZ, ένα συγκεκριμένο μήνυμα είναι πιθανό να περιέχει πολλά bit της ίδιας τιμής (ίδιου επιπέδου) και έτσι ψευδώς να κάνει κάποιους κόμβους να νομίσουν ότι υπάρχει κάποια ανωμαλία στην επικοινωνία. Έτσι, σε όλη την διαδικασία της κωδικοποίησης, το πρωτόκολλο CAN έχει ορίσει μία τεχνική έτσι ώστε να διασφαλιστεί το περιεχόμενο του κάθε μηνύματος. Αυτή δεν είναι άλλη από την τεχνική, που αναφέρθηκε και πρότερα, bit stuffing κατά την οποία, στον σταθμό αποστολής, έπειτα από 5 bit της ίδιας τιμής (είτε «ισχυρά» είτε «αδύναμα») εισάγεται ένα πρόσθετο bit το οποίο έχει την αντίθετη τιμή από τα προηγούμενα 5, έτσι ώστε να «σπάσει» την ακολουθία και να υποδείξει ότι όλα βαίνουν καλώς. Αυτά τα bit ονομάζονται stuffing bits. Θεωρητικά αυτή η τεχνική προσαυξάνει τον χρόνο αποστολής ενός μηνύματος καθώς αυξάνει τον συνολικό αριθμό bit ανά μήνυμα και έτσι έχει επίδραση στην ταχύτητα της επικοινωνίας καθώς και στις μέγιστες αποστάσεις μεταξύ των κόμβων του συστήματος. Παρ όλα αυτά, διασφαλίζει την ποιότητα στην επικοινωνία. Η υλοποίηση αυτής της τεχνικής γίνεται αντιληπτή με το γράφημα

55 Γράφημα Τεχνική bit γέμισης ή αλλιώς bit stuffing Τέλος, είναι λογικό από την στιγμή που χρησιμοποιείται αυτή η τεχνική κατά την αποστολή, να έχουμε την αντίστοιχη αποκωδικοποίηση κατά την λήψη. Είναι, λοιπόν, προφανές ότι ο παραλήπτης του μηνύματος θα πρέπει να είναι σε θέση να αποκωδικοποιήσει τις δομές και να «αποβάλλει» από αυτές τα stuffing bits έτσι ώστε να αποκωδικοποιήσει την πληροφορία. Αφήνοντας πίσω την ανάλυση στο επίπεδο του κάθε bit, ας προχωρήσουμε στην εξέταση των δομών του πρωτόκολλου CAN Πλαίσια CAN Ένα δίκτυο CAN μπορεί να ρυθμιστεί ώστε να λειτουργεί με δύο διαφορετικούς τύπους μηνύματος ή πλαισίου: το πρότυπο ή βασική μορφή πλαισίου (ή CAN 2.0A), καθώς και την εκτεταμένη μορφή πλαισίου (ή CAN 2.0Β). Η μόνη διαφορά μεταξύ των δύο τύπων είναι ότι η βασική μορφή υποστηρίζει ένα μήκος 11-bit για το αναγνωριστικό, και το εκτεταμένο υποστηρίζει ένα μήκος 29-bit για το αναγνωριστικό, που αποτελείται από το αναγνωριστικό των 11-bit ("base identifier") και από μια επέκταση των 18-bit ("extended identifier"). Η διάκριση μεταξύ του προτύπου CAN και της εκτεταμένης μορφής γίνεται με τη χρήση του Identifier extension bit (IDE). Στην πρώτη περίπτωση μεταδίδεται ως «ισχυρό» bit, ενώ στη δεύτερη περίπτωση μεταδίδεται ως «αδύναμο». Μερικοί ελεγκτές CAN που υποστηρίζουν μηνύματα εκτεταμένης μορφής είναι σε θέση να στέλνουν και να λαμβάνουν μηνύματα σε βασική μορφή CAN πλαισίου. Όλα τα πλαίσια ξεκινούν με ένα start-of-frame (SOF) bit που υποδηλώνει την έναρξη της μετάδοσης του πλαισίου. Το CAN έχει πέντε τύπους πλαισίων: 54

56 Πλαίσιο δεδομένων (Data frame): ένα πλαίσιο που περιέχει τα δεδομένα του κόμβου για τη μετάδοση, Απομακρυσμένο πλαίσιο (Remote frame): ένα πλαίσιο που αιτείται τη μετάδοση από ένα συγκεκριμένο ID, Πλαίσιο σφάλματος (Error frame): ένα πλαίσιο που μεταδίδεται από κάθε κόμβο στην περίπτωση ανίχνευσης σφάλματος, Πλαίσιο υπερφόρτισης (Overload frame): το οποίο χρησιμοποιείται όταν ένας σταθμός θέλει να ζητήσει παραπάνω χρόνο, ανάμεσα στην προηγούμενη και στις επόμενες δομές δεδομένων ή απομακρυσμένες δομές, έτσι ώστε να εκτελέσει κάποιους τοπικούς υπολογισμούς, Πλαίσιο διαπλαισιακής απόστασης (Interframe space): το οποίο διαχωρίζει (χρονικά) τα πλαίσια δεδομένων και τα απομακρυσμένα πλαίσια από τα υπόλοιπα Πλαίσιο δεδομένων (Data frame) Το πλαίσιο δεδομένων είναι το μόνο πλαίσιο για την πραγματική μετάδοση δεδομένων. Υπάρχουν δύο μορφές μηνύματος: Βασική μορφή πλαισίου CAN 2.0A: με αναγνωριστικό των 11-bit. Εκτεταμένη μορφή πλαισίου CAN 2.0B: με αναγνωριστικό των 29-bit. Το πρότυπο CAN απαιτεί η εφαρμογή να πρέπει οπωσδήποτε να αποδεχθεί τη βασική μορφή πλαισίου και να μπορεί να αποδεχθεί την εκτεταμένη μορφή πλαισίου. Βασική μορφή πλαισίου CAN 2.0A Στο γράφημα 3.7 παρουσιάζεται η βασική μορφή του πλαισίου. Γράφημα Βασική μορφή πλαισίου δεδομένων - CAN 2.0A Το πλαίσιο δεδομένων, όπως φαίνεται και παραπάνω μπορεί να χωριστεί στους εξής τομείς: Start-of-Frame (SOF), Arbitration field - Identifier (ID) field, Control field, 55

57 Data field, Cycle Redundancy Check (CRC) field, Acknowledgement field (ACK), End-of-Frame (EOF). (a) Start-of-Frame (SOF) H έναρξη του frame αποτελείται από ένα «ισχυρό» bit, το οποίο διαδίδεται σε όλους τους αποδέκτες και σηματοδοτεί την έναρξη της επικοινωνίας. Αυτό μπορεί να συμβεί μόνο εάν η πρότερη κατάσταση του διαύλου επικοινωνίας ήταν αυτή της «σιγής». (b) Arbitration field -Identifier (ID) field Το κομμάτι του frame το οποίο αναφέρεται στην διαιτησία του διαύλου αποτελείται από μία σειρά από bits τα οποία καταμερίζονται στο εκάστοτε μήνυμα και προσδιορίζουν την σειρά προτεραιότητάς του στην φάση του ελέγχου προτεραιότητας. Αυτή η σειρά των bits αποτελείται από δύο κομμάτια: Τα bit του αναγνωριστικού αριθμού (ID) κάθε μηνύματος, Και ένα bit το οποίο ακολουθεί αυτό το αναγνωριστικό και ονομάζεται RTR (Remote Transmission Request) ή αλλιώς «αίτημα για απομακρυσμένη αποστολή». Πιο αναλυτικά: Το κομμάτι του αναγνωριστικού αριθμού κάθε μηνύματος αποτελείται από 11 συνεχόμενα bit, τα οποία μεταδίδονται από το ID_10 προς το ID_0, με το ελάχιστα σημαντικό να είναι το ID_0. Ένα σημαντικό σημείο που πρέπει να τονιστεί είναι ότι απαγορεύεται τα 7 πιο σημαντικά bit του αναγνωριστικού αριθμού (δηλαδή από το ID_10 έως το ID_4) να είναι όλα «αδύναμα» bit. To bit RTR, το οποίο πρέπει πάντα να είναι ένα «ισχυρό» bit. (c) Control field Το κομμάτι του ελέγχου αποτελείται από 6 bit. Αυτά χωρίζονται ως εξής: Τα πρώτα 2 bit (Identifier Extension bit-ide, Reserved Bit-r0) τα οποία είναι «ισχυρά» (στο CAN 2.0A) αποτελούν μία ενότητα η οποία αποτελεί ρεζέρβα για κάποια μελλοντική επέκταση του πρωτοκόλλου και για μελλοντικές ανάγκες. Τα επόμενα 4 bit (Data Length Code-DLC) αποτελούν το κομμάτι του τομέα ελέγχου το οποίο περιέχει τον αριθμό των bytes που εμπεριέχει το data field. Δηλαδή ουσιαστικά το μέγεθος της πληροφορίας που ακολουθεί. 56

58 (d) Data field Το κομμάτι του τομέα δεδομένων πρόκειται ουσιαστικά για το κομμάτι το οποίο μεταφέρει την πληροφορία προς επεξεργασία από τον κάθε κόμβο. Στο κομμάτι αυτό, το οποίο μπορεί να αποτελείται από 0 έως και 8 bytes (0-64 bits), τα δεδομένα μεταφέρονται αρχίζοντας από το πλέον σημαντικό προς το λιγότερο σημαντικό bit. (e) Cyclic Redundancy Check CRC field Το αμέσως ακόλουθο κομμάτι είναι αυτό του κώδικα επαλήθευσης (Cycle Redundancy Code) το οποίο αποτελεί και το κριτήριο του διαύλου για την επαλήθευση της σωστής αποστολή και παραλαβής του μηνύματος. Η ακολουθία αυτή αποτελείται από τον μέγιστο αριθμό των 15 bit. Το κομμάτι του κώδικα επαλήθευσης αποτελείται από δύο ενότητες. Στην μία συμπεριλαμβάνεται η περιοχή του κώδικα και η άλλη είναι μία περιοχή που σηματοδοτεί τον τερματισμό του κώδικα επαλήθευσης και ονομάζεται CRC Delimiter. Ο CRC κώδικας ο οποίος χρησιμοποιείται από τους διαχειριστές των CAN διαύλων είναι της μορφής BCH κώδικα ο οποίος έχει τα ακόλουθα χαρακτηριστικά: Μέγιστο μέγεθος κώδικα 127 bit, Μέγιστο αριθμό bit τα οποία αναφέρονται σε πληροφορία: 112 bit, Μήκος ακολουθίας CRC: 15 bit, Απόσταση Hamming: d = 6. Σημείωση: Στην θεωρία πληροφορίας, ως απόσταση Hamming μεταξύ δύο συμβολοσειρών ίσου μήκους ορίζεται ο αριθμός θέσεων στις οποίες τα αντίστοιχα σύμβολα είναι διαφορετικά. Η απόσταση Hamming, μετρά τον ελάχιστο αριθμό αντικαταστάσεων που χρειάζονται ώστε να μετατραπεί η μία συμβολοσειρά στην άλλη. Σε αυτήν την περίπτωση, (d 1) = 5, με άλλα λόγια πέντε ανεξάρτητα σφάλματα bit είναι 100% ανιχνεύσιμα μέσα στον κώδικα αποστολής. Ο κώδικας BCH (Bose-Chaudhuri-Hocquenghem) πρόκειται για έναν κώδικα της κλάσης του κώδικα κυκλικής διόρθωσης σφαλμάτων ή αλλιώς cyclic error-correcting code και ο οποίος είναι κατασκευασμένος χρησιμοποιώντας πεπερασμένα σώματα (finite fields), τα οποία καλούνται έτσι αν το πλήθος των στοιχείων τους είναι πεπερασμένο. Ένα από τα χαρακτηριστικά του BCH κώδικα είναι ότι κατά την φάση της σχεδίασής του, υπάρχει ακριβής έλεγχος του αριθμού των σφαλμάτων που διορθώνονται από τον κώδικα. Στην πραγματικότητα, είναι δυνατόν να σχεδιαστεί BCH κώδικας που να είναι ικανός να διορθώσει πολλαπλά σφάλματα bit. Ένα άλλο πλεονέκτημα έγκειται στο γεγονός της ευκολίας αποκωδικοποίησης, στοιχείο που διευκολύνει τον σχεδιασμό αποκωδικοποιητών. 57

59 Η πιο πάνω ακολουθία υπολογίζεται με βάση την παρακάτω διαδικασία: Το κομμάτι που αποτελείται από bit από το Start-of-Frame έως το τέλος του data frame, μεταγλωττίζεται ως ένα πολυώνυμο f(x) με συντελεστές 0 και 1 σε κάθε «αδύναμο» ή «ισχυρό» bit. Το πιο πάνω πολυώνυμο f(x) διαιρείται με την τεχνική modulo 2, με το πολυώνυμο: το οποίο σε δυαδική μορφή διαμορφώνεται ως: g(x) = X 15 + X 14 + X 10 + X 8 + X 7 + X 4 + X g(x) = Ακολούθως, το υπόλοιπο της modulo 2 διαίρεσης διαμορφώνει την 15-bit CRC ακολουθία, η οποία βασίζεται και στην πληροφορία του μηνύματος καθιστώντας έτσι την εύρεση σφαλμάτων πιο ικανοποιητική. Αυτός ο 15-bit CRC κώδικας είναι και αυτός που διαδίδεται στο CRC field κατά την διάρκεια της ακολουθίας επαλήθευσης (CRC sequence). Αυτή η ακολουθία ελέγχεται κατά την λήψη και την αποστολή του μηνύματος ώστε να εντοπιστεί τυχόν διαφοροποίηση με βάση την υπολογισθέντα, στοιχείο που προδίδει σφάλμα στην επικοινωνία και πιθανόν λανθασμένο μήνυμα. Γενικότερα και όσον αφορά την εκλογή επαλήθευσης σαν και την προαναφερθείσα, επιλέχθηκε μία τέτοια μορφή κώδικα (CRC) διότι έχεις τις ακόλουθες ιδιότητες: Απλότητα στην κωδικοποίηση και την αποκωδικοποίηση Ευχέρεια στον εντοπισμό και στην διόρθωση διακριτών σφαλμάτων αλλά και σφαλμάτων που εμφανίζονται σε πακέτα. Θα πρέπει σίγουρα να τονισθεί ότι ο BCH κώδικας εκλέχθηκε ανάμεσα σε άλλους σειριακούς κώδικες λόγω της μεγάλης απόδοσής του καθώς και για το γεγονός ότι είναι ένας κώδικας με μεγάλη ικανότητα διόρθωσης διακριτών σφαλμάτων. Τέλος, η διαδικασία της κωδικοποίησης και της αποκωδικοποίησης είναι αρκετά απλή με χρήση απλών καταχωρητών ολίσθησης. Βέβαια, στατιστικά δεδομένα δείχνουν ότι πολλαπλά σφάλματα τα οποία έχουν παραπάνω από 6 bit διαφορετικά σε όλο το frame, δεν μπορούν να ανιχνευτούν με πιθανότητα 2 15 για τον τομέα του κώδικα επαλήθευσης και μόνο. Τέλος, για τον τερματισμό του τομέα του κώδικα επαλήθευσης υπάρχει ένα bit, το CRC τερματικό bit ή αλλιώς CRC Delimiter. (f) Acknowledgement field (ACK) Αυτός το τομέας του frame αποτελείται από δύο συνολικά bit. 58

60 Το πρώτο ονομάζεται ACK slot στο οποίο κατά την λήψη του μηνύματος ο παραλήπτης σε αυτή τη θέση στέλνει ένα «ισχυρό» bit, το οποίο σημαίνει ότι έχει παραληφθεί σωστά το μήνυμα και έχει ελεγχθεί και ο κώδικας επαλήθευσης και έτσι δεν υπάρχει κάποιο σφάλμα. Αυτό το «ισχυρό» bit έρχεται να αντικαταστήσει το «αδύναμο» bit το οποίο ήταν μέχρι πρότινος σε αυτή την θέση. Από την άλλη μεριά, αν ένας αποστολέας εντοπίσει ένα «ισχυρό» bit στην θέση του ACK slot τότε σημαίνει ότι τουλάχιστον ένας παραλήπτης έχει διαβάσει σωστά το μήνυμα. Όλοι οι παραλήπτες είναι υποχρεωμένοι να αποστείλουν μήνυμα αποδοχής («ισχυρό» bit στο ACK slot) εφόσον έχουν παραλάβει το μήνυμα και δεν έχουν εντοπίσει κάποιο σφάλμα, χωρίς αυτό να σημαίνει ότι αποδέχονται ή απορρίπτουν το μήνυμα (δηλ. ότι ενδιαφέρονται για αυτό ή όχι). Σε αντίθετη περίπτωση το μήνυμα εκλαμβάνεται σαν εσφαλμένο και δεν αποστέλλεται μήνυμα αποδοχής και σύμφωνα με το πρωτόκολλο του CAN, ο παραλήπτης πρέπει να ενημερώσει για τα σφάλματα που έχει εντοπίσει στέλνοντας στον δίαυλο ένα frame σφάλματος. Το δεύτερο και τελευταίο bit, είναι αυτό του ACK Delimiter. Αυτό το bit πρέπει πάντα να είναι «αδύναμο» ώστε να έχουμε σωστή λήψη του μηνύματος από όλους τους κόμβους του διαύλου. Έτσι, το ACK slot bit παρεμβάλλεται ανάμεσα από δύο αδύναμα bit. Αυτό του CRC Delimiter και αυτό του ACK Delimiter. (g) End-of-Frame field Ο τερματισμός του frame πραγματοποιείται από μία σημαία (flag) η οποία αποτελείται από μία ακολουθία των 7 «αδύναμων» bit, το οποίο πρέπει να τονιστεί ότι είναι κατά 2 bit μεγαλύτερη από το μέγεθος της τεχνικής stuffing. Εκτεταμένη μορφή πλαισίου CAN 2.0B Στο γράφημα 3.8 παρουσιάζεται η εκτεταμένη μορφή του πλαισίου. Γράφημα Εκτεταμένη μορφή πλαισίου δεδομένων - CAN 2.0B Οι μόνες διαφορές που εντοπίζονται στην εκτεταμένη μορφή πλαισίου CAN 2.0B σε σύγκριση με την βασική μορφή CAN 2.0A είναι στο κομμάτι του Arbitration field και στο κομμάτι του Control field. Πιο συγκεκριμένα: 59

61 (a) Arbitration field Identifier (ID) field Αποτελείται από 11 bit του Identifier A ο οποίος αποτελεί το πρώτο σκέλος του μοναδικού αναγνωριστικού αριθμού για τα δεδομένα. Στη συνέχεια έχουμε την παρουσία του Substitute Remote Request SRR το οποίο είναι ένα «αδύναμο» bit. Ακολουθεί ένα ακόμη «αδύναμο» bit, αυτό του Identifier Extension bit IDE και το συγκεκριμένο κομμάτι τελειώνει με τα 18 bit του Identifier B, το οποίο πρόκειται για το δεύτερο σκέλος του μοναδικού αναγνωριστικού αριθμού ID για τα δεδομένα, και με το bit του Remote Transmission Request -RTR που είναι πάντα ένα «ισχυρό» bit. (b) Control field Η μόνη διαφορά στο κομμάτι του Control field είναι ότι υπάρχει ένα παραπάνω reserved bit το r1, το οποίο είναι πάντα ένα «ισχυρό» bit Απομακρυσμένο πλαίσιο (Remote frame) Το remote frame πρόκειται για ένα πλαίσιο το οποίο το αποστέλλει κάποιος κόμβος όταν θέλει να συλλέξει συγκεκριμένες πληροφορίες. Γενικότερα, οι κόμβοι αποστέλλουν δεδομένα χωρίς να γνωρίζουν εάν αυτά ενδιαφέρουν κάποιον άλλο κόμβο, αν δηλαδή η πληροφορία που στέλνουν είναι σε κάποιον άλλο χρήσιμη. Με το remote frame, λοιπόν, κάθε κόμβος μπορεί να ζητήσει από τους άλλους κόμβους να του αποσταλεί συγκεκριμένη πληροφορία. Η δομή του απομακρυσμένου πλαισίου είναι ίδια με αυτή ενός πλαισίου δεδομένων εκτός από δύο διαφορές: Το RTR-bit μεταδίδεται ως κυρίαρχο bit του πλαισίου δεδομένων, Στο απομακρυσμένο πλαίσιο δεν υπάρχει πεδίο δεδομένων, δηλαδή, RTR = 0, υποδηλώνει «ισχυρό» bit στο πλαίσιο δεδομένων, και RTR = 1, υποδηλώνει «αδύναμο» bit στο απομακρυσμένο πλαίσιο. Στην πολύ απίθανη περίπτωση που ένα πλαίσιο δεδομένων και ένα απομακρυσμένο πλαίσιο με ίδιο ID μεταδίδονται ταυτόχρονα, θα προηγηθεί το πλαίσιο δεδομένων γιατί έχει RTR = 0 («ισχυρό» bit) μετά το ID. Με αυτό τον τρόπο, ο κόμβος που μεταδίδει το απομακρυσμένο πλαίσιο λαμβάνει τα επιθυμητά δεδομένα άμεσα. Στο γράφημα 3.9 παρουσιάζεται η δομή του απομακρυσμένου πλαισίου. Γράφημα Απομακρυσμένο Πλαίσιο - Remote frame 60

62 Πλαίσιο σφάλματος (Error frame) Πρόκειται για ένα πολύ σημαντικό πλαίσιο στην λειτουργία του διαύλου καθώς ενημερώνει όλους τους κόμβους για την ύπαρξη προβλημάτων και σφαλμάτων στην επικοινωνία. Αυτή η δομή όπως και η προηγούμενη αποτελείται από δύο μέρη: Error flag field, Error delimiter, Αυτά προηγούνται του πλαισίου interframe space. (a) Error flag field Το μέρος αυτό αποτελείται από τις σημαίες σφάλματος που έχουν δημιουργήσει οι διάφοροι σταθμοίκόμβοι του διαύλου. Υπάρχουν δύο τύποι σημαίας: Η ενεργή σημαία (active error flag), η οποία αναφέρεται σε σταθμούς ενεργών σφαλμάτων, Η παθητική σημαία (passive error flag), η οποία αναφέρεται σε σταθμούς παθητικών σφαλμάτων. Η ενεργή σημαία, η οποία διαδίδεται από έναν σταθμό σε κατάσταση ενεργού σφάλματος, αποτελείται από 6 «ισχυρά» bit. Από την φύση τους οι ενεργές σημαίες, αφού έχουν 6 συνεχόμενα «ισχυρά» bit καταστρέφουν την δομή της τεχνικής stuffing η οποία υλοποιείται στην από την έναρξη του frame έως και τον CRC delimiter καθώς επίσης υπάρχει περίπτωση να καταστρέψουν και την δομή του τομέα επαλήθευσης αποδοχής δεδομένων όπως και του τερματισμού του frame καθώς αυτά τα κομμάτια αποτελούνται από «αδύναμα» bit. Τότε, οι υπόλοιποι κόμβοι του διαύλου εντοπίζουν την ύπαρξη της σημαίας σφάλματος και προχωρούν στην έναρξη της διάδοσης του δικού τους error frame το οποίο αποτελείται από μία παθητική ή ενεργή σημαία αναλόγως της κατάστασης στην οποία βρίσκονται. Έτσι, η υπέρ-σύνθεση αυτών των bit αποτελούν το πρώτο μέρος του error frame. Το CAN ορίζει το πλήρες μέγεθος αυτής της ακολουθίας το οποίο ποικίλει από 6 bit (το μήκος μίας ενεργής σημαίας) έως και 12 bits, προλαμβάνοντας έτσι την πλήρωση του διαύλου και το μπλοκάρισμα αυτού. Γράφημα Πλαίσιο σφάλματος (Error frame) Ενεργή σημαία 61

63 Από την άλλη, στην περίπτωση όπου κάποιος κόμβος είναι σε κατάσταση παθητικού σφάλματος και ο οποίος εντοπίζει μία κατάσταση σφάλματος, «προσπαθεί» να το διαδώσει με την αποστολή μίας σημαίας παθητικούς σφάλματος. Εξ ορισμού, μία παθητική σημαία σφάλματος αποτελείται από 6 συνεχόμενα «αδύναμα» bit εκτός και αν αυτά τα bit υπερκαλυφθούν από «ισχυρά» bit που διαδίδονται από κάποιον άλλον κόμβο. Γράφημα Πλαίσιο σφάλματος (Error frame) - Παθητική σημαία (b) Error Delimiter Ο τερματισμός του error frame γίνεται με μία σειρά από 8 «αδύναμα» bit τα οποία διαμορφώνουν τον λεγόμενο error delimiter. Μετά την αποστολή της σημαίας σφάλματος κάθε κόμβος στέλνει «αδύναμα» bit και παρατηρεί τον δίαυλο μέχρις ότου εντοπίσει μία μεταβολή από «ισχυρό» σε «αδύναμο» επίπεδο. Σε αυτό το σημείο η διάδοση της σημαίας σφάλματος και του πρώτου bit του error delimiter και προχωράει στην αποστολή των υπόλοιπων 7 bit για την ολοκλήρωσή του Πλαίσιο υπερφόρτισης (Overload frame) Υπάρχει ένα ακόμα πλαίσιο, αυτό της υπερφόρτισης ή αλλιώς overload frame το οποίο υπάρχει ώστε να υποδεικνύεται σε όλους τους κόμβους του διαύλου ότι κάποιος σταθμός-κόμβος είναι υπερφορτισμένος για κάποιο χρονικό διάστημα. Το πλαίσιο υπερφόρτισης απαρτίζεται από δύο κομμάτια. Το ένα είναι το κομμάτι της σημαίας υπερφόρτισης ή αλλιώς Overload Flag Field (OLF) και το δεύτερο πρόκειται για το τερματικό bit του overload frame δηλαδή το overload delimiter. 62

64 Γράφημα Πλαίσιο υπερφόρτισης (Overload frame) Στο γράφημα 3.12 παρατηρούμε την δομή του πλαισίου υπερφόρτισης. Το πρώτο μέρος, όπως αναφέρθηκε παραπάνω, αποτελείται από 6 «ισχυρά» bit το οποίο υποδεικνύει ενεργή κατάσταση υπερφόρτισης. Από την στιγμή αυτή, κάθε κόμβος στον δίαυλο ο οποίος αντιλαμβάνεται το πλαίσιο υπερφόρτισης ξεκινάει να διαδίδει και αυτός ένα ίδιο πλαίσιο. Το τελευταίο bit του πλαισίου υπερφόρτισης είναι αυτό του τερματικού. Εξ ορισμού, αυτό το bit (overload delimiter) αποτελείται από 8 «αδύναμα» bit. Μετά την αποστολή ενός πλαισίου υπερφόρτισης, ο κάθε κόμβος παρατηρεί τον δίαυλο έως ότου εντοπίσει μία μεταβολή από ένα «ισχυρό» bit σε ένα «αδύναμο» bit. Σε αυτό το σημείο ο κάθε κόμβος σταματάει να διαδίδει την σημαία υπερφόρτισης και ξεκινάει την διάδοση 7 συνεχόμενων «αδύναμων» bit. Στο γράφημα 3.13 παρατηρούμε τα προαναφερθέντα: Γράφημα Πλαίσιο υπερφόρτισης (Overload frame) Πλαίσιο διαπλαισιακής απόστασης (Interframe space) Το data frame καθώς και το remote frame διαχωρίζονται από τις άλλες δομές frame, από ένα πλαίσιο το οποίο περιέχει τα bit του λεγόμενου interframe space. Παρόλα αυτά, το overload frame καθώς και το error frame δεν ακολουθούνται από την δομή του interframe space. Αυτό λοιπόν, αποτελείται από: Τομέας intermission, Τομέας ηρεμίας διαύλου (bus idle), Στην περίπτωση που υπάρχουν κόμβοι παθητικών σφαλμάτων, ο τομέας suspend transmission. 63

65 (a) Τομέας intermission Αυτός ο τομέας αναφέρεται στην κατάσταση κατά την οποία κανένας κόμβος του διαύλου δεν επιτρέπεται να ξεκινήσει την αποστολή κάποιου πλαισίου εκτός και αν πρόκειται για πλαίσιο υπερφόρτισης. (b) Τομέας ηρεμίας διαύλου (bus idle) Στην περίοδο αυτού του τομέα ο δίαυλος είναι σε «ηρεμία». Έτσι, ο δίαυλος είναι ελεύθερος ώστε οποιοσδήποτε κόμβος να έχει πρόσβαση σε αυτόν και να στείλει δεδομένα. Με το πλαίσιο του interframe space, ολοκληρώνεται η ανάλυση των πλαισίων του CAN Καλωδίωση Γενικά, υπάρχουν δύο τρόποι καλωδίωσης οι οποίοι χρησιμοποιούνται στα δίκτυα CAN. Το απλό παράλληλο διαφορικό ζεύγος καλωδίων και το συνεστραμμένο ζεύγος καλωδίων. Και στους δύο τρόπους με ή χωρίς προστασία. Οι παράλληλες γραμμές, λόγω του διαφορικού σήματος του δίαυλου CAN, μπορεί να προκαλέσουν ηλεκτρομαγνητικές παρεμβολές και αυτός είναι ο λόγος που προτιμώνται συνεστραμμένα ζεύγη καλωδίων. Τα ενισχυμένα καλώδια με έξτρα προστασία κατά των ηλεκτρομαγνητικών παρεμβολών θεωρητικά είναι μία πολύ καλύτερη λύση, παρ όλα αυτά είναι πολύ ακριβά σε σύγκριση με τα απλά καλώδια τα οποία εν τέλει προτιμώνται, πολλές φορές, όταν γίνεται η τελική επιλογή. Bit rate Απόσταση 1 Mb/s 40 m 500 kb/s 130 m 250 kb/s 270 m Πίνακας 2. Μέγιστη απόσταση σε σχέση με την ταχύτητα του δίαυλου Η μέγιστη απόσταση μεταξύ δύο κόμβων σε διάταξη point-to-point σε ένα δίκτυο CAN εξαρτάται από το bit rate που θα επιλεγεί, δηλαδή την ταχύτητα του διαύλου όπως φαίνεται και στον πίνακα 2. Επίσης, το μήκος της κάθε διακλάδωσης σε ένα τέτοιο δίκτυο, επηρεάζεται από την ταχύτητα αποστολής. Έτσι, αν εκλεγεί μία ταχύτητα της τάξης του 1 Mbit/s, η διακλάδωση δεν μπορεί να ξεπερνά τα 30 cm. Τέλος, οι ακροδέκτες δεν έχουν τυποποιηθεί από τον ορισμό του CAN και έτσι χρησιμοποιείται ο απλός 9-Pin DSUB ακροδέκτης. Στο γράφημα 3.14 παρουσιάζεται η παρουσία του σήματος στα δύο καλώδια, CAN_L και CAN_H. 64

66 Γράφημα Σήμα CAN διαύλου στα δύο καλώδια, CAN_L και CAN_H Τοπολογία Δικτύου Η πιο χρησιμοποιούμενη τοπολογία δικτύου CAN είναι αυτή του διαύλου. Τυπικά, έχει 120 Ω χαρακτηριστική αυτεπαγωγή και τερματισμό και στις δύο άκρες του διαύλου. Υποστηρίζονται δίαυλοι με ένα και με δύο καλώδια καθώς και με κάποιο οπτικό μέσο πχ. Οπτικές ίνες Πρότυπα Υπάρχουν αρκετά πρότυπα φυσικού στρώματος για δίκτυα CAN: ISO : CAN Data Link Layer and Physical Signaling. ΙSO : CAN High-Speed Medium Access Unit. ISO : CAN Low-Speed, Fault-Tolerant, Medium-Dependent Interface. ISO : CAN Time-Triggered Communication. ISO : CAN High-Speed Medium Access Unit with Low-Power Mode. ISO : CAN High-speed medium access unit with selective wake-up functionality. ISO : CAN fault-tolerant for truck/trailer communication. ISO : 250 kbit/s, Agricultural Standard. SAE J : 250 kbit/s, Shielded Twisted Pair (STP). SAE J : 250 kbit/s, Unshielded Twisted Pair (UTP) (reduced layer). SAE J2411: Single-wire CAN (SWC). ΙSO : Uses a two-wire balanced signaling scheme. It is the most used physical layer in car powertrain applications and industrial control networks. ISO : Defines the time-triggered communication on CAN (TTCAN). It is based on the CAN data link layer protocol providing a system clock for the scheduling of messages. SAE J1939: Uses a two-wire twisted pair, 11 has a shield around the pair while 15 does not. SAE 1939 is widely used in heavy-duty (truck) and autobus industry as well as in agricultural & construction equipment. 65

67 ISO : Uses four unshielded twisted wires; two for CAN and two for terminating bias circuit (TBC) power and ground. This bus is used on agricultural tractors. This bus is intended to provide interconnectivity with any implementation adhering to the standard Εφαρμογές υψηλότερων στρωμάτων Καθώς το πρότυπο CAN δεν περιλαμβάνει τα καθήκοντα των πρωτοκόλλων επιπέδου εφαρμογής, όπως τον έλεγχο ροής δεδομένων, τη διευθυνσιοδότηση συσκευών, τη μεταφορά μπλοκ δεδομένων μεγαλύτερων από ένα μήνυμα και πάνω από όλα τα δεδομένα εφαρμογής. Για το λόγο αυτό δημιουργήθηκαν πολλές εφαρμογές των υψηλότερων στρωμάτων. Αρκετές είναι τυποποιημένες για ένα επιχειρηματικό τομέα, αν και όλες μπορούν να επεκταθούν από κάθε κατασκευαστή. Για παράδειγμα, στα επιβατικά αυτοκίνητα, κάθε κατασκευαστής έχει το δικό του πρότυπο. Ανάμεσα σε αυτές τις εφαρμογές είναι: ARINC825 (for the aviation industry), CANaerospace (for the aviation industry), CAN Kingdom, CANopen (used for industrial automation), CCP / XCP, DeviceNet (used for industrial automation), EnergyBus (used for electrical vehicles), GMLAN (for General Motors), ISO , ISO or ISOBUS (agriculture), ISO 14229, SAE J1939 (heavy road vehicles), MilCAN, NMEA 2000 (marine industry), RV-C (used for recreational vehicles), SafetyBUS p (used for industrial automation), SmartCraft, Smart Distributed System (SDS), VHCP (used for building automation) Ασφάλεια Το CAN είναι ένα χαμηλού επιπέδου πρωτόκολλο και δεν υποστηρίζει εγγενώς τα χαρακτηριστικά ασφαλείας. Οι εφαρμογές αναπτύσσουν τους δικούς τους μηχανισμούς ασφαλείας, όπως για τον αμοιβαίο έλεγχο ταυτότητας. Σε οποιαδήποτε άλλη περίπτωση, αν κάποιος εισάγει μηνύματα στο δίκτυο μπορεί να προκαλέσει διάφορα είδη επιθέσεων. Υπάρχουν μηχανισμοί με κωδικούς για τη μεταφορά δεδομένων που 66

68 μπορούν να τροποποιήσουν το λογισμικό της μονάδας ελέγχου, όπως τη λήψη λογισμικού ή την τοποθέτηση κωδικών ασφάλειας, πράγμα το οποίο δεν συνηθίζεται στην απλή επικοινωνία. 3.2 FlexRay Το πρωτόκολλο CAN από την φύση του αποστέλλει πλαίσια επικοινωνίας όταν συμβεί κάποιο γεγονός. Πρόκειται, δηλαδή, για έναν δίαυλο διεγερμένο από γεγονότα. Αυτό συμβαίνει διότι ένας κόμβος συχνά στέλνει ένα μήνυμα είτε ως «αντίδραση» σε μία «δράση» είτε επειδή του ζητήθηκε να στείλει την συγκεκριμένη πληροφορία από κάποιον άλλο κόμβο. Όπως αναλύθηκε στα προηγούμενα κεφάλαια, τα μηνύματα CAN είναι ταξινομημένα ιεραρχικά με βάση την προτεραιότητα που τους δίνεται στην φάση της σχεδίασης του δικτύου, δίνοντας την κατάλληλη τιμή στον αναγνωριστικό αριθμό κάθε κόμβου. Θεωρητικά, κανένας κόμβος δεν είναι ενήμερος αν το μήνυμά του έχει αποσταλεί κατευθείαν, λόγω της διαιτησίας και της διαχείρισης διενέξεων του δικτύου η οποία βασίζεται στους αναγνωριστικούς αριθμούς κάθε κόμβου. Αυτό σημαίνει ότι η επικοινωνία μέσω CAN είναι «πιθανοτική» λόγω της διαιτησίας. Στο επίπεδο του timing, αυτή η συμπεριφορά δημιουργεί μία εξάρτηση της επικοινωνίας και των καθυστερήσεων σε αυτήν, με την πιθανότητα εμφάνισης των «σωστών» τιμών αναγνωριστικών αριθμών στον δίαυλο. Το μόνο αληθινά «ντετερμινιστικό» μήνυμα είναι αυτό με αναγνωριστικό αριθμό 0000 (hex). Σε αντίθεση, η μόνη καθυστέρηση για αυτό το ID ισούται με ένα πλαίσιο CAN, μείον ένα bit, συν τον χρόνο του διαπλαισιακής απόστασης (3 bit). Όσον αφορά τα υπόλοιπα ID, η είσοδός τους στον δίαυλο είναι καθαρά πιθανοτική, αναλόγως των ID που επιχειρούν να «καταλάβουν» κάθε φορά τον δίαυλο. Επίσης, η πιθανότητα να συμβεί αυτό είναι πολύ μεγάλη καθώς σε περίπτωση που ο δίαυλος είναι κατειλημμένος, κάτι που συμβαίνει κατά κόρον, οι υπόλοιποι κόμβοι οι οποίοι δεν μπόρεσαν να τον καταλάβουν πρέπει να περιμένουν την κατάλληλη στιγμή ώστε να επιχειρήσουν ξανά. Αυτή η στιγμή είναι αμέσως μετά την φάση του πλαισίου διαπλαισιακής απόστασης, όταν όλοι οι κόμβοι ταυτόχρονα επιχειρούν να στείλουν δεδομένα, κάτι το οποίο θα εξαρτηθεί από την διαιτησία. Έτσι, εγείρεται ένα πρόβλημα, εάν επιδιώκεται η ύπαρξη επικοινωνίας σε συγκεκριμένες στιγμές, ή αλλιώς εάν επιδιώκεται, διακριτότητα. Το CAN δεν μπορεί να καλύψει αυτή την ανάγκη λόγω του τρόπου λειτουργίας που παρουσιάστηκε στα προηγούμενα κεφάλαια. Έτσι, ήταν αναγκαίο να δημιουργηθεί ένα σύστημα στο οποίο συγκεκριμένες ενέργειες να διεγείρονται σε συγκεκριμένες χρονικές στιγμές. Αυτά τα συστήματα ονομάζονται συστήματα διεγειρόμενα από χρόνο και ένα πολύ φιλόδοξο επιχείρημα είναι αυτό του πρωτόκολλου FlexRay το οποίο θα αναλυθεί στις επόμενες ενότητες. Τα συστήματα που διεγείρονται από χρονικές στιγμές ονομάζονται και συστήματα πραγματικού χρόνου ή real-time systems. Όταν ένα σύστημα πρέπει να λειτουργήσει σε real time (κάτι το οποίο δεν υπάρχει θεωρητικά αλλά πρόκειται για λεκτικό πλεονασμό), το κύριο πρόβλημα που δημιουργείται είναι όταν απαιτείται η πληροφόρηση για το εάν η επικοινωνία έγινε την συγκεκριμένη χρονική στιγμή ή στη συγκεκριμένη χρονική θυρίδα (timeslot) ή όχι, στοιχείο το οποίο χαρακτηρίζει την επικοινωνία διακριτή (ντετερμινιστική). Όπως παρουσιάστηκε πριν το CAN δεν μπορεί να ανταποκριθεί σε κάτι τέτοιο. Σε αυτές τις περιπτώσεις, πρέπει να καθιερωθεί, στα ανώτερα στρώματα του μοντέλου OSI, ένα μικρό λειτουργικό σύστημα το οποίο θα καθορίζει χρονικά παράθυρα για τα δεδομένα που στέλνονται στο δίκτυο. 67

69 Θεωρητικά, δεν υπάρχουν όρια στις μεθόδους καθιέρωσης τέτοιων χρονικών παραθύρων. Η μόνη δυσκολία έγκειται στην διασφάλιση τέλειου συγχρονισμού μεταξύ των κόμβων. Αυτό δημιουργεί την ανάγκη να αποστέλλεται ένα «ρολόι αναφοράς (reference clock) σε όλο το δίκτυο έτσι ώστε να ρυθμίζονται τα ρολόγια όλων των συμμετεχόντων. Σημείωση: Για να διασφαλισθεί η κατανόηση των παρακάτω, θα πρέπει να προστεθεί ότι ο όρος «πραγματικού χρόνου» ή αλλιώς real-time χρησιμοποιείται για να ορίσει γνωστές καθυστερήσεις στην επικοινωνία. Με άλλα λόγια, ένα σύστημα λέγεται πραγματικού χρόνου όταν, αφού έχει σχεδιαστεί και υλοποιηθεί εκπληρώνοντας όλες τις απαιτήσεις του, είναι εγγυημένη η επικοινωνία σε συγκεκριμένες χρονικές στιγμές, γνωρίζοντας, δηλαδή, από πριν, τις καθυστερήσεις που θα συναντήσει Η γέννηση του FlexRay Η γέννηση του FlexRay πραγματοποιήθηκε με την δημιουργία μιας ομάδας βιομηχάνων οι οποίοι αποφάσισαν να δημιουργήσουν μία εκτενή τεχνική ανάλυση των δικτύων που ήδη υπήρχαν και τα οποία χρησιμοποιούνταν ή μπορούσαν να χρησιμοποιηθούν στην αυτοκινητοβιομηχανία. Αυτά είναι το CAN, TTCAN, TCN, TTP/C, Byteflight. Επίσης, σκοπός τους ήταν να κρίνουν αν αυτά μπορούν να ανταποκριθούν στις μελλοντικές επιθυμίες και ανάγκες των εφαρμογών των επόμενων δεκαετιών. Σύντομα ανακάλυψαν ότι αυτό δεν είναι δυνατό και για αυτό προχώρησαν στον ορισμό μιας νέας πρότασης η οποία αργότερα ονομάστηκε FlexRay. Από τα πρωτόκολλα που ερευνήθηκαν καταλήξανε στα εξής συμπεράσματα: CAN: Δεν έχει αρκετά υψηλή ταχύτητα μετάδοσης των δεδομένων, στοιχείο το οποίο απαιτούνε οι εφαρμογές του σήμερα και του αύριο. Επίσης, το CAN δεν θα αντικατασταθεί από το FlexRay αλλά θα συνεργαστεί με αυτό, συμπληρώνοντας το. TTCAN: Γενικά, έχει τα ίδια χαρακτηριστικά όρια με το CAN. Ακόμη, δεν υπάρχει υποστήριξη οπτικών μέσων μετάδοσης, εφεδρείας, ανοχή σε σφάλματα και κάποιου bus guardian. TTP/C: Το μέγεθος της πληροφορίας που μπορεί να μεταφέρει, κρίθηκε πολύ μικρό. Επίσης, δεν είναι τόσο ευέλικτο όσο το FlexRay. Byteflight: Έχει πολύ λίγες συναρτήσεις και μπορεί να χρησιμοποιηθεί παράλληλα με το FlexRay με την προϋπόθεση ότι το δεύτερο θα χρησιμοποιηθεί μόνο σε ασύγχρονη (δυναμική) λειτουργία Το FlexRay Consortium Ακολουθώντας την προηγούμενη τεχνική ανάλυση, το 2000, δημιουργήθηκε μία κοινοπραξία μεταξύ των βιομηχάνων. Αυτοί ήταν οι αυτοκινητοβιομηχανίες BMW AG, DaimlerChrysler AG, General Motors Corporation, η εταιρία κατασκευής εξοπλισμού Robert Bosch GmbH, η Motorola GmbH (η οποία από τότε έχει μετατραπεί σε FreeScale), η εταιρία Philips GmbH (η οποία μετατράπηκε σε NXP Semiconductors) και η Volkswagen AG. Στο γράφημα 3.15 παρουσιάζονται όλοι οι συμμετέχοντες κατά το τέλος του 2004 και είναι εύκολα παρατηρήσιμο ότι περιλαμβάνονται όλοι οι μεγάλοι κατασκευαστές αυτοκινήτων. 68

70 Γράφημα Η δημιουργία του FlexRay Consortium Έτσι, οι BMW, DaimlerChrysler, General Motors και Volkswagen AG ήταν τα κύρια μέλη. Τα premium associated members ήταν οι εταιρίες (κατά αλφαβητική σειρά): Fiat, Ford, Honda, Hyundai, Kia Motors, Mazda, Nissan, PSA Peugeot Citroen, Renault, Toyota κλπ., και οι κατασκευαστές εξοπλισμού Continental, Delphi, Denso και Tyco. Τέλος, το Consortium είχε τουλάχιστον 50 «associated members. Η εταιρία ανάπτυξης εφαρμογών DeComSys, ήταν για μεγάλο χρονικό διάστημα διαχειρίστρια της κοινοπραξίας. Το FlexRay παρουσιάστηκε, επίσημα πλέον, για πρώτη φορά τον Απρίλιο του 2002 στο Μόναχο της Γερμανίας και η πρώτη FlexRay product day έλαβε μέρος τον Σεπτέμβρη του 2004, στο Boblingen. 69

71 Έτος Περιγραφή 1995 Έναρξη του προγράμματος By Wire από την BMW και την Robert Bosch GmbH Συγκριτική τεχνική ανάλυση των Byteflight/CAN/TTP/TTP/C Δημιουργία του FlexRay Consortium Δημόσια παρουσίαση τον Απρίλιο, στο Μόναχο, Γερμανίας. 2002/03 Εισαγωγή των πρώτων δειγμάτων της διαχείρισης του πρωτοκόλλου από ενσωματωμένα κυκλώματα Ορισμός του FlexRay Ορισμός του FlexRay Δεύτερη FlexRay Day. Παρουσίαση του πρώτου επεξεργαστή με ελεγκτή FlexRay Τελικά αναπτυξιακά εργαλεία FlexRay Το πρώτο όχημα BMW (X5 μοντέλο) το οποίο είναι εφοδιασμένο με διάφορες μονάδες οι οποίες επικοινωνούν με 10 Mbit/s Τελικός ορισμός του AUTOSAR στρώματος για το FlexRay Κατασκευή του δεύτερου οχήματος με FlexRay δίκτυο από την Audi Τρίτο όχημα από την DaimlerChrysler Ορισμός του FlexRay Πρώτες παρουσιάσεις από τις γαλλικές εταιρίες, PSA και Renault Εξοπλισμός FlexRay σε όλες τις αυτοκινητιστικές και βιομηχανικές εφαρμογές. Πίνακας 3. Ιστορική αναδρομή του FlexRay Η φιλοσοφία του πρωτόκολλου FlexRay Πριν εξεταστεί η δομή και η λειτουργία του FlexRay, θα γίνει μια παρουσίαση της φιλοσοφίας του. Δομικά, το FlexRay, έχει σχεδιαστεί έτσι ώστε να προσφέρει ένα σύστημα επικοινωνίας το οποίο μπορεί να λειτουργεί συνεχώς σε ένα ή δύο κανάλια και να μην υπάρχουν προβλήματα διενέξεων στον δίαυλο. Αυτό σημαίνει ότι κανένας κόμβος δεν θα διεξάγει κάποια διεργασία διαιτησίας σε κάποιο κανάλι και ότι δεν υπάρχουν διενέξεις σε ομαλή λειτουργία. Το σύστημα θα πρέπει να είναι ικανό να λειτουργεί με συγκεκριμένα χαρακτηριστικά έτσι ώστε να υπάρχει μεγάλη ευελιξία στην εφαρμογή του. Αυτά τα χαρακτηριστικά είναι: Λειτουργία πραγματικού χρόνου: Δηλαδή, επικοινωνία σε συγκεκριμένες χρονικές σταθερές, γνωρίζοντας τον μέγιστο χρόνο επικοινωνίας, τις καθυστερήσεις καθώς και χωρίς τα εμπόδια των διενέξεων. Να επικοινωνεί με το τέλος κάθε συμβάντος, αλλάζοντας το μέγεθος της μεταδιδόμενης πληροφορίας όπου κρίνεται απαραίτητο χωρίς να είναι γνωστός έτσι ο συνολικός χρόνος της επικοινωνίας αλλά γνωρίζοντας την μέγιστη διάρκειά της. Αυτά τα δύο χαρακτηριστικά είναι ένα σχήμα οξύμωρο καθώς είναι αντίθετα. Για να το πετύχει αυτό, το FlexRay, χρησιμοποιεί τους λεγόμενους «επικοινωνιακούς κύκλους communication cycles» κατά τους οποίους η είσοδος στην επικοινωνία εφαρμόζεται «σύγχρονα» αλλά και «ασύγχρονα» σε θυρίδες των οποίων το χρονικό μέγεθος είναι ξεκάθαρα ορισμένο από τον εκάστοτε σχεδιαστή του συστήματος. Αυτές οι θυρίδες, αναθέτονται στις διάφορες ECU έτσι ώστε οι τελευταίες να στέλνουν τα μηνύματά τους ή να 70

72 λαμβάνουν πληροφορίες από το δίαυλο. Προφανώς, η σωστή ανάθεση είναι πολύ σημαντική ευθύνη του σχεδιαστή του συστήματος. Αυτή η αρχή εισόδου στο επικοινωνιακό μέσο, δηλαδή με την χρήση συγκεκριμένων χρονικών θυρίδων (τεχνική TDMA) αφανίζει τα πιθανά προβλήματα διενέξεων στον δίαυλο. Έτσι, το FlexRay συμπεριλαμβάνει δύο ταυτόχρονες λειτουργίες, στοιχείο το οποίο το καθιστά ξεχωριστό ανάμεσα σε πολλά άλλα πρωτόκολλα: Time-triggered λειτουργία (σύγχρονη), Event-triggered λειτουργία (ασύγχρονη). Για να το καταφέρει αυτό μέσα σε έναν κύκλο επικοινωνίας, είναι απαραίτητο να τον χωρίσει σε δύο διακριτές περιοχές. Την λειτουργία στην «στατική περιοχή» ή αλλιώς static segment και την λειτουργία στην «δυναμική περιοχή» ή αλλιώς «dynamic segment», οι οποίες παρουσιάζονται στο γράφημα Γράφημα Οι δύο περιοχές ενός κύκλου επικοινωνίας του FlexRay Δομική ιεραρχία Η δομή του πρωτοκόλλου FlexRay έχει σχεδιαστεί με βάση δύο ιεραρχίες. Η πρώτη, λειτουργικού τύπου, αναφέρεται στην ομαδοποίηση των bit και των bytes σε πλαίσια επικοινωνίας, τα οποία συμπεριλαμβάνονται στις slots (θυρίδες), οι οποίες με την σειρά τους συμπεριλαμβάνονται στα segments (τμήματα) του communication cycle (κύκλου επικοινωνίας), οι οποίοι αποτελούν ένα communication channel (κανάλι επικοινωνίας). Η δεύτερη, χρονικού τύπου, αναφέρεται στους όρους Global Time, MacroTicks, MicroTicks, local clock κλπ. Πριν ξεκινήσει η ανάλυση για τα κανάλια επικοινωνίας, τα πλαίσια κλπ., στο γράφημα 3.17 παρουσιάζεται η συνολική δομή του πρωτόκολλου FlexRay. 71

73 Γράφημα Το πρωτόκολλο FlexRay 72

74 3.2.5 Χρονική ιεραρχία του FlexRay Η ανάλυση θα ξεκινήσει από την δομή των χρονικών σταθερών. Σε αυτή την ενότητα, λοιπόν, πραγματοποιείται μία περιεκτική ανάλυση των χρονικών σταθερών που χρησιμοποιεί το FlexRay καθώς και της ιεραρχίας τους. Local Clock Γενικά, το τοπικό ρολόι του κάθε κόμβου είναι οδηγούμενο από έναν κρυσταλλικό χαλαζία καλής ποιότητας, και συνήθως έχει χαμηλές διακυμάνσεις, χαμηλές θερμοκρασίες, αποσταθεροποιήσεις και έχει πολύ μικρή ευαισθησία στην τάση τροφοδοσίας του. Αυτό το ρολόι, δημιουργεί τον τοπικό χρόνο του κόμβου. Επιπρόσθετα, είναι δυνατό, λαμβάνοντας υποδιαιρέσεις του, να δημιουργηθούν διάφορες άλλες υπό-συχνότητες αλλά και συχνότητες παραπάνω από αυτό χρησιμοποιώντας στοιχεία όπως το PLL, έτσι ώστε να υπάρχει ένα πιο γρήγορο ρολόι για χρήση πχ. σε τεχνικές υπέρ-δειγματοληψίας σημάτων. Το τοπικό ρολόι κάθε κόμβου έχει ανεξάρτητη λειτουργία από το υπόλοιπο δίκτυο και κατά την διάρκεια της λειτουργίας της επικοινωνίας είναι πιθανό να υπάρχουν μικρές διαφορές μεταξύ των ρολογιών των κόμβων από τις αρχικές τους τιμές, δημιουργώντας έτσι την συνεχή ανάγκη του συγχρονισμού τους. Clock Tick Το clock Tick είναι μία τοπική χρονική σταθερά, η οποία δημιουργείται διαιρώντας απευθείας το τοπικό ρολόι του κόμβου. Όπως παρουσιάστηκε και παραπάνω αυτή η συχνότητα μπορεί να είναι μικρότερη αλλά και μεγαλύτερη του τοπικού ρολογιού, χρησιμοποιώντας πχ. PLL. MicroTick μτ Τα MicroTicks μτs δημιουργούνται τοπικά από τον κάθε κόμβο, με την χρήση του Clock Tick, το οποίο με την σειρά του δημιουργήθηκε από τον κρυσταλλικό χαλαζία του κόμβου. Εξ ορισμού, η χρονική τιμή της περιόδου αυτού του καινούργιου ρολογιού καλείται MicroTick μt. Αυτή η τιμή διαμορφώνει ακριβέστατα την χρονική ιεραρχία του FlexRay πρωτοκόλλου. Η διάρκεια των μτs είναι, εξ ορισμού, ακέραια πολλαπλάσια ή ακέραιες υποδιαιρέσεις της περιόδου του ρολογιού του τοπικού επεξεργαστή της ECU του κόμβου. Έτσι, κάθε κόμβος i, δημιουργεί τα δικά του μτs, οι χρονικές σταθερές των οποίων, δεν μπορούν να επηρεαστούν από εξωτερικές διαδικασίες συγχρονισμού. Έτσι, εν τέλει, το μτ αποτελεί μία χρονική σταθερά, τοπική για κάθε κόμβο, η οποία προκύπτει από έναν ηλεκτρονικό μηχανισμό, έχει άμεση συνάρτηση με το τοπικό ρολόι του κάθε κόμβου, μπορεί να επηρεαστεί μόνο από αυτό και αποτελεί την μικρότερη χρονική σταθερά ενός FlexRay δικτύου. Global Time Αφήνοντας πίσω τις τοπικές χρονικές σταθερές κάθε κόμβου, σε αυτό το σημείο θα αναλυθεί μία χρονική σταθερά που ορίζεται σε μία ομάδα (cluster) από κόμβους. Η Global Time σταθερά από εδώ και πέρα θα ορίζει τον γενικό χρόνο μέσα σε ένα γκρουπ από κόμβους (cluster). Θα πρέπει να τονιστεί ότι το FlexRay πρωτόκολλο δεν έχει κάποια αναφορά Global Time ή κάποιον απόλυτο χρόνο αλλά κάθε κόμβος έχει μια δική του οπτική του Global Time. Με αυτή την έννοια η Global Time σταθερά αποτελεί μία αφηρημένη 73

75 έννοια. Δημιουργείται έτσι μία διένεξη μεταξύ του local time, η οποία πρόκειται για μία τοπική χρονική σταθερά η οποία έχει άμεση εξάρτηση με τα μτs, και του Global Time, η οποία πρόκειται για μία ευέλικτη, προσαρμοζόμενη σύνθεση από τοπικά ρολόγια, από την οποία θα δημιουργηθεί η Global Time σταθερά του δικτύου. Με την έννοια της κάλυψης του χάσματος μεταξύ των δύο, έτσι ώστε να υπάρχει πάντα συγχρονισμός, δημιουργήθηκε μία άλλη σταθερά, το MacroTick MT, η οποία αποτελεί την διακριτή χρονική σταθερά του δικτύου και αναλύεται παρακάτω. MacroTick - MT Ο σκοπός των MacroTicks - MTs, είναι να διαμορφώσουν μία πρώτη σχέση μεταξύ του φυσικού σήματος στον δίαυλο και τα μicroticks (μts). Το MT είναι μία σταθερά του χρόνου η οποία αφορά συγκεκριμένη ομάδα συμμετεχόντων σε ένα δίκτυο (cluster-wide interval). Ειδικότερα, πρόκειται για μία μικρότερη μονάδα του Global Time του δικτύου. Η τοπική διάρκεια κάθε MT είναι συνδεδεμένη με κάθε κόμβο και αποτελείται από ένα σύνολο από μτs του κόμβου, και ο λόγος των μts ανά MT υπολογίζεται/ρυθμίζεται/καθιερώνεται τοπικά χρησιμοποιώντας έναν αλγόριθμο συγχρονισμού. Αν ληφθεί υπόψιν ότι οι τιμές των μts είναι συγκεκριμένες σε κάθε κόμβο του δικτύου, σαν συνάρτηση της συχνότητας του τοπικού του ταλαντωτή και οι τιμές διατηρούνται στου καταχωρητές διαχείρισης (configuration registers), οι τιμές που παίρνει το μτ/mt ratio θα είναι επίσης διαφορετικές από κόμβο σε κόμβο. Επιπρόσθετα, κατά την διάρκεια ενός κύκλου επικοινωνίας, ο αριθμός των μτs ανά MT μπορούν να διαφέρουν από ένα MT σε ένα άλλο, μέσα στον ίδιο κόμβο. Παρ όλο που κάθε MT περιέχει ένα διαφορετικό αριθμό από μts, η μέση διάρκεια όλων των MTs ενός κύκλου επικοινωνίας μπορεί να είναι μη-ακέραιος αριθμός. Αυτό μπορεί να συμβεί αν σε ένα MT περιέχεται ένα αριθμός από μts συν ένα κομμάτι ενός μt. Ο σκοπός αυτών των χρονικών ρυθμίσεων, οι οποίοι είναι αποτέλεσμα ενός έξυπνου υπολογισμού της τιμής των MTs, είναι να δημιουργήσει τον συγχρονισμό μεταξύ των σημάτων που είναι παρόν στο δίκτυο και στους μίκρο-επεξεργαστές. Communication Cycle Ο κύκλος επικοινωνίας σε ένα σύστημα FlexRay, εξ ορισμού αποτελείται από ένα σύνολο από MacroTicks (MT). Ο αριθμός των MTs ανά κύκλο είναι ίδιος σε όλους τους κόμβους μιας ομάδας (cluster), και παραμένει ίδιος από έναν κύκλο σε έναν άλλο. Επίσης, σε κάθε στιγμή, όλοι οι κόμβοι πρέπει να έχουν τον ίδιο αριθμό κύκλου επικοινωνίας και πρέπει να τον διαχειρίζονται και την ίδια στιγμή. Στο γράφημα 3.18 παρουσιάζεται η ιεραρχία των χρονικών σταθερών σε ένα FlexRay δίκτυο. Συμπερασματικά, Εξ αρχής, οτιδήποτε συμβαίνει σε έναν κύκλο επικοινωνίας αποτελείται από k (ακέραιος) MTs, Επειδή το ratio μτs/mts, δηλαδή το n_i είναι επίσης ακέραιος, αν όλα τα n_i των κόμβων είναι ίδια, σημαίνει ότι ο κύκλος επικοινωνίας ισούται με (k x n_i). Δυστυχώς, επειδή το παραπάνω είναι μία ιδεατή κατάσταση και όλα τα n_i δεν είναι ίσα, για να υπάρχει ισότητα μεταξύ των n_i απαιτείται ένα πρόσθετος τοπικός αριθμός d_i από μts, έτσι ώστε ο κύκλος επικοινωνίας να είναι πάντα ίσος με k MTs. Έτσι, σε ομαλή λειτουργία ισχύει: Κύκλος επικοινωνίας = k MTs = [(k n_i) + d_i)] μts 74

76 Γράφημα Ιεραρχία χρονικών σταθερών του δικτύου FlexRay Κανάλια και κύκλοι επικοινωνίας Κανάλι(α) επικοινωνίας - Communication channel(s) Τα κανάλια επικοινωνίας αποτελούν την σύνδεση μεταξύ των κόμβων. Το FlexRay είναι έτσι σχεδιασμένο ώστε να υποστηρίζει την χρήση ενός ή και δύο καναλιών επικοινωνίας, A και Β. Αυτή η επιλογή έγινε κυρίως με βάση την σκέψη ότι με αυτό τον τρόπο θα ήταν εφικτή μία συμπληρωματική επικοινωνία μεταξύ των δύο καναλιών καθώς και μία εφεδρεία ανοίγοντας έτσι τον δρόμο σε μελλοντικές εφαρμογές οι οποίες είναι περισσότερο ηλεκτρικές παρά μηχανικές και αναφέρονται ως X-by-Wire. Θα γίνει ανάλυση αυτών των συστημάτων σε επόμενο κεφάλαιο καθώς στα πλαίσια αυτής της διπλωματικής επιλέχθηκε η υλοποίηση ενός τέτοιου συστήματος με την χρήση του πρωτόκολλου FlexRay. Κύκλος επικοινωνίας Communication Cycle Η επικοινωνία με το πρωτόκολλο FlexRay οργανώνεται σε κύκλους επικοινωνίας ή αλλιώς communication cycles, οι οποίοι είναι συνεχόμενοι και ίσης διάρκειας. Καταρχήν, η διάρκεια του κάθε κύκλου είναι σταθερή και συνδεδεμένη με το Global Time το οποίο λειτουργεί με έναν τρόπο που θα αναπτυχθεί σε επόμενη ενότητα. Οι κύκλοι επικοινωνίας του FlexRay αριθμούνται ως (2n + x) όπως παρουσιάζεται στο γράφημα 3.19, και αυτό συμβαίνει διότι αργά ή γρήγορα θα πρέπει να ληφθεί υπόψιν η ισοτιμία του αριθμού του κύκλου για την λειτουργία του FlexRay. 75

77 Γράφημα Communication Cycle and Segments of FlexRay Protocol Όπως φαίνεται και στο γράφημα 3.19, ο κύκλος επικοινωνίας του FlexRay χωρίζεται σε 4 διακριτά μέρη τα οποία καλούνται segments, τα οποία επαναλαμβάνονται κυκλικά σε συγκεκριμένες χρονικές σταθερές. Κάθε κύκλος, λοιπόν, αποτελείται από τα παρακάτω segments: ST, δηλαδή static segment, SD, δηλαδή dynamic segment το οποίο είναι προαιρετικό, SW, δηλαδή symbol window το οποίο είναι επίσης προαιρετικό, NIT, δηλαδή network idle time το οποίο τερματίζει τον κύκλο, είναι δηλαδή το χρονικό διάστημα κατά το οποίο ο δίαυλο είναι σε αδράνεια. Το όριο μεταξύ static και dynamic segment καθορίζεται από τον σχεδιαστή έτσι ώστε να σχεδιαστεί μία όσο το δυνατόν ευέλικτη επικοινωνία για την εκάστοτε εφαρμογή. Η ευελιξία που παρουσιάζεται από τα παραπάνω είναι υπεύθυνη για την ονομασία του πρωτόκολλου σε FlexRay. Η διάρκεια του κύκλου επικοινωνίας πρέπει να καθοριστεί μεταξύ 10 μsec και 16 msec μέγιστο. Αυτό προκύπτει από την αναγκαιότητα των εφαρμογών για ένα real-time και συμπερασματικά γρήγορο και λειτουργικό πρωτόκολλο Segments Όπως αναφέρθηκε και προηγουμένως ο κύκλος επικοινωνίας του FlexRay χωρίζεται σε τέσσερα segments. ST, ή αλλιώς static segment το οποίο υλοποιεί διακριτή επικοινωνία σε real-time εφαρμογές με γνωστό καθορισμένο εύρος ζώνης, SD, ή αλλιώς dynamic segment το οποίο αναφέρεται σε event-triggered εφαρμογές, με μεταβλητό εύρος ζώνης, SW, ή αλλιώς symbol window το οποίο υλοποιείται σε συγκεκριμένες εφαρμογές οι οποίες χρησιμοποιούν bus guardian για παράδειγμα, εφαρμογές X-by-Wire. Και τελικά το NIT, ή αλλιώς network idle time κατά το οποίο ο δίαυλος είναι αδρανής. Επειδή, τα δύο από τα τέσσερα segment, το SD και το SW είναι προαιρετικά, στο γράφημα 3.20 παρουσιάζονται διάφορες διαμορφώσεις του κύκλου επικοινωνίας του FlexRay. 76

78 Γράφημα Εφαρμογές κύκλου επικοινωνίας Καθώς σήμερα, οι περισσότερες εφαρμογές δεν είναι X-by-Wire, η πιο συνηθισμένη εφαρμογή του κύκλου επικοινωνίας είναι αυτή που περιλαμβάνει ST, SD και το NIT Slots και Minislots Τα στατικά και τα δυναμικά segment χωρίζονται σε έναν αριθμό από slots και minislots, αντίστοιχα. Ο σκοπός των slots και των minislots, είναι να μεταφέρουν τα πλαίσια επικοινωνίας, στατικά και δυναμικά, αντίστοιχα. Κατά τον σχεδιασμό ενός real-time συστήματος, ορίζονται προσεκτικά ο αριθμός των μηνυμάτων καθώς και οι επιθυμητές χρονικές περίοδοι, οι οποίες είναι σταθερές σε διάρκεια και χρονική θέση. Αυτές είναι οι slots και αναφέρονται στο στατικό segment του κύκλου επικοινωνίας. Επιπρόσθετα, γνωρίζοντας ότι τυχαία ή μη, γεγονότα μπορεί να συμβούν κατά την διάρκεια της επικοινωνίας, θα πρέπει να προβλεφθεί η ανάγκη δημιουργίας κάποιων slot ώστε να μεταφερθεί η πληροφορία από αυτά τα συμβάντα κατά την διάρκεια του κύκλου επικοινωνίας. Αυτός είναι και ο ορισμός των minislots οι οποίες αντιστοιχούν στο δυναμικό segment και δίνουν λύση σε αυτό το πρόβλημα. Αυτές οι slots και minislots αναθέτονται στους κόμβους κατά τον σχεδιασμό έτσι ώστε να είναι δυνατή η αποστολή των μηνυμάτων τους αλλά επίσης αναθέτονται και στους κόμβους οι οποίοι πρέπει να πραγματοποιήσουν λήψη του μηνύματος από την εκάστοτε slot ή minislot. Στο γράφημα 3.21 παρουσιάζεται ο χωρισμός των δύο segment σε slots και minislots. 77

79 Γράφημα Διαίρεση του στατικού και δυναμικού segment σε slots και minislots Ακόμη, είναι δυνατόν ένας κόμβος να αποστείλει δεδομένα σε περισσότερες του ενός slots ή minislots ή ακόμα να στείλει δεδομένα σε μία slot, να λάβει δεδομένα από μία άλλη, να εκτελέσει μία διεργασία ή υπολογισμό και να ξαναστείλει καινούργια δεδομένα σε μία ακόλουθη slot όντας μέσα στον ίδιο κύκλο επικοινωνίας, αυξάνοντας έτσι την ταχύτητα του συστήματος. Η τεχνική εισόδου στον δίαυλο κατά την διάρκεια του στατικού segment είναι η τεχνική TDMA ή GTDMA η οποία είναι η τεχνική TDMA βασιζόμενη στο Global Time του δικτύου. Όσον αφορά το στατικό segment και τις slot στις οποίες διαιρείται πρέπει να προστεθούν τα εξής: Όλα τα slots έχουν την ίδια διάρκεια, Όλοι οι κύκλοι επικοινωνίας πρέπει να περιέχουν τον ίδιο αριθμό από slots, Κάθε slot ορίζεται με ένα μοναδικό αριθμό ID, Σε περίπτωση που χρησιμοποιείται FlexRay επικοινωνία με δύο κανάλια, τα χαρακτηριστικά των slot (διάρκεια, αριθμός, κλπ.) και στα δύο κανάλια πρέπει να είναι ίδια, Η έναρξη της εκάστοτε slot ορίζεται από την Global Time του δικτύου, Η διάρκεια της κάθε slot σε μία ομάδα από κόμβους (cluster), επίσης ορίζεται με βάση το Global Time, Τέλος, είναι απαραίτητο να χρησιμοποιηθούν τουλάχιστον δύο slot στο στατικό segment κατά την διάρκεια μίας σύγχρονης διαδικασίας. Συνεχίζοντας με το δυναμικό segment, θα πρέπει να σημειωθεί ότι η τεχνική εισόδου στον δίαυλο είναι η FTDMA ή αλλιώς Flexible Time Division Multiple Access. Όπως αναφέρθηκε προηγουμένως, το δυναμικό 78

80 segment χωρίζεται κατά την φάση του σχεδιασμού σε έναν αριθμό από minislots ίδιας διάρκειας, και έτσι ξεκινάνε και τελειώνουν σε συγκεκριμένες χρονικές σταθερές. Η συνολική χρονική διάρκεια του dynamic segment είναι προκαθορισμένη από την φάση της σχεδίασης. Ακόμα, η ανάθεση των minislots σε κάθε κόμβο είναι στοιχείο που πραγματοποιείται από τον σχεδιαστή. Όταν συμβαίνει ένα γεγονός και ξεκινάει η αποστολή του από έναν κόμβο μέσω μιας minislot, τότε η minislot αλλάζει και γίνεται η λεγόμενη dynamic slot. Το τελευταίο σημαίνει ότι εάν η πληροφορία είναι αρκετά μεγάλη τότε υπάρχει η πιθανότητα να καλυφθεί η συνολική διάρκεια του dynamic segment από έναν, δύο, τρεις κόμβος κλπ. Παραγκωνίζοντας τους υπόλοιπους από την αποστολή ενός γεγονότος στο dynamic segment αυτού του κύκλου επικοινωνίας και υποχρεώνοντάς τους να περιμένουν τον επόμενο. Όπως και στην slot έτσι και σε μία minislot πρέπει να ικανοποιούνται τα εξής: Εξορισμού, όλοι οι κύκλοι επικοινωνίας περιέχουν τον ίδιο αριθμό minislot, Η διάρκεια της κάθε minislot πρέπει να είναι ίδια σε κάθε κανάλι, Η ακολουθία εισόδου στο δίαυλο κατά την διάρκεια του dynamic segment μπορεί να διαφέρει στα δύο κανάλια, Η έναρξη του dynamic segment είναι συνδεδεμένη με την κατάσταση λειτουργίας του κύκλου επικοινωνίας, δηλαδή εάν υπάρχει στατικό και δυναμικό μέρος τότε αυτή σηματοδοτείται από το Global Time, ενώ εάν υπάρχει μόνο dynamic segment τότε σηματοδοτείται από το SOC (start-ofcycle), Όταν ξεκινάει η αποστολή ενός αντικειμένου σε μία minislot, τότε αυτή μετατρέπεται σε dynamic slot Πλαίσια επικοινωνίας Communication frames Τα πλαίσια επικοινωνίας του FlexRay αποστέλλονται και λαμβάνονται κατά τον ίδιο τρόπο και στο static αλλά και στο dynamic segment και αντίστοιχα στις slots και στις minislots, όπως φαίνεται και στο γράφημα Οι slots και οι minislots είναι κατειλημμένες, δηλαδή, από στατικά ή δυναμικά πλαίσια επικοινωνίας. Αυτά τα δύο πλαίσια, μοιάζουν αρκετά σε δομή, αλλά έχουν και κάποιες διαφορές. Γράφημα Δομική παρουσίαση στατικού και δυναμικού πλαισίου επικοινωνίας 79

81 Και τα δύο πλαίσια επικοινωνίας, στατικό και δυναμικό, αποτελούνται από τρία μεγάλα και πολύ διακριτά κομμάτια: Το header field, το οποίο είναι το κομμάτι έναρξης του πλαισίου, Το payload field, το οποίο πρόκειται για το κομμάτι που περιέχει τα δεδομένα, και Το trailer field, το οποίο πρόκειται για το κομμάτι τερματισμό του πλαισίου. Μία διαφορά έγκειται στα πρώρα αρχικά bit (bit 1-5, τα οποία καλούνται leading indicator ) στην αρχή του header και έχουν διαφορετική σημασία στο στατικό και στο δυναμικό πλαίσιο επικοινωνίας. Τα παραπάνω κομμάτια αλλά και αυτά τα αρχικά bit του header παρουσιάζονται στο γράφημα Γράφημα Η διαίρεση του στατικού και δυναμικού πλαισίου στα διάφορα κομμάτια τους Με έναν γρήγορο υπολογισμό, και με βάση το γράφημα 3.23, υπολογίζεται το συνολικό μέγεθος ενός πλαισίου: Header: Payload: CRC: Προσθέτοντας: = 40 bits ή 5 bytes, 0 έως 127 λέξεις (words)των 2 bytes, δηλαδή 0 έως 254 bytes, δηλαδή 0 έως 2032 bits, 24 bits ή 3 bytes. 5 + (0 έως 254) + 3 = από 8 έως 262 bytes, ή 40 + (0 έως 2030) + 24 = από 64 έως 2096 bits. Αφού ολοκληρώθηκε η παρουσίαση των περιοχών στις οποίες χωρίζονται τα στατικά και δυναμικά πλαίσια επικοινωνίας, παρακάτω γίνεται μία αναλυτική παρουσίαση των κομματιών στα οποία διαιρούνται, με τη σειρά τους, αυτές οι περιοχές. Header field Το λογικό περιεχόμενο (λογικά-δυαδικά δεδομένα) του πλαισίου επικοινωνίας ξεκινάει με το header field. Αυτό αποτελείται από τα παρακάτω κομμάτια: the leading indicator, κωδικοποιημένο σε 5 bit, slot ID, κωδικοποιημένο σε 11 bit, payload length, κωδικοποιημένο σε 7 bit, header CRC, κωδικοποιημένο σε 11 bit, και το, 80

82 cycle count, κωδικοποιημένο σε 6 bit. Έτσι, συνολικά αποτελείται από 40 bit τα οποία θα σταλούν σε μορφοποίηση των 5 bytes, όπως παρουσιάζεται στο γράφημα Γράφημα FlexRay πλαίσιο επικοινωνίας: Κομμάτια του "Header field" 81

83 (a) Leading Indicator Τα πρώτα 5 bits αποτελούν το Leading indicator. Η σημασία τους περιγράφεται ως εξής: Bit 1: δεσμευμένο για μελλοντική χρήση, η τιμή του προς το παρόν είναι 1. Bit 2: εισαγωγικός δείκτης του περιεχομένου του payload: o 0, υποδεικνύει κλασικό περιεχόμενο payload, o 1, υποδεικνύει ειδικό περιεχόμενο payload. Εδώ, υπάρχουν δύο επιλογές αναλόγως αν βρισκόμαστε σε static ή dynamic segment. Static Segment: Τα πρώτα bytes (0-12) του payload, μπορούν να σηματοδοτήσουν την ύπαρξη ενός διανύσματος διαχείρισης δικτύου μέσα του. Κατά την διάρκεια των slots του static segment, ο communication controller (CC) συλλέγει όλα τα διαθέσιμα διανύσματα διαχείρισης δικτύου και στο τέλος κάθε κύκλου επικοινωνίας τα επιστρέφει στον host κόμβο σε μία μορφοποίηση ενός OR για όλα τα διανύσματα του συγκεκριμένου κύκλου. Dynamic Segment: Τα πρώτα δύο bytes του payload, περιέχουν ένα συμπληρωματικό ID μηνύματος. Αυτό μπορεί να χρησιμοποιηθεί, στον παραλήπτη, σε έναν κόμβο που κάνει λήψη κάποιου μηνύματος έτσι ώστε να διαχωρίσει το περιεχόμενο του πλαισίου που μεταδίδεται. Bit 3: μηδενικός δείκτης πλαισίου (αν ένας κόμβος στείλει κενό πλαίσιο, σημαίνει ότι δεν έχει να στείλει κάτι διαφορετικό από την προηγούμενη φορά) Bit 4: δείκτης πλαισίου: o 0, υποδεικνύει αποστολή κανονικού πλαισίου, o 1, υποδεικνύει αποστολή πλαισίου συγχρονισμού, το οποίο χρησιμοποιείται για τον συγχρονισμό των ρολογιών των κόμβων οι οποίοι συμμετέχουν στην διαδικασία συγχρονισμού. Bit 5: δείκτης έναρξης του πλαισίου. (b) Slot/Frame ID Το επόμενο μέρος του header field είναι η τιμή του ID του πλαισίου, γνωστό και σαν frame ID. Αυτό το ID είναι κωδικοποιημένο σε 11 bits, και έτσι παίρνει τιμές από 1 έως Η τιμή 0 είναι μη-επιτρεπτή. Όπως θα αναλυθεί αργότερα, η τιμή 0, χρησιμοποιείται για να οριστεί η θέση της κάθε slot μέσα στην οποία το υπό διερεύνηση πλαίσιο διαδίδεται και στο static αλλά και στο dynamic segment. Επιπρόσθετα, δύο κόμβοι δεν επιτρέπεται να στείλουν δεδομένα με το ίδιο ID μέσα στο ίδιο κανάλι επικοινωνίας. (c) Payload length Τα 7 bit της επόμενης περιοχής (η οποία έχει μέγιστο 128 τιμές) καλούνται Data Length Coding (DLC) και υποδεικνύουν την τιμή (διαιρεμένη κατά 2 διότι οι μεταδιδόμενες λέξεις περιέχουν 2 bytes-16 bits) του αριθμού των λέξεων που υπάρχουν στο payload segment (μέγιστο 254) και είναι από 0 έως 123. Οι τιμές πάνω από το 123 αντιμετωπίζονται σαν σφάλματα, στοιχείο που περιλαμβάνεται σε κάποιες δικλείδες ασφαλείας του πρωτόκολλου. 82

84 (d) Header CRC (Cyclic Redundancy Code) Ο σκοπός του CRC κατά την έναρξη του πλαισίου είναι να προστατέψει το σετ αριθμών που δημιουργείται από τα bit 4 και 5 του leading indicator, τα bit του ID του πλαισίου που είναι υπό μετάδοση καθώς και αυτών του payload length. Αυτό επιτρέπει σε έναν κόμβο που δέχεται ένα πλαίσιο να εξακριβώνει συνεχώς την ταυτοποίηση που πρέπει να υπάρχει μεταξύ του ID του πλαισίου που λαμβάνεται και του αριθμού της slot και έτσι να μην εκτελούνται διεργασίες ανούσια. Το CRC υπολογίζεται δυναμικά κατά την διάρκεια της επικοινωνίας από τον host ελεγκτή, ο οποίος ξεκινά και την επικοινωνία. Η τιμή του ταυτοποιείται κάθε στιγμή από οποιοδήποτε άλλο συμμετέχοντα που το λαμβάνει. (e) Communication cycle counter Αυτή η περιοχή, είναι κωδικοποιημένη σε 6 bit (άρα 64 πιθανές τιμές) και υποδεικνύει τον αριθμό (από 0 έως 63) του τρέχοντος κύκλου επικοινωνίας. Μπορεί επίσης να χρησιμοποιηθεί σαν «δείκτης συνέχειας» της επικοινωνίας. Ο ελεγκτής που στέλνει το μήνυμα, αυξάνει αυτομάτως και την τιμή του communication cycle counter κατά ένα και η τιμή του πρέπει να είναι ίδια με οποιοδήποτε άλλο πλαίσιο μεταδίδεται στον ίδιο κύκλο επικοινωνίας. Όπως γίνεται φανερό, επειδή είναι κωδικοποιημένο σε 6 bit, δεν μπορεί να αυξάνεται επ αορίστου, γι αυτό και μηδενίζεται περιοδικά. Ο communication cycle counter αποτελεί και το τελευταίο κομμάτι της περιοχής του header field. Payload field Η περιοχή που ακολουθεί το header field είναι αυτή του payload field. Αυτή η περιοχή προσφέρει την δυνατότητα να περιέχει από 0 έως 127 λέξεις των 16 bit η κάθε μία. Αυτό υπολογίζεται σε 2032 bits. Θα πρέπει να σημειωθεί ότι στο payload είναι δυνατόν να περιέχεται και ένα message ID κωδικοποιημένο σε 16 bit. Trailer field CRC of End of Frame Η επόμενη και τελευταία περιοχή είναι αυτή του trailer. Αυτή η περιοχή περιέχει ένα CRC κομμάτι των 24 bit (3 bytes). Ο σκοπός της είναι προστατέψει όλο το μεταδιδόμενο πλαίσιο, μέσω μιας Hamming απόστασης ίσης με 6 για δεδομένα μεγέθους 248 bytes ή ίσης με 4 για μεγαλύτερου μεγέθους δεδομένα (έως 254 bytes). O CRC κώδικας υπολογίζεται σε πραγματικό χρόνο από τον host ελεγκτή, ο οποίος ξεκίνησε την επικοινωνία και ταυτοποιείται συνεχώς από όλους τους υπόλοιπους κόμβους που συμμετέχουν στην επικοινωνία και τον λαμβάνουν Κωδικοποίηση πλαισίων σε slots και minislots Bits Στην περίπτωση του FlexRay, για ποικίλους λόγους οι οποίοι αναφέρονται κυρίως στο φυσικό στρώμα του μοντέλου OSI, έχει επιλεγεί η κωδικοποίηση των bit να γίνεται με την τεχνική Non-Return-to-Zero (NRZ), όπως δηλαδή και στην περίπτωση του CAN. 83

85 Bytes Σε κάθε περιοχή, από αυτές που αναλύθηκαν προηγουμένως, και οι οποίες αποτελούνται από λογικό περιεχόμενο, διαιρούνται σε bytes και εν συνεχεία ομαδοποιούνται σε bytes των 10 bit έκαστο προσθέτοντας ένα START bit και ένα STOP bit. Τα παραπάνω παρουσιάζονται στο γράφημα 3.25 όπου φαίνεται η ομαδοποίηση των bits σε bytes αποτελούμενα από 10 bits. Γράφημα Ομαδοποίηση bit σε byte 10-ψηφίων (10 bits) BSS, FSS, Action Point και FES Σε αυτή την ενότητα θα αναλυθεί το Frame Start Sequence FSS, το Byte Start Sequence BSS, το Action Point AP καθώς και το Frame End Sequence FES. BSS Byte Start Sequence Τα λογικά bytes διαδίδονται στον δίαυλο αφού έχουν πλαισιωθεί προσεκτικά με ένα START bit (0) στην αρχή και ένα STOP bit (1) στο τέλος, σχηματίζοντας έτσι ένα 10-bit byte τύπου NRZ 8N1. Στο γράφημα 3.24 ορθά παρουσιάζεται ένα 8-bit byte το οποίο πλαισιώνεται στην αρχή και στο τέλος από τα START και STOP bits. Με αυτό τον τρόπο γίνεται μοναδική και εύκολα αντιληπτή η διαχωριστική γραμμή μεταξύ δύο συνεχόμενων byte. Αυτή η ακολουθία STOP START(1-0) καλείται Byte Start Sequence BSS στο πρωτόκολλο FlexRay. Είναι, λοιπόν, παρούσα πριν την έναρξη κάποιου byte με λογική σημασία. FSS Frame Start Sequence Για την σηματοδότηση της άφιξης των πρώτων bytes ενός πλαισίου (δηλαδή πριν την εμφάνιση του BSS), το FlexRay περιέχει ένα σήμα το οποίο υποδεικνύει την αρχή του πλαισίου και καλείται Frame Start Sequence FSS. H ανοδική αιχμή του FSS σηματοδοτεί την ύπαρξη και την έναρξη ενός πλαισίου επικοινωνίας. Η ύπαρξη του FSS δίνει μία πολύ συγκεκριμένη μορφή στην δυαδική ακολουθία που σχηματίζεται από το FSS + BSS ( ) η οποία μπορεί να φανεί και από το γράφημα Μπορεί εύκολα να ανιχνευθεί και υπάρχει μόνο στην αρχή ενός πλαισίου. 84

86 TSS Transmission Start Sequence Ανεξάρτητα από το αν το πλαίσιο είναι στατικού (slot) ή δυναμικού (minislot) τύπου, η σηματοδότηση της έναρξης της αποστολής ενός πλαισίου (και όχι της έναρξης του πλαισίου) πραγματοποιείται με το TSS. Όπως φαίνεται και στο γράφημα 3.26 το TSS προηγείται των FSS και BSS καθώς δεν σηματοδοτεί την έναρξη ενός πλαισίου αλλά την έναρξη της ακολουθίας αποστολής του. Το μέγεθος του TSS είναι μεταβλητό από τον σχεδιαστή του δικτύου και αποτελείται από 3 έως 15 bits αναλόγως την χρήση του δικτύου, την τοπολογία κλπ. Γράφημα TSS, FSS και BSS Action Point -AP Αφού έχει επίσημα ξεκινήσει η διάρκεια μιας slot (ή minislot) και έχει παρέλθει μία περίοδος κατά την οποία το δίκτυο είναι σε αδράνεια και καλείται channel idle time, το AP είναι η ακριβής στιγμή κατά την οποία ένα κόμβος ξεκινάει μία διεργασία σε σχέση με την local time βάση του. Σε αυτή την περίπτωση, αυτό αντιστοιχεί στην συγκεκριμένη στιγμή που ο αποστολέας Tx ουσιαστικά ξεκινάει την αποστολή ενός πλαισίου, στοιχείο που παρουσιάζεται στο γράφημα

87 Γράφημα Action Point Πιο συγκεκριμένα, ένας κόμβος που είναι σε θέση παραλήπτη και όχι αποστολέα δεν μπορεί να γνωρίζει άμεσα τις στιγμές κατά τις οποίες οι υπόλοιποι κόμβοι του δικτύου έχουν δημιουργήσει τα APs των slots και minislots. Για να επιλυθεί αυτό το πρόβλημα και να διασφαλιστεί ότι ο χρόνος είναι ο ίδιος σε όλο το δίκτυο, υιοθετήθηκε ένας αλγόριθμος συγχρονισμού κατά τον οποίο όταν ένας κόμβος είναι σε θέση παραλήπτη, διενεργείται μία μέτρηση της χρονικής διαφοράς που υπάρχει μεταξύ της πραγματικής στιγμής της λήψης του AP μιας slot από έναν κόμβο-αποστολέα, όταν ο τελευταίος στέλνει ένα πλαίσιο συγχρονισμού, και του AP της slot της αντίστοιχης slot την οποία λαμβάνει ο κόμβος-παραλήπτης. FES Frame End Sequence Αφού έχει παρουσιαστεί η δομή και ο σχηματισμός του πλαισίου επικοινωνίας, από την έναρξή του έως και το CRC, ήρθε η στιγμή να παρουσιαστεί και το τέλος του. Για να συμβεί αυτό, απαιτείται μία ακολουθία από 2 bit ( 0-1 ) η οποία και καλείται Frame End Sequence FES. Το FES παρουσιάζεται στο γράφημα Γράφημα Παράδειγμα τερματισμού μιας minislot 86

88 CID και DTS CID - Channel Idle Delimiter, static (και dynamic) πλαίσια Έξω από το πλαίσιο και τον κώδικα προστασίας CRC, και για την πλήρωση του κενού μεταξύ του τέλους του πλαισίου και του τέλος της slot (ή της minislot), χρησιμοποιείται μία δομή με 11 διαδοχικά bit τιμής 1, η οποία καλείται Channel Idle Delimiter CID. Ο σκοπός της είναι να σηματοδοτήσει το τέλος της αποστολής του πλαισίου και να αφήσει ελεύθερο το μέσο σε αδράνεια. Το γράφημα 3.29 παρουσιάζει το τέλος μίας static slot. DTS Dynamic Trailing Sequence, Dynamic Πλαίσιο Θα πρέπει να σημειωθεί ότι προκύπτει ένα μικρό πρόβλημα στην αποστολή δυναμικών πλαισίων κατά το dynamic segment. Στην πραγματικότητα, είναι αναγκαίο να προστεθεί στο σύστημα ένα στοιχείο, το Dynamic Trailing Sequence DTS, μεταξύ του τέλους του CRC και της αρχής του CID, έτσι ώστε όταν ανοίξει μία minislot και μεταβληθεί σε dynamic slot με συγκεκριμένη, μεταβλητή διάρκεια, να καλύψει το κενό που θα μείνει μέχρι την έναρξη της επόμενης minislot και το AP της. Ένα παράδειγμα του DTS παρουσιάζεται στο γράφημα Γράφημα Παράδειγμα εφαρμογής του Channel Idle Delimiter CID Γράφημα Παράδειγμα τερματισμού μιας minislot με την χρήση του Dynamic Trailing Sequence DTS 87

89 Επίσης, παρακάτω παρουσιάζονται δύο συνοπτικά γραφήματα (3.31, 3.32) της πλήρης μορφής ενός static segment και ενός dynamic segment, τα οποία απαρτίζουν ένα πλαίσιο επικοινωνίας FlexRay. Γράφημα Πλήρη μορφή ενός static segment Γράφημα Πλήρη μορφή ενός dynamic segment Μέγιστο μέγεθος ενός στατικού πλαισίου Όπως αναλύθηκε παραπάνω, για να εξασφαλιστεί η ασφάλεια στην μεταφορά των λογικών δεδομένων (πληροφορίας) είναι απαραίτητο να προσθέσουμε κάποια «ηλεκτρικά» bit (TSS, FSS, FES, BSS, START, STOP, DTS, CID κλπ.) έτσι ώστε να διαμορφωθεί ένα πραγματικό ηλεκτρικό σήμα το οποίο είναι θα είναι φυσικά παρόν στον δίαυλο και θα έχει κατανοητά, διακριτά μέρη. Λαμβάνοντας υπόψιν τα προηγούμενα είναι εύκολο πλέον να υπολογιστεί ένας δείκτης απόδοσης μεταφοράς χρήσιμης πληροφορίας για το FlexRay. Έτσι, γνωρίζοντας ότι ένα πλαίσιο επικοινωνίας αποτελείται, στα μέγιστα: 5 + (0 έως 254) + 3 = 8 έως 262 bytes με λογική σημασία, Αυτό σημαίνει 40 + (0 έως 2032) + 24 = 64 έως 2096 bits με λογική σημασία και αφού 88

90 Περιγραφή Μέγιστα Bit TSS, ένα ανά πλαίσιο 15 bits FSS, ένα ανά πλαίσιο 1 bit BSS, πριν από κάθε byte 2 bits FES, ένα ανά πλαίσιο 2 bits CID, ένα ανά πλαίσιο 1 bits Σύνολο: 21 bits Πίνακας 4. Μέγιστο μέγεθος ενός στατικού πλαισίου Τότε έχουμε ένα σύνολο από 2638 ηλεκτρικά bits. Έτσι, λαμβάνοντας υπόψιν το γεγονός ότι τα μηνύματα διαδίδονται με ταχύτητα 10 Mbit/s ή 1 bit = 100 ns, αυτό αντιστοιχεί σε χρονική διάρκεια πλαισίου ίση με ms. Και τελικά, όλη αυτή ανάλυση καταλήγει στο συμπέρασμα ότι το FlexRay, στην καλύτερη περίπτωση, μπορεί να έχει έναν συντελεστή απόδοσης για την static slot: (max useful bits = 2096)/(max total bits = 2638) Το οποίο, οδηγεί σε μία απόδοση μεταφοράς της τάξης: useful rate max. rate = περίπου 80%. Θα πρέπει να διευκρινιστεί ότι η απόδοση μεταφοράς του CAN ήταν περίπου 50% στην καλύτερη περίπτωση, κυρίως γιατί είχαμε πολύ μικρό μέγεθος πληροφορίας ανά πλαίσιο Symbol Window SW segment Σε αυτή την ενότητα θα εξεταστεί το SW segment, το οποίο πρόκειται για ένα προαιρετικό segment. Το SW είναι αφοσιωμένο στην ενσωμάτωση του Media Access Test Symbol (TMS). Το TMS χρησιμοποιείται έτσι ώστε να διασφαλιστεί η καλή λειτουργία του bus guardian ο οποίος είναι υπεύθυνος για την είσοδο του εκάστοτε κόμβου στον δίαυλο. Το μέγεθός του είναι 30 «αδύναμα» bits και ο τερματισμός του πραγματοποιείται με ένα CID, όπως παρουσιάζεται στο γράφημα Γράφημα Το MTS συνοδευόμενο από ένα CID 89

91 Network Idle Time NIT segment Κάθε κύκλος επικοινωνίας του FlexRay τερματίζει με ένα ιδιαίτερο segment, το ΝΙΤ. Όσο διαρκεί το NIT δεν παρατηρείται δραστηριότητα στον δίαυλο καθώς αυτός είναι σε αδράνεια (αναμονή). Το μέγεθος του NIT δεν μπορεί να ξεπερνάει τα 767 MacroTicks. Στην πραγματικότητα, κατά την έναρξη του NIT, όλοι οι κόμβοι του δικτύου πραγματοποιούν απαραίτητους υπολογισμούς έτσι ώστε να διατηρηθεί ο συγχρονισμός μεταξύ τους και έτσι να εφαρμόσουν κάποιο offset στα τοπικά ρολόγια τους. Από την στιγμή που αυτές οι χρονικές διορθώσεις επηρεάζουν όλους τους συμμετέχοντες σε μία ομάδα κόμβων (cluster), έτσι και η διάρκεια του NIT είναι σχετιζόμενη με το εκάστοτε cluster Είσοδος στον δίαυλο και διαιτησία Αφήνοντας πίσω την δομική ανάλυση των πλαισίων επικοινωνίας του FlexRay και αγνοώντας τα πρώτα στάδια έναρξης της επικοινωνίας, όπου πραγματοποιούνται κάποιες ειδικές διαδικασίες έναρξης του διαύλου, παρακάτω θα γίνει μία ανάλυση των τεχνικών εισόδου στο δίαυλο καθώς και της διαιτησίας που εφαρμόζει το FlexRay. Η διαιτησία μέσα στα static και dynamic segments, βασίζεται στο ID του πλαισίου, το οποίο αναθέτεται στους κόμβους που σχηματίζουν μία ομάδα σε ένα κανάλι, και από ένα αριθμητικό σχήμα το οποίο προμηθεύεται από έναν αριθμό slots αποστολής. Κατά την διάρκεια του static segment η είσοδος στο δίκτυο πραγματοποιείται μέσω ενός 2-επιπέδων σχήματος. Το πρώτο επίπεδο αφορά το ID του πλαισίου και το δεύτερο το arbitration grid ή αλλιώς «πλέγμα επικοινωνίας». ID πλαισίου Frame ID Όπως ορίστηκε από το FlexRay, το ID του πλαισίου υποδεικνύει και ορίζει την slot κατά την οποία το πλαίσιο πρέπει να αποσταλεί. Επίσης, ένα ID του πλαισίου μπορεί να χρησιμοποιηθεί μία φορά ανά κανάλι και κύκλο επικοινωνίας. Επειδή η τιμή του ID πλαισίου είναι κωδικοποιημένη σε 11 bits, οι πιθανές τιμές του είναι από 0 έως 2047, αφού η τιμή 0 αποτελεί σφάλμα. Κάθε κόμβος του δικτύου είναι απαραίτητο να διατηρεί μία μεταβλητή Slot Counter, μία για κάθε κανάλι επικοινωνίας,. Αυτοί οι μετρητές παίρνουν την τιμή 1 στην αρχή κάθε κύκλου επικοινωνίας και αυξάνονται κατά ένα στο τέλος κάθε slot, ανεξάρτητα από το αν είναι slot ή minislot. Το διαδιδόμενο frame ID ορίζεται από την τιμή του slot μετρητή σε κάθε στιγμή της αποστολής. Σε ομαλή λειτουργία, χωρίς σφάλματα, η τιμή του μετρητή δεν μπορεί να είναι μηδενική όταν μια slot είναι έτοιμη για αποστολή. Τα πλαίσια που λαμβάνονται με αριθμό 0, αντιμετωπίζονται ως σφάλματα αφού η τιμή του ID τους είναι μηδενική. Από την στιγμή που ο σχεδιαστής του δικτύου έχει ορίσει μία σταθερή διάρκεια κύκλου επικοινωνίας, την θέση του διαχωρισμού μεταξύ static και dynamic segment και τον αριθμό των slot και των minislot, τότε το ID του πλαισίου υποδεικνύει αφενός την slot προς αποστολή και αφετέρου την χρονική στιγμή που αυτή θα μεταδοθεί καθώς και το αν βρίσκεται σε static ή dynamic segment. Κάθε κόμβος μεταδίδει το frame ID με το πιο σημαντικό του ψηφίο πρώτο και ακολουθούν τα υπόλοιπα στοιχεία κατά σειρά προτεραιότητας. 90

92 Πλέγμα διαιτησίας Arbitration Grid Το πλέγμα διαιτησίας βρίσκεται ακριβώς «κάτω» από το Global Time και αποτελεί την ραχοκοκαλιά της αρχής διαιτησίας για την είσοδο στο μέσο διάδοσης του FlexRay. Οι κανόνες του πλέγματος διαιτησίας διαφέρουν αναλόγως με το αν το segment που επιθυμεί να στείλει ένας κόμβος είναι static ή dynamic segment: Στο static segment, ο κανόνας διαιτησίας βασίζεται στον σχηματισμό χρονικών σταθερών οι οποίες καλούνται static slots. Στο dynamic segment, ο κανόνας διαιτησίας βασίζεται στον σχηματισμό χρονικών σταθερών που ονομάζονται minislots. Θα πρέπει να τονιστεί ότι στο FlexRay, ο όρος «διαιτησία» δεν έχει ακριβώς την ίδια σημασία με αυτή στο CAN. Στο CAN η διαιτησία επιλύει τις διενέξεις που πραγματοποιούνται όταν πολλοί κόμβοι επιχειρούν να εισέλθουν στον δίαυλο ταυτόχρονα. Αντιθέτως, στο FlexRay, η διαιτησία ενεργεί πιο «πολιτισμένα» προλαμβάνοντας διενέξεις, αφού «σέβεται» τις προτεραιότητες που έχουν δοθεί σε κάθε συμμετέχοντα και δεν φθάνει στο σημείο επίλυσης διενέξεων καθώς αυτές δεν υπάρχουν. Δηλαδή, έχει να κάνει με το να σέβεται προκαθορισμένες ιεραρχίες. Τεχνική εισόδου στον δίαυλο Όπως αναφέρθηκε και σε προηγούμενη ενότητα, το FlexRay χρησιμοποιεί δύο τεχνικές εισόδου στο μέσο επικοινωνίας: GTDMA (Global Time Division Multiple Access) για το static segment, δημιουργώντας την δυνατότητα να ανατεθούν πολλές slot στον ίδιο κόμβο μέσα στον ίδιο κύκλο επικοινωνίας, FTDMA (Flexible Time Division Multiple Access) για το dynamic segment. Κάθε κόμβος, αναφέρθηκε ότι διατηρεί έναν μετρητή των κύκλων επικοινωνίας, ο σκοπός του οποίου είναι να δίνει πληροφορία για την τιμή του τρέχοντος κύκλου επικοινωνίας. Επίσης, κάθε κόμβος διατηρεί ένα μετρητή για τις slot, ο οποίος αρχικοποιείται στην αρχή κάθε κύκλου επικοινωνίας και αυξάνεται στο τέλος κάθε slot. Αντιθέτως από τις static slots, οι minislots έχουν μεταβλητό μέγεθος. Στην πραγματικότητα, αν ένας κόμβος έχει να στείλει δεδομένα σε μία συγκεκριμένη minislot, το μέγεθός της θα είναι ίδιο με το μέγεθος του μηνύματος, αλλιώς έχει ένα ελάχιστο μέγεθος που ορίζεται κατά την σχεδίαση. Ο κόμβος που έχει το frame ID το οποίο είναι ίδιο με αυτό της εκάστοτε slot, έχει την δικαιοδοσία να ξεκινήσει την αποστολή πλαισίου. Η αποφυγή διενέξεων έγκειται στο γεγονός μη-απόδοσης της ίδιας slot σε πάνω από έναν κόμβο. Έτσι, δύο διαφορετικοί κόμβοι δεν μπορούν να στείλουν πληροφορία την ίδια στιγμή, δηλαδή στην ίδια slot, διότι έχει προκαθοριστεί από την σχεδίαση διαφορετική χρονική στιγμή αποστολής για κάθε έναν από αυτούς. Η αποστολή μηνυμάτων στο dynamic segment βασίζεται στον μηχανισμό του Minislotting ο οποίος αναλύθηκε σε προηγούμενες ενότητες. 91

93 Παρουσία φυσικού σήματος στον δίαυλο Όπως αναφέρθηκε και στις προηγούμενες ενότητες, τα bits του FlexRay είναι κωδικοποιημένα κατά την NRZ (Non Return to Zero) τεχνική. Η ονομαστική τάση στον δίαυλο ορίζεται με βάση την ακόλουθη εξίσωση: U BP + U BM 2 = 2500 mv. Οι όροι BP (Bus Positive) και ΒΜ (Bus Minus) είναι οι ονομασίες των διαφορικών σημάτων σύμφωνα με τον ορισμό του FlexRay. Η θετική διαφορά δυναμικού των διαφορικών σημάτων αντιπροσωπεύει το 1, ενώ η αρνητική διαφορά δυναμικού αντιπροσωπεύει το 0. Ένα κανάλι στο οποίο οι τάσεις είναι ίσες αλλά όχι μηδενικές και στα δύο καλώδια, βρίσκεται σε αδράνεια (idle). Με άλλα λόγια, χρησιμοποιείται μία λειτουργία τριών σταδίων. Παρ όλα αυτά, υπάρχει και ένα τέταρτο στάδιο κατά το οποίο τα δύο καλώδια έχουν δυναμικό 0 V. Αυτή η λειτουργία ονομάζεται λειτουργία χαμηλής ισχύος (idle-lp). Τα τέσσερα παραπάνω στάδια παρουσιάζονται στο γράφημα Γράφημα Τα τέσσερα διαφορετικά στάδια λειτουργία του FlexRay.Το λογικό μηδέν και το λογικό ένα, παρουσιάζονται ως διαφορές δυναμικού μεταξύ των δύο καλωδίων. BP και BM είναι τα ονόματα των διαφορικών σημάτων Καλωδίωση Η γραμμή με διπλή διαφορική σηματοδότηση αποτελεί το μόνο μέσο επικοινωνίας το οποίο ορίζεται από το FlexRay. Παρ όλα αυτά υποστηρίζονται και οπτικά μέσα επικοινωνίας όπως πχ. οπτικές ίνες. Οι κόμβοι του FlexRay πρέπει να είναι σε θέση να υποστηρίζουν την χρήση δύο καναλιών επικοινωνίας, στοιχείο που αυξάνει την εφεδρεία και την ανοχή σε σφάλματα του δικτύου αλλά επίσης προσφέρει και μεγαλύτερες ταχύτητες αποστολής (2 10 = 20 Mbit/s). Οι καθυστερήσεις στην διάδοση του σήματος δεν πρέπει 92

94 να ξεπερνούν τα 2500 ns σύμφωνα με τον ορισμό του FlexRay. Επίσης, ορίζεται μέγιστη καθυστέρηση διάδοσης 10 ns/m, στοιχείο που καταλήγει σε ένα μήκος καλωδίου 2500/10 = 250 m. Βέβαια, τα πραγματικά όρια στις διάφορες τοπολογίες είναι πολύ κατώτερα. Επίσης, η καθυστέρηση μεταξύ των δύο καναλιών επικοινωνίας, Α και Β, πρέπει να διατηρείται σε όσο το δυνατόν χαμηλότερα επίπεδα. Τα καλώδια στο FlexRay δεν είναι προτυποποιημένα αλλά συνήθως χρησιμοποιούνται συνεστραμμένα καλώδια με ή χωρίς προστασία έναντι ηλεκτρομαγνητικών διαταραχών. Η χαρακτηριστική αυτεπαγωγή των καλωδίων πρέπει να είναι μεταξύ 80 και 110 Ω και η απόσβεση μικρότερη των 82 db/km. Οι γραμμές μπορούν να τερματιστούν με μία μόνο αντίσταση μεταξύ των καλωδίων ή με τη χρήση δύο αντιστάσεων σε κάθε τέλος για καλύτερη προστασία από ηλεκτρομαγνητικές παρεμβολές Τοπολογίες δικτύων Το FlexRay, πέρα από τις συνδέσεις point-to-point, υποστηρίζει και αυτές του διαύλου και του αστέρα. To FlexRay αρχικά σχεδιάστηκε ως ένας δι-κάναλος τρόπος επικοινωνίας, παρ όλα αυτά όμως, μπορεί να χρησιμοποιηθεί και με ένα κανάλι. Το μήκος το καλωδίου δεν μπορεί να είναι μεγαλύτερο από 24 m. Αυτό, αποτελεί προϋπόθεση για τις παρακάτω συνδέσεις: Μεταξύ ECU και ενεργού αστέρα, Μεταξύ δύο ECU σε έναν δίαυλο ή παθητικό αστέρα, Μεταξύ δύο ενεργών αστέρων. Ένας άλλος παράγοντας είναι ο αριθμός των ενεργών στοιχείων μεταξύ δύο ECU. Μπορεί να υπάρξει σύνδεση μεταξύ δύο αστέρων κατά μέγιστο, στοιχείο που απαιτεί μέγιστη απόσταση μεταξύ των κόμβων ίση με 72 m. Point-to-point Αυτή η σύνδεση αποτελείται από ένα αμφίδρομο κανάλι διαφορικής σηματοδότησης με τερματισμό σε κάθε γραμμή για αποφυγή ανακλάσεων. Η τερματική αντίσταση πρέπει να είναι μεταξύ 80 και 110 Ω για να ταιριάζει με την χαρακτηριστική αντίσταση των καλωδίων. Το μέγιστο μήκος καλωδίων είναι 24 m, σύμφωνα με τον ορισμό του FlexRay. Παθητικός γραμμικός δίαυλος Οι «διακλαδώσεις» σε ένα δίαυλο μπορεί να αυξήσουν τις ανακλάσεις λόγω μεγάλου εύρους ζώνης. Αυτό, μπορεί να δημιουργήσει προβλήματα στην τάση λειτουργίας με αποτέλεσμα να στέλνονται λανθασμένα bit. Για την αποφυγή αυτού, χρειάζονται κάποιες προϋποθέσεις. Εκτός από την μέγιστη απόσταση μεταξύ δύο κόμβων, που είναι ίση με 24 m, υπάρχει και το μέγιστο όριο των 22 ECU που μπορούν συνδεθούν μεταξύ τους με αυτό τον τρόπο. Οι αποστάσεις μεταξύ δύο συνδέσεων σε έναν τέτοιο δίαυλο δεν μπορεί να είναι μεγαλύτερες των 150 mm. Παθητικός αστέρας Όπως και στον παθητικό δίαυλο, έτσι και στον παθητικό αστέρα η μέγιστη απόσταση μεταξύ δύο τυχαία επιλεγμένων ECU δεν μπορεί να είναι μεγαλύτερη των 24 m. Επίσης, δεν μπορούν να συνδεθούν 93

95 παραπάνω από 22 ECU σε έναν παθητικό αστέρα, με τους δύο μακρινότερους κόμβους να χρειάζονται τον ορισμένο, από το FlexRay, τερματισμό των καλωδιώσεων για αποφυγή ανακλάσεων. Ενεργός αστέρας και συνδέσεις μεταξύ ενεργών αστέρων Η μέγιστη απόσταση μεταξύ δύο ECU σε μία τοπολογία ενεργού αστέρα, είναι όπως και στις υπόλοιπες τοπολογίες, 24 m. Δεν μπορεί να υπάρξει σύνδεση παραπάνω από δύο ενεργών αστέρων σε ένα δίκτυο, στοιχείο που οδηγεί σε μέγιστη απόσταση 3 24 m = 72 m μεταξύ δύο κόμβων. Ένα δίκτυο ενεργού αστέρα έχει τερματισμό όλων των γραμμών σε κάθε κόμβο σύμφωνα με τον ορισμό του FlexRay. Hybrid Όλες οι παραπάνω τοπολογίες δικτύου μπορούν να συνδεθούν, δημιουργώντας μία υβριδική τοπολογία δικτύου μέσω ενεργών αστέρων, πάντα εκπληρώνοντας τις προϋποθέσεις που αναφέρθηκαν. Από την φύση του το FlexRay έχει δύο κανάλια επικοινωνίας, στοιχείο που το επιτρέπει να συνδεθεί σε διαφορετικά δίκτυα ανά κανάλι. Αυτά τα δίκτυα δεν είναι απαραίτητα ίδιας τοπολογίας όπως φαίνεται και στο γράφημα Η σύνδεση μιας ECU σε παραπάνω από ένα δίκτυα μπορεί να αυξήσει το εύρος ζώνη της επικοινωνίας και να προσθέσει και εφεδρεία στο σύστημα σε περίπτωση που το ένα κανάλι σταματήσει την επικοινωνία. Γράφημα Παράδειγμα σύνδεσης των δύο καναλιών ενός FlexRay δικτύου σε δύο διαφορετικές τοπολογίες Διαχείριση σφαλμάτων Cyclic Redundancy Code Το FlexRay περιλαμβάνει ένα κώδικα εφεδρείας CRC μήκους 11-bit στην αρχή κάθε πλαισίου επικοινωνίας. Είναι σε θέση να εντοπίσει 5 εσφαλμένα bit ή μεμονωμένα σφάλματα. Bus guardian Κάθε κόμβος σε ένα FlexRay δίκτυο περιέχει έναν bus guardian ο οποίος εποπτεύει συνεχώς όλη την επικοινωνία και λειτουργεί προληπτικά στην αποφυγή διενέξεων. Είναι ένα πολύ σημαντικό εργαλείο του FlexRay το οποίο του προσδίδει ένα ανώτερο επίπεδο ασφάλειας. 94

96 Ηλεκτρομαγνητική συμβατότητα EMC Το FlexRay σε αντίθεση με το CAN έχει δύο «ισχυρά» επίπεδα επικοινωνίας. Η διαφορά στην τάση μεταξύ των δύο επιπέδων είναι περίπου mv. Αυτή η μικρή τιμή, προσφέρει τα ελάχιστα στην συνολική ηλεκτρομαγνητική ακτινοβολία του δικτύου. Σχετικά υψηλές ταχύτητας μπορούν να αυξήσουν σε μεγαλύτερο βαθμό τις εκπομπές λόγω μεγαλύτερης συχνότητας στις αλλαγές καταστάσεων Πρότυπα Τα πρότυπα φυσικού στρώματος για δίκτυα FlexRay είναι τα εξής: ISO :2013: Road vehicles -- FlexRay communications system -- Part 1: General information and use case definition. ΙSO :2013: Road vehicles -- FlexRay communications system -- Part 5: Electrical physical layer conformance test specification Ασφάλεια Το FlexRay ένα πρωτόκολλο το οποίο δεν υποστηρίζει χαρακτηριστικά ασφάλειας όσον αφορά τον «έξω κόσμο». Είναι ευθύνη της εκάστοτε εφαρμογής να εξασφαλίσει την ασφάλεια του δικτύου μέσω αλγορίθμων ασφαλείας και ταυτοποίησης του αποστολέας και του παραλήπτη κλπ. 95

97 96

98 4 Υλοποίηση του πρωτόκολλου FlexRay σε συστήματα τύπου X-by-Wire Με βάση την παραπάνω ανάλυση, το FlexRay εκλέχθηκε έτσι ώστε να γίνει η εφαρμογή κάποιων χαρακτηριστικών εφαρμογών στις οποίες χρησιμοποιείται ήδη, δειλά-δειλά, έτσι ώστε να αναδειχθούν τα χαρακτηριστικά του και τα οφέλη που προτείνει το συγκεκριμένο πρωτόκολλο επικοινωνίας. Έτσι, το παρόν κεφάλαιο θα ξεκινήσει με μία γενική περιγραφή των X-by-Wire συστημάτων και θα προχωρήσει στην αναλυτική περιγραφή δύο εφαρμογών αυτού του τύπου, οι οποίες υλοποιήθηκαν σε εργαστηριακό περιβάλλον με το FlexRay. 4.1 Συστήματα X-by-Wire Υψηλές Ταχύτητες Για να καλυφθούν οι ανάγκες των μελλοντικών συστημάτων, πρέπει η επικοινωνία να υποστηρίζει υψηλές ταχύτητες, υπό την έννοια της απόδοσης του φυσικού στρώματος, της ποιότητας της αποστολής και της λήψης, τον συγχρονισμό κλπ X-by-Wire Ο όρος X-by-Wire αποκαλύπτει όλες τις εφαρμογές, οι οποίες «χρησιμοποιούν συστήματα ελεγχόμενα από καλώδια», και έτσι, δεν έχουν «κάποιο μηχανικό έλεγχο ή σύζευξη μεταξύ των εξαρτημάτων». Στην πραγματικότητα, αυτή η κατηγορία συστημάτων δεν είναι νέα. Υπάρχουν πολλά συστήματα στην αεροναυτική βιομηχανία τα οποία λειτουργούσαν σύμφωνα με το by-wire μοντέλο για πολλά χρόνια. Επίσης, για αρκετά χρόνια τα αεροπλάνα χρησιμοποιούσαν σε κάποιες λειτουργίες τους, ηλεκτρικούς κινητήρες και δίκτυα αντί για μηχανικά συστήματα. Μέσω των X-by-Wire συστημάτων μπορεί να επιτευχθεί μεγάλο επίπεδο ασφάλειας λειτουργίας, λαμβάνοντας έναν μεγάλο αριθμό δομικών προφυλάξεων, χωρίς την χρήση λογισμικής ή υλικής εφεδρείας. 97

99 4.1.3 Εφεδρεία Προφανώς, εάν απαιτείται υψηλότερη ασφάλεια λειτουργίας σε αυτά τα συστήματα πρέπει να προστεθούν πολλά επίπεδα εφεδρείας, στην επικοινωνία, το φυσικό στρώμα και τον συνδυασμό αυτών των δύο. Η αυτοκινητοβιομηχανία καθώς και οι βιομηχανικές εφαρμογές έχουν αρχίσει να δείχνουν πολύ μεγάλο ενδιαφέρον σε εφαρμογές με τέτοια λειτουργία όπου αντικαθίσταται ο μηχανικός έλεγχος με το έλεγχο by-wire. Με μία πρόχειρη ματιά, κάποια συστήματα τα οποία εν δυνάμει αντικαθίστανται είναι η στήλη σύνδεσης της κρεμαγιέρας με το τιμόνι, η οποία μπορεί να προκαλέσει τραυματισμούς σε περιπτώσεις συγκρούσεων, η μετάδοση της κίνησης μέσω γραναζιών του συστήματος διεύθυνσης, οι κύλινδροι πίεσης του συστήματος πέδησης, οι οποίοι υπόκεινται συνεχώς σε διαρροές, τα ελατήρια των αναρτήσεων κ.ο.κ. Είναι πολλά, λοιπόν, αυτά τα συστήματα, τα οποία αν αντικατασταθούν θα επέλθουν βελτιώσεις όπως η μείωση του βάρους του εξοπλισμού των οχημάτων, στοιχείο που θα οδηγήσει σε μικρότερη κατανάλωση καυσίμου και έτσι λιγότερες εκπομπές καυσαερίων αλλά επίσης θα βελτιωθεί και η παθητική ασφάλεια σε περιπτώσεις ατυχημάτων. Επιπρόσθετα, αυτή η τεχνολογία θα προσφέρει μεγαλύτερη ευελιξία στον μηχανολογικό σχεδιασμό, στην εξωτερική αλλά και εσωτερική αισθητική των οχημάτων ή ακόμα και στην επιλογή διαφορετικών τοπολογικών επιλογών όπως η αριστερή ή δεξιά οδήγηση, η πιθανότητα εξαφάνισης του πεντάλ πέδησης ή σύμπλεξης κλπ. Με λίγα λόγια, πρόκειται για τα συστήματα του μέλλοντος, καθώς σιγά σιγά θα καταλάβουν ολόκληρα τα οχήματα Προϋποθέσεις υψηλού επιπέδου εφαρμογών Γενικά, ο αριθμός των συστημάτων επικοινωνίας αυξάνεται και αυτό είναι άμεση συνέπεια της συνεχόμενης αύξησης των CPU εντός των οχημάτων. Ένα, υψηλού επιπέδου όχημα, το 2005, διέθεται περίπου CPU, 5-6 δίκτυα CAN και 6-7 δίκτυα LIN (Local Interconnected Network). Αυτό έχει σαν αποτέλεσμα: Την αύξηση των διαμεσολαβητών (συσκευές σύνδεσης διαφορετικών δικτύων πχ. CAN, LIN), Οι τοπολογίες να γίνονται πιο σύνθετες, Να δημιουργούνται όλο και περισσότερες υψηλού επιπέδου αλληλεπιδράσεις μεταξύ των διαφορετικών συστημάτων κλπ. Καθώς κάθε κατασκευαστής οχημάτων ή εξοπλισμού γίνεται όλο και πιο εξειδικευμένος στον τομέα του, προκύπτει η ανάγκη τα ηλεκτρικά και ηλεκτρονικά συστήματα να σχεδιάζονται σε μία κοινή βάση και με τέτοιο τρόπο ώστε να λαμβάνεται υπόψιν η μεταβλητή γεωμετρία και η κλιμάκωση αυτής. Αυτή η δομική ελαστικότητα έχει διάφορα επίπεδα: Διαφορετικές μάρκες και μοντέλα πρέπει να λειτουργούν σε διάφορες πλατφόρμες, Οι διεπαφές πρέπει να είναι ανοιχτής λογικής (open-source), Η πολυπλοκότητα των συστημάτων μειώνεται μέσω συγκεκριμένων αλληλεπιδράσεων μεταξύ των εφαρμογών, Η αρχιτεκτονική των δικτύων επικοινωνίας και των κόμβων πρέπει να επιτρέπουν: o Την μαζική κατασκευή οικονομικών οχημάτων καθώς και υψηλού επιπέδου οχημάτων μέσω της ίδιας πλατφόρμας, o Η υποστήριξη της επικοινωνίας μέσω απλών, διπλών/συνδυασμένων φυσικών καναλιών επικοινωνίας, 98

100 o o Καθαρή και διακριτή περιοχή του δικτύου ανά περιοχή λειτουργίας (σασί, ασφάλεια, συστήματα ισχύος κλπ.), Τη χρήση φθηνών εξαρτημάτων. Παρακάτω θα γίνει μία σύντομη περιγραφή των λειτουργικών προϋποθέσεων, των καινούργιων τεχνικών και βιομηχανικών στρατηγιών. Υψηλή απόδοση Οι κατασκευαστές πρέπει να βελτιστοποιούνται στο μεγαλύτερο δυνατό σημείο των φυσικών ορίων τους και των αρχών λειτουργίας τους έτσι ώστε να επιτυγχάνεται η υψηλότερη δυνατή απόδοση ολόκληρου του συστήματος. Ταχύτητα επικοινωνίας Λόγω της αύξησης του μεγέθους των δεδομένων καθώς και της ποιότητας αλλά και του περιεχομένου των μηνυμάτων, η ταχύτητα του CAN δικτύου (1 Mbit/s) πλέον κρίνεται μη αρκετή. Η ταχύτητα της επικοινωνίας σε αυτά τα συστήματα πρέπει να είναι της τάξης των 10 Mbit/s σε «μονοκάναλο» μέσο επικοινωνία (δηλαδή, ταχύτητα περίπου 5 Mbit/s ανά κανάλι) ή σε «δικάναλο» μέσο με υψηλότερη ταχύτητα αλλά και με εφεδρεία. Φυσικό στρώμα Το φυσικό στρώμα όπως παρουσιάστηκε στις προηγούμενες ενότητες αποτελεί το μέσο σύνδεσης μεταξύ των κόμβων. Το φυσικό στρώμα, λοιπόν, πρέπει να υποστηρίζει τουλάχιστον δύο τεχνολογίες, για παράδειγμα καλώδια (πχ. διαφορικό ζεύγος) και οπτικό μέσο (πχ. οπτικές ίνες). Επίσης, πρέπει να επιτρέπει στους κόμβους να μεταβάλλουν την κατάστασή τους σε κατάσταση αναμονής ή αδράνειας (sleep mode) μέχρις ότου να ενεργοποιηθούν ξανά από το δίκτυο. Ακόμη, τα σήματα του δίαυλου δεν πρέπει να δημιουργούν παρεμβολές στα υπόλοιπα συστήματα και πρέπει επίσης να μην επηρεάζονται και από τα άλλα συστήματα. Ένα πολύ σημαντικό στοιχείο του φυσικού στρώματος το οποίο το υλοποιεί το FlexRay μέσω του bus guardian είναι η διαχείριση των σφαλμάτων και η πρόληψη διενέξεων. Είσοδος στον δίαυλο και έλεγχος Σε αυτά τα συστήματα, για να καλύπτονται λειτουργικές προϋποθέσεις αλλά και οι προϋποθέσεις ασφαλείας, πρέπει: Η αποστολή στατικών, static ή real-time, δεδομένων πρέπει να είναι διακριτή, με την χρήση πχ. slots, Η αποστολή δυναμικών, dynamic ή event-triggered, δεδομένων πρέπει να είναι διαθέσιμη και ασφαλής, Δεν πρέπει να υπάρχουν αλληλεπιδράσεις μεταξύ της static και dynamic επικοινωνίας, κάτω από οποιαδήποτε συνθήκες, Η αρχή της επικοινωνίας δεν πρέπει να υπόκειται σε κάποιου είδους διαιτησία, Θα πρέπει να είναι εφικτή η αποστολή διαφορετικών και συμπληρωματικών δεδομένων κατά την διάρκεια της ίδιας slot στα δύο διαφορετικά φυσικά κανάλια επικοινωνίας, Να είναι εφικτή η χρήση της ίδιας slot από διαφορετικούς κόμβους σε διαφορετικά κανάλια. 99

101 Μέθοδος συγχρονισμού Μία έμπιστη μέθοδος συγχρονισμού είναι ένα σημαντικό κομμάτι που απαιτείται από τα X-by-Wire συστήματα, έτσι ώστε να υπάρχει τέλειος συγχρονισμός μεταξύ των διεργασιών των διάφορων κόμβων του δικτύου. Αυτό, καθιστά αναγκαία την ύπαρξη: Ενός μηχανισμού γνωστού σαν Global Time, ο οποίος αναλύθηκε στα προηγούμενα κεφάλαια, και ενός συγχρονισμός ο οποίος να επιτελείται από έναν master κόμβο. Επίσης, το σύστημα πρέπει να υποστηρίζει στιγμιαίες «εξαφανίσεις» διάφορων κόμβων οι οποίοι βρίσκονται σε αδράνεια, καθώς και την επανασύνδεσή τους στο δίκτυο. Τοπολογίες δικτύου Όπως αναφέρθηκε και στις προηγούμενες ενότητες, για να βελτιωθεί η ταχύτητα της επικοινωνίας καθώς και η αξιοπιστία της, πρέπει να εξεταστούν συγκεκριμένες τοπολογίες προς αυτό το σκοπό. Αυτά τα συστήματα, λοιπόν, χρησιμοποιούν κυρίως, εκτός από την τοπολογία του γραμμικού παθητικού δίαυλου, τις εξής τοπολογίες: Παθητικός αστέρας, Ενεργός αστέρας και πιθανή σύνδεση ενεργών αστέρων μεταξύ τους, Και τελικά μία μίξη όλων των παραπάνω. Σε αυτή τη βάση, των τοπολογιών καθώς και όλων των παραπάνω, πρέπει να διαμορφωθεί ένα σύστημα με ανοχή στα σφάλματα, με δύο κανάλια επικοινωνίας, ικανό να εντοπίζει τα δικά του σφάλματα και να στέλνει διαγνωστικά μηνύματα. Επίσης, πρέπει να ληφθεί υπόψιν ότι σε αυτό το σύστημα πρέπει να υπάρχει εφεδρεία μεταξύ των CPU σε κάθε κόμβο, έτσι ώστε να διασφαλιστεί η αξιοπιστία της λειτουργίας η οποία βασίζεται στην εφεδρεία της επικοινωνίας. Ακόμη, αυτά τα συστήματα πρέπει να είναι προτυποποιημένα (σύμφωνα με την αρχή του ISO) καθώς και να πληρούν κάποιες διατάξεις εξακρίβωσης της σωστής λειτουργίας. Πρέπει να προσφέρουν μία ευρεία βάση εργαλείων ανάπτυξης κατά τον σχεδιασμό τέτοιων συστημάτων καθώς και κατά την φάση της ανάπτυξής τους και σαφώς όλα τα στοιχεία θα πρέπει να είναι διαθέσιμα από πολλούς προμηθευτές, διότι πρόκειται για βιομηχανία. Όλα αυτά τα χαρακτηριστικά διαμορφώνουν πρωτόκολλα διαφορετικά από το CAN που υπήρχε έως τώρα αλλά συμπληρωματικά σε αυτό. Αυτός είναι και ο λόγος που το FlexRay επιλέχθηκε για την υλοποίηση συγκεκριμένων εφαρμογών X-by-Wire στα πλαίσια αυτής της διπλωματικής εργασίας και οι οποίες θα αναλυθούν παρακάτω. 100

102 4.2 Υλοποίηση συστήματος αποφυγής σύγκρουσης (Collision Avoidance System) με προπορευόμενο όχημα με την χρήση του πρωτόκολλου επικοινωνίας FlexRay Περιγραφή Το σύστημα αποφυγής σύγκρουσης (Collision Avoidance System) είναι ένα σύστημα ασφαλείας το οποίο σχεδιάστηκε ώστε να μειώνει την πιθανότητα σύγκρουσης ενός οχήματος με το προπορευόμενό του. Είναι επίσης γνωστό και σαν pre-crash, forward collision warning system ή collision mitigating systems. Το παραπάνω σύστημα χρησιμοποιεί ραντάρ έτσι ώστε να εντοπίσει μία πιθανή σύγκρουση. Όταν αυτή εντοπιστεί, τότε αυτά τα συστήματα στέλνουν ένα μήνυμα «προσοχής» στον οδηγό ή ενεργούν αυτόνομα (φρενάρισμα ή στρίψιμο του τιμονιού) χωρίς την έγκριση του οδηγού. Η αποφυγή της σύγκρουσης με φρενάρισμα αναφέρεται σε οχήματα χαμηλών ταχυτήτων (κάτω των 50 km/h) ενώ αποφυγή με στρίψιμο του τιμονιού σε οχήματα μεγάλων ταχυτήτων. Όπως αναφέρθηκε και προηγουμένως, ένα τέτοιο σύστημα απαιτεί έναν συγκεκριμένο αριθμό ραντάρ στην μπροστά όψη του αυτοκινήτου έτσι ώστε από τα αισθητήρια να μετριέται κάθε στιγμή η πιθανότητα σύγκρουσης με το προπορευόμενο όχημα. Ένα άλλο κομμάτι του συστήματος, στο οποίο δόθηκε και η μεγαλύτερη βαρύτητα στα πλαίσια αυτής της διπλωματικής εργασίας, είναι το δίκτυο επικοινωνίας μεταξύ του ενός κόμβου, ο οποίος είναι υπεύθυνος για την συγκομιδή των μετρήσεων από τα αισθητήρια, και του δεύτερου κόμβου ο οποίος είναι υπεύθυνος για τους υπολογισμούς και τις εντολές ελέγχου των κινητήρων. Θα πρέπει να σημειωθεί ότι στη παρούσα διπλωματική εργασία, η υλοποίηση αυτού του συστήματος έγινε με την χρήση ηλεκτρικών κινητήρων προσομοιώνοντας ένα πλήρως ηλεκτροκίνητο όχημα. Η πιο πάνω φιλοσοφία φαίνεται στο γράφημα 4.1. Γράφημα Σύστημα αποφυγής σύγκρουσης - Collision Avoidance System 101

103 4.2.2 Τοπολογία Γενικά, το σύστημα αποτελείται από δύο κόμβους, ο ένας υπεύθυνος για τα αισθητήρια και ο δεύτερος για την οδήγηση των κινητήρων. Η σύνδεση μεταξύ τους γίνεται με την χρήση δύο καναλιών επικοινωνίας και σύμφωνα με τις αρχές του FlexRay πρωτόκολλου. Η πραγματική απόσταση μεταξύ των δύο κόμβων σε ένα όχημα είναι μικρότερη των 24 m, στοιχείο που μας επιτρέπει να χρησιμοποιήσουμε την σύνδεση point-to-point, δηλαδή έναν απλό παθητικό γραμμικό δίαυλο επικοινωνίας με δύο κανάλια. Στο γράφημα 4.2 παρουσιάζεται ένα τοπολογικό διάγραμμα του παραπάνω συστήματος. Γράφημα Τοπολογικό διάγραμμα συστήματος αποφυγής σύγκρουσης με χρήση του FlexRay Η θέση των παραπάνω σε ένα όχημα, παρουσιάζεται στο γράφημα 4.3. Οι δύο ECU βρίσκονται στις θέσεις που είναι μέσα σε γαλάζιους κύκλους. Η μονάδα ελέγχου με το κόκκινο χρώμα είναι αυτή που δέχεται τα σήματα από τα αισθητήρια ραντάρ ενώ αυτή με το γαλάζιο αποτελεί την μονάδα ελέγχου όπου πραγματοποιούνται οι υπολογισμοί και εν τέλει στέλνονται σήματα οδήγησης στους ελεγκτές των δύο κινητήρων. 102

104 Γράφημα Τοπολογία εφαρμογής Collision Avoidance σε συμβατικό όχημα Υλοποίηση Το παραπάνω σύστημα υλοποιήθηκε ως εργαστηριακή εφαρμογή, έτσι ώστε να μελετηθεί η εφαρμογή και η λειτουργία ενός δικτύου FlexRay. Καθώς σκοπός αυτής της διπλωματικής εργασίας, όπως και της υλοποίησης των εφαρμογών, είναι η μελέτη και η εφαρμογή του FlexRay επιλέχθηκε η χρησιμοποίηση του υπάρχοντος εργαστηριακού εξοπλισμού, ο οποίος θα αναλυθεί παρακάτω. Γενικά, εκτός από τον περιφερειακό εξοπλισμό που αφορά καλώδια, συνδέσεις κλπ., απαιτείται η χρήση δύο κινητήρων, δύο ελεγκτών οι οποίοι είναι υπεύθυνοι για την οδήγηση των κινητήρων, τα αισθητήρια συστήματα καθώς και τις μονάδες ελέγχου που αποτελούν τους δύο κόμβους σε κάθε εφαρμογή. Υλικό Hardware (a) Κινητήρες Οι κινητήρες που χρησιμοποιήθηκαν στην συγκεκριμένη εφαρμογή είναι ασύγχρονοι κινητήρες, βιομηχανικής χρήσης. Ο κάθε ένας προσομοιώνει την κίνηση ενός οπίσθιο τροχού του οχήματος. Πρόκειται για 4-πολικό, 3-φασικό κινητήρα με ονομαστικά χαρακτηριστικά 380 V, 3.4 A, 1.5 kw, 50 Hz, κατασκευάστρια εταιρία την Leroy Somer και μοντέλου LS90L-1.5. Προφανώς, το πεδίο λειτουργίας αυτών των κινητήρων και οι προδιαγραφές χρήσης τους δεν προορίζονται για οχήματα, αλλά για βιομηχανική λειτουργία. Παρ όλα αυτά, η μελέτη της συγκεκριμένης εφαρμογής εξαντλείται στα όρια της επικοινωνίας και της εφαρμογής του πρωτόκολλου FlexRay και για αυτό το λόγο δεν χρησιμοποιήθηκαν σύγχρονοι κινητήρες μόνιμου μαγνήτη (PMSM), οι οποίοι ενδείκνυνται για εφαρμογές οχημάτων. 103

105 Γράφημα Ασύγχρονοι κινητήρες οπίσθιων τροχών οχήματος (b) Ελεγκτές κινητήρων Μετατροπείς Για την υλοποίηση του συστήματος αποφυγής σύγκρουσης (Collision Avoidance System) και ειδικότερα για την οδήγηση των κινητήρων, χρησιμοποιήθηκαν δύο ελεγκτές κινητήρων. Ο πρώτος τριφασικός ελεγκτής (drive) είναι της εταιρίας ABB και πρόκειται για το μοντέλο ACS A-5+E200+K457 με ονομαστικά στοιχεία 3~380 V, 18 A και 5.5 kw. Ο δεύτερος ελεγκτής υλοποιήθηκε με την χρήση της πλατφόρμας DS 1104 της εταιρίας dspace η οποία οδηγεί μία 3-φασική γέφυρα IGBT η οποία αποτελεί ιδιοκατασκευή του εργαστηρίου ηλεκτρικών μηχανών του Α.Π.Θ. Σε αυτό το σημείο πρέπει να προστεθεί ότι ο πρώτος ελεγκτής χρησιμοποιεί την τεχνική οδήγησης του ελέγχου V/f ενώ στην δεύτερη περίπτωση χρησιμοποιείται η δέλτα διαμόρφωση. Επίσης, στην περίπτωση του πρώτου ελεγκτή υπάρχει μία μετρητική διάταξη η οποία αποτελεί ιδιοκατασκευή του εργαστηρίου ηλεκτρικών μηχανών του Α.Π.Θ. και η οποία επιτρέπει την μέτρηση των ρευμάτων και των τάσεων έτσι ώστε να είναι δυνατή η οδήγηση του κινητήρα. Ο δεύτερος ελεγκτής μέσω της διαδικασίας αρχικοποίησης του, δεν απαιτεί μετρητικά όργανα διότι εκτελεί την οδήγηση sensorless (χωρίς την χρήση αισθητηρίων). Ακόμη, για να είναι δυνατή η μέτρηση της πραγματικής ταχύτητας του κάθε τροχούκινητήρα λαμβάνεται μέτρηση μέσω της τεχνικής ελέγχου οδήγησης των κινητήρων και με την χρήση οπτικού κωδικοποιητή θέσης (optical encoder). Η εξέταση των τεχνικών οδήγησης του κινητήρα είναι πέρα από τα πλαίσια αυτής της διπλωματικής εργασίας. Και οι δύο ελεγκτές συνδέονται με την πλατφόρμα DS 1104 της dspace μέσω των αναλογικών και ψηφιακών της εξόδων και λαμβάνοντας κατά αυτό τον τρόπο την αναφορά της ταχύτητας του κάθε τροχού-κινητήρα. Γράφημα Φασική γέφυρα IGBT για την οδήγηση κινητήρα 104

106 Γράφημα Μετρητική διάταξη του συστήματος οδήγησης του ενός κινητήρα (c) Μονάδες ελέγχου - ECU Και οι δύο κόμβοι αποτελούνται από μία μονάδα ελέγχου, η οποία είναι μία αναπτυξιακή πλακέτα της SofTec και συγκεκριμένα η SK-S12XDP512-A. Αυτές οι δύο πλακέτες αποτελούν μέρος του αναπτυξιακού πακέτου 4300STARTERKIT της NXP Semiconductors (πρώην Freescale Semiconductors), το οποίο εκτός από τις μονάδες ελέγχου περιλαμβάνει: 2 x SK-S12XDP512-A EVBs from SofTec, 2 x MFR4300FRDC from Freescale / DevTech, 2 x Board Power Supply (Sceptre PS-1213), 2 x FlexRay bus cable, 1 x Serial Cable, 1 x USB to BDM Cable (for debug). Αυτό το αναπτυξιακό πακέτο σχεδιάστηκε με σκοπό την ανάπτυξη επικοινωνίας μεταξύ της οικογένειας HCSS12X επεξεργαστών της SofTec και της FlexRay MFR4300 Daughter Board. Η επικοινωνία FlexRay υλοποιείται με δύο κανάλια μέσω των δύο ολοκληρωμένων TJA108 της Phillips, τα οποία υλοποιούν το φυσικό στρώμα της επικοινωνίας. Οι παραπάνω μονάδες ελέγχου παρουσιάζονται στο γράφημα

107 Γράφημα 4.7. Αναπτυξιακό πακέτο 4300STARTERKIT από την NXP Semiconductors (πρώην Freescale Semiconductors) Οι αναπτυξιακές πλακέτες είναι εφοδιασμένες με τον επεξεργαστή MC9S12XDP512 της οικογένειας HCS12X. Επίσης, το πακέτο προσφέρει την δυνατότητα χρήσης πολλαπλών δικτύων CAN, LIN, RS-232, FlexRay (μέσω της ειδικής πλακέτας) καθώς και μία σειρά από εισόδους, εξόδους, ATDs (Analog-To-Digital converters), εξόδους PWM, ποτενσιόμετρα, φωτοαντιστάσεις κλπ. Σε αυτό το σύστημα και στον πρώτο κόμβο, χρησιμοποιήθηκε η φωτοαντίσταση ως προσομοίωση ενός ραντάρ του οχήματος, διαφέροντας στην τεχνολογία, αλλά διατηρώντας την ίδια κατάσταση ως προς το αποτέλεσμα. Έτσι, κατά την προσέγγιση ενός αντικειμένου κοντά στην φωτοαντίσταση (λιγότερο φως, άρα και διέγερση της φωτοαντίστασης), προσομοιώνονταν η προσέγγιση κάποιου αντικειμένου (οχήματος) στα ραντάρ του υπό διερεύνηση συστήματος. Η απομάκρυνση του αντικειμένου από την φωτοαντίσταση, οδηγεί στην υψηλότερη διέγερσή της και άρα στην απομάκρυνση κάποιου αντικειμένου από τα ραντάρ του υπό διερεύνηση οχήματος. Ακόμη, από τις συγκεκριμένες μονάδες ελέγχου και συγκεκριμένα στον δεύτερο κόμβο, ο οποίος πρόκειται για αυτόν που οδηγεί τους ελεγκτές των κινητήρων, χρησιμοποιήθηκαν δύο έξοδοι PWM με μεταβλητό πλάτος, ανάλογο της απόστασης που βρίσκεται το αντικείμενο από την φωτοαντίσταση καθώς και μία ψηφιακή έξοδος που υποδεικνύει την ενεργοποίηση του συστήματος πέδησης, στο καδράν του οδηγού κατά την περίπτωση σημαντικής μείωσης της απόστασης του αντικειμένου από την φωτοαντίσταση του κόμβου 1. Οι δύο έξοδοι παλμών PWΜ, των οποίων το εύρος αντιστοιχεί στην ταχύτητα αναφορά των κινητήρων, συνδέονται με τις αναλογικές εισόδους του πρώτου και του δεύτερου ελεγκτή (δηλαδή την αναλογική είσοδο της πλατφόρμας DS 1104 της dspace και του αντιστροφέα της ABB). 106

108 Λογισμικό Εκτός από τον υλικό εξοπλισμό που χρησιμοποιήθηκε σε αυτή τη διπλωματική εργασία, χρησιμοποιήθηκε και λογισμικό υλικό. Πριν παρουσιαστούν τα κύρια προγράμματα όπου έγινε η υλοποίηση του κύριου κώδικα της εφαρμογής, θα γίνει μία ανάλυση του τρόπου προγραμματισμού των περιφερειακών συσκευών του FlexRay έτσι ώστε να καταστήσουν την επικοινωνία λειτουργική και να της προσδώσουν τα χαρακτηριστικά που επιθυμεί ο σχεδιαστής. (a) MATLAB/Simulink by Mathworks Όπως αναφέρθηκε προηγουμένως, ο ένας εκ των δύο ελεγκτές κινητήρα υλοποιείται με την χρήση της πλατφόρμας DS 1104 της dspace και μίας 3-φασικής γέφυρας με IGBT. Η μοντελοποίηση της τεχνικής ελέγχου που εκτελείται real-time από την συγκεκριμένη πλατφόρμα υλοποιήθηκε στο λογισμικό πρόγραμμα MATLAB/Simulink της εταιρίας Mathworks το οποίο χρησιμοποιεί ένα γραφικό περιβάλλον και εγκαθίσταται σε Η/Υ. Το συγκεκριμένο πρόγραμμα ενδείκνυται για την μοντελοποίηση τεράστιου αριθμού συστημάτων και εφαρμογών καθώς και για την επίλυση πολύπλοκων συστημάτων, τεχνικών, αλγορίθμων καθώς και την προσομοίωση της λειτουργίας τους. Η περαιτέρω ανάλυση αυτού του λογισμικού προγράμματος είναι πέρα από τα πλαίσια της συγκεκριμένης διπλωματικής εργασίας. Μία πολύ σημαντική λειτουργία του MATLAB/Simulink είναι η άμεση παραγωγή εκτελέσιμου κώδικα προσαρμοσμένου στις ρυθμίσεις της συγκεκριμένης χρησιμοποιούμενης πλατφόρμας, προσφέροντας έτσι την δυνατότητα λειτουργίας του κώδικα σε real-time προσομοίωση. (b) ControlDesk by dspace Η επιτήρηση όλων των λειτουργιών, των μεταβλητών καθώς και του ελέγχου της πλατφόρμας DS 1104, πραγματοποιείται με το λογισμικό της dspace, το ControlDesk το οποίο χρησιμοποιεί και αυτό ένα γραφικό περιβάλλον λειτουργώντας σε Η/Υ. Το ControlDesk έχει την δυνατότητα άμεσης συνεργασίας με το MATLAB/Simulink, καθώς μπορεί να διαβάζει όλες τις μεταβλητές του μοντέλου που σχεδιάστηκε με το τελευταίο καθώς και όλων των ρυθμίσεων των σχετικών με την real-time λειτουργία του μοντέλου. Επίσης, το λογισμικό προμηθεύει τον χρήστη με μια γκάμα από εργαλεία εποπτείας όπως διαγράμματα, μετρητές, κουμπιά, λυχνίες κλπ., τα οποία έχουν άμεση σύνδεση με τις ορισμένες μεταβλητές του μοντέλου, κάνοντας έτσι την παρακολούθησή τους, καθώς και την καταγραφή τους, εύκολη υπόθεση. (c) Προγραμματισμός Low Level Device Drivers LLD Drivers Ο προγραμματισμός των πλακετών FlexRay MFR4300 βασίζεται πάνω στον προγραμματισμό των περιφερειακών συσκευών του μc, οι οποίες καθιστούν λειτουργική την επικοινωνία και ορίζουν όλα εκείνα τα χαρακτηριστικά που ο σχεδιαστής επιθυμεί να υλοποιεί το δίκτυο. Έτσι, ο προγραμματισμός των LLD Drivers αναφέρεται στον προγραμματισμό μίας διεπαφής (API) στην πλακέτα MFR4300 FlexRay. Αυτό το πρόγραμμα οδήγησης των περιφερειακών της MFR4300 προσφέρει έναν αποσφαλματωμένο πρόγραμμα συσκευής το οποίο επιτρέπει στον προγραμματιστή να δημιουργήσει τον δικό του κώδικα γραμμένο σε C γλώσσα έτσι ώστε να δημιουργήσει μία εφαρμογή. Το πρόγραμμα οδήγησης των LDD απομονώνει τη λειτουργία του υλικού (hardware) σε μία σειρά από εντολές οδήγησης μέσω ενός καθορισμένου API. Το API (Application Programming Interface) καθορίζει την προτυποποίηση της διεπαφής μεταξύ του λογισμικού και του υλικού (hardware), όπως φαίνεται στο 107

109 γράφημα 4.8. Αυτό, καθιστά δυνατή την ενεργοποίηση μιας υψηλού επιπέδου φορητότητας καθώς και ανεξαρτητοποίησης του υλικού (hardware) για τον κώδικα εφαρμογής. Γράφημα 4.8. Application Programming Interface στον προγραμματισμό των Low Level Device Drivers Η γενική μορφή μιας εντολής οδήγησης είναι: ioctl (peripheral_module_identifier, command, command_specific_parameter); όπου: Peripheral_module_identifier Είναι η βασική διεύθυνση της περιφερειακής συσκευής Σημείωση: Για τους «ειδικούς» καταχωρητές, χρησιμοποιείται η τιμή n, όπου n = 0.. N. Για όλους τους άλλους καταχωρητές, χρησιμοποιείται ο σταθερός συμβολισμός FR0 και γενικότερα FRn όπου n, ο εκάστοτε καταχωρητής. Command Προσδιορίζει την ενέργεια η οποία θα εκτελεστεί από την συγκεκριμένη συσκευή. Αντιπροσωπεύει το όνομα της εντολής όπως αυτή εφαρμόζεται από το κάθε API. Command_specific_parameter Προσδιορίζει όλα τα υπόλοιπα δεδομένα που απαιτούνται έτσι ώστε να εκτελεστεί μία εντολή. Γενικά, μπορεί να είναι ένας pointer σε κάποια structure, το NULL, ή μία τιμή μεταβλητής σε συνάρτηση με μία συγκεκριμένη εντολή. Εάν η απαιτούμενη παράμετρος είναι τιμή μεταβλητής, προτιμάται η χρήση σταθερής τιμής για λόγους απόδοσης του κώδικα. Στο γράφημα 4.9 παρουσιάζεται ένα παράδειγμα σύνταξης των εντολών API: 108

110 Γράφημα 4.9. Παράδειγμα εντολών προγραμματισμού των LLD Drivers τύπου macros Για να είναι εφικτή η χρησιμοποίηση των περιφερειακών συσκευών που υλοποιούν την επικοινωνία του FlexRay απαιτούνται κάποια αρχεία κεφαλίδας (header files). Αυτά παρουσιάζονται στον πίνακα 5. Όνομα arch_fr.h fr.h Fr_Types.h Fr_Cfg.h Περιγραφή Αυτό το αρχείο περιέχει την δομή του καταχωρητή της περιοχής του ελεγκτή της επικοινωνίας (Communication Controller). Αυτό το αρχείο περιέχει τις macro-εντολές και τους ορισμούς του προγράμματος οδήγησης FlexRay API. Αυτό το αρχείο περιέχει τους ορισμούς όλων των απαραίτητων δομών για την διαμόρφωση του Communication Controller. Αυτό το αρχείο περιέχει δεδομένα διαμόρφωσης του Communication Controller. Πίνακας 5. Απαιτούμενα Header Files Στο αρχείο Fr_Types.h περιέχονται οι ορισμοί όλων των απαραίτητων δομών για την διαμόρφωση του Communication Controller. Η δομή Fr_CCConfigInfoType περιέχει όλες τις παραμέτρους διαμόρφωσης ενός Communication Controller όπως δεδομένα του πρωτόκολλου, buffers, διαμόρφωση των timers κλπ. Η διαμόρφωση των buffers και των timers αντιπροσωπεύεται με το NULL-τερματιζόμενο πίνακα διευθυνσιοδοτήσεων (pointers) στις δομές τύπου Fr_CCBufferInfoType ή Fr_CCTimerInfoType. Οι διευθύνσεις αυτών των pointers αποθηκεύονται στις περιοχές BufferInfoPtr ή TimerInfoPtr της δομής Fr_CCConfigInfoType. Η διαμόρφωση των δεδομένων του πρωτοκόλλου περιλαμβάνει την κατανομή μιας δομής τύπου Fr_CCConfigInfoType και την αποθήκευση κατάλληλων τιμών στα πεδία της. Το πρόγραμμα οδήγησης του FlexRay ορίζει τους ακόλουθους τύπους δομών δεδομένων για την διαμόρφωση των παραμέτρων των buffer: 109

111 Fr_CCBufferInfoType, Fr_CCReceiveFifoConfigType, Fr_CCTransmitBufferConfigType, Fr_CCReceiveBufferConfigType, Fr_CCReceiveShadowBufferConfigType. Οι σχέσεις μεταξύ αυτών των δομών μπορούν να βρεθούν στο γράφημα 4.10 όπου παρουσιάζεται ένα παράδειγμα διαμόρφωσης δύο buffer, ενός Receive FIFO buffer και ενός Transmit buffer. Γράφημα Παράδειγμα διαμόρφωσης δύο buffer, ενός Receive FIFO buffer και ενός Transmit buffer Εκτός από την διαμόρφωση των buffer, το πρόγραμμα οδήγησης του FlexRay ορίζει τους ακόλουθους τύπους δεδομένων έτσι ώστε να διαμορφώσει τις παραμέτρους διαμόρφωσης των timers: Fr_CCTimerInfoType, Fr_AbsoluteAlarmInfoType, Fr_RelativeAlarmInfoType. Οι σχέση μεταξύ αυτών των δομών φαίνονται στο γράφημα 4.11 όπου παρουσιάζεται ένα παράδειγμα με δύο timers. Ο ένας διαμορφώνεται ως «απόλυτος» (absolute) ενώ ο άλλος σαν «εξαρτώμενος» (relative) timer. 110

112 Γράφημα Παράδειγμα διαμόρφωσης δύο timer Στο παράρτημα Β, βρίσκεται μία περίληψη των ορισμών όλων των τύπων που σχετίζονται με το πρόγραμμα οδήγησης και την διαμόρφωση του Communication Controller. Αυτοί οι ορισμοί μπορούν να βρεθούν και στο αρχείο Fr_Types.h. Επίσης, στο ίδιο παράρτημα βρίσκεται και ένας περιληπτικός πίνακας όλων των macro-εντολών τύπου ioctl. (d) CodeWarrior Development Studio (Classic IDE) To CodeWarrior Development Studio (CW) είναι ένα αναπτυξιακό εργαλείο το οποίο σχεδιάστηκε έτσι ώστε ναf δώσει την δυνατότητα στους προγραμματιστές ενσωματωμένων συστημάτων να προγραμματίσουν δικά τους συστήματα σε γλώσσα C/C++, επιλέγοντας έτοιμες αρχικοποιήσεις για τον επεξεργαστή που χρησιμοποιούν και προσφέροντας την δυνατότητα του ολοκληρωμένου IDE ειδικά σχεδιασμένου για κάθε επίπεδο της αναπτυξιακής διεργασίας. Αυτό το εργαλείο αποτέλεσε το κύριο λογισμικό προγραμματισμού του μικροεπεξεργαστή των δύο κόμβων. Προσφέρει ένα γραφικό περιβάλλον στο οποίο προσφέρεται η δυνατότητα υλοποίησης κώδικα καθώς και το debugging αυτού. Μέσω του CW αναλύθηκαν και προσαρμόστηκαν τα header files αλλά προγραμματίστηκε και ο κύριος κώδικας υλοποίησης του συστήματος αποφυγής σύγκρουσης. Στο γράφημα 4.12 παρουσιάζεται το γραφικό περιβάλλον του CW όπου φαίνονται τα βασικά αρχεία εκτελέσιμου κώδικα, αρχικοποίησης και διαμόρφωσης των περιφερειακών του μικροελεγκτή μέσω του δένδρου εργασίας, όσον αφορά εφαρμογή του Collision Avoidance System. 111

113 Γράφημα CodeWarrior - Δένδρο Εργασίας Στο φάκελο Inc περιέχονται τα αρχεία FlexRay LLD (arch_fr.h, fr.c, fr.h, Platform_Types.h, Fr_types.h), το αρχείο διαμόρφωσης του εκάστοτε κόμβου (Fr_Cfg.h) αλλά και τα αρχεία υποστήριξης της λειτουργίας των LED (led.h). Τα αρχεία του προγράμματος οδήγησης των LLD, συνήθως, δεν χρειάζονται κάποια τροποποίηση από κάποιον χρήστη που επιθυμεί απλά να χρησιμοποιήσει τον υπάρχον δίαυλο και όχι να τον αλλάξει. Στο αρχείο διαμόρφωσης του κάθε κόμβου (Fr_Cfg.h), υπάρχουν τα δεδομένα διαμόρφωσης του κάθε κόμβου και για αυτό το συγκεκριμένο αρχείο είναι διαφορετικό σε κάθε κόμβο. Ο φάκελος Sources περιέχει τον κώδικα της εφαρμογής στο αρχείο cfg_node1.c ή cfg_node2.c, αναλόγως αν η εργασία πραγματοποιείται στον πρώτο ή δεύτερο κόμβο, αντίστοιχα. Ο φάκελος FreeMASTER περιέχει τα αρχεία επικοινωνίας με το λογισμικό FreeMASTER Tool, έτσι ώστε να είναι δυνατή η προβολή και επιτήρηση καίριων μεταβλητών του συστήματος. Στους υπόλοιπους φακέλους του δένδρου εργασίας υπάρχουν όλες οι απαραίτητες βιβλιοθήκες, αρχεία σύνδεσης, αρχεία υποστήριξης κλπ. (e) FreeMASTER Tool Το FreeMASTER Tool επιτρέπει τον έλεγχο μίας εφαρμογής ενσωματωμένου συστήματος μέσω ενός γραφικού περιβάλλοντος το οποίο λειτουργεί σε έναν συμβατικό Η/Υ προσφέροντας έτσι επιτήρηση και εμφάνιση μεταβλητών του ενσωματωμένου συστήματος. Ο παλμογράφος του FreeMASTER Tool είναι παρόμοιος με ένα συμβατικό παλμογράφο. Παρουσιάζει γραφικά τις επιλεγμένες μεταβλητές σε real-time λειτουργία. Οι τιμές των μεταβλητών μετρούνται real-time από το ενσωματωμένο σύστημα μέσω σειριακής επικοινωνίας, RS-232, που συνδέει τον υπολογιστή με τους κόμβους. Το περιβάλλον του FreeMASTER Tool παρουσιάζεται στο γράφημα

114 Γράφημα Γραφικό περιβάλλον FreeMASTER Tool Support Προγραμματισμός επικοινωνίας FlexRay Έχοντας σαν βάση όλα τα παραπάνω, σε αυτό το σημείο θα παρουσιαστεί ο προγραμματισμός και η αρχικοποίηση της επικοινωνίας FlexRay καθώς και ο παράμετροι που επιλέχθηκαν κατά την φάση της σχεδίασης. Το πρόγραμμα οδήγησης είναι υπεύθυνο για τις εξής διεργασίες: Παραμετροποιεί τον ελεγκτή του FlexRay με τον κατάλληλο προγραμματισμό εργασιών και τις απαραίτητες παραμέτρους για τον χρονισμό των κόμβων, Παραμετροποιεί τους buffers μηνυμάτων, ενεργοποιώντας, έτσι, την αποστολή και λήψη των FlexRay μηνυμάτων καθώς και ενεργοποιεί τα interrupts, Παραμετροποιεί έναν «απόλυτο» (absolute) timer και ενεργοποιεί τα timer interrupts, Αποστέλλει wake-up σύμβολα έτσι ώστε να ενεργοποιήσει όλους τους κόμβους, Καθιερώνει την FlexRay επικοινωνία μεταξύ και των δύο κόμβων (οι οποίοι είναι παραμετροποιημένοι ως coldstart κόμβοι) και Ενημερώνει τους buffers αποστολής μηνυμάτων με τα νέα δεδομένα προς αποστολή. Ο προγραμματισμός της επικοινωνίας καθώς και οι ορισμένες κατά τον σχεδιασμό σταθερές χρόνου της επικοινωνίας παρουσιάζονται στον πίνακα 6. Σημείωση: Στο πρωτόκολλο FlexRay, ένας κόμβος αναφέρεται ως coldstart όταν είναι προγραμματισμένος να στέλνει start-up πλαίσια σε μία ομάδα (cluster) αλλά όχι στο σύνολο του δικτύου. Οι coldstart κόμβοι δεν αποστέλλουν πλαίσια συγχρονισμού. 113

115 Γενικές παράμετροι Ταχύτητα 10 Mbit/s Αριθμός startup κόμβων 2 Μέγεθος MacroTick 1 us Μέγεθος κύκλου επικοινωνίας 3000 ΜΤ Μέγεθος Static Segment 1920 MT Μέγεθος Dynamic Segment 480 MT Μέγεθος Symbol Window 100 MT Μέγεθος Network Idle Time MT NIT Offset Correction Start 2600 ΜΤ Static Segment Αριθμός Static Slot 48 Μέγεθος Static Slot 40 MT Action Point offset 10 MT Μέγεθος Payload static 2 x 16 bit Dynamic Segment Αριθμός Minislots 24 Μέγεθος Minislot 20 MT Minislot Action Point Offset 10 MT Μέγιστο μέγεθος Payload 2 x 16 bit Dynamic Ανάθεση Slot Static Segment Slot 2 Κόμβος 1, Κανάλι Α και Β, Πλαίσια Startup και Sync Slot 18 Κόμβος 2, Κανάλι Α και Β, Πλαίσια Startup και Sync Slot 26 Κόμβος 1, Κανάλι Α μόνο Slot 42 Κόμβος 2, Κανάλι Β μόνο Ανάθεση Minislot Dynamic Segment Minislot 50 Κόμβος 1, Κανάλι Α (κύκλος 1) και Β (κύκλος 11) Minislot 60 Κόμβος 2, Κανάλι Α (κύκλος 3) και Β (κύκλος 33) Πίνακας 6. Δεδομένα παραμετροποίησης επικοινωνίας FlexRay Η εφαρμογή υλοποιεί μία FlexRay επικοινωνία με baud rate 10 Mbit/s ανά κανάλι. Κάθε κόμβος στέλνει δεδομένα σε δύο static slots και σε μία minislot. Μία από τις static slot χρησιμοποιείται συνεχώς, ταυτόχρονα ως start-up slot και ως slot δεδομένων. Ο κύκλος επικοινωνίας του FlexRay δικτύου καθορίζεται στα 3 ms. Ο πρώτος κόμβος, σύμφωνα με την σχεδίαση, στέλνει δεδομένα στις slot 2, 26 και στην minislot 50, ενώ ο δεύτερος κόμβος στις slot 18, 42 και στην minislot 60 κάθε κύκλου επικοινωνίας. Αυτή η παραμετροποίηση παρουσιάζεται στο γράφημα Γράφημα Διαμόρφωση κύκλου επικοινωνίας του FlexRay δικτύου στο σύστημα αποφυγής σύγκρουσης 114

116 Η επιλογή των παραμέτρων ρύθμισης του κύκλου επικοινωνίας καθώς και ολόκληρης της FlexRay επικοινωνίας, έγινε με το κριτήριο μιας ολοκληρωμένης εφαρμογής οχήματος και όχι για την χρήση του μόνο στο σύστημα αποφυγής σύγκρουσης. Για αυτό το λόγο, παρατηρείται μεγάλος αριθμός slot αποστολής και λήψης, όπως θα φανεί και παρακάτω, καθώς και μεγαλύτερο, από το απαιτούμενο για την εφαρμογή, μέγεθος static και dynamic segment. Παραμετροποίηση και λειτουργία κόμβου Οι buffer αποστολής, λήψης καθώς και οι FIFO buffers είναι διαμορφωμένοι όπως φαίνεται στο γράφημα 4.15 και 4.18 για τους δύο κόμβους, αντίστοιχα. Εκτός από αυτούς τους buffer, για την υλοποίηση της εφαρμογής χρησιμοποιήθηκαν και πέντε shadow buffers για την λήψη μηνυμάτων. Η χρήση τέτοιων buffer γίνεται για την ευκολία υλοποίησης της εφαρμογής και δεν ορίζονται από τον ορισμό του FlexRay. Οι shadow buffers χρησιμοποιούνται για την αποθήκευση των πλαισίων έως ότου αυτά περάσουν από την φάση του ελέγχου της εγκυρότητάς τους και το φιλτράρισμα. Αφού γίνει αυτό τότε αποθηκεύονται στους ορισμένους buffer λήψης μηνυμάτων και η εφαρμογή ενημερώνεται ότι ο συγκεκριμένος buffer περιέχει πλέον εγκεκριμένα δεδομένα. Οι shadow buffer που χρησιμοποιούνται στην συγκεκριμένη υλοποίηση είναι οι εξής: 18 ος buffer μηνύματος για το κανάλι Α και το segment δεδομένων 1, 19 ος buffer μηνύματος για το κανάλι Β και το segment δεδομένων 1, 105 ος buffer μηνύματος για το κανάλι Α και το segment δεδομένων 2, 106 ος buffer μηνύματος για το κανάλι Β και το segment δεδομένων 2. Η εφαρμογή χρησιμοποιεί και τα δύο ανεξάρτητα segment των buffer μηνυμάτων. Όλοι οι buffer για την αποστολή ή την λήψη μηνυμάτων στο στατικό κομμάτι του κύκλου επικοινωνίας (buffer μηνυμάτων 0, 1, 3, 13, 18 και 19) ανήκουν στο πρώτο segment (segment 1). Οι ανεξάρτητοι buffer μηνυμάτων οι οποίοι ανήκουν στο δυναμικό κομμάτι του κύκλου επικοινωνίας (buffer μηνυμάτων 100, 101, 103, 104, 105 και 106) ανήκουν στο δεύτερο segment (segment 2). Επίσης, η εφαρμογή χρησιμοποιεί και το σύστημα λήψης FIFO. Το FIFO στον κόμβο 1 έχει ανατεθεί στο κανάλι Β, ενώ στον κόμβο 2, στο κανάλι Α. Το μήκος κάθε FIFO τιμής είναι 2 λέξεις. Και οι δύο FIFO buffers είναι έτσι διαμορφωμένοι ώστε να δέχονται όλα τα μηνύματα από το 1 έως το 4, παρ όλα αυτά τα πλαίσια που λαμβάνονται στις slots 2, 18, 26 (για τον κόμβο 1) και 42 (για τον κόμβο 2) αποθηκεύονται και σε ανεξάρτητους διαμορφωμένους buffer μηνυμάτων. Στην συγκεκριμένη εφαρμογή παρουσιάζονται και οι on-chip timers. Ο «απόλυτος» (absolute) timer 1, λειτουργεί με μηχανισμό οδηγούμενο από interrupt. Έτσι, καλείται μία υπηρεσία ρουτίνας όταν ο timer φθάσει το χρονικό όριο (150 MT). 115

117 Γράφημα Διαμόρφωση buffer μηνυμάτων στον κόμβο 1 Στο γράφημα 4.16 παρουσιάζεται η περιγραφή των πινάκων δεδομένων που χρησιμοποιούνται από τους buffer μηνυμάτων κατά την αποστολή του κόμβου 1, δηλαδή στις slot 2 και 26. Γίνεται εύκολα αντιληπτό ότι η αποστολή της τιμής της φωτοαντίστασης αποθηκεύεται κάθε στιγμή στον αποστολέα buffer0 και στο κανάλι Α αλλά και στο κανάλι Β μέσω του πίνακα δεδομένων buffer_cc0_transmitbuffer0. Με αυτό τον τρόπο αυξάνεται η εφεδρεία του συστήματος διότι χρησιμοποιούνται και τα δύο κανάλια επικοινωνίας για την αποστολή της ίδιας πληροφορίας στην ίδια slot και στα δύο κανάλια, στοιχείο που καθορίζει σημαντική την πληροφορία. Στον άλλο αποστολέα buffer1 αποστέλλεται μία 16 bit τιμή η οποία ξεκινάει από το και μειώνεται κατά ένα στο τέλος κάθε κύκλου επικοινωνίας, μέχρις ότου την τιμή 0 όπου και ξεκινάει από την αρχή. Κατά τον σχεδιασμό, ορίστηκε τυχαία αυτή η λειτουργία για τον συγκεκριμένο buffer αλλά και την slot, διότι δεν υπήρχε κάποια άλλη μεταβλητή της εφαρμογής προς αποστολή. Ο συγκεκριμένος buffer αντιστοιχεί στην slot 26 και γίνεται αποστολή μόνο στο κανάλι Α σε κάθε κύκλο επικοινωνίας. 116

118 Γράφημα Περιγραφή πινάκων δεδομένων των αντίστοιχων buffer αποστολής στο static segment του κύκλου επικοινωνίας του κόμβου 1 Ο κόμβος 1, όπως αναφέρθηκε και προηγουμένως, έχει σχεδιαστεί να στέλνει πληροφορίες και στο δυναμικό κομμάτι του κύκλου επικοινωνίας και συγκεκριμένα στην minislot 50. Παρόμοια με το γράφημα περιγραφής του στατικού μέρους του κύκλου επικοινωνίας, στο γράφημα 4.17 παρουσιάζεται η περιγραφή των πινάκων δεδομένων οι οποίοι σχετίζονται με τους αποστολείς buffers του dynamic segment και της minislot 50. Και εδώ γίνεται εύκολα αντιληπτό ότι επιλέχθηκε η αποστολή τυχαίων αριθμών στις θέσεις των δεδομένων. Οι θέσεις αυτές θα περιείχαν σημαντικά δεδομένα αποστέλλοντας πληροφορίες για άλλες εντολές ή συστήματα που θα είχαν συμμετοχή στο συγκεκριμένο δίκτυο σε ένα όχημα. Ένα ακόμη σημαντικό στοιχείο είναι το γεγονός, ότι στην τέταρτη λέξη του αποστολέα buffer στο δυναμικό κομμάτι της επικοινωνίας, αποστέλλεται ο αναγνωριστικός αριθμός ID του κόμβου. Γράφημα Περιγραφή πινάκων δεδομένων των αντίστοιχων buffer αποστολής στο dynamic segment του κύκλου επικοινωνίας του κόμβου 1 117

119 Όσον αφορά τον δεύτερο κόμβο 2, στα γραφήματα 4.18, 4.19 και 4.20 παρουσιάζονται οι ίδιες περιγραφές και διαμορφώσεις όπως έγινε και παραπάνω για τον κόμβο 1. Ο κόμβος 2 δεν έχει κάποιο δεδομένο να αποστείλει στον κόμβο 1, καθώς ο ρόλος του είναι η παραγωγή PWM παλμών, των οποίων το εύρος ορίζεται με βάσει τις τιμές που λαμβάνει στην slot 2, στο κανάλι Α και Β, οι οποίες αντιστοιχούν στην τιμή της φωτοαντίστασης του κόμβου 1. Έτσι, τα γραφήματα περιγραφής του κόμβου 2 είναι τα εξής: Γράφημα Διαμόρφωση buffer μηνυμάτων στον κόμβο 2 Γράφημα Περιγραφή πινάκων δεδομένων των αντίστοιχων buffer αποστολής στο static segment του κύκλου επικοινωνίας του κόμβου 2 118

120 Γράφημα Περιγραφή πινάκων δεδομένων των αντίστοιχων buffer αποστολής στο dynamic segment του κύκλου επικοινωνίας του κόμβου 2 Η μόνη διαφορά, σε σύγκριση με τον κόμβο 1, βρίσκεται στην σειρά των bit των buffers αποστολής του κόμβου 2, όπου παρατηρείται ανάποδη σειρά σε σχέση με τους αντίστοιχους του κόμβου 1 στο στατικό κομμάτι του κύκλου επικοινωνίας. Και στον κόμβο 2, παρατηρείται η τιμή του αναγνωριστικού αριθμού ID του κόμβου 2 στο τέταρτο bit δεδομένων της minislot 60, δυναμικό κομμάτι του κύκλου επικοινωνίας. Με την παραπάνω ανάλυση, ολοκληρώνεται η εργαστηριακή εφαρμογή του FlexRay πρωτόκολλου επικοινωνίας στο σύστημα αποφυγής σύγκρουσης (Collision Avoidance System) σε ηλεκτροκίνητο όχημα. 4.3 Υλοποίηση ηλεκτρονικού διαφορικού συστήματος κίνησης ηλεκτροκινητήρων (Differential by Wire) με την χρήση του πρωτόκολλου επικοινωνίας FlexRay Περιγραφή Η χρήση ηλεκτρονικού διαφορικού συστήματος αποτελεί ένα τεχνολογικό πλεονέκτημα στον σχεδιασμό οχημάτων και στην περαιτέρω ανάπτυξη των ηλεκτροκίνητων οχημάτων. Το ηλεκτρικό διαφορικό έχει το 119

121 θετικό της αντικατάστασης βαριών, μεγάλων και όχι τόσο αποδοτικών μηχανικών διαφορικών και κιβωτίων ταχυτήτων, με αποδοτικότερους, μικρού βάρους και μικρού μεγέθους κινητήρες εντός των τροχών ή όχι, οι οποίοι οδηγούνται από μονάδες ελέγχου. Μία από τις μεγαλύτερες συζητήσεις που απασχολούν την κοινότητα των οχημάτων είναι το πρόγραμμα MEV-More Electric Vehicles, το οποίο κερδίζει όλο και περισσότερο τις εντυπώσεις καθώς όλο και περισσότεροι κατασκευαστές ασχολούνται με την ανάπτυξη X-by-Wire συστημάτων. Κατά την διάρκεια συγγραφής αυτής της διπλωματικής, τα περισσότερα συστήματα χρησιμοποιούν κίνηση στους δύο ή και στους τέσσερις τροχούς του οχήματος με την χρήση μηχανικού διαφορικού και κιβωτίου ταχυτήτων, στοιχείο το οποίο δεν αναπτύσσει περαιτέρω το MEV. Οδεύοντας, λοιπόν, στην εποχή των ηλεκτρικών αυτοκινήτων, δεν μπορεί να αγνοηθεί το γεγονός της ολοένα αυξανόμενης αντικατάστασης μηχανικών εξαρτημάτων από ηλεκτρονικά όπως το ηλεκτρονικό διαφορικό ή αλλιώς Electronic Differential (ED), όπου οι κινητήρες του οχήματος συνδέονται απευθείας στις ρόδες και οδηγούνται από μονάδες ελέγχου όπου και πραγματοποιείται η διαφόριση της κίνησης. Ένα πλεονέκτημα του ED είναι η αύξηση της ασφάλειας λόγω του άμεσου ελέγχου της ροπής και της ταχύτητας των κινητήρων όσον αφορά επισφαλείς ελιγμούς του οχήματος. Επιπρόσθετα, το ηλεκτρονικό διαφορικό επιτρέπει μείωση της κατανάλωσης καυσίμου, στοιχείο ακόμη πιο σημαντικό στην ηλεκτροκίνηση, καθώς και την αύξηση της ευελιξίας, καθώς συνήθως δεν υπάρχει κιβώτιο ταχυτήτων. Ως αποτέλεσμα, προκύπτει αύξηση της ασφάλειας του οδηγού, μείωση βάρους αλλά και αύξηση ενεργειακής απόδοσης. Στα πλαίσια της συγκεκριμένης διπλωματικής εργασίας, επιλέχθηκε να εφαρμοστεί μία απλοποιημένη μορφή του ηλεκτρονικού διαφορικού, λόγω κυρίως υλικών πόρων, στοιχείο που θα διευκρινιστεί και θα αναλυθεί παρακάτω. Γενικότερα, τα χαρακτηριστικά του ED: Δεν υπάρχει μηχανική σύζευξη μεταξύ των τροχών του οχήματος, Η κίνηση των δύο (ή τεσσάρων) τροχών γίνεται ανεξάρτητα χωρίς να έχει μηχανική εξάρτηση ο ένας από τον άλλον, Στο τέλος, η μονάδα ελέγχου θα οδηγήσει με μικρότερη ταχύτητα την εσωτερική ρόδα. Στην γράφημα 4.21 παρουσιάζεται μία διάταξη ηλεκτρονικού διαφορικού σε ένα όχημα. Στο κάτω μέρος του οχήματος παρατηρούμε τους δύο κινητήρες μέσα σε κάλυμμα από αλουμίνιο και πάνω από αυτούς υπάρχουν οι ελεγκτές των κινητήρων με τις μονάδες ελέγχου. Γράφημα Διάταξη ηλεκτρονικού διαφορικού σε ένα πειραματικό όχημα 120

122 4.3.2 Τοπολογία Η συνήθης τοπολογία ηλεκτρικών και μη, οχημάτων περιλαμβάνει ένα κινητήρα ο οποίος κινεί δύο ρόδες, χρησιμοποιώντας ένα μηχανικό διαφορικό για τον διαχωρισμό της ροπής σε κάθε ρόδα, όπως φαίνεται στο γράφημα Σε αυτή τη διπλωματική εργασία το πρωτόκολλο FlexRay εφαρμόστηκε σε με μία διάταξη όπου προσομοιώνεται η διαφόριση της ροπής (εν τέλει ταχύτητας αναφοράς) σε δύο ανεξάρτητους μεταξύ τους τροχούς ενός οχήματος. Μια πισω-κίνητη τοπολογία, ελεγχόμενη ανεξάρτητα σε κάθε ρόδα από ένα ηλεκτρονικό διαφορικό φαίνεται στο γράφημα Αυτή η τοπολογία προσφέρει εξαιρετικό έλεγχο της ροπής οδήγησης της κάθε ρόδας του οχήματος καθώς και έχει μεγάλα οφέλη για χρήση αναγεννητικής πέδησης. Γράφημα Διάταξη οχήματος με συμβατικό κινητήρα, κιβώτιο ταχυτήτων και μηχανικό διαφορικό Γράφημα Διάταξη οχήματος με ηλεκτροκινητήρες ελεγχόμενους από μετατροπείς ισχύος και ηλεκτρονικό διαφορικό Η χρήση του ηλεκτρονικού διαφορικού καθώς και του X-by-Wire συστήματος προσφέρει μεγάλη ευελιξία στην διαμόρφωση του σχεδιασμού του οχήματος, αποφεύγοντας τον κεντρικό μεγάλο κινητήρα στην μέση του οχήματος καθώς και το μηχανικό διαφορικό και το κιβώτιο ταχυτήτων. Ακόμη, είναι βέλτιστο να χρησιμοποιούνται κινητήρες μόνιμου μαγνήτη ή αλλιώς PMSM σε τέτοιου είδους εφαρμογές καθώς αυτοί παρουσιάζουν την μεγαλύτερη πυκνότητα ενέργειας, δηλαδή ισχύ εξόδου προς βάρος κινητήρα. Έτσι, η χρήση κινητήρων σε κάθε ρόδα, προσφέρει μεγάλη ευελιξία στον έλεγχο της κίνησης κάθε τροχού ξεχωριστά, παρουσιάζοντας, έτσι, μεγάλη βελτίωση στην ευστάθεια του οχήματος σε επικίνδυνους ελιγμούς αλλά και στην συνολική πορεία του. Στην συγκεκριμένη διπλωματική εργασία παρουσιάζεται η εφαρμογή του FlexRay σε μία διάταξη ηλεκτρονικού διαφορικού η οποία υλοποιήθηκε σε εργαστηριακό περιβάλλον. Η συγκεκριμένη εφαρμογή αποτελείται από δύο κόμβους. Ο ένας κόμβος αποτελεί την ECU, η οποία μετράει την γωνία στροφής του τιμονιού (μέσω του ενσωματωμένου στην πλακέτα ποτενσιόμετρου) καθώς και την είσοδο του γκαζιού 121

123 (μέσω της ενσωματωμένης στην πλακέτα φωτοαντίστασης). Αυτά τα δεδομένα μεταδίδονται μέσω των δύο καναλιών ενός FlexRay δικτύου σε έναν δεύτερο κόμβο ο οποίος είναι υπεύθυνος για την λήψη των εντολών και την παραγωγή δύο παλμών PWM με σκοπό την οδήγηση των δύο μετατροπέων οι οποίοι εν τέλει κινούν τους κινητήρες με την επιθυμητή ταχύτητα (ροπή). Ιδανικά, η είσοδος την πρώτης μονάδας ελέγχου θα έπρεπε να δέχεται τις μετρήσεις της στροφής κατά τον κατακόρυφου άξονα του οχήματος μέσω ενός γυροσκοπίου, στοιχείο που δεν συμπεριλήφθηκε στα πλαίσια της διπλωματικής εργασίας καθώς δεν αποτελεί αναγκαία συνθήκη για την υλοποίηση της εφαρμογής (και διότι το σύστημά μας είναι σταθερό, δίχως περιστροφή σε οποιοδήποτε άξονα) και το βάρος εξ αρχής δόθηκε στην επικοινωνία μέσω του πρωτοκόλλου FlexRay. Η παραπάνω τοπολογία παρουσιάζεται στο γράφημα Γράφημα Τοπολογία ηλεκτρονικού διαφορικού με χρήση επικοινωνίας FlexRay Υλοποίηση Το παραπάνω σύστημα υλοποιήθηκε ως εργαστηριακή εφαρμογή, έτσι ώστε να μελετηθεί η εφαρμογή και η λειτουργία ενός δικτύου FlexRay. Καθώς σκοπός αυτής της διπλωματικής εργασίας, όπως και της υλοποίησης των εφαρμογών, είναι η μελέτη και η εφαρμογή του FlexRay επιλέχθηκε η χρησιμοποίηση του υπάρχοντος εργαστηριακού εξοπλισμού, ο οποίος αναλύθηκε στο προηγούμενο κεφάλαιο. Γενικά, εκτός από τον περιφερειακό εξοπλισμό που αφορά καλώδια, συνδέσεις κλπ., απαιτείται η χρήση δύο κινητήρων, δύο ελεγκτών οι οποίοι είναι υπεύθυνοι για την οδήγηση των κινητήρων, τα αισθητήρια συστήματα καθώς και τις μονάδες ελέγχου που αποτελούν τους δύο κόμβους σε κάθε εφαρμογή. 122

124 Στην εργαστηριακή εφαρμογή του ηλεκτρονικού διαφορικού χρησιμοποιήθηκαν ακριβώς οι ίδιες διατάξεις και κινητήρια συστήματα όπως στην εφαρμογή του συστήματος αποφυγής σύγκρουσης. Για αυτό το λόγο, δεν θα γίνει περαιτέρω ανάλυση του εξοπλισμού της υλοποίησης του συστήματος Προγραμματισμός επικοινωνίας FlexRay Σε αυτό το σημείο θα παρουσιαστεί ο προγραμματισμός και η αρχικοποίηση της επικοινωνίας FlexRay καθώς και ο παράμετροι που επιλέχθηκαν κατά την φάση της σχεδίασης. Ο προγραμματισμός της επικοινωνίας καθώς και οι ορισμένες κατά τον σχεδιασμό σταθερές χρόνου της επικοινωνίας παρουσιάζονται στον πίνακα 7 και είναι ίδιες με αυτές που χρησιμοποιήθηκαν στο σύστημα αποφυγής της σύγκρουσης (Collision Avoidance System). Γενικές παράμετροι Ταχύτητα 10 Mbit/s Αριθμός startup κόμβων 2 Μέγεθος MacroTick 1 us Μέγεθος κύκλου επικοινωνίας 3000 ΜΤ Μέγεθος Static Segment 1920 MT Μέγεθος Dynamic Segment 480 MT Μέγεθος Symbol Window 100 MT Μέγεθος Network Idle Time MT NIT Offset Correction Start 2600 ΜΤ Static Segment Αριθμός Static Slot 48 Μέγεθος Static Slot 40 MT Action Point offset 10 MT Μέγεθος Payload static 2 x 16 bit Dynamic Segment Αριθμός Minislots 24 Μέγεθος Minislot 20 MT Minislot Action Point Offset 10 MT Μέγιστο μέγεθος Payload 2 x 16 bit Dynamic Ανάθεση Slot Static Segment Slot 2 Κόμβος 1, Κανάλι Α και Β, Πλαίσια Startup και Sync Slot 18 Κόμβος 2, Κανάλι Α και Β, Πλαίσια Startup και Sync Slot 26 Κόμβος 1, Κανάλι Α μόνο Slot 42 Κόμβος 2, Κανάλι Β μόνο Ανάθεση Minislot Dynamic Segment Minislot 50 Κόμβος 1, Κανάλι Α (κύκλος 1) και Β (κύκλος 11) Minislot 60 Κόμβος 2, Κανάλι Α (κύκλος 3) και Β (κύκλος 33) Πίνακας 7. Δεδομένα παραμετροποίησης επικοινωνίας FlexRay Όπως και στην προηγούμενη εφαρμογή, έτσι και στο ηλεκτρονικό διαφορικό υλοποιείται μία FlexRay επικοινωνία με baud rate 10 Mbit/s ανά κανάλι. Κάθε κόμβος στέλνει δεδομένα σε δύο static slots και σε 123

125 μία minislot. Μία από τις static slot χρησιμοποιείται συνεχώς, ταυτόχρονα ως start-up slot και ως slot δεδομένων. Ο κύκλος επικοινωνίας του FlexRay δικτύου καθορίζεται στα 3 ms. Ο πρώτος κόμβος, σύμφωνα με την σχεδίασης, στέλνει δεδομένα στις slot 2, 26 και στην minislot 50, ενώ ο δεύτερος κόμβος στις slot 18, 42 και στην minislot 60 κάθε κύκλου επικοινωνίας. Για υπενθύμιση, αυτή η παραμετροποίηση παρουσιάζεται στο γράφημα Γράφημα Διαμόρφωση κύκλου επικοινωνίας του FlexRay δικτύου στο σύστημα αποφυγής σύγκρουσης Παραμετροποίηση και λειτουργία κόμβου Η παραμετροποίηση κάθε κόμβου είναι ίδια με το προηγούμενο σύστημα. Παρ όλα αυτά, η λειτουργία είναι διαφορετική και αυτό θα παρουσιαστεί στα γραφήματα περιγραφής των buffer αποστολής και λήψης. Οι buffer αποστολής, λήψης καθώς και οι FIFO buffers είναι διαμορφωμένοι όπως φαίνεται στο γράφημα 4.26 και 4.29 για τους δύο κόμβους, αντίστοιχα. Εκτός από αυτούς τους buffer, για την υλοποίηση της εφαρμογής χρησιμοποιήθηκαν και πέντε shadow buffers για την λήψη μηνυμάτων. Οι shadow buffer που χρησιμοποιούνται στην συγκεκριμένη υλοποίηση είναι οι εξής: 18 ος buffer μηνύματος για το κανάλι Α και το segment δεδομένων 1, 19 ος buffer μηνύματος για το κανάλι Β και το segment δεδομένων 1, 105 ος buffer μηνύματος για το κανάλι Α και το segment δεδομένων 2, 106 ος buffer μηνύματος για το κανάλι Β και το segment δεδομένων 2. Η εφαρμογή χρησιμοποιεί και τα δύο ανεξάρτητα segment των buffer μηνυμάτων. Όλοι οι buffer για την αποστολή ή την λήψη μηνυμάτων στο στατικό κομμάτι του κύκλου επικοινωνίας (buffer μηνυμάτων 0, 1, 3, 13, 18 και 19) ανήκουν στο πρώτο segment (segment 1). Οι ανεξάρτητοι buffer μηνυμάτων οι οποίοι ανήκουν στο δυναμικό κομμάτι του κύκλου επικοινωνίας (buffer μηνυμάτων 100, 101, 103, 104, 105 και 106) ανήκουν στο δεύτερο segment (segment 2). Επίσης, η εφαρμογή χρησιμοποιεί και το σύστημα λήψης FIFO. Το FIFO στον κόμβο 1 έχει ανατεθεί στο κανάλι Β, ενώ στον κόμβο 2, στο κανάλι Α. Το μήκος κάθε FIFO τιμής είναι 2 λέξεις. Και οι δύο FIFO buffers είναι έτσι διαμορφωμένοι ώστε να δέχονται όλα τα μηνύματα από το 1 έως το 4, παρ όλα αυτά τα πλαίσια που λαμβάνονται στις slots 2, 18, 26 (για τον κόμβο 1) και 42 (για τον κόμβο 2) αποθηκεύονται και σε ανεξάρτητους διαμορφωμένους buffer μηνυμάτων. Και στην συγκεκριμένη εφαρμογή παρουσιάζονται και οι on-chip timers. Ο «απόλυτος» (absolute) timer 1, λειτουργεί με μηχανισμό οδηγούμενο από interrupt. Έτσι, πάλι, καλείται μία υπηρεσία ρουτίνας όταν ο timer φθάσει το χρονικό όριο (150 MT). 124

126 Γράφημα Διαμόρφωση buffer μηνυμάτων στον κόμβο 1 Στο γράφημα 4.27 παρουσιάζεται η περιγραφή των πινάκων δεδομένων που χρησιμοποιούνται από τους buffer μηνυμάτων κατά την αποστολή του κόμβου 1, δηλαδή στις slot 2 και 26. Γίνεται εύκολα αντιληπτό ότι η αποστολή της τιμής της φωτοαντίστασης, η οποία προσομοιώνει το γκάζι του οχήματος, αποθηκεύεται κάθε στιγμή στον buffer0, στο κανάλι Α αλλά και στο κανάλι Β μέσω του πίνακα δεδομένων buffer_cc0_transmitbuffer0. Με αυτό τον τρόπο αυξάνεται η εφεδρεία του συστήματος διότι χρησιμοποιούνται και τα δύο κανάλια επικοινωνίας για την αποστολή της ίδιας πληροφορίας στην ίδια slot και στα δύο κανάλια, στοιχείο που καθορίζει σημαντική την πληροφορία. Στον buffer1 αποστέλλεται η τιμή του ποτενσιόμετρου του κόμβου 1, δηλαδή η στροφή του τιμονιού του οχήματος, μέσω του πίνακα δεδομένων buffer_cc0_transmitbuffer1. Ο συγκεκριμένος buffer αντιστοιχεί στην slot 26 και γίνεται αποστολή μόνο στο κανάλι Α σε κάθε κύκλο επικοινωνίας. 125

127 Γράφημα Περιγραφή πινάκων δεδομένων των αντίστοιχων buffer αποστολής στο static segment του κύκλου επικοινωνίας του κόμβου 1 Ο κόμβος 1, όπως αναφέρθηκε και προηγουμένως, έχει σχεδιαστεί να στέλνει πληροφορίες και στο δυναμικό κομμάτι του κύκλου επικοινωνίας και συγκεκριμένα στην minislot 50. Παρόμοια με το γράφημα περιγραφής του στατικού μέρους του κύκλου επικοινωνίας, στο γράφημα 4.28 παρουσιάζεται η περιγραφή των πινάκων δεδομένων οι οποίοι σχετίζονται με τους αποστολείς buffers του dynamic segment και της minislot 50. Και εδώ γίνεται εύκολα αντιληπτό ότι επιλέχθηκε η αποστολή τυχαίων αριθμών στις θέσεις των δεδομένων. Οι θέσεις αυτές θα περιείχαν σημαντικά δεδομένα αποστέλλοντας πληροφορίες για άλλες εντολές ή συστήματα που θα είχαν συμμετοχή στο συγκεκριμένο δίκτυο σε ένα όχημα. Όπως και πριν έτσι και εδώ, στην τέταρτη λέξη του αποστολέα buffer στο δυναμικό κομμάτι της επικοινωνίας, αποστέλλεται ο αναγνωριστικός αριθμός ID του κόμβου. Γράφημα Περιγραφή πινάκων δεδομένων των αντίστοιχων buffer αποστολής στο dynamic segment του κύκλου επικοινωνίας του κόμβου 1 126

128 Όσον αφορά τον δεύτερο κόμβο 2, στα γραφήματα 4.29, 4.30 και 4.31 παρουσιάζονται οι ίδιες περιγραφές και διαμορφώσεις όπως έγινε και παραπάνω για τον κόμβο 1. Ο κόμβος 2 δεν έχει κάποιο δεδομένο να αποστείλει στον κόμβο 1, καθώς ο ρόλος του είναι η παραγωγή PWM παλμών, των οποίων το εύρος ορίζεται με βάσει τις τιμές που λαμβάνει στην slot 2, στο κανάλι Α και Β, οι οποίες αντιστοιχούν στην στροφή του τιμονιού που αντιπροσωπεύεται από το ποτενσιόμετρο του κόμβου 1, και από την τιμή που λαμβάνει στην slot 26 και στο κανάλι Α, η οποία αντιστοιχεί στο γκάζι το οποίο αντιπροσωπεύεται από την φωτοαντίσταση του κόμβου 1. Έτσι, τα γραφήματα περιγραφής του κόμβου 2 είναι τα εξής: Γράφημα Διαμόρφωση buffer μηνυμάτων στον κόμβο 2 Γράφημα Περιγραφή πινάκων δεδομένων των αντίστοιχων buffer αποστολής στο static segment του κύκλου επικοινωνίας του κόμβου 2 127

129 Γράφημα Περιγραφή πινάκων δεδομένων των αντίστοιχων buffer αποστολής στο dynamic segment του κύκλου επικοινωνίας του κόμβου 2 Η μόνη διαφορά, σε σύγκριση με τον κόμβο 1, βρίσκεται στην σειρά των bit των buffers αποστολής του κόμβου 2, όπου παρατηρείται ανάποδη σειρά σε σχέση με τους αντίστοιχους του κόμβου 1 στο στατικό κομμάτι του κύκλου επικοινωνίας. Και στον κόμβο 2, παρατηρείται η τιμή του αναγνωριστικού αριθμού ID του κόμβου 2 στο τέταρτο bit δεδομένων της minislot 60, δυναμικό κομμάτι του κύκλου επικοινωνίας. Με την παραπάνω ανάλυση, ολοκληρώνεται η εργαστηριακή εφαρμογή του FlexRay πρωτόκολλου επικοινωνίας στο ηλεκτρονικό διαφορικό σύστημα καθώς και όλη η ενότητα των X-by-Wire συστημάτων. 4.4 Μετρήσεις Καθώς όπως έχει αναφερθεί και προηγουμένως, οι στόχοι της συγκεκριμένης διπλωματικής εργασίας οριοθετούνται στην θεωρητική ανάλυση και στην υλοποίηση της επικοινωνίας με την χρήση του FlexRay πρωτόκολλου, σε αυτή την ενότητα θα παρουσιαστούν κάποιες ενδεικτικές μετρήσεις από την εφαρμογή του ηλεκτρονικού διαφορικού (Differential by Wire). Καταρχήν, στο γράφημα 4.32 παρουσιάζεται η κυματομορφή, μετρημένη με εργαστηριακό παλμογράφο, του καναλιού Β κατά την διάρκεια λειτουργίας του ηλεκτρονικού διαφορικού. Συγκεκριμένα, διακρίνεται 128

130 το στατικό μέρος της επικοινωνίας και πιο συγκεκριμένα οι δύο «ώσεις» αποτελούν τα πλαίσια επικοινωνίας στις slot 2 και 18. Γράφημα Πλαίσια 2 και 18 Flex Ray επικοινωνίας στο Differential By Wire Είναι χαρακτηριστικό ότι σύμφωνα με τα χαρακτηριστικά επικοινωνίας και με το μέγεθος της κάθε slot, οι slot 2 και 18 θα πρέπει να απέχουν 640 us στοιχείο το οποίο διακρίνεται και στο γράφημα Επίσης, εστιάζοντας σε μία slot και συγκεκριμένα στην slot 2, παρατηρούμε την γενικότερη δομή του πλαισίου επικοινωνίας FlexRay όπως φαίνεται από το γράφημα

131 Γράφημα Δομή πλαισίου επικοινωνίας της static slot 2 Από την συγκεκριμένη περιοχή ιδιαίτερο ενδιαφέρον παρουσιάζει η περιοχή του payload (2 x 16 bit = 4 x 8 bit), δηλαδή των δεδομένων. Σε αυτή την slot, όπως αναφέρθηκε προηγουμένως, στέλνεται η πληροφορία της φωτοαντίστασης. Πιο συγκεκριμένα, στο γράφημα 4.34 διακρίνεται η μηδενική τιμή στην τελευταία οκτάδα από bit. Στο γράφημα 4.35, διακρίνεται η τιμή 100 που αντιστοιχεί από την μέση της μέγιστης διαδρομής του γκαζιού και στο 4.36 παρουσιάζεται η μέγιστη τιμή, δηλαδή η 255 (επειδή ο Analog-to-Digital converter είναι διακριτότητας 8-bit). 130

132 Γράφημα Μηδενική τιμή γκαζιού Γράφημα Τιμή γκαζιού λίγο κάτω από το μισό της μέγιστης διαδρομής του 131

133 Γράφημα Μέγιστη τιμή γκαζιού Τέλος, στο γράφημα 4.37 παρατηρούμε την κυματομορφή του στατικού μέρους της επικοινωνίας στο κανάλι Α. Εδώ εκτός από τις slot 2, 18 διακρίνεται και μία ακόμα, δηλαδή η slot 42. Τέλος, διακρίνονται και οι αποστάσεις μεταξύ αυτών. 132

134 Γράφημα Στατικό μέρος της FlexRay επικοινωνίας στο κανάλι Α 133

135 134

136 5 Συμπεράσματα και θέματα για μελλοντική διερεύνηση Τα συμπεράσματα σε αυτό το κεφάλαιο βασίζονται σε μία σύνοψη από την ανάλυση που έγινε στα κεφάλαια 2, 3 και 4. Τα πρωτόκολλα επικοινωνίας CAN και FlexRay παρουσιάστηκαν σε συνδυασμό με τις περιοχές λειτουργίας εντός οχημάτων (παράγραφος 2.5). Η συγκριτική ανάλυση θα επικεντρωθεί στις περιοχές λειτουργίας της μετάδοσης της κίνησης και του σασί, οι οποίες λόγω των χαρακτηριστικών του FlexRay αποτελούν και τις κύριες περιοχές λειτουργίας του στα οχήματα. 5.1 Περιοχή μετάδοσης της κίνησης και περιοχή σασί (Powertrain and Chassis domain) Οι περιοχές της μετάδοσης της κίνησης και του σασί, απαιτούν πρωτόκολλα επικοινωνίας τα οποία ανταποκρίνονται στην κλάση C και D. Το εύρος ζώνης είναι ένας σημαντικός παράγοντας αλλά και η αξιοπιστία είναι επίσης πολύ σημαντική διότι σε αυτές τις περιοχές τα συστήματα απαιτούν ασφάλεια. To CAN και το FlexRay ανταποκρίνονται σε αυτές τις προϋποθέσεις. Βέβαια, το FlexRay προσφέρει μεγαλύτερο εύρος ζώνης απ ότι το CAN. Επίσης, λόγω του στατικού και ταυτόχρονα και δυναμικού του χαρακτήρα φαντάζει ως ιδεατή επιλογή για τις εν λόγω περιοχές λειτουργίας καθώς ο στατικός του προγραμματισμός προσφέρει μεγάλη αξιοπιστία κάτι το οποίο δεν μπορεί να προσφέρει ένα δίκτυο CAN. Μία ειδοποιός διαφορά έγκειται στην τεχνική εισόδου στο δίκτυο που χρησιμοποιείται. Πιο συγκεκριμένα: CAN: Αυτό το πρωτόκολλο είναι βασισμένο στην τεχνική CSMA προσφέροντας ευελιξία αλλά χειρότερη συμπεριφορά πραγματικού χρόνου. FlexRay: Η επικοινωνία βασίζεται στις τεχνικές TDMA και FTDMA, αλλά επίσης υποστηρίζεται ταυτόχρονη λειτουργία time-triggered και event-triggered. Το μειονέκτημα του FlexRay είναι ότι όλα πρέπει να καθοριστούν από την φάση της σχεδίασης. Επίσης, ένα πλεονέκτημα του CAN είναι ότι χρησιμοποιείται ευρέως για πολλά χρόνια στοιχείο που υποδεικνύει ότι πλέον πρόκειται για ένα «μεστό» και ταυτόχρονα σταθερό πρωτόκολλο επικοινωνίας. Είναι καλά καθορισμένο για event-triggered επικοινωνία και επικοινωνία με βάση τις προτεραιότητες. Βέβαια, λόγω της διαιτησίας υπάρχει το ενδεχόμενο μεγάλων καθυστερήσεων σε κάποια μηνύματα. Από την άλλη, το FlexRay είναι ένα σχετικά νέο πρωτόκολλο επικοινωνίας το οποίο θα αρχίσει να υλοποιείται και μαζικά στην αυτοκινητοβιομηχανία στο άμεσο μέλλον. Προσφέρει πολύ μεγαλύτερο 135

137 εύρος ζώνης από αυτό του CAN και πολύ μεγάλη αξιοπιστία μέσω του TDMA σχήματός του. Ακόμη, το FlexRay, μέσω της δυνατότητας επικοινωνίας με δύο κανάλια, μπορεί να διπλασιάσει το εύρος ζώνης του από 10 Mbit/s σε 20 Mbit/s καθώς και προσδώσει στην εκάστοτε εφαρμογή μεγαλύτερη εφεδρεία, σε περίπτωση μη-λειτουργίας του ενός καναλιού. Μία περιοχή λειτουργίας που φαντάζει να είναι ιδανική για ένα τέτοιο πρωτόκολλο είναι η σύνδεση πολύ σημαντικών ECU μέσα στο όχημα και όχι η υλοποίηση ολόκληρου του δικτύου ενός οχήματος. Αυτό, δεν απαιτεί επαναπροσδιορισμό της σχεδίασης από όχημα σε όχημα καθώς οι συγκεκριμένες εφαρμογές έχουν προκαθορισμένα στοιχεία. Ένα ακόμη μειονέκτημα του FlexRay είναι ότι έχει πολύ μικρότερο μήκος καλωδίου απ ότι το CAN και έτσι απαιτείται η χρήση κάποιας ενδιάμεσης ECU ή repeater σε μακρινές συνδέσεις. Το dynamic segment ενεργεί με τον ίδιο τρόπο όπως και το CAN χωρίς όμως να υπάρχει κίνδυνος παραγκωνισμού κόμβων χαμηλότερης προτεραιότητας, λόγω χρησιμοποίησης του bus guardian. 5.2 Συμπεράσματα για το πρωτόκολλο FlexRay μέσω των εφαρμογών X-by-Wire Όπως φάνηκε και από την υλοποίηση των εργαστηριακών εφαρμογών, το FlexRay αποτελεί ιδανική επιλογή για safety-critical εφαρμογές. Η δυνατότητα ταυτόχρονης χρησιμοποίησης δύο καναλιών επικοινωνίας σε συνδυασμό με την δυνατότητα χρησιμοποίησης πολλαπλών slot και minislot ανά ίδιο κύκλο επικοινωνίας από τον ίδιο/ίδιους κόμβους, δίνοντας έτσι την δυνατότητα σε ένα κόμβο να κάνει λήψη, επεξεργασία, υπολογισμούς αλλά και αποστολή νέων δεδομένων μέσα στον ίδιο κύκλο επικοινωνίας, προσδίδει μεγάλη ευελιξία, εφεδρεία αλλά και αξιοπιστία στην επικοινωνία, στοιχεία που είναι άκρως απαραίτητα στις περιοχές του οχήματος που πρόκειται να χρησιμοποιηθεί το συγκεκριμένο πρωτόκολλο. Όλα αυτά σε συνδυασμό με το αρκετά μεγάλο εύρος ζώνης, το οποίο διπλασιάζεται με την χρήση των δύο καναλιών, αλλά και με την δυνατότητα που προσφέρει το πρωτόκολλο για ταυτόχρονη στατική και δυναμική (μεταβαλλόμενη) λειτουργία, το καθιστούν αδιαμφισβήτητο νικητή μεταξύ πολλών άλλων πρωτοκόλλων επικοινωνίας για την χρήση του στα συστήματα του ελέγχου του σασί (chassis control), των ενεργών αναρτήσεων (active suspension) κ.α., σε συστήματα, δηλαδή, όπου δεν απαιτούνται αλλαγές κατά την διάρκεια ζωής του οχήματος, όσον αφορά τον σχεδιασμό, αλλά ταυτόχρονα απαιτούνται όλα τα παραπάνω safe-critical χαρακτηριστικά τα οποία καθιστούν το FlexRay απαραίτητο στην χρήση του σε αυτές τις εφαρμογές. Τέλος, ένα στοιχείο το οποίο είναι ταυτόχρονα θετικό και αρνητικό, είναι αυτό της τάσης που έχει ο δίαυλος κατά την λειτουργία της επικοινωνίας. Αυτή, από την μία είναι θετικό το στοιχείο της χαμηλής της τιμής, καθώς έτσι δεν συμβάλει σε ηλεκτρομαγνητική ακτινοβολία οπότε το πρωτόκολλο έχει καλή συμπεριφορά EMC, από την άλλη υπάρχουν αναφορές οι οποίες την χαρακτηρίζουν αρκετά χαμηλή με κίνδυνο την επιρροή του διαύλου από ηλεκτρομαγνητικές παρεμβολές άλλων κυκλωμάτων. 136

138 5.3 Θέματα για μελλοντική διερεύνηση Τα πλαίσια της συγκεκριμένης διπλωματικής εργασίας ορίστηκαν στην συγκριτική ανάλυση των πρωτοκόλλων Controller Area Network CAN και FlexRay καθώς και στην υλοποίηση εφαρμογών X-by- Wire με σκοπό την ανάδειξη κάποιων χαρακτηριστικών της FlexRay επικοινωνίας. Παρ όλα αυτά, υπάρχουν πάρα πολλά θέματα για ανάλυση στην βάση αυτού του πρωτοκόλλου επικοινωνίας. Ένα πολύ σημαντικό θέμα έγκειται στην ανάπτυξη ενός αποδοτικού αλγόριθμου για τον σωστό προγραμματισμό (scheduling) των εργασιών που πρέπει να εκτελέσει το πρωτόκολλο καθώς και για την αποδοτικότερη σχεδίαση των δικτύων επικοινωνίας. Ακόμη, τα συστήματα που υλοποιούνται με το πρωτόκολλο επικοινωνίας FlexRay, είναι αρκετά λίγα σε αριθμό και έτσι αναδεικνύεται η ανάγκη αντικατάστασης όλο και περισσότερων μηχανικών συστημάτων με X-by-Wire συστήματα, τα οποία θα οδηγήσουν σε μεγάλη επανάσταση και ραγδαία αλλαγή των όσων γνωρίζουμε για τις διατάξεις των συμβατικών οχημάτων, καθώς θα ανοίξουν την «κερκόπορτα» για υλοποίηση εφαρμογών και συστημάτων που μέχρι σήμερα αποτελούσαν επιστημονική φαντασία. Αυτά τα συστήματα απαιτούν η επικοινωνία να ανταποκρίνεται στην κλάση D του ορισμού της SAE International, καθώς εκτελούν real-time λειτουργίες όπως η αναγνώριση εικόνας για αυτόνομη (driverless) οδήγηση, η ταυτόχρονη χρήση πολλών ραντάρ περιμετρικά των οχημάτων για την αυτόνομη οδήγησή τους, η συνεχής συνδεσιμότητα των οχημάτων σε cloud-based συστήματα έτσι ώστε να είναι σε διαρκή επαφή με δορυφορικές συνδέσεις και με κεντρικά συστήματα διαχείρισης πληροφοριών του μέλλοντος. Η ανάπτυξη των πρωτοκόλλων επικοινωνίας ήταν και προβλέπεται να συνεχίσει να είναι ραγδαία στην βιομηχανία οχημάτων και το FlexRay αποτελεί μία σύγχρονη λύση, έτοιμη να εφαρμοστεί μαζικά στα συστήματα ισχύος και ελέγχου της αυτοκινητοβιομηχανίας. Για αυτό το λόγο, οι τομείς ανάλυσης για την αύξηση της αποδοτικότητας της επικοινωνίας, την αύξηση του μεγέθους του «χρήσιμου» εύρους ζώνης και παράλληλα η μείωση του «μη-χρησιμοποιούμενου» εύρους ζώνης κλπ., είναι αναρίθμητοι και το μόνο που απομένει είναι να αναλυθούν. 137

139 138

140 Βιβλιογραφία Βουτσαδάκης Σταμάτιος, Αρχές λειτουργίας, έλεγχος και εφαρμογές του πρωτόκολλου CAN, Μεταπτυχιακή διατριβή, Τμήμα Πληροφορική, Πανεπιστήμιο Πειραιώς, Ιούνιος Texas Instruments, Introduction to the Controller Area Network (CAN), Application Report SL0A101A, July 2008, Henrik Johansson, Evaluation of Communication Interfaces for Electronic Control Units in Heavy-duty Vehicles, Examensarbete, Institutionen for Systemteknik, Department of Electrical Engineering, Linkopings Universitet, Sweden, June Johan Elgered and Jesper Jansson, AUTOSAR Communication Stack Implementation With FlexRay, Master Thesis in the Programme Networks and Distributed Systems, Chalmers University of Technology, March IPextreme, FlexRay Message Buffers, The Host View of a FlexRay System, White Paper presented by IPextreme, September MFR4300 Datasheet, FlexRay Communication Controllers, Rev. 3, NXP Semiconductors, March 2007, MC9S12XDP512 HCS12X Microcontrollers Datasheet, Covers S12XD, S12XB & S12XA Families, Rev 2.21, NXP Semiconductors, October 2009, SK-S12XDP512-A User Manual, Revision 1, NXP Semiconductors, Francisco J. Perez-Pinal, Ciro Nunez, Ricardo Alvarez, Ilse Cervantes, Ali Emadi, Electric Differential for Traction Applications, Instituto Politecnico Nacional, ESIME CU, Control Department Mexico City, Mexico, IEEE Kada HARTANI, Mohamed BOURAHLA, Yahia MILOUD, Mohamed SEKOUR, Electronic Differential with Direct Torque Fuzzy Control for Vehicle Propulsion System, Electrotechnic Department, University center of Saida, Bp 138 En-Nasr, Saida-ALGERIA, FlexRay Communication System Protocol Specification V 3.0.1, FlexRay Consortium, 2010 National Instruments, FlexRay Automotive Communication Bus Overview, August 2015, Steve C. Talbot and Shangping Ren, Comparison of FieldBus Systems, CAN, TTCAN, FlexRay and LIN in Passenger Vehicles, 29th IEEE International Conference on Distributed Computing Systems Workshops, Rishvanth, D. Valli, K. Ganesan, Design of an In-Vehicle Network (Using LIN, CAN and FlexRay), Gateway and its Diagnostics Using Vector CANoe, American Journal of Signal Processing. 2011; 1(2): DOI: /j.ajsp

141 Yi-Nan Xu, I. G. Jang, Y. E. Kim, and J. G. Chung, Implementation of FlexRay Protocol with An Automotive Application, 2008 International SoC Design Conference. Denis Waraus, Steer-by-wire system based on FlexRay protocol, Dept. of Measurement, Czech Technical University, Czech Republic. Jianmin Duan, Liang Zhu, Yongchuan Yu, Research on FlexRay Communication of Steering-by-Wire System, /09/ 2009 IEEE. Chau-Chung Song, Wei-Chi Chen, Chen-Fu Feng, Study of a Vehicular Drive-by-Wire System Based on FlexRay Protocol, SICE Annual Conference Changfu Zong, Haiou Xiang, Lei He, Fei Sha, Study on Control Method of Dual-Motor for Steer- By-Wire System, /12/ 2012 IEEE. Milos Okrouhly, Denis Waraus, Anti-Lock Braking System Based on FlexRay Protocol, The 6th IEEE International Conference on Intelligent Data Acquisition and Advanced Computing Systems: Technology and Applications, September R. Radhiga, J.Pradeep, DESIGN OF FLEXRA Y COMMUNICATION CONTROLLER PROTOCOL FOR AN AUTOMOTIVE APPLICATION, IEEE Sponsored 9th International Conference on Intelligent Systems and Control (ISCO)2015. Richard Banach, Pieter Van Schaik, Eric Verhulst, Simulation and Formal Modelling of Yaw Control in a Drive-by-Wire Application, Proceedings of the Federated Conference on Computer Science and Information Systems pp , DOI: /2015F132, / 2015, IEEE. Zhe Sun, Jinchuan Zheng, Zhihong Man, Robust Control of a Vehicle Steer-by-Wire System Using Adaptive Sliding Mode, IEEE TRANSACTIONS ON INDUSTRIAL ELECTRONICS, (c) 2015 IEEE. Zhe Sun, Jinchuan Zheng, and Zhihong Man, Adaptive Sliding Mode Control for a Vehicle Steer-by-Wire System, nd International Conference on Control Science and Systems Engineering, /16/ 2016 IEEE. Zuxun Xiao, Benxian Xiao, Research on Road Feeling Control Strategy for Electric Forklift Steer-by-wire System, /16/ 2016 IEEE. Akira Itoand Yoshikazu Hayakawa, Practical Fault-Tolerant Control to Protect Steer-by-Wire Systems against Sensor Faults, 2015 IEEE Conference on Control Applications (CCA), /15/ 2015 IEEE. Sotaro MAEJIMA, Toshiyuki MURAKAMI, Driving Assist Control of Electric Vehicle by Steer-by-Wire System Considering Collision Avoidance of Traveling Bicycle, IECON2015-Yokohama, /15/ 2015 IEEE. MANUELE BERTOLUZZO, GIUSEPPE BUJA, and ROBERTO MENIS, Control Schemes for Steer-by-Wire Systems, IEEE INDUSTRIAL ELECTRONICS MAGAZINE, SPRING 2007, /07/ 2007IEEE. Kuen-Long Leu, Jwu-E Chen and Chin-Long Wey, Yung-Yuan Chen, Generic Reliability Analysis for Safety-Critical FlexRay Drive-By-Wire Systems, 2012 International Conference on Connected Vehicles and Expo, / IEEE, DOI /ICCVE NXP Semiconductors, FlexRay Low-Level Driver for MFR4300 Platform, User Manual, January NXP Semiconductors, FlexRay MFR4300 Low-Level Driver Application Example for MC9S12XDP512 Device, January

142 Eugen Mayer, Serielle Bussysteme im Automobil. Technical report, Vector, Nicolas Navet and Françoise Simonot-Lion, A Review of Embedded Automotive Protocols. In Nicolas Navet and Françoise Simonot-Lion, editors, Automotive Embedded Systems Handbook, Industrial Information Technology Series. Taylor & Francis/CRCPress,2009a. ISBN Nicolas Navet and Franoise Simonot-Lion, Trends in Automotive Communication Systems. In Richard Zurawski, editor, Embedded Systems Handbook. CRC Press, Boca Raton, 2nd edition, 2009b. Gerhard Zucker and Dietmar Dietrich, ISO/OSI Model. In Gurdeep S. Hura, editor, Data and Computer Communications. CRC Press, Boca Raton, Thomas Nolte, Share-Driven Scheduling of Embedded Networks. PhD thesis, Mälardalen University, May D. Paret and R. Riesco, Multiplexed networks for embedded systems: CAN, LIN, Flexray, Safe-by-Wire... Wiley, ISBN D. Paret, Flexray and its applications, Real time multiplexed network, Translated by B. Chilcott, A john Wiley & Sons Ltd. Publication, 2012, ISBN Robert Bosch GmbH, Introduction to Automotive Bus Systems. external_2011_10_21.pdf, Mathias Rausch, FlexRay: Grundlagen, Funktionsweise, Anwendung. Hanser Fachbuchverlag, Munich, Greg Jarboe, Hollis Thomases, Mari Smith, Chris Treadaway, and Dave Evans, Networking Complete. Sybex, Hoboken, 3d edition, Hyung-Taek Lim, Kay Weckemann, and Daniel Herrscher, Performance study of an in-car switched Ethernet network without prioritization. In Proceedings of the Third international conference on Communication technologies for vehicles, Nets 4 Cars/Nets 4 Trains 11, Berlin, Heidelberg, Springer-Verlag. ISBN Gianluca Cena and Adriano Valenzano, Controller Area Networks for Embedded Systems. In Richard Zurawski, editor, Embedded Systems Handbook. CRC Press, Boca Raton, 2nd edition, Thomas Strang and Matthias Röckl, Vehicle Networks: Multimedia Protocols. vn-ws0809/06-vn-multimedianetworks.pdf, Maxim, Glossary of Electrical Engineering Terms Juan Pimentel, Julian Proenza, Luis Almeida, Guillermo Rodriguez-Navas, and Manuel Barranco Joaquim Ferreira, Dependable Automotive CAN Networks. In Richard Zurawski, editor, Embedded Systems Handbook. CRC Press, Boca Raton, 2nd edition. Uğur Keskin, In-vehicle Communication Networks: a Litterature Survey. Technical report, Technische Universiteit Eindhoven, Carl Jeffery, Rueben Cutajar, Andrew M.D. Richardson, Steve Prosser, M. Lickess, and Steve Riches, The integration of on-line monitoring and reconfiguration functions into a safety critical automotive electronic control unit. Journal of Electronic Testing, 21(4): , ISSN

143 Françoise Simonot-Lion and Yvon Trinquet, Vehicle Functional Domains and Their Requirements. In Nicolas Navet and Françoise Simonot-Lion, editors, Automotive Embedded Systems Handbook, Industrial Information Technology Series. Taylor & Francis / CRC Press, ISBN Thilo Sauter, Fieldbus Systems: Embedded Networks for Automation. InRichard Zurawski, editor, Embedded Systems Handbook. CRC Press, Boca Raton, 2nd edition, Lothar Thiele, Embedded Systems Communication Philip Koopman, The FlexRay Protocol. ~ece649/lectures/23_flexray.pdf,2011. John M. Rushby, Bus architectures for safety-critical embedded systems. In Proceedings of the First International Workshop on Embedded Software, EMSOFT 0, London, UK, 2001.Springer-Verlag. ISBN Hermann Kopetz, Wilfried Elmenreich, and Christoph Mack, A comparison of LIN and TTP/A. In 3rd IEEE International Workshop on Factory Communication Systems (WFCS 2000), September 2000, Porto, Portugal, September Terence Rybak and Mark Steffka, Automotive Electromagnetic Compatibility. Kluwer Academic Publishers, New York, USA, Ron Schmitt, Electromagnetics Explained. Newnes, ISO 11898: Road vehicles - Interchange of digital information - Controller area network (CAN) for high-speed communication U. Kiencke, S. Dais, and M. Litschel. Automotive serial controller area network. In SAE International Congress No , Detroit, MI, 1986 ISO : CAN Data Link Layer and Physical Signaling, ΙSO : CAN High-Speed Medium Access Unit, ISO : CAN Low-Speed, Fault-Tolerant, Medium-Dependent Interface, ISO : CAN Time-Triggered Communication, ISO : CAN High-Speed Medium Access Unit with Low-Power Mode, ISO : CAN High-speed medium access unit with selective wake-up functionality, ISO : CAN fault-tolerant for truck/trailer communication, 142

144 ISO : 250 kbit/s, Agricultural Standard, SAE J : 250 kbit/s, Shielded Twisted Pair (STP), SAE J : 250 kbit/s, Unshielded Twisted Pair (UTP) (reduced layer), SAE J2411: Single-wire CAN (SWC), ΙSO : Uses a two-wire balanced signaling scheme. It is the most used physical layer in car powertrain applications and industrial control networks, ISO : Defines the time-triggered communication on CAN (TTCAN). It is based on the CAN data link layer protocol providing a system clock for the scheduling of messages, SAE J1939: Uses a two-wire twisted pair, 11 has a shield around the pair while 15 does not. SAE 1939 is widely used in heavy-duty (truck) and autobus industry as well as in agricultural & construction equipment, ARINC825 (for the aviation industry), CANaerospace (for the aviation industry), CAN Kingdom, CANopen (used for industrial automation), CCP / XCP, DeviceNet (used for industrial automation), EnergyBus (used for electrical vehicles), GMLAN (for General Motors), ISO : ISO or ISOBUS (agriculture): ISO 14229: SAE J1939: (heavy road vehicles), MilCAN,

145 NMEA 2000 (marine industry), RV-C (used for recreational vehicles), SafetyBUS (used for industrial automation), SmartCraft, Smart Distributed System (SDS), ISO :2013: Road vehicles -- FlexRay communications system -- Part 1: General information and use case definition, ΙSO :2013: Road vehicles -- FlexRay communications system -- Part 5: Electrical physical layer conformance test specification, 144

146 145

147 A Παράρτημα Άλφα Παρακάτω παρουσιάζονται τα αρχεία cfg1_node1.c και cfg1_node2.c, τα οποία αποτελούν τα αρχεία του πηγαίου κώδικα της εφαρμογής differential by wire (main.c). Επίσης το κάθε αρχείο cfg1_nodex.c ακολουθείται από το αντίστοιχο αρχείο Fr_Cfg.h το οποίο αποτελεί το header file το οποίο περιέχει τα δεδομένα διαμόρφωσης του Communication Controller για κάθε κόμβο, για την αρχικοποίηση της FlexRay επικοινωνίας. cfg1_node1.c Freescale Semiconductor Inc. (c) Copyright Freescale Semiconductor, Inc. ALL RIGHTS RESERVED. $Filename : cfg1_node1.c$ $Last modified by: R62779$ $Author : R62779$ $Date : Jan $ $Version : $ Brief : This file contains source code for MFR4300 Low-Level Driver application example. The first node, MC9S12XDP512 and MFR4300 Data are transmitted in static and dynamic segments, both memory segments are configured, receive FIFO and one timer interrupt are configured. Application is running in interrupt driven mode (except 'dynamic' transmit buffers). Application is intended for the second version of the S12X silicon. In this version is implemented the FreeMASTER tool (with TSA support). Reference : Block Guide rev 0.5 (MFR4300) ============================================================================ THIS SOFTWARE IS PROVIDED BY FREESCALE SEMICONDUCTOR "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL FREESCALE SEMICONDUCTOR OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. / / Project Include Files / #include <hidef.h> / Common defines and macros / #include <mc9s12xdp512.h> / Derivative information / #include "platform_types.h" / Platform types / 146

148 #include "Fr.h" / FlexRay driver / #include "Led.h" / LED control macros / #include "freemaster.h" / FreeMASTER support / #pragma LINK_INFO DERIVATIVE "mc9s12dp256b" #define FR_ISR0_RXIF 0x0001 / RXIF bit definition / #define FR_ISR0_TXIF 0x0002 / TXIF bit definiction / #define FR_ISR0_TIF0 0x0040 / TIF0 bit definiction / #define SCI0_USED / SCI0 is used / #define FREEMASTER_USED / FreeMASTER tool is used / //#define LEDS_USED / Leds are used / #define FR_NODE 1 #if (FR_NODE == 1) #define SLOT_18_A 3 / Slot 18, cha - RX message buffer 3 / #define SLOT_18_B 13 / Slot 18, chb - RX message buffer 13 / #define SLOT_2 0 / Slot 2 - TX message buffer 0 / #define SLOT_26_A 1 / Slot 26, cha - TX message buffer 1 / #define SLOT_50_A 100 / Slot 50, cha - TX message buffer 100 / #define SLOT_50_B 101 / Slot 50, chb - TX message buffer 101 / #define SLOT_60_A 103 / Slot 60, cha - RX message buffer 103 / #define SLOT_60_B 104 / Slot 60, chb - RX message buffer 104 / / FIFO B - start MB index is 111, number of MB is 10 / / Four shadow MB are configured - 18, 19, 105, 106 / #endif / Definitions / sint16 returnvalue; // Auxiliary variable // Receive data buffer 13 uint16 buffer_cc0_receivebuffer13[size_of_mb_in_seg1]={0}; // Receive data buffer 3 uint16 buffer_cc0_receivebuffer3[size_of_mb_in_seg1]={0}; // Receive data buffer 103 uint16 buffer_cc0_receivebuffer103[size_of_mb_in_seg2]={0}; // Receive data buffer 14 uint16 buffer_cc0_receivebuffer104[size_of_mb_in_seg2]={0}; // Transmit data buffer 0 uint16 buffer_cc0_transmitbuffer0[size_of_mb_in_seg1]={0}; // Transmit data buffer 1 uint16 buffer_cc0_transmitbuffer1[size_of_mb_in_seg1]={0}; // Array of received data // Array of received data // Array of received data // Array of received data // Array of data intended for transmission // Array of data intended for transmission // Receive FIFO data buffer uint16 buffer_cc0_receivefifobbuffer[size_of_mb_in_fifo_b]={0}; // Array of received data BufferReturnType bufferreturnvalue; boolean wakeuprequired = TRUE; uint32 randval32 = 0; uint16 macrotick = 0; uint8 numberoferror = 0; uint16 startupcnt = 0; // Declaration of buffer return type // Wake-up is required // Random value which will be sent in dynamic segment // Current macrotick // Error number - only for debugging // Reset FlexRay CC after time expires #ifdef FREEMASTER_USED / FreeMASTER TSA support / FMSTR_TSA_TABLE_BEGIN(first_table) FMSTR_TSA_RW_VAR(buffer_CC0_TransmitBuffer0[1], FMSTR_TSA_UINT16) FMSTR_TSA_RW_VAR(buffer_CC0_TransmitBuffer1[1], FMSTR_TSA_UINT16) FMSTR_TSA_RW_VAR(buffer_CC0_ReceiveBuffer103[2], FMSTR_TSA_UINT16) FMSTR_TSA_RW_VAR(buffer_CC0_ReceiveBuffer103[3], FMSTR_TSA_UINT16) FMSTR_TSA_RW_VAR(buffer_CC0_ReceiveFifoBBuffer[0], FMSTR_TSA_UINT16) FMSTR_TSA_RW_VAR(buffer_CC0_ReceiveBuffer3[0], FMSTR_TSA_UINT16) FMSTR_TSA_RW_VAR(buffer_CC0_ReceiveBuffer13[0], FMSTR_TSA_UINT16) FMSTR_TSA_RW_VAR(buffer_CC0_ReceiveBuffer104[2], FMSTR_TSA_UINT16) FMSTR_TSA_RW_VAR(buffer_CC0_ReceiveBuffer104[3], FMSTR_TSA_UINT16) FMSTR_TSA_TABLE_END() FMSTR_TSA_TABLE_LIST_BEGIN() 147

149 FMSTR_TSA_TABLE(first_table) FMSTR_TSA_TABLE_LIST_END() / End of FreeMASTER TSA support / #endif FREEMASTER_USED / Protypes / void StartupPLL(void); void InitMCU(void); void Timer1Expired(void); void RxBufferReceive(uint8 rxbufidx); void TxBufferEmpty(uint8 txbufidx); void FifoBNotEmpty(uint8 fifobbufidx); void FifoANotEmpty(uint8 fifoabufidx); void TxBufferDynamicSend(uint8 txdynbufidx); void ProtocolStateChanged(void); void CCIntegration(void); void Failed(uint8 number); / Functions / void Failed(uint8 number) // Function only for debugging { numberoferror = number; } // CC should be restarted while(1); / Function name : RxBufferReceive Description : This function is called by interrupt handler if any data has been received. Received data are stored into appropriate data arrays and LEDs are toggled after succesfull reception of data (in static segment only once per 100 occurences) Author : R62779 Parameters : rxbufidx - the lowest numbered receive message buffer that has its interrupt set. Returns : None / void RxBufferReceive(uint8 rxbufidx) { static greencounter = 0; // Auxiliary counter for green LED toggling static redcounter = 0; // Auxiliary counter for green LED toggling switch(rxbufidx) // Which message buffer is full? { case (SLOT_18_A): // Messages buffer configured for Slot 18, channel A bufferreturnvalue = FrRxBufferRead(FR0, &buffer_cc0_receivebuffer3[0], SLOT_18_A); // Store received data switch(bufferreturnvalue) // Result of function calling { case BUFFER_NO_ACCESS: // Buffer was not successfully locked / unlocked Failed(1); break; case FRAME_NO_RCV: // No data has been received break; case DATA_RECEIVED: // Data was successfullly received and copied #ifdef LEDS_USED if(redcounter>100) // Toggle LED only once per 100 occurrences { LED_RED1_TOGGLE; // Toggle LED redcounter = 0; // Clear counter } redcounter++; // Increment counter #endif LEDS_USED break; default : // Else Failed(2); break; } break; case SLOT_18_B: // Message buffer configured for Slot 18, chb bufferreturnvalue = FrRxBufferRead(FR0, &buffer_cc0_receivebuffer13[0], SLOT_18_B); // Store received data 148

150 switch(bufferreturnvalue) // Result of function calling { case BUFFER_NO_ACCESS: // Buffer was not successfully locked / unlocked Failed(3); break; case FRAME_NO_RCV: // No data has been received break; case DATA_RECEIVED: // Data was successfullly received and copied #ifdef LEDS_USED if(greencounter>100) // Toggle LED only once per 100 occurrences { LED_GREEN1_TOGGLE; // Toggle LED greencounter = 0; // Clear counter } greencounter++; // Increment counter #endif LEDS_USED break; default : // Else Failed(4); break; } break; case SLOT_60_A: // Message buffer configured for Slot 60, cha bufferreturnvalue = FrRxBufferRead(FR0, &buffer_cc0_receivebuffer103[0], SLOT_60_A); // Store received data switch(bufferreturnvalue) // Result of function calling { case BUFFER_NO_ACCESS: // Buffer was not successfully locked / unlocked Failed(13); break; case FRAME_NO_RCV: // No data has been received break; case DATA_RECEIVED: // Data was successfullly received and copied #ifdef LEDS_USED LED_RED2_TOGGLE; // Toggle LED #endif LEDS_USED break; default: Failed(14); break; } break; case SLOT_60_B: // Message buffer configured for Slot 60, chb bufferreturnvalue = FrRxBufferRead(FR0, &buffer_cc0_receivebuffer104[0], SLOT_60_B); // Store received data switch(bufferreturnvalue) // Result of function calling { case BUFFER_NO_ACCESS: // Buffer was not successfully locked / unlocked Failed(15); break; case FRAME_NO_RCV: // No data has been received break; case DATA_RECEIVED: // Data was successfullly received and copied #ifdef LEDS_USED LED_GREEN2_TOGGLE; // Toggle LED #endif LEDS_USED break; default: Failed(16); break; } break; } default : Failed(17); break; } // Else / Function name : TxBufferEmpty Description : This function is called by interrupt handler when any of the enabled transmit message buffers is empty. Transmit MB buffers are updated with new data. Only for MB assigned to static segment. Author : R

151 Parameters : txbufidx - the lowest numbered transmit message buffer that has its interrupt set. Returns : None / void TxBufferEmpty(uint8 txbufidx) { switch(txbufidx) // Which message buffer is empty? { case SLOT_2: // Message buffer configured for Slot 2 // Buffer 0 (frame 2) transmission bufferreturnvalue = FrTxBufferUpdate(FR0, &buffer_cc0_transmitbuffer0[0], SLOT_2); // Update buffer with new data break; case SLOT_26_A: // Message buffer configured for Slot 26 // Buffer 1 (frame 26) transmission bufferreturnvalue = FrTxBufferUpdate(FR0, &buffer_cc0_transmitbuffer1[0], SLOT_26_A); // Update buffer with new data break; } switch(bufferreturnvalue) // Result of function calling { case BUFFER_NO_ACCESS: // Buffer was not successfully locked Failed(18); break; case BUFFER_UPDATED: // Buffer was successfully updated // OK break; case BUFFER_NOT_UPDATED: // Buffer was not updated Failed(19); break; default : // Else Failed(20); break; } } / Function name : FifoBNotEmpty Description : This function is called by interrupt handler when receive FIFO channel B message buffer is not empty. Received FIFO data are stored into data array. LED is toggled only once per 100 function calling Author : R62779 Parameters : fifobbufidx - the message header index of the next available receive FIFO message buffer Returns : None / void FifoBNotEmpty(uint8 fifobbufidx) { uint16 slotidx; // Received Slot ID static greencounter = 0; // Counter used for flashing of the green LED 3 // Store received data bufferreturnvalue = FrRxFifoBufferRead(FR0, &buffer_cc0_receivefifobbuffer[0], fifobbufidx, &slotidx, FR_CHANNEL_B); } if(greencounter>100) { #ifdef LEDS_USED LED_GREEN3_TOGGLE; #endif LEDS_USED greencounter = 0; } greencounter++; // Toggle LED only once per 100 occurrences // Toggle LED // Clear counter // Increment counter / Function name : FifoANotEmpty Description : This function is called by interrupt handler when receive FIFO channel A message buffer is empty. Received FIFO data are stored into data array. LED is toggled only once per 100 function calling FIFO A is not configured for node 1! 150

152 Author : R62779 Parameters : fifoabufidx - the message header index of the next available receive FIFO message buffer Returns : None / void FifoANotEmpty(uint8 fifoabufidx) { uint16 slotidx; // Received Slot ID static redcounter = 0; // Counter used for flashing of the red LED 3 // FIFO A is not configured for node 1! // Store received data //bufferreturnvalue = FrRxFifoBufferRead(FR0, &buffer_cc0_receivefifoabuffer[0], fifoabufidx, &slotidx, FR_CHANNEL_A); } if(redcounter>100) { #ifdef LEDS_USED LED_RED3_TOGGLE; #endif LEDS_USED redcounter = 0; } redcounter++; // Toggle LED only once per 100 occurrences // Toggle LED // Clear counter // Increment counter / Function name : TxBufferDynamicSend Description : This function updates TX MB configured for dynamic segment. Payload data are calculated: Byte 0 and byte 1 - random number (randval32, 32-bit samples) Byte 2 - counter which is incremented by 1 (during each calling) Byte 3 - Node identifier (0x0001 for node 1, 0x0002 for node 2) Author : R62779 Parameters : txdynbufidx - transmit message buffer which should be updated Returns : None / void TxBufferDynamicSend(uint8 txdynbufidx) { uint16 payload[size_of_mb_in_seg2] = {0}; // Auxiliary array for data transmission static uint16 numtransmit = 0; // Number of transmission randval32 = (5randval32 + 0x0FA0B436) % 0xFFFFFAAA; #define SWAP_BYTES #ifdef SWAP_BYTES // Fill payload payload[1] = ( ((randval32>>24) & 0x00FF) ((randval32>>8) & 0xFF00) ); // Upper halfword (swapped bytes) payload[0] = ( ((randval32>>8) & 0x00FF) ((randval32<<8) & 0xFF00) ); // Lower halfword (swapped bytes) #else // Fill payload payload[0] = randval32 >> 16; // Upper halfword payload[1] = randval32 & 0xFFFF; // Lower halfword #endif numtransmit++; // Increment counter payload[2] = numtransmit; // Fill the third byte payload[3] = 0x0001; // Fill the fourth byte, node identifier switch(txdynbufidx) // Which message buffer is empty? { case SLOT_50_A: // Message buffer configured for Slot 50, cha // Buffer 100 (frame 50) transmission, cha bufferreturnvalue = FrTxBufferUpdate(FR0, &payload[0], SLOT_50_A); // Update buffer with new data break; case SLOT_50_B: // Message buffer configured for Slot 50, chb // Buffer 101 (frame 50) transmission, chb bufferreturnvalue = FrTxBufferUpdate(FR0, &payload[0], SLOT_50_B); // Update buffer with new data break; default: break; 151

153 } } switch(bufferreturnvalue) { case BUFFER_NO_ACCESS: Failed(21); break; case BUFFER_UPDATED: // OK break; case BUFFER_NOT_UPDATED: break; default : Failed(22); break; } // Result of function calling // Buffer was not successfully locked // Buffer was successfully updated // Buffer was not updated // Else / Function name : Timer1Expired Description : This function is called by interrupt handler when FlexRay timer 1 reaches its limit - 150MT Data arrays used for sending in static slot are updated. Dynamic MB is updated only in appropriate com. cycle. Author : R62779 Parameters : None Returns : None / void Timer1Expired(void) { uint16 currentcycle = 0;// Current communication cycle number // Update data for sending in static slots // Saw-tooth waveforms are incremented/decremented by one // Only the second byte is updated (16-bit samples) while (!(ATD1STAT0 & 0x80)) ; buffer_cc0_transmitbuffer1[1] = ATD1DR1H; buffer_cc0_transmitbuffer0[1] = ATD1DR0H; ATD1STAT0 = 0x80; } // Send frame only in specific slots currentcycle = ioctl(fr0, FR_READ_CYCTR_REG, NULL); switch(currentcycle) { case 1: // Updates only if current slot is equal to 1 TxBufferDynamicSend(SLOT_50_A); // Update ("dynamic") buffer break; case 11: // Updates only if current slot is equal to 11 TxBufferDynamicSend(SLOT_50_B); // Update ("dynamic") buffer break; default: break; } void PeriphInit(void) { ATD1CTL3 = 0x38; ATD1CTL4 = 0x80; ATD1CTL0 = 0x05; ATD1CTL2 = 0x80; ATD1CTL5 = 0x32; PWME = 0xC0; PWMPOL = 0xFF; PWMCLK = 0xC0; PWMPRCLK = 0x70; PWMCAE = 0x00; PWMCTL = 0x00; 152

154 PWMSCLB = 0x03; } / Function name : CCIntegration Description : This function configures FlexRay MFR4300 CC. Author : R62779 Parameters : None Returns : None / void CCIntegration(void) { IRQCR = 0x00; // Disabling IRQ interrupt pin // FlexRay CC should be in CONFIG state // Software modification of the Strobe pin - for enabling the Physical Driver on the Generic FRDC board (version C) ioctl(fr0, FR_WRITE_STBSCR_REG, 0x5012); // ARM => DBG2 ioctl(fr0, FR_WRITE_STBSCR_REG, 0x2913); // static segment indicator => DBG3 ioctl(fr0, FR_WRITE_STBSCR_REG, 0x2a13); // dynamic segment indicator => DBG3 ioctl(fr0, FR_WRITE_STBSCR_REG, 0x2b13); // symbol window segment indicator => DBG3 ioctl(fr0, FR_WRITE_STBSCR_REG, 0x2c13); // NIT segment indicator => DBG3 ioctl(fr0, FR_WRITE_STBSCR_REG, 0x000c); // Enable DBG2/3 FrStoreProtocolData(FR0, &Fr_Cfg0_CC0); // Store Protocol Configuration data into FlexRay register // Configure message buffers FrBufferInit(FR0, &Fr_Cfg0_CC0); // Configure FlexRay timers FrTimerInit(FR0, &Fr_Cfg0_CC0); // POC state to CONFIG COMPLETE / ioctl(fr0, FR_WRITE_CRSR_REG, 0x000F); // Clear clock and reset status reg. wakeuprequired = TRUE; // Wakeup is required // Configure the GIGER reg. - Global interrupt enable reg. ioctl(fr0, FR_GLOBAL_INT_ENABLE, FR_MODULE_LINE); // MIE bit ioctl(fr0, FR_GLOBAL_INT_ENABLE, FR_PROTOCOL_LINE); // Enable timer 1 interrupt in GIFER reg.(prie bit) ioctl(fr0, FR_PROTOCOL_INT_1_ENABLE, FR_PROTOCOL_STATE_CHANGED); // Enable Protocol State changed interrupt IRQCR = 0x40; // Enabling IRQ interrupt pin } while(ioctl(fr0, FR_TEST_CMD_WRITE_BUSY, NULL)); // Wait till Protocol Command Write is not busy ioctl(fr0, FR_WRITE_POCR_REG, FR_CONFIG_COMPLETE); // Transition to READY POC state / Function name : ProtocolStateChanged Description : This function is called by interrupt handler when FlexRay Protocol State Changed Interrupt has been set (or for the first initialization). According to current POC state, either FlexRay MFR4300 is configured or switched to other POC state. Author : R62779 Parameters : None Returns : None / void ProtocolStateChanged(void) { volatile uint16 pocstatuschanged = 0; // Current POC status pocstatuschanged = ioctl(fr0, FR_GET_PROTOCOL_0_STATUS, FR_PROTOCOL_STATE); // Current POC status switch(pocstatuschanged) { case FR_POCSTATE_DEFAULT_CONFIG: //SCI0_putstringnl("default_config"); IRQCR = 0x00; while(ioctl(fr0, FR_TEST_CMD_WRITE_BUSY, NULL)); ioctl(fr0, FR_WRITE_POCR_REG, FR_CONFIG); while(ioctl(fr0, FR_TEST_CMD_WRITE_BUSY, NULL)); // Default Config -> communication has to be restarted // Disabling IRQ interrupt pin // Wait till Protocol Command Write is not busy // Transition to CONFIG // Wait till Protocol Command Write is not busy 153

155 CCIntegration(); // Integrate FlexRay CC into FlexRay bus break; case FR_POCSTATE_CONFIG: //SCI0_putstringnl("config"); // Initialize FlexRay CC - it is done in CCIntegration function break; case FR_POCSTATE_WAKEUP: //SCI0_putstringnl("wakeup"); // Wait for READY state break; case FR_POCSTATE_READY: //SCI0_putstringnl("ready"); if(wakeuprequired == TRUE) // Wakeup is necessary? First time after initialization of the CC { // Yes while(ioctl(fr0, FR_TEST_CMD_WRITE_BUSY, NULL)); // Wait till Protocol Command Write is not busy ioctl(fr0, FR_WRITE_POCR_REG, FR_WAKEUP); // Initiate the wakeup procedure wakeuprequired = FALSE; // Clear flag - wakeup is not necessary } else // No, wakeup has been already sent { while(ioctl(fr0, FR_TEST_CMD_WRITE_BUSY, NULL)); // Wait till Protocol Command Write is not busy ioctl(fr0, FR_WRITE_POCR_REG, FR_ALLOW_COLDSTART); // Activate capability of node to cold start cluster while(ioctl(fr0, FR_TEST_CMD_WRITE_BUSY, NULL)); // Wait till Protocol Command Write is not busy ioctl(fr0, FR_WRITE_POCR_REG, FR_RUN); // Transition to the STARTUP state } break; case FR_POCSTATE_NORMAL_PASSIVE: // Passive -> CC has to be restarted //SCI0_putstringnl("normal passive"); ioctl(fr0, FR_WRITE_POCR_REG, FR_HALT); // Transition to HALT state break; case FR_POCSTATE_NORMAL_ACTIVE: //SCI0_putstringnl("normal active"); // Configure the GIGER reg. - Global interrupt enable reg. ioctl(fr0, FR_GLOBAL_INT_ENABLE, FR_RX_MSG_BUFFER_LINE); ioctl(fr0, FR_GLOBAL_INT_ENABLE, FR_TX_MSG_BUFFER_LINE); // RBIE bit // TBIE bit FrTxBufferUpdate(FR0, &buffer_cc0_transmitbuffer0[0], SLOT_2); FrTxBufferUpdate(FR0, &buffer_cc0_transmitbuffer1[0], SLOT_26_A); // The first update of TX MB // The first update of TX MB // Timer 1 ioctl(fr0, FR_PROTOCOL_INT_0_ENABLE, FR_TIMER_1_EXPIRED); ioctl(fr0, FR_TIMER_TRIGGER, FR_TIMER_1); // Enable timer 1 interrupt in PIER0 reg. // Enable timer 1 (trigger) } //ioctl(fr0, FR_PROTOCOL_INT_0_ENABLE, FR_CYCLE_START); // Enable Cycle start interrupt #ifdef LEDS_USED LED_GREEN6_SET; #endif LEDS_USED break; case FR_POCSTATE_HALT: // Halt -> CC has to be restarted //SCI0_putstringnl("halt"); // FlexRay CC should be restarted break; case FR_POCSTATE_STARTUP: //SCI0_putstringnl("startup"); // Wait for NORMAL ACTIVE state #ifdef LEDS_USED LED_GREEN6_CLR; #endif LEDS_USED break; default: //SCI0_putstringnl("n-a"); break; } / Function name : main Description : Main function of the application In this function the PLL and other S12X microcontroller peripherals are initialized. Author : R62779 Parameters : None Returns : None 154

156 / void main(void) { DisableInterrupts; // Disable interrupts on S12X / Enable the PLL / StartupPLL(); / Initialize S12X MCU / InitMCU(); PeriphInit(); // Configure CHA + CHB ioctl(fr0, FR_WRITE_MCR_REG, 0x1800); // Set MEN ioctl(fr0, FR_WRITE_MCR_REG, 0x9800); IRQCR = 0x00; EnableInterrupts; ProtocolStateChanged(); // Disabling IRQ interrupt pin // Enable interrupts on S12X // Call POC handler first time for(;;) { // FreeMASTER routine #ifdef FREEMASTER_USED // FreeMASTER polling FMSTR_Poll(); #endif FREEMASTER_USED PWMPER7 = 0xFF; PWMDTY7 = buffer_cc0_receivebuffer3[0]; } } / End of main / / Function name : StartupPLL Description : This function sets the PLL Author : R60817 Parameters : None Returns : None / void StartupPLL(void) { / CRG module configuration / CLKSEL_PLLSEL=0; / System Clock = OSCCLK / PLLCTL = 0xE1; / CME, PLLON, AUTO, SCME / / OSCCLK = 4MHz, PLLCLK = 50MHz, BUSCLK = 25MHz / REFDV = 3; / REFDV = 3 / SYNR = 24; / SYNR = 24 / while(!crgflg_lock); / Wait for PLL VCO is in desired range / CLKSEL_PLLSEL = 1; / System Clock = PLLCLK / } / Function name : InitMCU Description : This function initialize S12X controller Author : R60817 Parameters : None Returns : None / void InitMCU(void) { / EBI module configuration / //EBICTL0 = 0x2A; / DATA[15:8], ADDR[9:1], UDS / EBICTL0 = 0x2D; 155

157 //EBICTL1 = 0x07; / EXSTR[2:0]=7, 8 stretch cycles / EBICTL1 = 0x02; / EXSTR[2:0]=2, 3 stretch cycles / / MMC module configuration / MODE = 0xA0; / Normal Expanded Mode / MMCCTL1 = 0x01; / ROMON / MMCCTL0 = 0x04; / CS[3:0]=4, CS2 enabled / / COP module configuration / COPCTL = 0x00; / COP disable / #ifdef LEDS_USED LED_RED1_INIT; LED_RED2_INIT; LED_RED3_INIT; LED_RED4_INIT; LED_RED5_INIT; LED_RED6_INIT; LED_GREEN1_INIT; LED_GREEN2_INIT; LED_GREEN3_INIT; LED_GREEN4_INIT; LED_GREEN5_INIT; LED_GREEN6_INIT; #endif LEDS_USED // Initialize RED1 LED // Initialize RED2 LED // Initialize RED3 LED // Initialize RED4 LED // Initialize RED5 LED // Initialize RED6 LED // Initialize GREEN1 LED // Initialize GREEN2 LED // Initialize GREEN3 LED // Initialize GREEN4 LED // Initialize GREEN5 LED // Initialize GREEN6 LED #ifdef SCI0_USED // SCI0 enable //SCI0BDL = 0x68; // 16 MHz / (16SCIBR)Baud Rate = 9615 //SCI0BDL = 0x09; // 16 MHz / (16SCIBR)Baud Rate = SCI0BDH = 0x00; // IR disabled, transmitter narrow pulse 3/16 SCI0BDL = 0xA2; // 25 MHz / (16SCIBR)Baud Rate = 9585 //SCI0BDL = 0x0E; // 25 MHz / (16SCIBR)Baud Rate = #endif SCI0_USED } #ifdef FREEMASTER_USED // FreeMASTER initialization FMSTR_Init(); #endif FREEMASTER_USED / Function name : CC_Interrupt_XIRQ Description : Interrupt function from MFR4300. The XIRQ is not used in this application. Author : R60817 Parameters : None Returns : None / #pragma CODE_SEG NON_BANKED interrupt 5 void CCInterruptXIRQ(void) { } #pragma CODE_SEG DEFAULT / Function name : CCInterruptIRQ Description : Interrupt function from FlexRay MFR4300 CC. For correct function it is necessary to enable: MIE bit in the GIFER reg., RBIE and TBIE bits in the GIFER reg., and MBIE bit in the appropriate MB Author : R62779 Parameters : None Returns : None / #pragma CODE_SEG NON_BANKED interrupt 6 void CCInterruptIRQ(void) { uint16 event = 0; uint8 bufidx = 0; 156

158 uint16 temppifr0 = 0; uint16 temppifr1 = 0; // Current value of PIFR0 reg. // Current value of PIFR1 reg. event = ioctl(fr0, FR_READ_GIFER_REG, NULL); // Read GIFER register if((event & FR_RX_MSG_BUFFER)!= 0) // RX buf int vector { bufidx = (uint8)(ioctl(fr0, FR_READ_MBIVEC_REG, NULL) & 0x007F); // Read the MBIVEC reg., RX buf int vector RxBufferReceive(bufIdx); // Call service routine } if((event & FR_TX_MSG_BUFFER)!= 0) // TX buf int vector { bufidx = (uint8)((ioctl(fr0, FR_READ_MBIVEC_REG, NULL) & 0x7F00) >> 8); // Read the MBIVEC reg., TX buf int vector TxBufferEmpty(bufIdx); // Call service routine } if((event & FR_FIFO_NOT_EMPTY_A)!= 0) // FIFO A Not Empty buf int vector { bufidx = (uint8)(ioctl(fr0, FR_READ_RFARIR_REG, NULL) & 0x00FF); // Read the AFARIR reg., FIFO A Not Empty int vector FifoANotEmpty(bufIdx); // Call service routine ioctl(fr0, FR_CLEAR_GLOBAL_INT_FLAG, FR_FIFO_NOT_EMPTY_A); // Clear FNEAIF flag in GIFER reg. } if((event & FR_FIFO_NOT_EMPTY_B)!= 0) // FIFO B Not Empty buf int vector { bufidx = (uint8)(ioctl(fr0, FR_READ_RFBRIR_REG, NULL) & 0x00FF); // Read the AFARIR reg., FIFO A Not Empty int vector FifoBNotEmpty(bufIdx); // Call service routine ioctl(fr0, FR_CLEAR_GLOBAL_INT_FLAG, FR_FIFO_NOT_EMPTY_B); // Clear FNEBIF flag in GIFER reg. } if((event & FR_PROTOCOL)!= 0) { temppifr0 = ioctl(fr0, FR_READ_PIFR0_REG, NULL); // Store current set flags - PIFR0 temppifr1 = ioctl(fr0, FR_READ_PIFR1_REG, NULL); // Store current set flags - PIFR1 if((temppifr0 & FR_TIMER_1_EXPIRED)!= 0) // Timer 1 expired { Timer1Expired(); // Call service routine ioctl(fr0, FR_CLEAR_PROTOCOL_INT_0_FLAG, FR_TIMER_1_EXPIRED); // Clear flag in the PIFR0 reg. } if((temppifr0 & FR_TIMER_2_EXPIRED)!= 0) // Timer 1 expired { // Timer 2 is not configured in this application! //Timer2Expired(); // Call service routine ioctl(fr0, FR_CLEAR_PROTOCOL_INT_0_FLAG, FR_TIMER_2_EXPIRED); // Clear flag in the PIFR0 reg. } if((temppifr0 & FR_CYCLE_START)!= 0) // Cycle Start int. { // Cycle start int. is not configured - you can enable it in the ProtocolStateChanged() function //Timer1Expired(); // Call service routine ioctl(fr0, FR_CLEAR_PROTOCOL_INT_0_FLAG, FR_CYCLE_START); // Clear flag in the PIFR0 reg. } if((temppifr1 & FR_PROTOCOL_STATE_CHANGED)!= 0) // Protocol State Changed Interrupt { ProtocolStateChanged(); // Call service routine ioctl(fr0, FR_CLEAR_PROTOCOL_INT_1_FLAG, FR_PROTOCOL_STATE_CHANGED); // Clear flag in the PIFR1 reg. } } } #pragma CODE_SEG DEFAULT / Function name : FreeMASTERInterruptSCI0 Description : SCI0 interrupt function, used by FreeMASTER tool. Author : R62779 Parameters : None Returns : None / #pragma CODE_SEG NON_BANKED interrupt 20 void FreeMASTERInterruptSCI0(void) { #ifdef FREEMASTER_USED 157

159 FMSTR_Isr(); #endif FREEMASTER_USED } #pragma CODE_SEG DEFAULT // Calls FreeMASTER service routine Fr_Cfg.h (node 1) Freescale Semiconductor Inc. (c) Copyright Freescale Semiconductor, Inc. (c) Copyright Motorola, Inc. ALL RIGHTS RESERVED. FlexRay MFR4300 Low-Level Driver. This file contains Communication Controller configuration data. Note that configuration data are different for each node in the cluster. Structures and types are defined in the Fr_types.h file. / #ifndef _FR_CFG_H #define _FR_CFG_H #include "Compiler.h" #include "Platform_Types.h" #include "Fr_types.h" / Base address definition of controller 0 / #define FR_CC0_BASE_ADDRESS 0x // Memory configuration #define NUMBER_OF_MB_IN_SEG1 100 / Number of Message Buffers used in segment 1 / #define NUMBER_OF_MB_IN_SEG2 10 / Number of Message Buffers used in segment 2 / #define NUMBER_OF_MB_FIFO_A 1 / Number of receive FIFO A Message Buffers (Do not use zero value) / #define NUMBER_OF_MB_FIFO_B 10 / Number of receive FIFO B Message Buffers (Do not use zero value) / #define SIZE_OF_MB_IN_SEG1 2 / Size of Message Buffers payload used in segment 1 [Words] / #define SIZE_OF_MB_IN_SEG2 4 / Size of Message Buffers payload used in segment 2 [Words] / #define SIZE_OF_MB_IN_FIFO_A 2 / Size of Message Buffers payload used in Receive FIFO A [Words] / #define SIZE_OF_MB_IN_FIFO_B 2 / Size of Message Buffers payload used in Receive FIFO B [Words] / // Transmit buffer FAR_ROM(static Fr_CCTransmitBufferConfigType) Cfg0_CC0_TransmitBuffer0Cfg = { 2, 0x04A9, 2, FRD_STREAMING_COMMIT_MODE, FRD_SINGLE_TRANSMIT_BUFFER, TRUE, FRD_STATE_TRANSMISSION_TYPE, TRUE, TRUE, FALSE, 0, 0, FALSE }; FAR_ROM(static Fr_CCBufferInfoType) Cfg0_CC0_TransmitBuffer0Info = { 0,FRD_TRANSMIT_BUFFER, &Cfg0_CC0_TransmitBuffer0Cfg }; // Transmit buffer FAR_ROM(static Fr_CCTransmitBufferConfigType) Cfg0_CC0_TransmitBuffer1Cfg = { 26, 0x0478, 2, FRD_STREAMING_COMMIT_MODE, FRD_SINGLE_TRANSMIT_BUFFER, TRUE, FRD_STATE_TRANSMISSION_TYPE, TRUE, FALSE, FALSE, 0, 0, FALSE }; FAR_ROM(static Fr_CCBufferInfoType) Cfg0_CC0_TransmitBuffer1Info = { 1,FRD_TRANSMIT_BUFFER, &Cfg0_CC0_TransmitBuffer1Cfg }; // Transmit buffer FAR_ROM(static Fr_CCTransmitBufferConfigType) Cfg0_CC0_TransmitBuffer100Cfg = { 50, 0x0570, 4, FRD_STREAMING_COMMIT_MODE, FRD_SINGLE_TRANSMIT_BUFFER, FALSE, FRD_EVENT_TRANSMISSION_TYPE, TRUE, FALSE, FALSE, 0, 0, FALSE }; 158

160 FAR_ROM(static Fr_CCBufferInfoType) Cfg0_CC0_TransmitBuffer100Info = { 100,FRD_TRANSMIT_BUFFER, &Cfg0_CC0_TransmitBuffer100Cfg }; // Transmit buffer FAR_ROM(static Fr_CCTransmitBufferConfigType) Cfg0_CC0_TransmitBuffer101Cfg = { 50, 0x0570, 4, FRD_STREAMING_COMMIT_MODE, FRD_SINGLE_TRANSMIT_BUFFER, FALSE, FRD_EVENT_TRANSMISSION_TYPE, FALSE, TRUE, FALSE, 0, 0, FALSE }; FAR_ROM(static Fr_CCBufferInfoType) Cfg0_CC0_TransmitBuffer101Info = { 101,FRD_TRANSMIT_BUFFER, &Cfg0_CC0_TransmitBuffer101Cfg }; // Receive buffer FAR_ROM(static Fr_CCReceiveBufferConfigType) Cfg0_CC0_ReceiveBuffer3Cfg = { 18, TRUE, TRUE, FALSE, FALSE, 0, 0 }; FAR_ROM(static Fr_CCBufferInfoType) Cfg0_CC0_ReceiveBuffer3Info = { 3,FRD_RECEIVE_BUFFER, &Cfg0_CC0_ReceiveBuffer3Cfg }; // Receive buffer FAR_ROM(static Fr_CCReceiveBufferConfigType) Cfg0_CC0_ReceiveBuffer103Cfg = { 60, TRUE, TRUE, FALSE, FALSE, 0, 0 }; FAR_ROM(static Fr_CCBufferInfoType) Cfg0_CC0_ReceiveBuffer103Info = { 103,FRD_RECEIVE_BUFFER, &Cfg0_CC0_ReceiveBuffer103Cfg }; // Receive buffer FAR_ROM(static Fr_CCReceiveBufferConfigType) Cfg0_CC0_ReceiveBuffer13Cfg = { 18, TRUE, FALSE, TRUE, FALSE, 0, 0 }; FAR_ROM(static Fr_CCBufferInfoType) Cfg0_CC0_ReceiveBuffer13Info = { 13,FRD_RECEIVE_BUFFER, &Cfg0_CC0_ReceiveBuffer13Cfg }; // Receive buffer FAR_ROM(static Fr_CCReceiveBufferConfigType) Cfg0_CC0_ReceiveBuffer104Cfg = { 60, TRUE, FALSE, TRUE, FALSE, 0, 0 }; FAR_ROM(static Fr_CCBufferInfoType) Cfg0_CC0_ReceiveBuffer104Info = { 104,FRD_RECEIVE_BUFFER, &Cfg0_CC0_ReceiveBuffer104Cfg }; // Receive Shadow buffer FAR_ROM(static Fr_CCReceiveShadowBufferConfigType) Cfg0_CC0_ReceiveShadowBuffer18Cfg = { TRUE, TRUE }; FAR_ROM(static Fr_CCBufferInfoType) Cfg0_CC0_ReceiveShadowBuffer18Info = { 18,FRD_RECEIVE_SHADOW_BUFFER, &Cfg0_CC0_ReceiveShadowBuffer18Cfg }; // Receive Shadow buffer FAR_ROM(static Fr_CCReceiveShadowBufferConfigType) Cfg0_CC0_ReceiveShadowBuffer19Cfg = { TRUE, FALSE }; FAR_ROM(static Fr_CCBufferInfoType) Cfg0_CC0_ReceiveShadowBuffer19Info = { 19,FRD_RECEIVE_SHADOW_BUFFER, &Cfg0_CC0_ReceiveShadowBuffer19Cfg }; // Receive Shadow buffer 159

161 FAR_ROM(static Fr_CCReceiveShadowBufferConfigType) Cfg0_CC0_ReceiveShadowBuffer105Cfg = { FALSE, TRUE }; FAR_ROM(static Fr_CCBufferInfoType) Cfg0_CC0_ReceiveShadowBuffer105Info = { 105,FRD_RECEIVE_SHADOW_BUFFER, &Cfg0_CC0_ReceiveShadowBuffer105Cfg }; // Receive Shadow buffer FAR_ROM(static Fr_CCReceiveShadowBufferConfigType) Cfg0_CC0_ReceiveShadowBuffer106Cfg = { FALSE, FALSE }; FAR_ROM(static Fr_CCBufferInfoType) Cfg0_CC0_ReceiveShadowBuffer106Info = { 106,FRD_RECEIVE_SHADOW_BUFFER, &Cfg0_CC0_ReceiveShadowBuffer106Cfg }; // Fifo buffer // Range from 1 up to 48 FAR_ROM(static Fr_CCReceiveFifoRangeFiltersType) Cfg0_CC0_ReceiveFifoBRangeFilterCfg = { TRUE, FALSE, 1, 48, // Range Filter 0 FALSE, TRUE, 5, 7, // Range Filter 1 FALSE, TRUE, 62, 64, // Range Filter 2 FALSE, FALSE, 61, 65 // Range Filter 3 }; FAR_ROM(static Fr_CCReceiveFifoConfigType) Cfg0_CC0_ReceiveFifoBCfg = { FR_CHANNEL_B, NUMBER_OF_MB_FIFO_B, SIZE_OF_MB_IN_FIFO_B, TRUE, 0x0000, 0x0000, 0x0000, 0x07FF, &Cfg0_CC0_ReceiveFifoBRangeFilterCfg }; FAR_ROM(static Fr_CCBufferInfoType) Cfg0_CC0_ReceiveFifoBInfo = { 111,FRD_RECEIVE_FIFO, &Cfg0_CC0_ReceiveFifoBCfg }; FAR_PROM(static Fr_CCBufferInfoType) const Cfg0_CC0_BufferConfigPtr[] = { // Channel A and/or B &Cfg0_CC0_TransmitBuffer0Info, &Cfg0_CC0_TransmitBuffer1Info, &Cfg0_CC0_TransmitBuffer100Info, &Cfg0_CC0_ReceiveBuffer3Info, &Cfg0_CC0_ReceiveBuffer103Info, // Only channel B &Cfg0_CC0_TransmitBuffer101Info, &Cfg0_CC0_ReceiveBuffer13Info, &Cfg0_CC0_ReceiveBuffer104Info, // Others &Cfg0_CC0_ReceiveFifoBInfo, &Cfg0_CC0_ReceiveShadowBuffer18Info, &Cfg0_CC0_ReceiveShadowBuffer19Info, &Cfg0_CC0_ReceiveShadowBuffer105Info, &Cfg0_CC0_ReceiveShadowBuffer106Info, NULL }; / Timers / FAR_ROM(static Fr_AbsoluteAlarmInfoType) Cfg0_CC0_AbsoluteTimer1Cfg = { 150, 0x00, 0x00, FR_REPETITIVE }; FAR_ROM(static Fr_CCTimerInfoType) Cfg0_CC0_AbsoluteTimer1Info = { 1, FRD_ABSOLUTE_TIMER, &Cfg0_CC0_AbsoluteTimer1Cfg }; FAR_ROM(static Fr_RelativeAlarmInfoType) Cfg0_CC0_RelativeTimer2Cfg = { 300, FR_REPETITIVE }; FAR_ROM(static Fr_CCTimerInfoType) Cfg0_CC0_RelativeTimer2Info = { 2, FRD_RELATIVE_TIMER, &Cfg0_CC0_RelativeTimer2Cfg }; FAR_PROM(static Fr_CCTimerInfoType) const Cfg0_CC0_TimerInfoPtr[] = { 160

162 &Cfg0_CC0_AbsoluteTimer1Info, //&Cfg0_CC0_RelativeTimer2Info, NULL }; // Only timer 1 is configured / / FAR_ROM(static Fr_CCConfigInfoType) Fr_Cfg0_CC0 = { //Fr_CCConfigInfoType far Fr_Cfg0_CC0 = { / Value Description Unit PCR / 4, / Coldstart attemps - 3 / 9, / Action point offset -1 MT 0 / 76, / CAS Rx low max gbbit 4 / 0, / Dynamic slot idle phase minislot 28 / 9, / Minislot action point offset -1 MT 3 / 9, / Minislot-MinislotActionPointOffset-1 MT 3 / 40, / Static slot length MT 0 / 29, / StaticSlot-ActionPointOffset-1 MT 13 / TRUE, / Symbol window!=0-9 / 89, / Symbol window-actionpointoffset-1 MT 6 / 6, / TSS transmitter gbbit 5 / 59, / WakeUp symbol Rx idle gbbit 5 / 54, / WakeUp symbol Rx low gbbit 3 / 301, / WakeUp symbol Rx window gbbit 4 / 180, / WakeUp symbol Tx idle gbbit 8 / 60, / WakeUp symbol Tx low gbbit 5 / , / (ListenNoiseListenTimeout)-1 ut 16/17 / 11, / Macro initial offset a MT 6 / 11, / Macro initial offset b MT 16 / 3000, / Macro per cycle MT 10 / 1080, / Macro per cycle - Static slot MT 1 / 400, / MacroPerCycle-OffsetCorrectionStart MT 28 / 15, / MaxWithoutClockCorrectionFatal cyclepair 8 / 15, / MaxWithoutClockCorrectionPassive cyclepair 8 / TRUE, / Number of minislot!= 0-9 / 23, / Number of minislots - 1 minislot 29 / 48, / Number of static slots static slot 2 / 2600, / Offset correction start MT 11 / 2, / Payload length static word 19 / 4, / Payload length dynamic max word 24 / 9, / Max(ActionPO,MinislotActionPO)-1 MT 13 / FALSE, / Allow halt due to clock - 26 / 0, / Allow passive to active cyclepair 12 / 4, / Cluster drift damping ut 24 / 1875, / AcceptedStartupRange-DelayCompChA ut 22 / 1875, / AcceptedStartupRange-DelayCompChB ut 26 / , / Listen Timeout - 1 ut 14/15 / 2, / Key slot ID - 18 / TRUE, / Key slot used for startup - 11 / TRUE, / Key slot used for sync - 11 / 1, / NumberOfMinislots - LatestTx minislot 21 / 4, / Micro Initial Offset A ut 20 / 4, / Micro Initial Offset B ut 20 / , / Micro per cycle ut 22/23 / , / Micro per cycle - Max Drift ut 24/25 / , / Micro per cycle + Max Drift ut 26/27 / 20, / Micro Per Macro Nom / 2 ut 7 / 1122, / Offset correction out ut 9 / 722, / Rate correction out ut 14 / FALSE, / Single slot enabled - 10 / 0, / Wakeup channel cha/chb 10 / 4, / Wakeup pattern - 18 / 38, / DecodingCorrection+DelayCompChA+2 ut 19 / 38, / DecodingCorrection+DelayCompChB+2 ut 7 / FALSE, / Rx data glitch filter bypass enable - 1 / 0x04A9, / Header CRC for key slot crc 12 / 0, / Extern offset correction ut 29 / 0, / Extern rate correction ut 21 / 4, / Sync node max - 30 / &Cfg0_CC0_BufferConfigPtr[0], //NULL &Cfg0_CC0_TimerInfoPtr[0] //NULL }; / ===================================================== / #endif / End of CFG file / 161

163 cfg1_node2.c Freescale Semiconductor Inc. (c) Copyright Freescale Semiconductor, Inc. ALL RIGHTS RESERVED. $Filename : cfg1_node2.c$ $Last modified by: R62779$ $Author : R62779$ $Date : Jan $ $Version : $ Brief : This file contains source code for MFR4300 Low-Level Driver application example. The second node, MC9S12XDP512 and MFR4300 Data are transmitted in static and dynamic segments, both memory segments are configured, receive FIFO and one timer interrupt are configured. Application is running in interrupt driven mode (except 'dynamic' transmit buffers). Application is intended for the second version of the S12X silicon In this version is implemented the FreeMASTER tool (with TSA support). Reference : Block Guide rev 0.5 (MFR4300) ============================================================================ THIS SOFTWARE IS PROVIDED BY FREESCALE SEMICONDUCTOR "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL FREESCALE SEMICONDUCTOR OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. / / Project Include Files / #include <hidef.h> / Common defines and macros / #include <mc9s12xdp512.h> / Derivative information / #include "platform_types.h" / Platform types / #include "Fr.h" / FlexRay driver / #include "Led.h" / LED control macros / #include "freemaster.h" / FreeMASTER support / #pragma LINK_INFO DERIVATIVE "mc9s12dp256b" #define FR_ISR0_RXIF 0x0001 / RXIF bit definition / #define FR_ISR0_TXIF 0x0002 / TXIF bit definiction / #define FR_ISR0_TIF0 0x0040 / TIF0 bit definiction / #define SCI0_USED / SCI0 is used / #define FREEMASTER_USED / FreeMASTER tool is used / //#define LEDS_USED / Leds are used / #define FR_NODE 2 #if (FR_NODE == 2) #define SLOT_2_A 3 / Slot 2, cha - RX message buffer 3 / #define SLOT_2_B 13 / Slot 2, chb - RX message buffer 13 / #define SLOT_18 0 / Slot 18 - TX message buffer 0 / #define SLOT_42_B 1 / Slot 42, chb - TX message buffer 1 / #define SLOT_60_A 100 / Slot 60, cha - TX message buffer 100 / #define SLOT_60_B 101 / Slot 60, chb - TX message buffer 101 / #define SLOT_50_A 103 / Slot 50, cha - RX message buffer 103 / #define SLOT_50_B 104 / Slot 50, chb - RX message buffer 104 / / FIFO A - start MB index is 110, number of MB is 10 / / Four shadow MB are configured - 18, 19, 105, 106 / #endif 162

164 / Definitions / sint16 returnvalue; // Auxiliary variable // Receive buffer 13 uint16 buffer_cc0_receivebuffer13[size_of_mb_in_seg1]={0}; // Array of received data // Receive buffer 3 uint16 buffer_cc0_receivebuffer3[size_of_mb_in_seg1]={0}; // Array of received data // Transmit buffer 0 uint16 buffer_cc0_transmitbuffer0[size_of_mb_in_seg1]={0}; // Array of data intended for transmission // Transmit buffer 1 uint16 buffer_cc0_transmitbuffer1[size_of_mb_in_seg1]={0}; // Array of data intended for transmission // Receive buffer 103 uint16 buffer_cc0_receivebuffer103[size_of_mb_in_seg2]={0}; // Array of received data // Receive buffer 104 uint16 buffer_cc0_receivebuffer104[size_of_mb_in_seg2]={0}; // Array of received data // Receive FIFO data buffer uint16 buffer_cc0_receivefifoabuffer[size_of_mb_in_fifo_a]={0}; // Array of received data BufferReturnType bufferreturnvalue; boolean wakeuprequired = TRUE; uint32 randval32 = 0; uint16 macrotick = 0; uint8 numberoferror = 0; uint16 startupcnt = 0; // Declaration of buffer return type // Wake-up is required // Random value which will be sent in dynamic segment // Current macrotick // Error number - only for debugging // Reset FlexRay CC after time expires #ifdef FREEMASTER_USED / FreeMASTER TSA support / FMSTR_TSA_TABLE_BEGIN(first_table) FMSTR_TSA_RW_VAR(buffer_CC0_TransmitBuffer0[0], FMSTR_TSA_UINT16) FMSTR_TSA_RW_VAR(buffer_CC0_TransmitBuffer1[0], FMSTR_TSA_UINT16) FMSTR_TSA_RW_VAR(buffer_CC0_ReceiveBuffer103[2], FMSTR_TSA_UINT16) FMSTR_TSA_RW_VAR(buffer_CC0_ReceiveBuffer103[3], FMSTR_TSA_UINT16) FMSTR_TSA_RW_VAR(buffer_CC0_ReceiveFifoABuffer[1], FMSTR_TSA_UINT16) FMSTR_TSA_RW_VAR(buffer_CC0_ReceiveBuffer3[1], FMSTR_TSA_UINT16) FMSTR_TSA_RW_VAR(buffer_CC0_ReceiveBuffer13[1], FMSTR_TSA_UINT16) FMSTR_TSA_RW_VAR(buffer_CC0_ReceiveBuffer104[2], FMSTR_TSA_UINT16) FMSTR_TSA_RW_VAR(buffer_CC0_ReceiveBuffer104[3], FMSTR_TSA_UINT16) FMSTR_TSA_TABLE_END() FMSTR_TSA_TABLE_LIST_BEGIN() FMSTR_TSA_TABLE(first_table) FMSTR_TSA_TABLE_LIST_END() / End of FreeMASTER TSA support / #endif FREEMASTER_USED / Protypes / void StartupPLL(void); void InitMCU(void); void Timer1Expired(void); void RxBufferReceive(uint8 rxbufidx); void TxBufferEmpty(uint8 txbufidx); void TxBufferDynamicSend(uint8 txdynbufidx); void FifoBNotEmpty(uint8 fifobbufidx); void FifoANotEmpty(uint8 fifoabufidx); void ProtocolStateChanged(void); void CCIntegration(void); void Failed(uint8 number); / Functions / void Failed(uint8 number) // Function only for debugging { numberoferror = number; } // CC should be restarted while(1); / 163

165 Function name : RxBufferReceive Description : This function is called by interrupt handler if any data has been received. Received data are stored into appropriate data arrays and LEDs are toggled after succesfull reception of data (in static segment only once per 100 occurences) Author : R62779 Parameters : rxbufidx - the lowest numbered receive message buffer that has its interrupt set. Returns : None / void RxBufferReceive(uint8 rxbufidx) { static greencounter = 0; // Auxiliary counter for green LED toggling static redcounter = 0; // Auxiliary counter for green LED toggling switch(rxbufidx) // Which message buffer is full? { case (SLOT_2_A): // Messages buffer configured for Slot 2, channel A bufferreturnvalue = FrRxBufferRead(FR0, &buffer_cc0_receivebuffer3[0], SLOT_2_A); // Store received data switch(bufferreturnvalue) // Result of function calling { case BUFFER_NO_ACCESS: // Buffer was not successfully locked / unlocked Failed(1); break; case FRAME_NO_RCV: // No data has been received break; case DATA_RECEIVED: // Data was successfullly received and copied #ifdef LEDS_USED if(redcounter>100) // Toggle LED only once per 100 occurrences { LED_RED1_TOGGLE; // Toggle LED redcounter = 0; // Clear counter } redcounter++; // Increment counter #endif LEDS_USED break; default : // Else Failed(2); break; } break; case (SLOT_2_B): // Messages buffer configured for Slot 2, channel B bufferreturnvalue = FrRxBufferRead(FR0, &buffer_cc0_receivebuffer13[0], SLOT_2_B); // Store received data switch(bufferreturnvalue) // Result of function calling { case BUFFER_NO_ACCESS: // Buffer was not successfully locked / unlocked Failed(3); break; case FRAME_NO_RCV: // No data has been received break; case DATA_RECEIVED: // Data was successfullly received and copied #ifdef LEDS_USED if(greencounter>100) // Toggle LED only once per 100 occurrences { LED_GREEN1_TOGGLE; // Toggle LED greencounter = 0; // Clear counter } greencounter++; // Increment counter #endif LEDS_USED break; default : // Else Failed(4); break; } break; case SLOT_50_A: // Message buffer configured for Slot 50, cha bufferreturnvalue = FrRxBufferRead(FR0, &buffer_cc0_receivebuffer103[0], SLOT_50_A); // Store received data switch(bufferreturnvalue) // Result of function calling { case BUFFER_NO_ACCESS: // Buffer was not successfully locked / unlocked Failed(5); 164

166 break; case FRAME_NO_RCV: break; case DATA_RECEIVED: #ifdef LEDS_USED LED_RED2_TOGGLE; #endif LEDS_USED break; default : Failed(6); break; } break; // No data has been received // Data was successfullly received and copied // Toggle LED // Else } case SLOT_50_B: // Message buffer configured for Slot 50, chb bufferreturnvalue = FrRxBufferRead(FR0, &buffer_cc0_receivebuffer104[0], SLOT_50_B); // Store received data switch(bufferreturnvalue) // Result of function calling { case BUFFER_NO_ACCESS: // Buffer was not successfully locked / unlocked Failed(7); break; case FRAME_NO_RCV: // No data has been received break; case DATA_RECEIVED: // Data was successfullly received and copied #ifdef LEDS_USED LED_GREEN2_TOGGLE; // Toggle LED #endif LEDS_USED break; default : // Else Failed(8); break; } break; } / Function name : TxBufferEmpty Description : This function is called by interrupt handler when any of the enabled transmit message buffers is empty. Transmit MB buffers are updated with new data. Only for MB assigned to static segment. Author : R62779 Parameters : txbufidx - the lowest numbered transmit message buffer that has its interrupt set. Returns : None / void TxBufferEmpty(uint8 txbufidx) { switch(txbufidx) // Which message buffer is empty? { case SLOT_18: // Message buffer configured for Slot 18 // Buffer 0 (frame 18) transmission bufferreturnvalue = FrTxBufferUpdate(FR0, &buffer_cc0_transmitbuffer0[0], SLOT_18); // Update buffer with new data break; case SLOT_42_B: // Message buffer configured for Slot 42 // Buffer 1 (frame 42) transmission bufferreturnvalue = FrTxBufferUpdate(FR0, &buffer_cc0_transmitbuffer1[0], SLOT_42_B); // Update buffer with new data break; } switch(bufferreturnvalue) // Result of function calling { case BUFFER_NO_ACCESS: // Buffer was not successfully locked Failed(18); break; case BUFFER_UPDATED: // Buffer was successfully updated // OK break; case BUFFER_NOT_UPDATED: // Buffer was not updated Failed(19); break; default : // Else 165

167 } Failed(20); break; } / Function name : FifoBNotEmpty Description : This function is called by interrupt handler when receive FIFO channel B message buffer is not empty. Received FIFO data are stored into data array. LED is toggled only once per 100 function calling FIFO B is not configured for node 2! Author : R62779 Parameters : fifobbufidx - the message header index of the next available receive FIFO message buffer Returns : None / void FifoBNotEmpty(uint8 fifobbufidx) { uint16 slotidx; // Received Slot ID static greencounter = 0; // Counter used for flashing of the green LED 3 // FIFO B is not configured for node 2! // Store received data //bufferreturnvalue = FrRxFifoBufferRead(FR0, &buffer_cc0_receivefifobbuffer[0], fifobbufidx, &slotidx, FR_CHANNEL_B); } if(greencounter>100) { #ifdef LEDS_USED LED_GREEN3_TOGGLE; #endif LEDS_USED greencounter = 0; } greencounter++; // Toggle LED only once per 100 occurrences // Toggle LED // Clear counter // Increment counter / Function name : FifoANotEmpty Description : This function is called by interrupt handler when receive FIFO channel A message buffer is empty. Received FIFO data are stored into data array. LED is toggled only once per 100 function calling Author : R62779 Parameters : fifoabufidx - the message header index of the next available receive FIFO message buffer Returns : None / void FifoANotEmpty(uint8 fifoabufidx) { uint16 slotidx; // Received Slot ID static redcounter = 0; // Counter used for flashing of the red LED 3 // Store received data bufferreturnvalue = FrRxFifoBufferRead(FR0, &buffer_cc0_receivefifoabuffer[0], fifoabufidx, &slotidx, FR_CHANNEL_A); } if(redcounter>100) { #ifdef LEDS_USED LED_RED3_TOGGLE; #endif LEDS_USED redcounter = 0; } redcounter++; // Toggle LED only once per 100 occurrences // Toggle LED // Clear counter // Increment counter / Function name : TxBufferDynamicSend Description : This function updates TX MB configured for dynamic segment. Payload data are calculated: 166

168 Byte 0 and byte 1 - random number (randval32, 32-bit samples) Byte 2 - counter which is incremented by 1 (during each calling) Byte 3 - Node identifier (0x0001 for node 1, 0x0002 for node 2) Author : R62779 Parameters : txdynbufidx - transmit message buffer which should be updated Returns : None / void TxBufferDynamicSend(uint8 txdynbufidx) { uint16 payload[size_of_mb_in_seg2] = {0}; // Auxiliary array for data transmission static uint16 numtransmit = 0; // Number of transmission randval32 = (5randval32 + 0x0FA0B436) % 0xFFFFFAAA; #define SWAP_BYTES #ifdef SWAP_BYTES // Fill payload payload[1] = ( ((randval32>>24) & 0x00FF) ((randval32>>8) & 0xFF00) ); payload[0] = ( ((randval32>>8) & 0x00FF) ((randval32<<8) & 0xFF00) ); #else // Fill payload payload[0] = randval32 >> 16; // Upper halfword payload[1] = randval32 & 0xFFFF; // Lower halfword #endif numtransmit++; // Increment counter payload[2] = 12369;//numTransmit; // Fill the third byte payload[3] = 0x0002; // Fill the fourth byte // Upper halfword (swapped bytes) // Lower halfword (swapped bytes) switch(txdynbufidx) // Which message buffer is empty? { case SLOT_60_A: // Message buffer configured for Slot 60, cha // Buffer 100 (frame 60) transmission, cha bufferreturnvalue = FrTxBufferUpdate(FR0, &payload[0], SLOT_60_A); // Update buffer with new data break; case SLOT_60_B: // Message buffer configured for Slot 60, chb // Buffer 101 (frame 60) transmission, chb bufferreturnvalue = FrTxBufferUpdate(FR0, &payload[0], SLOT_60_B); // Update buffer with new data break; } switch(bufferreturnvalue) // Result of function calling { case BUFFER_NO_ACCESS: // Buffer was not successfully locked Failed(21); break; case BUFFER_UPDATED: // Buffer was successfully updated // OK break; case BUFFER_NOT_UPDATED: // Buffer was not updated //Failed(); break; default : // Else Failed(22); break; } } / Function name : Timer1Expired Description : This function is called by interrupt handler when FlexRay timer 1 reaches its limit - 150MT Data arrays used for sending in static slot are updated. Dynamic MB is updated only in appropriate com. cycle Author : R62779 Parameters : None Returns : None / void Timer1Expired(void) { uint16 currentcycle = 0;// Current communication cycle number // Update data for sending in static slots 167

169 // Saw-tooth waveforms are incremented/decremented by two // Only the first byte is updated (16-bit samples) while (!(ATD1STAT0 & 0x80)) ; buffer_cc0_transmitbuffer0[0] = ATD1DR0H; ATD1STAT0 = 0x80; } // Send frame only in specific slots currentcycle = ioctl(fr0, FR_READ_CYCTR_REG, NULL); switch(currentcycle) { case 3: // Updates only if current slot is equal to 3 TxBufferDynamicSend(SLOT_60_A); // Update ("dynamic") buffer break; case 33: // Updates only if current slot is equal to 33 TxBufferDynamicSend(SLOT_60_B); // Update ("dynamic") buffer break; default: break; } void PeriphInit(void) { /PT1AD1 = 0x00; DDR1AD1 = 0xC0; RDR1AD1 = 0xC0; / ATD1CTL3 = 0x38; ATD1CTL4 = 0x80; ATD1CTL0 = 0x05; ATD1CTL2 = 0x80; ATD1CTL5 = 0x32; PWME = 0xC0; PWMPOL = 0xFF; PWMCLK = 0xC0; PWMPRCLK = 0x70; PWMCAE = 0x00; PWMCTL = 0x00; PWMSCLB = 0x03; } / Function name : CCIntegration Description : This function configures FlexRay MFR4300 CC. Author : R62779 Parameters : None Returns : None / void CCIntegration(void) { IRQCR = 0x00; // Disabling IRQ interrupt pin // FlexRay CC should be in CONFIG state // Software modification of the Strobe pin - for enabling the Physical Driver on the Generic FRDC board (version C) ioctl(fr0, FR_WRITE_STBSCR_REG, 0x5012); // ARM => DBG2 ioctl(fr0, FR_WRITE_STBSCR_REG, 0x2913); // static segment indicator => DBG3 ioctl(fr0, FR_WRITE_STBSCR_REG, 0x2a13); // dynamic segment indicator => DBG3 ioctl(fr0, FR_WRITE_STBSCR_REG, 0x2b13); // symbol window segment indicator => DBG3 ioctl(fr0, FR_WRITE_STBSCR_REG, 0x2c13); // NIT segment indicator => DBG3 ioctl(fr0, FR_WRITE_STBSCR_REG, 0x000c); // Enable DBG2/3 FrStoreProtocolData(FR0, &Fr_Cfg0_CC0); // Store Protocol Configuration data into FlexRay register // Configure message buffers FrBufferInit(FR0, &Fr_Cfg0_CC0); // Configure FlexRay timers 168

170 FrTimerInit(FR0, &Fr_Cfg0_CC0); // POC state to CONFIG COMPLETE / ioctl(fr0, FR_WRITE_CRSR_REG, 0x000F); // Clear clock and reset status reg. wakeuprequired = TRUE; // Wakeup is required // Configure the GIGER reg. - Global interrupt enable reg. ioctl(fr0, FR_GLOBAL_INT_ENABLE, FR_MODULE_LINE); // MIE bit ioctl(fr0, FR_GLOBAL_INT_ENABLE, FR_PROTOCOL_LINE); // Enable timer 1 interrupt in GIFER reg.(prie bit) ioctl(fr0, FR_PROTOCOL_INT_1_ENABLE, FR_PROTOCOL_STATE_CHANGED); // Enable Protocol State changed interrupt IRQCR = 0x40; // Enabling IRQ interrupt pin } while(ioctl(fr0, FR_TEST_CMD_WRITE_BUSY, NULL)); // Wait till Protocol Command Write is not busy ioctl(fr0, FR_WRITE_POCR_REG, FR_CONFIG_COMPLETE); // Transition to READY POC state / Function name : ProtocolStateChanged Description : This function is called by interrupt handler when FlexRay Protocol State Changed Interrupt has been set (or for the first initialization). According to current POC state, either FlexRay MFR4300 is configured or switched to other POC state. Author : R62779 Parameters : None Returns : None / void ProtocolStateChanged(void) { volatile uint16 pocstatuschanged = 0; // Current POC status pocstatuschanged = ioctl(fr0, FR_GET_PROTOCOL_0_STATUS, FR_PROTOCOL_STATE); // Current POC status switch(pocstatuschanged) { case FR_POCSTATE_DEFAULT_CONFIG: //SCI0_putstringnl("default_config"); IRQCR = 0x00; while(ioctl(fr0, FR_TEST_CMD_WRITE_BUSY, NULL)); ioctl(fr0, FR_WRITE_POCR_REG, FR_CONFIG); while(ioctl(fr0, FR_TEST_CMD_WRITE_BUSY, NULL)); CCIntegration(); break; case FR_POCSTATE_CONFIG: //SCI0_putstringnl("config"); // Initialize FlexRay CC - it is done in CCIntegration function break; case FR_POCSTATE_WAKEUP: //SCI0_putstringnl("wakeup"); // Wait for READY state break; case FR_POCSTATE_READY: //SCI0_putstringnl("ready"); if(wakeuprequired == TRUE) // Default Config -> communication has to be restarted // Disabling IRQ interrupt pin // Wait till Protocol Command Write is not busy // Transition to CONFIG // Wait till Protocol Command Write is not busy // Integrate FlexRay CC into FlexRay bus // Wakeup is necessary? First time after initialization of the CC { // Yes while(ioctl(fr0, FR_TEST_CMD_WRITE_BUSY, NULL)); // Wait till Protocol Command Write is not busy ioctl(fr0, FR_WRITE_POCR_REG, FR_WAKEUP); // Initiate the wakeup procedure wakeuprequired = FALSE; // Clear flag - wakeup is not necessary } else // No, wakeup has been already sent { while(ioctl(fr0, FR_TEST_CMD_WRITE_BUSY, NULL)); // Wait till Protocol Command Write is not busy ioctl(fr0, FR_WRITE_POCR_REG, FR_ALLOW_COLDSTART); // Activate capability of node to cold start cluster while(ioctl(fr0, FR_TEST_CMD_WRITE_BUSY, NULL)); // Wait till Protocol Command Write is not busy ioctl(fr0, FR_WRITE_POCR_REG, FR_RUN); // Transition to the STARTUP state } break; case FR_POCSTATE_NORMAL_PASSIVE: // Passive -> CC has to be restarted //SCI0_putstringnl("normal passive"); ioctl(fr0, FR_WRITE_POCR_REG, FR_HALT); // Transition to HALT state break; case FR_POCSTATE_NORMAL_ACTIVE: //SCI0_putstringnl("normal active"); 169

171 // Configure the GIGER reg. - Global interrupt enable reg. ioctl(fr0, FR_GLOBAL_INT_ENABLE, FR_RX_MSG_BUFFER_LINE); ioctl(fr0, FR_GLOBAL_INT_ENABLE, FR_TX_MSG_BUFFER_LINE); // RBIE bit // TBIE bit FrTxBufferUpdate(FR0, &buffer_cc0_transmitbuffer0[0], SLOT_18); FrTxBufferUpdate(FR0, &buffer_cc0_transmitbuffer1[0], SLOT_42_B); // The first update of TX MB // The first update of TX MB // Timer 1 ioctl(fr0, FR_PROTOCOL_INT_0_ENABLE, FR_TIMER_1_EXPIRED); ioctl(fr0, FR_TIMER_TRIGGER, FR_TIMER_1); // Enable timer 1 interrupt in PIER0 reg. // Enable timer 1 (trigger) } //ioctl(fr0, FR_PROTOCOL_INT_0_ENABLE, FR_CYCLE_START); // Enable Cycle start interrupt #ifdef LEDS_USED LED_GREEN6_SET; #endif LEDS_USED break; case FR_POCSTATE_HALT: // Halt -> CC has to be restarted //SCI0_putstringnl("halt"); // FlexRay CC should be restarted break; case FR_POCSTATE_STARTUP: //SCI0_putstringnl("startup"); // Wait for NORMAL ACTIVE state #ifdef LEDS_USED LED_GREEN6_CLR; #endif LEDS_USED break; default: //SCI0_putstringnl("n-a"); break; } / Function name : main Description : Main function of the application In this function the PLL and other S12X microcontroller peripherals are initialized. Author : R62779 Parameters : None Returns : None / void main(void) { DisableInterrupts; // Disable interrupts on S12X / Enable the PLL / StartupPLL(); / Initialize S12X MCU / InitMCU(); PeriphInit(); // Configure CHA + CHB ioctl(fr0, FR_WRITE_MCR_REG, 0x1800); // Set MEN ioctl(fr0, FR_WRITE_MCR_REG, 0x9800); IRQCR = 0x00; EnableInterrupts; ProtocolStateChanged(); // Disabling IRQ interrupt pin // Enable interrupts on S12X // Call POC handler first time for(;;) { // FreeMASTER routine #ifdef FREEMASTER_USED // FreeMASTER polling FMSTR_Poll(); #endif FREEMASTER_USED if (buffer_cc0_receivebuffer13[1]<0x80){ 170

172 PWMPER6 = 0xFF; PWMDTY6 = 0x80; PWMPER7 = 0xFF; PWMDTY7 = buffer_cc0_receivebuffer13[1]; } else if (buffer_cc0_receivebuffer13[1]>0x80) { PWMPER6 = 0xFF; PWMDTY6 = 0xFF-buffer_CC0_ReceiveBuffer13[1]; PWMPER7 = 0xFF; PWMDTY7 = 0x80; } else { PWMPER6 = 0xFF; PWMDTY6 = 0x80; PWMPER7 = 0xFF; PWMDTY7 = 0x80; } } } / End of main / / Function name : StartupPLL Description : This function sets the PLL Author : R60817 Parameters : None Returns : None / void StartupPLL(void) { / CRG module configuration / CLKSEL_PLLSEL=0; / System Clock = OSCCLK / PLLCTL = 0xE1; / CME, PLLON, AUTO, SCME / / OSCCLK = 4MHz, PLLCLK = 50MHz, BUSCLK = 25MHz / REFDV = 3; / REFDV = 3 / SYNR = 24; / SYNR = 24 / while(!crgflg_lock); / Wait for PLL VCO is in desired range / CLKSEL_PLLSEL = 1; / System Clock = PLLCLK / } / Function name : InitMCU Description : This function initialize S12X controller Author : R60817 Parameters : None Returns : None / void InitMCU(void) { / EBI module configuration / //EBICTL0 = 0x2A; / DATA[15:8], ADDR[9:1], UDS / EBICTL0 = 0x2D; //EBICTL1 = 0x07; / EXSTR[2:0]=7, 8 stretch cycles / EBICTL1 = 0x02; / EXSTR[2:0]=2, 3 stretch cycles / / MMC module configuration / MODE = 0xA0; / Normal Expanded Mode / MMCCTL1 = 0x01; / ROMON / MMCCTL0 = 0x04; / CS[3:0]=4, CS2 enabled / / COP module configuration / COPCTL = 0x00; / COP disable / #ifdef LEDS_USED LED_RED1_INIT; LED_RED2_INIT; // Initialize RED1 LED // Initialize RED2 LED 171

173 LED_RED3_INIT; LED_RED4_INIT; LED_RED5_INIT; LED_RED6_INIT; LED_GREEN1_INIT; LED_GREEN2_INIT; LED_GREEN3_INIT; LED_GREEN4_INIT; LED_GREEN5_INIT; LED_GREEN6_INIT; #endif LEDS_USED // Initialize RED3 LED // Initialize RED4 LED // Initialize RED5 LED // Initialize RED6 LED // Initialize GREEN1 LED // Initialize GREEN2 LED // Initialize GREEN3 LED // Initialize GREEN4 LED // Initialize GREEN5 LED // Initialize GREEN6 LED #ifdef SCI0_USED // SCI0 enable //SCI0BDL = 0x68; // 16 MHz / (16SCIBR)Baud Rate = 9615 //SCI0BDL = 0x09; // 16 MHz / (16SCIBR)Baud Rate = SCI0BDH = 0x00; // IR disabled, transmitter narrow pulse 3/16 SCI0BDL = 0xA2; // 25 MHz / (16SCIBR)Baud Rate = 9585 //SCI0BDL = 0x0E; // 25 MHz / (16SCIBR)Baud Rate = #endif SCI0_USED #ifdef FREEMASTER_USED // FreeMASTER initialization FMSTR_Init(); #endif FREEMASTER_USED } / Function name : CC_Interrupt_XIRQ Description : Interrupt function from MFR4300. The XIRQ is not used in this application. Author : R60817 Parameters : None Returns : None / #pragma CODE_SEG NON_BANKED interrupt 5 void CCInterruptXIRQ(void) { } / Function name : CCInterruptIRQ Description : Interrupt function from FlexRay MFR4300 CC. For correct function it is necessary to enable: MIE bit in the GIFER reg., RBIE and TBIE bits in the GIFER reg., and MBIE bit in the appropriate MB Author : R62779 Parameters : None Returns : None / #pragma CODE_SEG NON_BANKED interrupt 6 void CCInterruptIRQ(void) { uint16 event = 0; uint8 bufidx = 0; uint16 temppifr0 = 0; // Current value of PIFR0 reg. uint16 temppifr1 = 0; // Current value of PIFR1 reg. event = ioctl(fr0, FR_READ_GIFER_REG, NULL); // Read GIFER register if((event & FR_RX_MSG_BUFFER)!= 0) // RX buf int vector { bufidx = (uint8)(ioctl(fr0, FR_READ_MBIVEC_REG, NULL) & 0x007F); RxBufferReceive(bufIdx); // Call service routine } // Read the MBIVEC reg., RX buf int vector if((event & FR_TX_MSG_BUFFER)!= 0) // TX buf int vector { bufidx = (uint8)((ioctl(fr0, FR_READ_MBIVEC_REG, NULL) & 0x7F00) >> 8); // Read the MBIVEC reg., TX buf int vector TxBufferEmpty(bufIdx); // Call service routine } 172

174 if((event & FR_FIFO_NOT_EMPTY_A)!= 0) // FIFO A Not Empty buf int vector { bufidx = (uint8)(ioctl(fr0, FR_READ_RFARIR_REG, NULL) & 0x00FF); // Read the AFARIR reg., FIFO A Not Empty int vector FifoANotEmpty(bufIdx); // Call service routine ioctl(fr0, FR_CLEAR_GLOBAL_INT_FLAG, FR_FIFO_NOT_EMPTY_A); // Clear FNEAIF flag in GIFER reg. } if((event & FR_FIFO_NOT_EMPTY_B)!= 0) // FIFO B Not Empty buf int vector { bufidx = (uint8)(ioctl(fr0, FR_READ_RFBRIR_REG, NULL) & 0x00FF); // Read the AFARIR reg., FIFO A Not Empty int vector FifoBNotEmpty(bufIdx); // Call service routine ioctl(fr0, FR_CLEAR_GLOBAL_INT_FLAG, FR_FIFO_NOT_EMPTY_B); // Clear FNEBIF flag in GIFER reg. } if((event & FR_PROTOCOL)!= 0) { } } temppifr0 = ioctl(fr0, FR_READ_PIFR0_REG, NULL); // Store current set flags - PIF0 temppifr1 = ioctl(fr0, FR_READ_PIFR1_REG, NULL); // Store current set flags - PIF1 if((temppifr0 & FR_TIMER_1_EXPIRED)!= 0) // Timer 1 expired { Timer1Expired(); // Call service routine ioctl(fr0, FR_CLEAR_PROTOCOL_INT_0_FLAG, FR_TIMER_1_EXPIRED); // Clear flag in the PIFR0 reg. } if((temppifr0 & FR_TIMER_2_EXPIRED)!= 0) // Timer 1 expired { // Timer 2 is not configured in this application! //Timer2Expired(); // Call service routine ioctl(fr0, FR_CLEAR_PROTOCOL_INT_0_FLAG, FR_TIMER_2_EXPIRED); // Clear flag in the PIFR0 reg. } if((temppifr0 & FR_CYCLE_START)!= 0) // Cycle Start int. { // Cycle start int. is not configured - you can enable it in the ProtocolStateChanged() function //Timer1Expired(); // Call service routine ioctl(fr0, FR_CLEAR_PROTOCOL_INT_0_FLAG, FR_CYCLE_START); // Clear flag in the PIFR0 reg. } if((temppifr1 & FR_PROTOCOL_STATE_CHANGED)!= 0) // Protocol State Changed Interrupt { ProtocolStateChanged(); // Call service routine ioctl(fr0, FR_CLEAR_PROTOCOL_INT_1_FLAG, FR_PROTOCOL_STATE_CHANGED); // Clear flag in the PIFR1 reg. } / Function name : FreeMASTERInterruptSCI0 Description : SCI0 interrupt function, used by FreeMASTER tool. Author : R62779 Parameters : None Returns : None / #pragma CODE_SEG NON_BANKED interrupt 20 void FreeMASTERInterruptSCI0(void) { #ifdef FREEMASTER_USED FMSTR_Isr(); // Calls FreeMASTER service routine #endif FREEMASTER_USED } #pragma CODE_SEG DEFAULT Fr_Cfg.h (node 2) Freescale Semiconductor Inc. (c) Copyright Freescale Semiconductor, Inc. (c) Copyright Motorola, Inc. ALL RIGHTS RESERVED. Fr_Cfg.h 173

175 @author FlexRay MFR4300 Low-Level Driver. This file contains Communication Controller configuration data. Note that configuration data are different for each node in the cluster. Structures and types are defined in the Fr_types.h file. / #ifndef _FR_CFG_H #define _FR_CFG_H #include "Compiler.h" #include "Platform_Types.h" #include "Fr_types.h" / Base address definition of controller 0 / #define FR_CC0_BASE_ADDRESS 0x // Memory configuration #define NUMBER_OF_MB_IN_SEG1 100 / Number of Message Buffers used in segment 1 / #define NUMBER_OF_MB_IN_SEG2 10 / Number of Message Buffers used in segment 2 / #define NUMBER_OF_MB_FIFO_A 10 / Number of receive FIFO A Message Buffers (Do not use zero value) / #define NUMBER_OF_MB_FIFO_B 1 / Number of receive FIFO B Message Buffers (Do not use zero value) / #define SIZE_OF_MB_IN_SEG1 2 / Size of Message Buffers payload used in segment 1 [Words] / #define SIZE_OF_MB_IN_SEG2 4 / Size of Message Buffers payload used in segment 2 [Words] / #define SIZE_OF_MB_IN_FIFO_A 2 / Size of Message Buffers payload used in Receive FIFO A [Words] / #define SIZE_OF_MB_IN_FIFO_B 2 / Size of Message Buffers payload used in Receive FIFO B [Words] / // Transmit buffer FAR_ROM(static Fr_CCTransmitBufferConfigType) Cfg0_CC0_TransmitBuffer0Cfg = { 18, 0x0776, SIZE_OF_MB_IN_SEG1, FRD_STREAMING_COMMIT_MODE, FRD_SINGLE_TRANSMIT_BUFFER, TRUE, FRD_STATE_TRANSMISSION_TYPE, TRUE, TRUE, FALSE, 0, 0, FALSE }; FAR_ROM(static Fr_CCBufferInfoType) Cfg0_CC0_TransmitBuffer0Info = { 0,FRD_TRANSMIT_BUFFER, &Cfg0_CC0_TransmitBuffer0Cfg }; // Transmit buffer FAR_ROM(static Fr_CCTransmitBufferConfigType) Cfg0_CC0_TransmitBuffer1Cfg = { 42, 0x0019, SIZE_OF_MB_IN_SEG1, FRD_STREAMING_COMMIT_MODE, FRD_SINGLE_TRANSMIT_BUFFER, TRUE, FRD_STATE_TRANSMISSION_TYPE, FALSE, TRUE, FALSE, 0, 0, FALSE }; FAR_ROM(static Fr_CCBufferInfoType) Cfg0_CC0_TransmitBuffer1Info = { 1,FRD_TRANSMIT_BUFFER, &Cfg0_CC0_TransmitBuffer1Cfg }; // Transmit buffer FAR_ROM(static Fr_CCTransmitBufferConfigType) Cfg0_CC0_TransmitBuffer100Cfg = { 60, 0x0563, SIZE_OF_MB_IN_SEG2, FRD_STREAMING_COMMIT_MODE, FRD_SINGLE_TRANSMIT_BUFFER, FALSE, FRD_EVENT_TRANSMISSION_TYPE, TRUE, FALSE, FALSE, 0, 0, FALSE }; FAR_ROM(static Fr_CCBufferInfoType) Cfg0_CC0_TransmitBuffer100Info = { 100,FRD_TRANSMIT_BUFFER, &Cfg0_CC0_TransmitBuffer100Cfg }; // Transmit buffer FAR_ROM(static Fr_CCTransmitBufferConfigType) Cfg0_CC0_TransmitBuffer101Cfg = { 60, 0x0563, SIZE_OF_MB_IN_SEG2, FRD_STREAMING_COMMIT_MODE, FRD_SINGLE_TRANSMIT_BUFFER, FALSE, FRD_EVENT_TRANSMISSION_TYPE, FALSE, TRUE, FALSE, 0, 0, FALSE }; FAR_ROM(static Fr_CCBufferInfoType) Cfg0_CC0_TransmitBuffer101Info = { 101,FRD_TRANSMIT_BUFFER, &Cfg0_CC0_TransmitBuffer101Cfg }; // Receive buffer 174

176 FAR_ROM(static Fr_CCReceiveBufferConfigType) Cfg0_CC0_ReceiveBuffer3Cfg = { 2, TRUE, TRUE, FALSE, FALSE, 0, 0 }; FAR_ROM(static Fr_CCBufferInfoType) Cfg0_CC0_ReceiveBuffer3Info = { 3,FRD_RECEIVE_BUFFER, &Cfg0_CC0_ReceiveBuffer3Cfg }; // Receive buffer FAR_ROM(static Fr_CCReceiveBufferConfigType) Cfg0_CC0_ReceiveBuffer13Cfg = { 2, TRUE, FALSE, TRUE, FALSE, 0, 0 }; FAR_ROM(static Fr_CCBufferInfoType) Cfg0_CC0_ReceiveBuffer13Info = { 13,FRD_RECEIVE_BUFFER, &Cfg0_CC0_ReceiveBuffer13Cfg }; // Receive buffer FAR_ROM(static Fr_CCReceiveBufferConfigType) Cfg0_CC0_ReceiveBuffer103Cfg = { 50, TRUE, TRUE, FALSE, FALSE, 0, 0 }; FAR_ROM(static Fr_CCBufferInfoType) Cfg0_CC0_ReceiveBuffer103Info = { 103,FRD_RECEIVE_BUFFER, &Cfg0_CC0_ReceiveBuffer103Cfg }; // Receive buffer FAR_ROM(static Fr_CCReceiveBufferConfigType) Cfg0_CC0_ReceiveBuffer104Cfg = { 50, TRUE, FALSE, TRUE, FALSE, 0, 0 }; FAR_ROM(static Fr_CCBufferInfoType) Cfg0_CC0_ReceiveBuffer104Info = { 104,FRD_RECEIVE_BUFFER, &Cfg0_CC0_ReceiveBuffer104Cfg }; // Receive Shadow buffer FAR_ROM(static Fr_CCReceiveShadowBufferConfigType) Cfg0_CC0_ReceiveShadowBuffer18Cfg = { TRUE, TRUE }; FAR_ROM(static Fr_CCBufferInfoType) Cfg0_CC0_ReceiveShadowBuffer18Info = { 18,FRD_RECEIVE_SHADOW_BUFFER, &Cfg0_CC0_ReceiveShadowBuffer18Cfg }; // Receive Shadow buffer FAR_ROM(static Fr_CCReceiveShadowBufferConfigType) Cfg0_CC0_ReceiveShadowBuffer19Cfg = { TRUE, FALSE }; FAR_ROM(static Fr_CCBufferInfoType) Cfg0_CC0_ReceiveShadowBuffer19Info = { 19,FRD_RECEIVE_SHADOW_BUFFER, &Cfg0_CC0_ReceiveShadowBuffer19Cfg }; // Receive Shadow buffer FAR_ROM(static Fr_CCReceiveShadowBufferConfigType) Cfg0_CC0_ReceiveShadowBuffer105Cfg = { FALSE, TRUE }; FAR_ROM(static Fr_CCBufferInfoType) Cfg0_CC0_ReceiveShadowBuffer105Info = { 105,FRD_RECEIVE_SHADOW_BUFFER, &Cfg0_CC0_ReceiveShadowBuffer105Cfg }; // Receive Shadow buffer FAR_ROM(static Fr_CCReceiveShadowBufferConfigType) Cfg0_CC0_ReceiveShadowBuffer106Cfg = { FALSE, FALSE }; FAR_ROM(static Fr_CCBufferInfoType) Cfg0_CC0_ReceiveShadowBuffer106Info = { 106,FRD_RECEIVE_SHADOW_BUFFER, &Cfg0_CC0_ReceiveShadowBuffer106Cfg }; 175

177 // Fifo buffer // Range from 1 up to 48 FAR_ROM(static Fr_CCReceiveFifoRangeFiltersType) Cfg0_CC0_ReceiveFifoARangeFilterCfg = { TRUE, FALSE, 1, 48, // Range Filter 0 FALSE, TRUE, 5, 7, // Range Filter 1 FALSE, TRUE, 62, 64, // Range Filter 2 FALSE, FALSE, 61, 65 // Range Filter 3 }; FAR_ROM(static Fr_CCReceiveFifoConfigType) Cfg0_CC0_ReceiveFifoACfg = { FR_CHANNEL_A, NUMBER_OF_MB_FIFO_A, SIZE_OF_MB_IN_FIFO_A, TRUE, 0x0000, 0x0000, 0x0000, 0x07FF, &Cfg0_CC0_ReceiveFifoARangeFilterCfg }; FAR_ROM(static Fr_CCBufferInfoType) Cfg0_CC0_ReceiveFifoAInfo = { 110,FRD_RECEIVE_FIFO, &Cfg0_CC0_ReceiveFifoACfg }; FAR_PROM(static Fr_CCBufferInfoType) const Cfg0_CC0_BufferConfigPtr[] = { // Channel A and/or B &Cfg0_CC0_TransmitBuffer0Info, &Cfg0_CC0_TransmitBuffer1Info, &Cfg0_CC0_TransmitBuffer100Info, &Cfg0_CC0_ReceiveBuffer3Info, &Cfg0_CC0_ReceiveBuffer103Info, // Only channel B &Cfg0_CC0_TransmitBuffer101Info, &Cfg0_CC0_ReceiveBuffer13Info, &Cfg0_CC0_ReceiveBuffer104Info, // Others &Cfg0_CC0_ReceiveFifoAInfo, &Cfg0_CC0_ReceiveShadowBuffer18Info, &Cfg0_CC0_ReceiveShadowBuffer19Info, &Cfg0_CC0_ReceiveShadowBuffer105Info, &Cfg0_CC0_ReceiveShadowBuffer106Info, NULL }; / Timers / FAR_ROM(static Fr_AbsoluteAlarmInfoType) Cfg0_CC0_AbsoluteTimer1Cfg = { 150, 0x00, 0x00, FR_REPETITIVE }; FAR_ROM(static Fr_CCTimerInfoType) Cfg0_CC0_AbsoluteTimer1Info = { 1, FRD_ABSOLUTE_TIMER, &Cfg0_CC0_AbsoluteTimer1Cfg }; // Timer 2 is not configured in the application FAR_ROM(static Fr_RelativeAlarmInfoType) Cfg0_CC0_RelativeTimer2Cfg = { 300, FR_REPETITIVE }; FAR_ROM(static Fr_CCTimerInfoType) Cfg0_CC0_RelativeTimer2Info = { 2, FRD_RELATIVE_TIMER, &Cfg0_CC0_RelativeTimer2Cfg }; FAR_PROM(static Fr_CCTimerInfoType) const Cfg0_CC0_TimerInfoPtr[] = { &Cfg0_CC0_AbsoluteTimer1Info, //&Cfg0_CC0_RelativeTimer2Info, // Timer 2 is not configured NULL }; / / FAR_ROM(static Fr_CCConfigInfoType) Fr_Cfg0_CC0 = { //Fr_CCConfigInfoType far Fr_Cfg0_CC0 = { / Value Description Unit PCR / 4, / Coldstart attemps - 3 / 9, / Action point offset -1 MT 0 / 76, / CAS Rx low max gbbit 4 / 0, / Dynamic slot idle phase minislot 28 / 9, / Minislot action point offset -1 MT 3 / 9, / Minislot-MinislotActionPointOffset-1 MT 3 / 40, / Static slot length MT 0 / 29, / StaticSlot-ActionPointOffset-1 MT 13 / 176

178 TRUE, / Symbol window!=0-9 / 89, / Symbol window-actionpointoffset-1 MT 6 / 6, / TSS transmitter gbbit 5 / 59, / WakeUp symbol Rx idle gbbit 5 / 54, / WakeUp symbol Rx low gbbit 3 / 301, / WakeUp symbol Rx window gbbit 4 / 180, / WakeUp symbol Tx idle gbbit 8 / 60, / WakeUp symbol Tx low gbbit 5 / , / (ListenNoiseListenTimeout)-1 ut 16/17 / 11, / Macro initial offset a MT 6 / 11, / Macro initial offset b MT 16 / 3000, / Macro per cycle MT 10 / 1080, / Macro per cycle - Static slot MT 1 / 400, / MacroPerCycle-OffsetCorrectionStart MT 28 / 15, / MaxWithoutClockCorrectionFatal cyclepair 8 / 15, / MaxWithoutClockCorrectionPassive cyclepair 8 / TRUE, / Number of minislot!= 0-9 / 23, / Number of minislots - 1 minislot 29 / 48, / Number of static slots static slot 2 / 2600, / Offset correction start MT 11 / 2, / Payload length static word 19 / 4, / Payload length dynamic max word 24 / 9, / Max(ActionPO,MinislotActionPO)-1 MT 13 / FALSE, / Allow halt due to clock - 26 / 0, / Allow passive to active cyclepair 12 / 4, / Cluster drift damping ut 24 / 1875, / AcceptedStartupRange-DelayCompChA ut 22 / 1875, / AcceptedStartupRange-DelayCompChB ut 26 / , / Listen Timeout - 1 ut 14/15 / 18, / Key slot ID - 18 / TRUE, / Key slot used for startup - 11 / TRUE, / Key slot used for sync - 11 / 1, / NumberOfMinislots - LatestTx minislot 21 / 4, / Micro Initial Offset A ut 20 / 4, / Micro Initial Offset B ut 20 / , / Micro per cycle ut 22/23 / , / Micro per cycle - Max Drift ut 24/25 / , / Micro per cycle + Max Drift ut 26/27 / 20, / Micro Per Macro Nom / 2 ut 7 / 1122, / Offset correction out ut 9 / 722, / Rate correction out ut 14 / FALSE, / Single slot enabled - 10 / 0, / Wakeup channel cha/chb 10 / 4, / Wakeup pattern - 18 / 38, / DecodingCorrection+DelayCompChA+2 ut 19 / 38, / DecodingCorrection+DelayCompChB+2 ut 7 / FALSE, / Rx data glitch filter bypass enable - 1 / 0x0776, / Header CRC for key slot crc 12 / 0, / Extern offset correction ut 29 / 0, / Extern rate correction ut 21 / 4, / Sync node max - 30 / &Cfg0_CC0_BufferConfigPtr[0], //NULL &Cfg0_CC0_TimerInfoPtr[0] //NULL }; / ===================================================== / #endif / End of CFG file / 177

179 178

180 Β Παράρτημα Βήτα Παρακάτω βρίσκεται μία περίληψη των ορισμών όλων των τύπων που σχετίζονται με το πρόγραμμα οδήγησης και την διαμόρφωση του Communication Controller. Αυτοί οι ορισμοί μπορούν να βρεθούν και στο αρχείο Fr_Types.h. Επίσης, βρίσκεται και ένας περιληπτικός πίνακας όλων των macro-εντολών τύπου ioctl. 179

Πρότυπο Αναφοράς Open Systems Interconnection (OSI) Επικοινωνίες Δεδομένων Μάθημα 5 ο

Πρότυπο Αναφοράς Open Systems Interconnection (OSI) Επικοινωνίες Δεδομένων Μάθημα 5 ο Πρότυπο Αναφοράς Open Systems Interconnection (OSI) Επικοινωνίες Δεδομένων Μάθημα 5 ο Πρωτόκολλα και Αρχιτεκτονική Δικτύου Για να ανταλλάξουν δεδομένα δύο σταθμοί, εκτός από την ύπαρξη διαδρομής μεταξύ

Διαβάστε περισσότερα

Ψηφιακές Επικοινωνίες

Ψηφιακές Επικοινωνίες Τεχνική Εκπαίδευση Ψηφιακές Επικοινωνίες Παναγιώτης Γεώργιζας BEng Cybernetics with Automotive Electronics MSc Embedded Systems Engineering Θέματα που θα αναλυθούν Στόχοι του σεμιναρίου Λίγη Θεωρία για

Διαβάστε περισσότερα

Δίκτυα Απευθείας Ζεύξης

Δίκτυα Απευθείας Ζεύξης Δίκτυα Απευθείας Ζεύξης Επικοινωνία μεταξύ δύο υπολογιστώνοιοποίοιείναι απευθείας συνδεδεμένοι. Περίληψη Ζεύξεις σημείου προς σημείο (point-to-point links) Πλαισίωση (framing) Ανίχνευση και διόρθωση σφαλμάτων

Διαβάστε περισσότερα

Πακέτα, Πλαίσια και Ανίχνευση Σφαλμάτων

Πακέτα, Πλαίσια και Ανίχνευση Σφαλμάτων ΔΙΚΤΥΑ Π. Φουληράς Πακέτα, Πλαίσια και Ανίχνευση Σφαλμάτων Οποιοδήποτε δικτυακό σύστημα παραχωρεί σε μία εφαρμογή αποκλειστική χρήση των μεριζομένων πόρων θέτει σε εμπλοκή τους άλλους υπολογιστές για απαράδεκτα

Διαβάστε περισσότερα

1.8 Το μοντέλο OSI 1 / 33

1.8 Το μοντέλο OSI 1 / 33 1.8 Το μοντέλο OSI 1 / 33 Η ανάγκη της τυποποίησης 2 / 33 Το μοντέλο στρωματοποιημένης αρχιτεκτονικής δικτύου, του διεθνή οργανισμού τυποποίησης (ISO) 3 / 33 Μοντέλο αναφοράς διασύνδεσης ανοικτών συστημάτων

Διαβάστε περισσότερα

Μάθημα 5: To Μοντέλο Αναφοράς O.S.I.

Μάθημα 5: To Μοντέλο Αναφοράς O.S.I. Μάθημα 5: To Μοντέλο Αναφοράς O.S.I. 5.1 Γενικά Τα πρώτα δίκτυα χαρακτηρίζονταν από την «κλειστή» αρχιτεκτονική τους με την έννοια ότι αυτή ήταν γνωστή μόνο στην εταιρία που την είχε σχεδιάσει. Με τον

Διαβάστε περισσότερα

CAN Bus. Ασβεστοπούλου Θωμαΐς Δόντσιος Δημήτριος Άνοιξη 2014

CAN Bus. Ασβεστοπούλου Θωμαΐς Δόντσιος Δημήτριος Άνοιξη 2014 Ασβεστοπούλου Θωμαΐς Δόντσιος Δημήτριος Άνοιξη 2014 Δίαυλοι Επικοινωνίας Είναι κανάλια επικοινωνίας πάνω στα οποία ρέει η πληροφορία μεταξύ δύο ή περισσοτέρων συσκευών Γιατί δίαυλοι και όχι καλώδια; Μεταφορά

Διαβάστε περισσότερα

Τεχνολογία Δικτύων Επικοινωνιών (Ενότητα Πρωτόκολλα και Αρχιτεκτονική Δικτύου)

Τεχνολογία Δικτύων Επικοινωνιών (Ενότητα Πρωτόκολλα και Αρχιτεκτονική Δικτύου) Τεχνολογία Δικτύων Επικοινωνιών (Ενότητα 1.7 - Πρωτόκολλα και Αρχιτεκτονική Δικτύου) Πρωτόκολλο είναι ένα σύνολο κανόνων που πρέπει να ακολουθήσουν όλοι οι σταθμοί εργασίας σε ένα δίκτυο ώστε να μπορούν

Διαβάστε περισσότερα

Κινητές Επικοινωνίες & Τηλεπικοινωνιακά Δίκτυα

Κινητές Επικοινωνίες & Τηλεπικοινωνιακά Δίκτυα ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Κινητές Επικοινωνίες & Τηλεπικοινωνιακά Δίκτυα Ενότητα : Στρώμα Ζεύξης στα Δίκτυα ΗΥ- Ethernet MAC Στρώμα Σαββαΐδης Στυλιανός

Διαβάστε περισσότερα

Νέες Επικοινωνιακές Τεχνολογίες

Νέες Επικοινωνιακές Τεχνολογίες Νέες Επικοινωνιακές Τεχνολογίες Λύσεις Θεμάτων http://nop33.wordpress.com Τι ορίζουμε ως Τοπικό Δίκτυο Υπολογιστών; Ποια είναι τα βασικά χαρακτηριστικά των Τοπικών Δικτύων; Ποιες οι βασικές τοπολογίες

Διαβάστε περισσότερα

Κατανεμημένα συστήματα και Επικοινωνία Πραγματικού Χρόνου

Κατανεμημένα συστήματα και Επικοινωνία Πραγματικού Χρόνου Λειτουργικά Συστήματα Πραγματικού Χρόνου 2006-07 Κατανεμημένα συστήματα και Επικοινωνία Πραγματικού Χρόνου Μ.Στεφανιδάκης Κατανεμημένα συστήματα ελέγχου Α Β διασυνδετικό δίκτυο Γ Δ Ε π.χ. οι επιμέρους

Διαβάστε περισσότερα

Δίκτυα Απευθείας Ζεύξης. Επικοινωνία µεταξύ δύο υπολογιστών οι οποίοι είναι απευθείας συνδεδεµένοι.

Δίκτυα Απευθείας Ζεύξης. Επικοινωνία µεταξύ δύο υπολογιστών οι οποίοι είναι απευθείας συνδεδεµένοι. Δίκτυα Απευθείας Ζεύξης Επικοινωνία µεταξύ δύο υπολογιστών οι οποίοι είναι απευθείας συνδεδεµένοι. Περίληψη Ζεύξεις σηµείου προς σηµείο (point-to-point links) Πλαισίωση (framing) Ανίχνευση και διόρθωση

Διαβάστε περισσότερα

AEI Πειραιά Τ.Τ. Τμ. Μηχ/κων Αυτοματισμού ΤΕ. Δίκτυα Μετάδοσης Δεδομένων. Διάλεξη 1: Εισαγωγή στα δίκτυα υπολογιστών και βασικές αρχές

AEI Πειραιά Τ.Τ. Τμ. Μηχ/κων Αυτοματισμού ΤΕ. Δίκτυα Μετάδοσης Δεδομένων. Διάλεξη 1: Εισαγωγή στα δίκτυα υπολογιστών και βασικές αρχές AEI Πειραιά Τ.Τ. Τμ. Μηχ/κων Αυτοματισμού ΤΕ Δίκτυα Μετάδοσης Δεδομένων Διάλεξη 1: Εισαγωγή στα δίκτυα υπολογιστών και βασικές αρχές Γενικά Διδάσκουσα: Ελένη Αικατερίνη Λελίγκου Γραφείο ΖΑ202. Ε-mail:

Διαβάστε περισσότερα

Ενότητα 3. Στρώµα Ζεύξης: Αρχές Λειτουργίας & Το Υπόδειγµα του Ethernet

Ενότητα 3. Στρώµα Ζεύξης: Αρχές Λειτουργίας & Το Υπόδειγµα του Ethernet Ενότητα 3 Στρώµα Ζεύξης: Αρχές Λειτουργίας & Το Υπόδειγµα του Ethernet Εισαγωγή στις βασικές έννοιες του στρώµατος Ζεύξης (Data Link Layer) στα δίκτυα ΗΥ Γενικές Αρχές Λειτουργίας ηµιουργία Πλαισίων Έλεγχος

Διαβάστε περισσότερα

CSMA/CA στο Κατανεμημένα Ενσωματωμένα Συστήματα Πραγματικού Χρόνου

CSMA/CA στο Κατανεμημένα Ενσωματωμένα Συστήματα Πραγματικού Χρόνου CSMA/CA στο 802.11 Κατανεμημένα Ενσωματωμένα Συστήματα Πραγματικού Χρόνου Medium Access Control Συνήθως πολλοί κόμβοι μοιράζονται ένα κοινό μέσο Πρόβλημα: απαιτείται διαχείριση της πρόσβασης των κόμβων

Διαβάστε περισσότερα

Πρωτόκολλα Διαδικτύου Μέρος 2ο. Επικοινωνίες Δεδομένων Μάθημα 3 ο

Πρωτόκολλα Διαδικτύου Μέρος 2ο. Επικοινωνίες Δεδομένων Μάθημα 3 ο Πρωτόκολλα Διαδικτύου Μέρος 2ο Επικοινωνίες Δεδομένων Μάθημα 3 ο Internet Protocol (IP) Στο επίπεδο δικτύου της τεχνολογίας TCP/IP, συναντάμε το πρωτόκολλο IP. Η λειτουργία του IP βασίζεται αποκλειστικά

Διαβάστε περισσότερα

AEI Πειραιά Τ.Τ. Τμ. Μηχ/κων Αυτοματισμού ΤΕ. Δίκτυα Υπολογιστών. Διάλεξη 1: Εισαγωγή στα δίκτυα υπολογιστών και βασικές αρχές

AEI Πειραιά Τ.Τ. Τμ. Μηχ/κων Αυτοματισμού ΤΕ. Δίκτυα Υπολογιστών. Διάλεξη 1: Εισαγωγή στα δίκτυα υπολογιστών και βασικές αρχές AEI Πειραιά Τ.Τ. Τμ. Μηχ/κων Αυτοματισμού ΤΕ Δίκτυα Υπολογιστών Διάλεξη 1: Εισαγωγή στα δίκτυα υπολογιστών και βασικές αρχές Γενικά Διδάσκουσα: Ελένη Αικατερίνη Λελίγκου Γραφείο ΖΑ202. Ε-mail: e.leligkou@puas.gr

Διαβάστε περισσότερα

Συσκευές Τηλεπικοινωνιών και Δικτύωσης. Επικοινωνίες Δεδομένων Μάθημα 9 ο

Συσκευές Τηλεπικοινωνιών και Δικτύωσης. Επικοινωνίες Δεδομένων Μάθημα 9 ο Συσκευές Τηλεπικοινωνιών και Δικτύωσης Επικοινωνίες Δεδομένων Μάθημα 9 ο Εισαγωγή Ένα δίκτυο αποτελείται από ενεργά και παθητικά στοιχεία. Στα παθητικά στοιχεία εντάσσονται τα καλώδια και τα εξαρτήματα

Διαβάστε περισσότερα

Δίκτυα Υπολογιστών I Εργαστήρια

Δίκτυα Υπολογιστών I Εργαστήρια Δίκτυα Υπολογιστών I Εργαστήρια Άσκηση 6 η Δίκτυα Ethernet Πανεπιστήμιο Ιωαννίνων Τμήμα Μηχανικών Η/Υ και Πληροφορικής Διδάσκων: Παπαπέτρου Ευάγγελος 2 1 Εισαγωγή Σκοπός της παρούσας άσκησης είναι η μελέτη

Διαβάστε περισσότερα

Φροντιστήριο στο Mac Layer Καραγκούνης Δημήτρης

Φροντιστήριο στο Mac Layer Καραγκούνης Δημήτρης Φροντιστήριο στο Mac Layer Καραγκούνης Δημήτρης Πρωτόκολλα Τυχαίας Προσπέλασης (Random Access Protocols) Αρχές Πρωτοκόλλων RA Όταν υπάρχει πακέτο προς αποστολή, αποστέλλεται με μέγιστο ρυθμό μετάδοσης

Διαβάστε περισσότερα

ΤΕΙ Στερεάς Ελλάδας Τμ. Ηλ.γων Μηχ/κων ΤΕ. Δίκτυα Υπολογιστών. Διάλεξη 1: Εισαγωγή στα δίκτυα υπολογιστών και βασικές αρχές

ΤΕΙ Στερεάς Ελλάδας Τμ. Ηλ.γων Μηχ/κων ΤΕ. Δίκτυα Υπολογιστών. Διάλεξη 1: Εισαγωγή στα δίκτυα υπολογιστών και βασικές αρχές ΤΕΙ Στερεάς Ελλάδας Τμ. Ηλ.γων Μηχ/κων ΤΕ Δίκτυα Υπολογιστών Διάλεξη 1: Εισαγωγή στα δίκτυα υπολογιστών και βασικές αρχές Γενικά Τα αρχεία των διαλέξεων του μαθήματος μπορείτε να βρείτε στο: http://eclass.gunet.gr/

Διαβάστε περισσότερα

Πρωτόκολλα Επικοινωνίας Πρωτόκολλο IP

Πρωτόκολλα Επικοινωνίας Πρωτόκολλο IP Πρωτόκολλα Επικοινωνίας Πρωτόκολλο IP Πρωτόκολλα επικοινωνίας Ορισμός Σύνολα προσυμφωνημένων κανόνων που απαιτούνται για τον καθορισμό του τρόπου με τον οποίο επιτυγχάνεται η ανταλλαγή δεδομένων, και επομένως

Διαβάστε περισσότερα

ΕΠΙΠΕΔΟ ΣΥΝΔΕΣΗΣ ΜΑC

ΕΠΙΠΕΔΟ ΣΥΝΔΕΣΗΣ ΜΑC ΕΠΙΠΕΔΟ ΣΥΝΔΕΣΗΣ Το επίπεδο σύνδεσης αποτελείται από δύο υποεπίπεδα: Το υποεπίπεδο ελέγχου προσπέλασης μέσων (Medium Access Control) Το υποεπίπεδο λογικού ελέγχου σύνδεσης (Logical Link Control) To υποεπίπεδο

Διαβάστε περισσότερα

Δίκτυα Υπολογιστών I

Δίκτυα Υπολογιστών I Δίκτυα Υπολογιστών I Σχεδίαση και Αρχιτεκτονική Δικτύων Ευάγγελος Παπαπέτρου Τμ. Μηχ. Η/Υ & Πληροφορικής, Παν. Ιωαννίνων Ε.Παπαπέτρου (Τμ.Μηχ. Η/Υ & Πληροφορικής) MYY703: Δίκτυα Υπολογιστών I 1 / 19 Διάρθρωση

Διαβάστε περισσότερα

Μέθοδοι Ελέγχου Σφαλμάτων

Μέθοδοι Ελέγχου Σφαλμάτων Μέθοδοι Ελέγχου Σφαλμάτων Έλεγχος Ισοτιμίας (Parity Check) Άθροισμα Ελέγχου (Checksum) Έλεγχος κυκλικού πλεονασμού (CRC- Cyclic Redundancy Check) Μερικά μπορεί να μεταφερθούν λάθος, πχ λόγω θορύβου Θα

Διαβάστε περισσότερα

Μάθημα 6: Αρχιτεκτονική TCP/IP

Μάθημα 6: Αρχιτεκτονική TCP/IP Μάθημα 6: Αρχιτεκτονική TCP/IP 6.1 Συσχέτιση OSI και TCP/IP Η αρχιτεκτονική TCP/IP ακολουθεί ένα πρότυπο διαστρωμάτωσης παρόμοιο με το μοντέλο OSI. Η αντιστοιχία φαίνεται στο σχήμα 6.1. Η ονομασία της

Διαβάστε περισσότερα

Αρχιτεκτονική υπολογιστών

Αρχιτεκτονική υπολογιστών 1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Αρχιτεκτονική υπολογιστών Ενότητα 3 : Μια άποψη του κορυφαίου επιπέδου λειτουργίας και διασύνδεσης του υπολογιστή Καρβούνης Ευάγγελος Η έννοια

Διαβάστε περισσότερα

Μάθημα 4: Πρότυπα, Πρωτόκολλα & Υπηρεσίες

Μάθημα 4: Πρότυπα, Πρωτόκολλα & Υπηρεσίες Μάθημα 4: Πρότυπα, Πρωτόκολλα & Υπηρεσίες 4.1 Γενικά Σκοπός ενός δικτύου υπολογιστών είναι οι χρήστες να έχουν τη δυνατότητα να διαμοιράζονται πληροφορίες και συσκευές του δικτύου. Η σχεδίαση και η ανάπτυξη

Διαβάστε περισσότερα

Ερώτηση 1 η μεταγωγής κυκλώματος? : Ποια είναι τα κύρια χαρακτηριστικά της. Ερώτηση 2 η : Ποια είναι τα κύρια χαρακτηριστικά της μεταγωγής μηνύματος?

Ερώτηση 1 η μεταγωγής κυκλώματος? : Ποια είναι τα κύρια χαρακτηριστικά της. Ερώτηση 2 η : Ποια είναι τα κύρια χαρακτηριστικά της μεταγωγής μηνύματος? Μετάδοση Δεδομένων Δίκτυα Υπολογιστών 68 Ερώτηση 1 η μεταγωγής κυκλώματος? : Ποια είναι τα κύρια χαρακτηριστικά της Απάντηση : Στα δίκτυα μεταγωγής κυκλώματος (circuit switching networks), η μετάδοση των

Διαβάστε περισσότερα

ΕΠΙΚΟΙΝΩΝΙΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΕΣ INTERNET

ΕΠΙΚΟΙΝΩΝΙΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΕΣ INTERNET ΕΠΙΚΟΙΝΩΝΙΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΕΣ INTERNET Κεφάλαιο 2: Στοιχεία Μετάδοσης Κώδικες 2 Κώδικες Κωδικοποίηση Δεδομένων: Όπως έχει ήδη αναφερθεί, προκειμένου τα δεδομένα να γίνουν κατανοητά από ένα ηλεκτρονικό

Διαβάστε περισσότερα

Ι ΑΣΚΩΝ ΚΑΘΗΓΗΤΗΣ: ΚΑΘΗΓΗΤΗΣ ΕΦΑΡΜΟΓΩΝ. ΤΕΙ ΥΤΙΚΗΣ ΜΑΚΕ ΟΝΙΑΣ d.fotiadis@kastoria.teikoz.gr

Ι ΑΣΚΩΝ ΚΑΘΗΓΗΤΗΣ: ΚΑΘΗΓΗΤΗΣ ΕΦΑΡΜΟΓΩΝ. ΤΕΙ ΥΤΙΚΗΣ ΜΑΚΕ ΟΝΙΑΣ d.fotiadis@kastoria.teikoz.gr Ι ΑΣΚΩΝ ΚΑΘΗΓΗΤΗΣ: ΦΩΤΙΑ ΗΣ Α. ΗΜΗΤΡΗΣ M.Sc. ΚΑΘΗΓΗΤΗΣ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Τ.Ε. ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ (Σ.Τ.ΕΦ.) ΤΕΙ ΥΤΙΚΗΣ ΜΑΚΕ ΟΝΙΑΣ d.fotiadis@kastoria.teikoz.gr Ασύγχρονη σειριακή

Διαβάστε περισσότερα

Ενότητα 1. Εισαγωγή στις βασικές έννοιες των ικτύων ΗΥ

Ενότητα 1. Εισαγωγή στις βασικές έννοιες των ικτύων ΗΥ Ενότητα 1 Εισαγωγή στις βασικές έννοιες των ικτύων ΗΥ Εύρος Ζώνης και Ταχύτητα Μετάδοσης Η ταχύτητα µετάδοσης [εύρος ζώνης (banwidth)] των δεδοµένων αποτελεί ένα δείκτη επίδοσης των δικτύων και συνήθως

Διαβάστε περισσότερα

ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ 1 ο ΚΕΦΑΛΑΙΟ

ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ 1 ο ΚΕΦΑΛΑΙΟ ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ 1 ο ΚΕΦΑΛΑΙΟ ΕΡΩΤΗΣΕΙΣ - ΑΣΚΗΣΕΙΣ 1. Έστω ότι θέλετε να συνδέσετε 20 υπολογιστές με συνδέσεις από σημείο σε σημείο (point-to-point), ώστε να είναι δυνατή η επικοινωνία όλων

Διαβάστε περισσότερα

Πανεπιστήμιο Δυτικής Αττικής Τμ. Μηχ/κων Βιομηχανικού Σχεδιασμού και Παραγωγής. Δίκτυα Υπολογιστών. Διάλεξη 5: Επίπεδο 2 - «ζεύξης δεδομένων»

Πανεπιστήμιο Δυτικής Αττικής Τμ. Μηχ/κων Βιομηχανικού Σχεδιασμού και Παραγωγής. Δίκτυα Υπολογιστών. Διάλεξη 5: Επίπεδο 2 - «ζεύξης δεδομένων» Πανεπιστήμιο Δυτικής Αττικής Τμ. Μηχ/κων Βιομηχανικού Σχεδιασμού και Παραγωγής Δίκτυα Υπολογιστών Διάλεξη 5: Επίπεδο 2 - «ζεύξης δεδομένων» Το πρωτόκολλο High Level Data Link Control Το πιο αντιπροσωπευτικό

Διαβάστε περισσότερα

CTMU. => C = 50pF 10pF = 40 pf. C stray. d (C V ) I= I = C V. C= I t. Ι = dq dt

CTMU. => C = 50pF 10pF = 40 pf. C stray. d (C V ) I= I = C V. C= I t. Ι = dq dt CTMU Με τη μονάδα CTMU (Charge Time Measurement Unit) μπορούμε να μετρήσουμε απόλυτη χωρητικότητα, σχετική μεταβολή χωρητικότητας καθώς επίσης και χρονικό διάστημα ανάμεσα σε δύο παλμούς. Βασίζεται στην

Διαβάστε περισσότερα

Τρίτη Πρόοδος [110 μονάδες] Απαντήσεις

Τρίτη Πρόοδος [110 μονάδες] Απαντήσεις ΗY335: Δίκτυα Υπολογιστών Χειμερινό Εξάμηνο 2011-20112 Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Διδάσκουσα: Μαρία Παπαδοπούλη 15 Δεκεμβρίου 2011 Τρίτη Πρόοδος [110 μονάδες] Απαντήσεις 1. Θεωρήσετε

Διαβάστε περισσότερα

2 η Σειρά Ασκήσεων Data Link Layer

2 η Σειρά Ασκήσεων Data Link Layer HY335: Δίκτυα Υπολογιστών Χειμερινό Εξάμηνο 2017-2018 Διδάσκουσα: Μαρία Παπαδοπούλη Τμήμα Επιστήμης Υπολογιστών, Πανεπιστημίου Κρήτης 2 η Σειρά Ασκήσεων Data Link Layer Άσκηση 1 Αναφέρεται τα 4 επιθυμητά

Διαβάστε περισσότερα

ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ 5ο ΚΕΦΑΛΑΙΟ

ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ 5ο ΚΕΦΑΛΑΙΟ ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ 5ο ΚΕΦΑΛΑΙΟ ΕΡΩΤΗΣΕΙΣ - ΑΣΚΗΣΕΙΣ 14. Ποιος είναι ο ρόλος των καρτών δικτύου (Network Interface Card, NIC); Απάντηση: Οι κάρτες δικτύου χρησιμοποιούνται για να συνδέσουν

Διαβάστε περισσότερα

ΕΠΙΚΟΙΝΩΝΙΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΕΣ INTERNET

ΕΠΙΚΟΙΝΩΝΙΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΕΣ INTERNET ΕΠΙΚΟΙΝΩΝΙΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΕΣ INTERNET Κεφάλαιο 4: Τεχνικές Μετάδοσης ΜΕΤΑΓΩΓΗ Τεχνική µεταγωγής ονομάζεται ο τρόπος µε τον οποίο αποκαθίσταται η επικοινωνία ανάµεσα σε δύο κόµβους με σκοπό την

Διαβάστε περισσότερα

Εισαγωγή στην επιστήμη των υπολογιστών. Υλικό Υπολογιστών Κεφάλαιο 6ο ίκτυα υπολογιστών

Εισαγωγή στην επιστήμη των υπολογιστών. Υλικό Υπολογιστών Κεφάλαιο 6ο ίκτυα υπολογιστών Εισαγωγή στην επιστήμη των υπολογιστών Υλικό Υπολογιστών Κεφάλαιο 6ο ίκτυα υπολογιστών 1 ίκτυα μικρά και μεγάλα Ένα δίκτυο υπολογιστών (computer network) είναι ένας συνδυασμός συστημάτων (δηλαδή, υπολογιστών),

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ: ΑΝΙΧΝΕΥΣΗ ΣΦΑΛΜΑΤΩΝ ΣΕ ΤΗΛΕΠΙΚΟΙΝΩΝΙΑΚΑ ΔΙΚΤΥΑ

ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ: ΑΝΙΧΝΕΥΣΗ ΣΦΑΛΜΑΤΩΝ ΣΕ ΤΗΛΕΠΙΚΟΙΝΩΝΙΑΚΑ ΔΙΚΤΥΑ ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ: ΑΝΙΧΝΕΥΣΗ ΣΦΑΛΜΑΤΩΝ ΣΕ ΤΗΛΕΠΙΚΟΙΝΩΝΙΑΚΑ ΔΙΚΤΥΑ ΑΝΙΧΝΕΥΣΗ ΣΦΑΛΜΑΤΩΝ: Κυκλικός Έλεγχος Πλεονασμού CRC codes Cyclic Redundancy Check codes Ο μηχανισμός ανίχνευσης σφαλμάτων στις επικοινωνίες

Διαβάστε περισσότερα

Δίκτυα Η/Υ Θεωρία. Διάλεξη 2η

Δίκτυα Η/Υ Θεωρία. Διάλεξη 2η Δίκτυα Η/Υ Θεωρία Διάλεξη 2η Kάρτες Δικτύωσης (NIC-Network Interface Controller) Βασικές εντολές δρομολόγησης και ανίχνευσης Η κάρτα δικτύου συνδέει τον υπολογιστή στο τοπικό δίκτυο παράγει και λαμβάνει

Διαβάστε περισσότερα

4.1.1 Πρωτόκολλο TCP - Δομή πακέτου

4.1.1 Πρωτόκολλο TCP - Δομή πακέτου 4.1.1 Πρωτόκολλο TCP - Δομή πακέτου 1 / 38 Παράδειγμα Έστω ότι θέλουμε να αποστείλουμε ένα μήνυμα μέσω ηλεκτρονικού ταχυδρομείου. Αρχικά η εφαρμογή χρησιμοποιώντας τα πρωτόκολλα του επιπέδου εφαρμογής

Διαβάστε περισσότερα

ΤΕΙ ΑΡΤΑΣ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΤΗΛΕΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΔΙΟΙΚΗΣΗΣ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΠΡΩΤΟΚΟΛΛΑ ΤΟΠΙΚΩΝ ΔΙΚΤΥΩΝ ΑΝΑΣΤΑΣΙΟΥ ΘΕΟΔΩΡΑ

ΤΕΙ ΑΡΤΑΣ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΤΗΛΕΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΔΙΟΙΚΗΣΗΣ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΠΡΩΤΟΚΟΛΛΑ ΤΟΠΙΚΩΝ ΔΙΚΤΥΩΝ ΑΝΑΣΤΑΣΙΟΥ ΘΕΟΔΩΡΑ ΤΕΙ ΑΡΤΑΣ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΤΗΛΕΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΔΙΟΙΚΗΣΗΣ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΠΡΩΤΟΚΟΛΛΑ ΤΟΠΙΚΩΝ ΔΙΚΤΥΩΝ ΑΝΑΣΤΑΣΙΟΥ ΘΕΟΔΩΡΑ Τα πρώτα δίκτυα δημιουργήθηκαν γύρω στο 1960. Αιτία η ανάγκη

Διαβάστε περισσότερα

Κεφάλαιο 1 Ε Π Α Ν Α Λ Η Ψ Η

Κεφάλαιο 1 Ε Π Α Ν Α Λ Η Ψ Η Κεφάλαιο 1 Ε Π Α Ν Α Λ Η Ψ Η Αρχές Δικτύων Επικοινωνιών Σελ. 9-50 Γεώργιος Γιαννόπουλος ΠΕ19, ggiannop (at) sch.gr http://diktya-epal-b.ggia.info/ Creative Commons License 3.0 Share-Alike Σύνδεση από σημείο

Διαβάστε περισσότερα

Τοπικά Δίκτυα. Ethernet Δίκτυα Δακτυλίου, (Token Ring) Άλλα Δίκτυα Σύνδεση Τοπικών Δικτύων.

Τοπικά Δίκτυα. Ethernet Δίκτυα Δακτυλίου, (Token Ring) Άλλα Δίκτυα Σύνδεση Τοπικών Δικτύων. Τοπικά Δίκτυα Περίληψη Ethernet Δίκτυα Δακτυλίου, (Token Ring) Άλλα Δίκτυα Σύνδεση Τοπικών Δικτύων. Αναμεταδότες, Γέφυρες, Μεταγωγείς, δρομολογητές και Πύλες (repeaters, hubs, bridges, switches, routers,

Διαβάστε περισσότερα

Δίκτυα Υπολογιστών Firewalls. Χάρης Μανιφάβας

Δίκτυα Υπολογιστών Firewalls. Χάρης Μανιφάβας Δίκτυα Υπολογιστών Firewalls Χάρης Μανιφάβας 1 Επικοινωνία Βασίζεται στη μεταβίβαση μηνυμάτων (λόγω απουσίας διαμοιραζόμενης μνήμης) Απαιτείται συμφωνία φόρμας μηνυμάτων Πρότυπο Στόχος τυποποίησης = Συνεργασία

Διαβάστε περισσότερα

1.2.1 Το μοντέλο αναφοράς για τη Διασύνδεση Ανοικτών Συστημάτων (OSI) 1 / 19

1.2.1 Το μοντέλο αναφοράς για τη Διασύνδεση Ανοικτών Συστημάτων (OSI) 1 / 19 1.2.1 Το μοντέλο αναφοράς για τη Διασύνδεση Ανοικτών Συστημάτων (OSI) 1 / 19 2 / 19 Το Φυσικό Επίπεδο Το Φυσικό Επίπεδο ή στρώμα (Physical layer) ασχολείται με τη μετάδοση των bit (1 0) που απαρτίζουν

Διαβάστε περισσότερα

Ethernet Ethernet ΙΕΕΕ CSMA/CD

Ethernet Ethernet ΙΕΕΕ CSMA/CD Ethernet Τα τοπικά δίκτυα είναι συνήθως τύπου Ethernet ή λέμε ότι ακολουθούν το πρότυπο ΙΕΕΕ 802.3 Ακολουθούν το μηχανισμό CSMA/CD (Πολλαπλή πρόσβαση με Ακρόαση Φέροντος και Ανίχνευση Συγκρούσεων). Πολλαπλή

Διαβάστε περισσότερα

Επίπεδο δικτύου IP Forwading κτλ

Επίπεδο δικτύου IP Forwading κτλ Επίπεδο δικτύου IP Forwading κτλ (IP για που το έβαλες) Εργαστήριο Δικτύων Υπολογιστών 2014-2015 Τμήμα Μηχανικών Η/Υ και Πληροφορικής Επίπεδο δικτύου (Network layer) Επίπεδο εφαρμογής (Application layer):

Διαβάστε περισσότερα

Διάρθρωση. Δίκτυα Υπολογιστών I Δίκτυα άμεσου συνδέσμου: Μέρος Α. Διάρθρωση. Δίκτυα άμεσου συνδέσμου και μοντέλο OSI (1/2) Ευάγγελος Παπαπέτρου

Διάρθρωση. Δίκτυα Υπολογιστών I Δίκτυα άμεσου συνδέσμου: Μέρος Α. Διάρθρωση. Δίκτυα άμεσου συνδέσμου και μοντέλο OSI (1/2) Ευάγγελος Παπαπέτρου Δίκτυα Υπολογιστών I Δίκτυα άμεσου συνδέσμου: Μέρος Α Ευάγγελος Παπαπέτρου Τμ. Μηχ. Η/Υ & Πληροφορικής, Παν. Ιωαννίνων 3 Δίκτυα Slotted Reservation Ε.Παπαπέτρου (Τμ.Μηχ. Η/Υ & Πληροφορικής) ΜΥΥ703: Δίκτυα

Διαβάστε περισσότερα

Εκτέλεση προγράμματος

Εκτέλεση προγράμματος ιεπιφάνεια controller Επισκόπηση λειτουργιών CNC Επισκόπηση λειτουργιών DNC Επικοινωνίες 1 2 Αυτόματα Εκτέλεση προγράμματος παραγωγή Χειροκίνητα για απλές λίγες κινήσεις Εντολή προς εντολή για έλεγχο ορθότητας

Διαβάστε περισσότερα

ΔΙΑΣΥΝΔΕΣΗ ΔΙΚΤΥΩΝ (INTERNETWORKING)

ΔΙΑΣΥΝΔΕΣΗ ΔΙΚΤΥΩΝ (INTERNETWORKING) ΔΙΑΣΥΝΔΕΣΗ ΔΙΚΤΥΩΝ (INTERNETWORKING) Α. Α. Οικονομίδης Πανεπιστήμιο Μακεδονίας Διασυνδεδεμένο δίκτυο διασύνδεση δικτύων που το καθένα διατηρεί την ταυτότητά του χρησιμοποιώντας ειδικούς μηχανισμούς διασύνδεσης

Διαβάστε περισσότερα

Επαναληπτικές Ασκήσεις Μαθήματος

Επαναληπτικές Ασκήσεις Μαθήματος Επαναληπτικές Ασκήσεις Μαθήματος Ερώτηση: EAM1. Ποιο από τα παρακάτω χαρακτηριστικά δεν αποτελεί κριτήριο κατηγοριοποίησης δικτύων. Κλίμακα Τεχνολογία μετάδοσης Πλήθος τερματικών εντός του δικτύου Ερώτηση:

Διαβάστε περισσότερα

Περίληψη. Ethernet Δίκτυα Δακτυλίου, (Token Ring) Άλλα Δίκτυα Σύνδεση Τοπικών Δικτύων.

Περίληψη. Ethernet Δίκτυα Δακτυλίου, (Token Ring) Άλλα Δίκτυα Σύνδεση Τοπικών Δικτύων. Τοπικά Δίκτυα Περίληψη Ethernet Δίκτυα Δακτυλίου, (Token Ring) Άλλα Δίκτυα Σύνδεση Τοπικών Δικτύων. Αναµεταδότες, Γέφυρες, Μεταγωγείς, δροµολογητές και Πύλες (repeaters, hubs, bridges, switches, routers,

Διαβάστε περισσότερα

Τεχνολογίες & Εφαρμογές Πληροφορικής Ενότητα 7: Τοπικά δίκτυα

Τεχνολογίες & Εφαρμογές Πληροφορικής Ενότητα 7: Τοπικά δίκτυα ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Τεχνολογίες & Εφαρμογές Πληροφορικής Ενότητα 7: Τοπικά δίκτυα Ανδρέας Βέγλης, Αναπληρωτής Καθηγητής Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

Πρωτόκολλα Διαδικτύου

Πρωτόκολλα Διαδικτύου Πρωτόκολλα Διαδικτύου Μέρος 1ο Επικοινωνίες Δεδομένων Μάθημα 3 ο Εισαγωγή στην Τεχνολογία TCP/IP To TCP/IP σημαίνει Transmission Control Protocol / Internet Protocol και θα μπορούσε να θεωρηθεί ότι πρόκειται

Διαβάστε περισσότερα

Δίκτυα Θεωρία

Δίκτυα Θεωρία Δίκτυα Θεωρία 2016-17 Κεφάλαιο 4 1. Γιατί η μεταφορά των δεδομένων δεν καλύπτεται επαρκώς από το Επίπεδο Δικτύου; Επειδή το επίπεδο δικτύου από τη φύση του είναι αναξιόπιστο, τα πακέτα φθάνουν καθυστερημένα,

Διαβάστε περισσότερα

Αρχές Δικτύων Επικοινωνιών. Επικοινωνίες Δεδομένων Μάθημα 4 ο

Αρχές Δικτύων Επικοινωνιών. Επικοινωνίες Δεδομένων Μάθημα 4 ο Αρχές Δικτύων Επικοινωνιών Επικοινωνίες Δεδομένων Μάθημα 4 ο Τα επικοινωνιακά δίκτυα και οι ανάγκες που εξυπηρετούν Για την επικοινωνία δύο συσκευών απαιτείται να υπάρχει μεταξύ τους σύνδεση από σημείο

Διαβάστε περισσότερα

Λειτουργίες CNC-DNC. Επισκόπηση λειτουργιών CNC Επισκόπηση λειτουργιών DNC Επικοινωνίες. Λειτουργίες CNC-DNC. Γ.Βοσνιάκος-ΕΡΓΑΛΕΙΟΜΗΧΑΝΕΣ

Λειτουργίες CNC-DNC. Επισκόπηση λειτουργιών CNC Επισκόπηση λειτουργιών DNC Επικοινωνίες. Λειτουργίες CNC-DNC. Γ.Βοσνιάκος-ΕΡΓΑΛΕΙΟΜΗΧΑΝΕΣ Λειτουργίες CNC-DNC Επισκόπηση λειτουργιών CNC Επισκόπηση λειτουργιών DNC Επικοινωνίες Γ.Βοσνιάκος-ΕΡΓΑΛΕΙΟΜΗΧΑΝΕΣ Λειτουργίες CNC-DNC Άδεια Χρήσης Το παρόν υλικό υπόκειται σε άδειες χρήσης Creative Commons

Διαβάστε περισσότερα

A1. Φυσικό επίπεδο 1. Αντιπαραθέσετε (κάνετε τη σύγκριση) με 2-3 προτάσεις την στατιστική πολυπλεξία και την πολυπλεξία με διαίρεση χρόνου.

A1. Φυσικό επίπεδο 1. Αντιπαραθέσετε (κάνετε τη σύγκριση) με 2-3 προτάσεις την στατιστική πολυπλεξία και την πολυπλεξία με διαίρεση χρόνου. ΗY335: Δίκτυα Υπολογιστών Χειμερινό Εξάμηνο 2014-2015 Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Διδάσκουσα: Μαρία Παπαδοπούλη 27.10.2014 mockup Πρόοδος Οδηγίες: Η κάθε απάντηση θα πρέπει να συνοδεύεται

Διαβάστε περισσότερα

Διάρθρωση. Δίκτυα Υπολογιστών I Δίκτυα άμεσου συνδέσμου: Μέρος Α. Διάρθρωση. Δίκτυα άμεσου συνδέσμου και μοντέλο OSI (1/2) Ευάγγελος Παπαπέτρου

Διάρθρωση. Δίκτυα Υπολογιστών I Δίκτυα άμεσου συνδέσμου: Μέρος Α. Διάρθρωση. Δίκτυα άμεσου συνδέσμου και μοντέλο OSI (1/2) Ευάγγελος Παπαπέτρου Δίκτυα Υπολογιστών I Δίκτυα άμεσου συνδέσμου: Μέρος Α Ευάγγελος Παπαπέτρου 2 Τμ. Μηχ. Η/Υ & Πληροφορικής, Παν. Ιωαννίνων 3 Δίκτυα Slotted Reservation Ε.Παπαπέτρου (Τμ.Μηχ. Η/Υ & Πληροφορικής) ΜΥΥ703: Δίκτυα

Διαβάστε περισσότερα

Δίκτυα Υπολογιστών I

Δίκτυα Υπολογιστών I Δίκτυα Υπολογιστών I Δίκτυα άμεσου συνδέσμου: Μέρος Α Ευάγγελος Παπαπέτρου Τμ. Μηχ. Η/Υ & Πληροφορικής, Παν. Ιωαννίνων Ε.Παπαπέτρου (Τμ.Μηχ. Η/Υ & Πληροφορικής) ΜΥΥ703: Δίκτυα Υπολογιστών Ι 1 / 36 Διάρθρωση

Διαβάστε περισσότερα

- Δομή πλαισίου Ethernet - Πλαίσια Ethernet μεγάλου μεγέθους (Jumbo frames)

- Δομή πλαισίου Ethernet - Πλαίσια Ethernet μεγάλου μεγέθους (Jumbo frames) 2.4.2 Διευθύνσεις Ελέγχου πρόσβασης στο Μέσο (MAC) - Δομή πλαισίου Ethernet - Πλαίσια Ethernet μεγάλου μεγέθους (Jumbo frames) 1 / 37 Φυσική διεύθυνση Κάθε κόμβος σε ένα δίκτυο Ethernet έχει μια φυσική

Διαβάστε περισσότερα

Φύλλο Κατανόησης 1.8

Φύλλο Κατανόησης 1.8 Σχολικό Έτος : 2012-2013 Τάξη : B Τομέας : Πληροφορικής Μάθημα : ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ Ι - Θεωρία Διδάσκων : Χρήστος Ρέτσας Η-τάξη : tiny.cc/retsas-diktya1 Φύλλο Κατανόησης 1.8 1.8. Το μοντέλο OSI Ερωτήσεις

Διαβάστε περισσότερα

Πρωτόκολλα Διαδικτύου

Πρωτόκολλα Διαδικτύου Πρωτόκολλα Διαδικτύου Ερωτήσεις Ασκήσεις Επικοινωνίες Δεδομένων Μάθημα 3 ο Ερωτήσεις 1. Τι είναι το intranet και ποια τα πλεονεκτήματα που προσφέρει; 2. Τι δηλώνει ο όρος «TCP/IP»; 3. Να αναφέρετε τα πρωτόκολλα

Διαβάστε περισσότερα

Υπόστρωμα Ελέγχου Πρόσβασης Μέσου. Medium Access Control Sub-layer.

Υπόστρωμα Ελέγχου Πρόσβασης Μέσου. Medium Access Control Sub-layer. Υπόστρωμα Ελέγχου Πρόσβασης Μέσου Medium Access Control Sub-layer. Πρόβλημα Υπάρχει ένα κανάλι το οποίο «μοιράζονται» πολλοί κόμβοι. Πρόβλημα: Ποίος μεταδίδει και πότε; Περίληψη Κανάλια πολλαπλής πρόσβασης

Διαβάστε περισσότερα

7.1.1 Επίπεδο δικτύου Γενικές Αρχές

7.1.1 Επίπεδο δικτύου Γενικές Αρχές Κεφάλαιο 7 3 κατώτερα επίπεδα OSI 7.1.1 Επίπεδο δικτύου Γενικές Αρχές Σελ. 220-224 Γεώργιος Γιαννόπουλος ΠΕ19, ggiannop (at) sch.gr ΕΣΠΕΡΙΝΟ ΕΠΑΛ Κομοτηνής http://diktya-epal-g.ggia.info/ Επικοινωνία σταθμών

Διαβάστε περισσότερα

Διαφορές single-processor αρχιτεκτονικών και SoCs

Διαφορές single-processor αρχιτεκτονικών και SoCs 13.1 Τα συστήματα και η επικοινωνία μεταξύ τους γίνονται όλο και περισσότερο πολύπλοκα. Δεν μπορούν να περιγραφούνε επαρκώς στο επίπεδο RTL καθώς αυτή η διαδικασία γίνεται πλέον αρκετά χρονοβόρα. Για αυτό

Διαβάστε περισσότερα

Επίπεδο ύνδεσης Δεδομένων (Data Link Layer DLL)

Επίπεδο ύνδεσης Δεδομένων (Data Link Layer DLL) 101001 101001 Επίπεδο ύνδεσης Δεδομένων (Data Link Layer DLL) Είναι το δεύτερο επίπεδο στη διαστρωμάτωση του OSI (μετρώντας από κάτω) Ασχολείται με την αποδοτική και αξιόπιστη επικοινωνία μεταξύ δύο γειτονικών

Διαβάστε περισσότερα

ΙΚΤΥΑ ΕΠΙΚΟΙΝΩΝΙΩΝ Ασκήσεις για το φυσικό στρώμα. λ από τον ρυθμό μετάδοσής της. Υποθέτοντας ότι ο κόμβος A

ΙΚΤΥΑ ΕΠΙΚΟΙΝΩΝΙΩΝ Ασκήσεις για το φυσικό στρώμα. λ από τον ρυθμό μετάδοσής της. Υποθέτοντας ότι ο κόμβος A ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧ/ΚΩΝ ΚΑΙ ΜΗΧ. ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΕΠΙΚΟΙΝΩΝΙΩΝ, ΗΛΕΚΤΡΟΝΙΚΗΣ ΚΑΙ ΣΥΣΤΗΜΑΤΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΙΚΤΥΑ ΕΠΙΚΟΙΝΩΝΙΩΝ Ασκήσεις για το φυσικό στρώμα 1. Στο δίκτυο

Διαβάστε περισσότερα

ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ ΙΙ

ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ ΙΙ ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ ΙΙ 1 o ΔΙΑΓΩΝΙΣΜΑ ΘΕΜΑ 1 ο Α) Ποια είναι τα βασικά στοιχεία, τα οποία χαρακτηρίζουν το ISDN; Η ψηφιακή μετάδοση. Όλα τα σήματα μεταδίδονται σε ψηφιακή μορφή απ' άκρη σ' άκρη του δικτύου,

Διαβάστε περισσότερα

ΡΟΜΠΟΤΙΚΗ. ΕΡΓΑΣΙΑ ΠΑΝΩ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΝΧΤ ΚΑΙ ΤΑ ΠΡΩΤΟΚΟΛΛΑ ΕΠΙΚΟΙΝΩΝΙΑΣ BLUETOOTH, I2C και serial communication

ΡΟΜΠΟΤΙΚΗ. ΕΡΓΑΣΙΑ ΠΑΝΩ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΝΧΤ ΚΑΙ ΤΑ ΠΡΩΤΟΚΟΛΛΑ ΕΠΙΚΟΙΝΩΝΙΑΣ BLUETOOTH, I2C και serial communication ΡΟΜΠΟΤΙΚΗ ΕΡΓΑΣΙΑ ΠΑΝΩ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΝΧΤ ΚΑΙ ΤΑ ΠΡΩΤΟΚΟΛΛΑ ΕΠΙΚΟΙΝΩΝΙΑΣ BLUETOOTH, I2C και serial communication ΜΠΑΝΤΗΣ ΑΝΤΩΝΙΟΣ 533 ΤΣΙΚΤΣΙΡΗΣ ΔΗΜΗΤΡΙΟΣ 551 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΤΟΥ ΡΟΜΠΟΤ LEGO NXT Το ρομπότ

Διαβάστε περισσότερα

Σύστημα διασύνδεσης και. διαδικασία εισόδου-εξόδου

Σύστημα διασύνδεσης και. διαδικασία εισόδου-εξόδου ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ Κεφάλαιο 6 Σύστημα διασύνδεσης και διαδικασία εισόδου-εξόδου Τι είναι αρτηρία (Bus) ; Ένα σύνολο γραμμών διασύνδεσης Πρωτόκολλο (protocol) Περιγραφή Πρωτοκόλλου χρονικό διάγραμμα

Διαβάστε περισσότερα

ΣΕΜΙΝΑΡΙΟ ΔΙΚΤΥΩΝ ΜΑΡΤΙΟΣ ΜΑΙΟΣ 2010 ΔΙΟΡΓΑΝΩΣΗ ΑΜΠΑΡΙΩΤΗΣ ΑΠΟΣΤΟΛΟΣ ΓΙΑΜΜΑΚΗΣ ΓΙΑΝΝΗΣ ΛΕΒΑΝΤΗΣ ΟΔΥΣΣΕΑΣ ΠΑΠΑΔΟΠΟΥΛΟΣ ΜΑΡΙΟΣ ΨΙΑΧΟΣ ΧΡΗΣΤΟΣ

ΣΕΜΙΝΑΡΙΟ ΔΙΚΤΥΩΝ ΜΑΡΤΙΟΣ ΜΑΙΟΣ 2010 ΔΙΟΡΓΑΝΩΣΗ ΑΜΠΑΡΙΩΤΗΣ ΑΠΟΣΤΟΛΟΣ ΓΙΑΜΜΑΚΗΣ ΓΙΑΝΝΗΣ ΛΕΒΑΝΤΗΣ ΟΔΥΣΣΕΑΣ ΠΑΠΑΔΟΠΟΥΛΟΣ ΜΑΡΙΟΣ ΨΙΑΧΟΣ ΧΡΗΣΤΟΣ ΣΕΜΙΝΑΡΙΟ ΔΙΚΤΥΩΝ ΜΑΡΤΙΟΣ ΜΑΙΟΣ 2010 ΔΙΟΡΓΑΝΩΣΗ ΑΜΠΑΡΙΩΤΗΣ ΑΠΟΣΤΟΛΟΣ ΓΙΑΜΜΑΚΗΣ ΓΙΑΝΝΗΣ ΛΕΒΑΝΤΗΣ ΟΔΥΣΣΕΑΣ ΠΑΠΑΔΟΠΟΥΛΟΣ ΜΑΡΙΟΣ ΨΙΑΧΟΣ ΧΡΗΣΤΟΣ Τεχνολογία Δικτύων Επικοινωνιών Πρωτόκολλα και Αρχιτεκτονική

Διαβάστε περισσότερα

ΔΙΑΧΥΤΑ ΚΑΙ ΕΝΣΩΜΑΤΩΜΕΝΑ ΣΥΣΤΗΜΑΤΑ

ΔΙΑΧΥΤΑ ΚΑΙ ΕΝΣΩΜΑΤΩΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΔΙΑΧΥΤΑ ΚΑΙ ΕΝΣΩΜΑΤΩΜΕΝΑ ΣΥΣΤΗΜΑΤΑ Πλατφόρμες ενσωματωμένων συστημάτων Διδάσκων: Παναγιώτης Καρκαζής Περίγραμμα - Δίαυλοι επικοινωνίας - Μνήμες -Συσκευές Ι/Ο Timers Counters keyboards Leds 7 segment display

Διαβάστε περισσότερα

Διασυνδετικοί Δίαυλοι. Τι διασυνδέει ένας δίαυλος; Μεταφορά δεδομένων. Διασύνδεση Εισόδου-Εξόδου. Μ.Στεφανιδάκης

Διασυνδετικοί Δίαυλοι. Τι διασυνδέει ένας δίαυλος; Μεταφορά δεδομένων. Διασύνδεση Εισόδου-Εξόδου. Μ.Στεφανιδάκης Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 2014-15 Διασύνδεση Εισόδου-Εξόδου (συσκευές και ) http://www.ionio.gr/~mistral/tp/comparch/ Μ.Στεφανιδάκης Διασυνδετικοί : Αναλαμβάνουν την

Διαβάστε περισσότερα

ΔΙΚΤΥΑ ΕΠΙΚΟΙΝΩΝΙΩΝ. Ιωάννης Σταυρακάκης, Καθηγητής ioannis@di.uoa.gr. http://www.di.uoa.gr/~ioannis/courses.html Password: edi

ΔΙΚΤΥΑ ΕΠΙΚΟΙΝΩΝΙΩΝ. Ιωάννης Σταυρακάκης, Καθηγητής ioannis@di.uoa.gr. http://www.di.uoa.gr/~ioannis/courses.html Password: edi ΔΙΚΤΥΑ ΕΠΙΚΟΙΝΩΝΙΩΝ Ιωάννης Σταυρακάκης, Καθηγητής ioannis@di.uoa.gr http://www.di.uoa.gr/~ioannis/courses.html Password: edi Δίκτυα Επικ. - Κεφ. 1 ( Καθ. Ι. Σταυρακάκης, Τμήμα Πληροφ. & Τηλεπικ. - Ε.Κ.Π.Α.)

Διαβάστε περισσότερα

ΕΠΛ 001: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δίκτυα Υπολογιστών

ΕΠΛ 001: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δίκτυα Υπολογιστών ΕΠΛ 001: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Δίκτυα Υπολογιστών Στόχοι 1 Να εξηγήσουμε τι είναι τα δίκτυα υπολογιστών, ποιες είναι οι βασικές κατηγορίες τους και ποιες οι πιο συνηθισμένες τοπολογίες

Διαβάστε περισσότερα

Στόχοι. Υπολογιστικά συστήματα: Στρώματα. Βασικές έννοιες [7]

Στόχοι. Υπολογιστικά συστήματα: Στρώματα. Βασικές έννοιες [7] Στόχοι ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 1 Να εξηγήσουμε τι είναι τα δίκτυα υπολογιστών, ποιες είναι οι βασικές κατηγορίες τους και ποιες οι πιο συνηθισμένες τοπολογίες τους. Να περιγράψουμε

Διαβάστε περισσότερα

Διασύνδεση τοπικών δικτύων

Διασύνδεση τοπικών δικτύων Κεφάλαιο 10 Διασύνδεση τοπικών δικτύων ------------------------- Μάθημα 10.1 : Αρχές διασύνδεσης τοπικών δικτύων Μάθημα 10.2 : Επιλογή τοπικού δικτύου και μέσου μετάδοσης Μάθημα 10.3 : Επιλογή τοπικού

Διαβάστε περισσότερα

Κεφάλαιο 7.3. Πρωτόκολλο TCP

Κεφάλαιο 7.3. Πρωτόκολλο TCP Κεφάλαιο 7.3 Πρωτόκολλο TCP Πρωτόκολλο TCP Το πρωτόκολλο Ελέγχου Μετάδοσης (Transmission Control Protocol, TCP) είναι το βασικό πρωτόκολο του Επιπέδου Μεταφοράς του μοντέλου TCP/IP. Παρέχει υπηρεσίες προσανατολισμένες

Διαβάστε περισσότερα

ΕΠΙΚΟΙΝΩΝΙΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΕΣ INTERNET

ΕΠΙΚΟΙΝΩΝΙΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΕΣ INTERNET ΕΠΙΚΟΙΝΩΝΙΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΕΣ INTERNET Κεφάλαιο 6: Συσκευές τηλεπικοινωνιών και δικτύωσης (Θ) Ενεργά στοιχεία δικτύων Δύο συστήματα Η/Υ μπορούν να συνδεθούν χρησιμοποιώντας: Δια-αποδιαμορφωτές

Διαβάστε περισσότερα

Δίκτυα Επικοινωνιών ΙΙ: ATM

Δίκτυα Επικοινωνιών ΙΙ: ATM Δίκτυα Επικοινωνιών ΙΙ: ATM Δρ. Απόστολος Γκάμας Διδάσκων (407/80) gkamas@uop.gr Δίκτυα Επικοινωνιών ΙΙ Διαφάνεια 1 1 Θέματα διάλεξης Στόχοι ΑΤΜ Αρχιτεκτονική ΑΤΜ Κατακόρυφα επίπεδα (planes) Οριζόντια

Διαβάστε περισσότερα

Διασύνδεση Εισόδου-Εξόδου

Διασύνδεση Εισόδου-Εξόδου Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 2016-17 Διασύνδεση Εισόδου-Εξόδου (συσκευές και ) http://mixstef.github.io/courses/comparch/ Μ.Στεφανιδάκης Διασυνδετικοί : Αναλαμβάνουν

Διαβάστε περισσότερα

ίκτυα - Internet Μάθηµα 5ο Ενότητες Μαθήµατος Παρασκευή 01 ΕΚ 2006 ιευθυνσιοδότηση στα Τοπικά ίκτυα (LAN).

ίκτυα - Internet Μάθηµα 5ο Ενότητες Μαθήµατος Παρασκευή 01 ΕΚ 2006 ιευθυνσιοδότηση στα Τοπικά ίκτυα (LAN). Ιόνιο Πανεπιστήµιο Τµήµα Αρχειονοµίας-Βιβλιοθηκονοµίας, Κέρκυρα Παρασκευή 01 ΕΚ 2006 ίκτυα - Internet Μάθηµα 5ο Ενότητες Μαθήµατος 1. Τεχνικές Πολλαπλής Πρόσβασης Πρωτόκολλα LAN ιευθυνσιοδότηση στα Τοπικά

Διαβάστε περισσότερα

Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων. ίκτυα Υπολογιστών Ι. To Μοντέλο OSI. Αναπλ. Καθηγ. Π. εμέστιχας

Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων. ίκτυα Υπολογιστών Ι. To Μοντέλο OSI. Αναπλ. Καθηγ. Π. εμέστιχας Πανεπιστήμιο Πειραιά To Μοντέλο OSI pdemest@unipi.gr ιάρθρωση Το μοντέλο αναφοράς OSI Επίπεδα Πρωτόκολλα, κατανομή πρωτοκόλλων σε στοιχεία δικτύου Αντιστοιχία τστοχα μοντέλων OSI και Internet Ανάλυση Επιπέδων

Διαβάστε περισσότερα

Δίκτυα Υψηλών Ταχυτήτων Ενότητα 2: Τοπικά Δίκτυα

Δίκτυα Υψηλών Ταχυτήτων Ενότητα 2: Τοπικά Δίκτυα Δίκτυα Υψηλών Ταχυτήτων Ενότητα 2: Τοπικά Δίκτυα Μιχάλας Άγγελος Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

Διαβάστε περισσότερα

ΔΙΚΤΥΑ ΕΠΙΚΟΙΝΩΝΙΩΝ. Ιωάννης Σταυρακάκης, Καθηγητής Password: edi

ΔΙΚΤΥΑ ΕΠΙΚΟΙΝΩΝΙΩΝ. Ιωάννης Σταυρακάκης, Καθηγητής  Password: edi ΔΙΚΤΥΑ ΕΠΙΚΟΙΝΩΝΙΩΝ Ιωάννης Σταυρακάκης, Καθηγητής ioannis@di.uoa.gr http://www.di.uoa.gr/~ioannis/courses.html Password: edi Δίκτυα Επικ. - Κεφ. 1 ( Καθ. Ι. Σταυρακάκης, Τμήμα Πληροφ. & Τηλεπικ. - Ε.Κ.Π.Α.)

Διαβάστε περισσότερα

ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ Ι. Σημειώσεις Θεωρίας

ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ Ι. Σημειώσεις Θεωρίας Ινστιτούτα Επαγγελματική Κατάρτισης ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ Ι Σημειώσεις Θεωρίας Επιμέλεια: Ματθές Δημήτριος Αθήνα 2017 Μάθημα 1: Βασικές Έννοιες στα Δίκτυα Υπολογιστών 1.1 Δίκτυο Υπολογιστών Ένα δίκτυο είναι

Διαβάστε περισσότερα

Βασικές λειτουργίες Ανίχνευση πλαισίων Τι κάνει το επίπεδο ζεύξης Χρησιμοποιεί τις υπηρεσίες του φυσικού επιπέδου, ήτοι την (ανασφαλή) μεταφορά δεδομέ

Βασικές λειτουργίες Ανίχνευση πλαισίων Τι κάνει το επίπεδο ζεύξης Χρησιμοποιεί τις υπηρεσίες του φυσικού επιπέδου, ήτοι την (ανασφαλή) μεταφορά δεδομέ Αρχές σχεδιασμού, μοντέλα αναφοράς, τυποποίηση Μιλτιάδης Αναγνώστου 19 Μαΐου 2011 1/41 Βασικές λειτουργίες Ανίχνευση πλαισίων Επίδραση του θορύβου Παραδείγματα 2/41 Βασικές λειτουργίες Ανίχνευση πλαισίων

Διαβάστε περισσότερα

University of Macedonia Master Information Systems Networking Technologies Professors: A.A. Economides & A. Pomportsis

University of Macedonia Master Information Systems Networking Technologies Professors: A.A. Economides & A. Pomportsis University of Macedonia Master Information Systems Networking Technologies Professors: A.A. Economides & A. Pomportsis SUBJECT: VEHICLE NETWORKS STUDENT: PELITIS KONSTANTINOS N.R.: 03/05 THESSALONIKI JANUARY

Διαβάστε περισσότερα

Εφαρµογές Πληροφορικής Υπολογιστών. Κεφάλαιο 3 Το υλικό του υπολογιστή

Εφαρµογές Πληροφορικής Υπολογιστών. Κεφάλαιο 3 Το υλικό του υπολογιστή Κεφάλαιο 3 Το υλικό του υπολογιστή Εισαγωγή Τµήµατα του Η/Υ καιοργάνωση Μονάδα Κεντρικής Μνήµης Κεντρική Μονάδα Επεξεργασίας (CPU) Μονάδα Εισόδου Εξόδου ίαυλοι Επικοινωνίας Εναλλακτικές αρχιτεκτονικές

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 1: Τα είδη των Δικτύων Εισαγωγή

ΚΕΦΑΛΑΙΟ 1: Τα είδη των Δικτύων Εισαγωγή ΚΕΦΑΛΑΙΟ 1: Τα είδη των Δικτύων 1.1. Εισαγωγή Γενικότερα δεν υπάρχει κάποια ταξινόμηση των πιθανών δικτύων κάτω από την οποία να ταιριάζουν όλα τα δίκτυα. Παρόλα αυτά η ταξινόμηση τους είθισται να γίνεται

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 7 ΕΠΕΞΕΡΓΑΣΙΑ ΚΑΙ ΜΕΤΑΔΟΣΗ ΨΗΦΙΑΚΩΝ ΔΕΔΟΜΕΝΩΝ

ΚΕΦΑΛΑΙΟ 7 ΕΠΕΞΕΡΓΑΣΙΑ ΚΑΙ ΜΕΤΑΔΟΣΗ ΨΗΦΙΑΚΩΝ ΔΕΔΟΜΕΝΩΝ ΚΕΦΑΛΑΙΟ 7 ΕΠΕΞΕΡΓΑΣΙΑ ΚΑΙ ΜΕΤΑΔΟΣΗ ΨΗΦΙΑΚΩΝ ΔΕΔΟΜΕΝΩΝ 1 ΕΙΣΑΓΩΓΗ Ο πραγματικός κόσμος είναι ένας αναλογικός κόσμος. Όλα τα μεγέθη παίρνουν τιμές με άπειρη ακρίβεια. Π.χ. το ηλεκτρικό σήμα τάσης όπου κάθε

Διαβάστε περισσότερα

Κεφάλαιο 3 Πολυπλεξία

Κεφάλαιο 3 Πολυπλεξία Κεφάλαιο 3 Πολυπλεξία Μάθημα 3.1: Μάθημα 3.2: Μάθημα 3.3: Πολυπλεξία επιμερισμού συχνότητας χρόνου Συγκριτική αξιολόγηση τεχνικών πολυπλεξίας Στατιστική πολυπλεξία Μετάδοση Δεδομένων Δίκτυα Υπολογιστών

Διαβάστε περισσότερα

ΔΙΚΤΥΑ ΕΠΙΚΟΙΝΩΝΙΩΝ Ασκήσεις για το φυσικό στρώμα

ΔΙΚΤΥΑ ΕΠΙΚΟΙΝΩΝΙΩΝ Ασκήσεις για το φυσικό στρώμα ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧ/ΚΩΝ ΚΑΙ ΜΗΧ. ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΕΠΙΚΟΙΝΩΝΙΩΝ, ΗΛΕΚΤΡΟΝΙΚΗΣ ΚΑΙ ΣΥΣΤΗΜΑΤΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΔΙΚΤΥΑ ΕΠΙΚΟΙΝΩΝΙΩΝ Ασκήσεις για το φυσικό στρώμα 1. Μήνυμα μήκους

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 1.7. Πρωτόκολλα και Αρχιτεκτονική Δικτύου

ΚΕΦΑΛΑΙΟ 1.7. Πρωτόκολλα και Αρχιτεκτονική Δικτύου ΚΕΦΑΛΑΙΟ 1.7 Πρωτόκολλα και Αρχιτεκτονική Δικτύου Επικοινωνία δύο σταθμών Ύπαρξη διαδρομής Αποκατάσταση σύνδεσης Ο σταθμός-πηγή πρέπει να ξέρει πότε ο σταθμός-προορισμός είναι έτοιμος να λάβει δεδομένα.

Διαβάστε περισσότερα

Τοπικά Δίκτυα Local Area Networks (LAN)

Τοπικά Δίκτυα Local Area Networks (LAN) Τοπικά Δίκτυα Local Area Networks (LAN) Ορισμός Τοπικών Δικτύων Τοπικό δίκτυο επικοινωνιών δεδομένων ονομάζεται ένα δίκτυο όπου τα υπολογιστικά συστήματα που συνδέονται μεταξύ τους βρίσκονται σε περιορισμένη

Διαβάστε περισσότερα