CAN - Bus Controller Area Network CAN - Bus Controller Area Network ab 1985 Entwicklungsziel: Vernetzung der elektrischen/elektronischen Komponenten eines Kraftfahrzeuges als Lösung eines zunehmenden Verkabelungsproblems. Entwicklung durch die Firmen Robert Bosch und Intel. Erster Einsatz in den Luxuslimousinen von BMW und Mercedes-Benz. Internationale Normung als ISO 11898 und ISO 11519 - 1 Innovation: Datenübertragung mit CSMA/CA - Protokoll 1995 Drei Mill. CAN-Bus-Systeme im Kfz-Bereich (Carrier Sense Multiple Access/Collision Avoidence). 1999 Einsatz in verschiedenen Feldern der industriellen Automation und in der Gebäudetechnik. Nachrichtenorientiertes Protokoll. 05.012.02 05.012.01 CAN - Bus Anwendung CAN - Bus Anwendung Triebwagen: Landwirtschaft: Alle leittechnischen Systeme sind über CAN-Bus und Profibus redundant vernetzt. QSS 2000 Qualitätssicherung in der Sauenhaltung Dialog Agrartechnik GmbH Quelle: http://www.qss2000.de Quelle: http://www.geranova.de/lmarchiv/et2000.html 05.012.37 05 / Teil D / Seite 17 05.012.38 CAN - Bus Anwendung CAN - Bus Verpackungsmaschine Aufgabe: Verpackung von Textilien (z.B. Strumpfhosen, Strümpfe und Söckchen) in Faltschachteln. Quelle: http://www.qss2000.de 05.012.39 FRABA Sensorsysteme GmbH Schanzenstraße 35 51063 Köln CAN - Bus Winkelcodierer mit CAN Bus 05.012.40 CAN - Bus Winkelcodierer mit CAN Bus Zeitdauer 'Lesen des Maßstabs' bis 'Daten auf dem Bus' 10ms. 16 Bit Microcontroller 80166 IP65 wartungsfrei FRABA Sensorsysteme GmbH Schanzenstraße 35 51063 Köln 05.012.41 05 / Teil D / Seite 18 FRABA Sensorsysteme GmbH Schanzenstraße 35 51063 Köln 05.012.42 CAN - Bus Einsatz in Nutzfahrzeugen CAN - Bus Netzstruktur CAN arbeitet mit einer Busstruktur: Knoten 1 Verknüpfung der Steuerungen mit dem CAN-Bus. Knoten 2 Knoten 3 Knoten N Buskabel Anzahl Knoten: theor. unbegrenzt, typisch bis 64; Buskabel: geschirmte, verdrillte 2-Draht-Leitung, andere Lösungen möglich. Quelle: Faun 05.012.04 05.012.43 CAN - Bus Buseigenschaften CAN - Bus Nachrichtenorientiertes Protokoll Sendende Knoten übertragen in jedem Datentelegramm auf den Bus: serielle Datenübertragung nach RS 485; Übertragungsrate 100 kBaud/800m - 1 MBaud/40m; Datenaustausch ohne Sender-/Empfängeradresse; - eine Kennzeichnung zur Beschreibung des Datentyps; Anzahl der Knoten theoretisch unbegrenzt; - die Daten selbst. typisch: Anwendungen mit bis zu 64 Knoten; Sie senden weder ihre Absenderadresse noch eine Empfängeradresse. Knoten können jederzeit auf den Bus ausgeben; spezielles Protokoll verhindert Kollisionen; Vergleich: Ausstrahlung von Fernseh- und Rundfunksendungen. 05.012.05 05 / Teil D / Seite 19 05.012.06 CAN - Bus Nachrichtenorientiertes Protokoll CAN - Bus Nachrichtenorientiertes Protokoll Beispiele für Sender: Drehzahlsensoren Die Datenkennzeichnungen werden zur Übertragung durch eindeutige Identifier (Binärzahlen) ersetzt. Ort Datenkennzeichnung Datum linkes Vorderrad "Rad 1" 1061 rechtes Vorderrad "Rad 2" 1065 linkes Hinterrad "Rad 3" 1060 rechtes Hinterrad "Rad 4" 1064 Kurbelwelle "Motordrehzahl" 3417 Identifier sind 11 Bit (CAN 2.0A) bzw. 29 Bit (CAN 2.0B) lang. Zuordung durch Systementwickler (nicht genormt), z.B.: Datenkennzeichnung Identifier (Bsp.) "Rad 1" "Rad 2" "Rad 3" "Rad 4" "Motordrehzahl" 000.0001.0000 000.0000.1111 000.0001.0010 000.0001.0001 000.1000.0000 05.012.08 05.012.07 CAN - Bus Nachrichtenorientiertes Protokoll CAN - Bus Nachrichtenorientiertes Protokoll Sensor am rechten Vorderrad sendet sein Telegramm: Die Knoten prüfen über den Identifier, ob sie die Daten gebrauchen können. Falls nicht, werden sie ignoriert. Sensor Rad vl Sensor Rad vr Sensor Rad hl Sensor Kurbelwelle Sensor Rad vl Buskabel Steuerg. ABS Tachometer Sensor Rad vr Sensor Rad hl Sensor Kurbelwelle Buskabel Drehzahlm. Steuerg. ABS Tachometer Drehzahlm. Telegramm akzeptiert ignoriert Telegramm erreicht alle Knoten. 05.012.09 05 / Teil D / Seite 20 05.012.10 CAN - Bus Nachrichtenorientiertes Protokoll CAN - Bus Nachrichtenorientiertes Protokoll Die Knoten prüfen über den Identifier, ob sie die Daten gebrauchen können. Falls nicht, werden sie ignoriert. Sensor an der Kurbelwelle sendet sein Telegramm: Sensor Rad vl Sensor Rad vr Sensor Rad hl Sensor Kurbelwelle Sensor Rad vl Buskabel Steuerg. ABS Tachometer Sensor Rad vr Sensor Kurbelwelle Sensor Rad hl Buskabel Drehzahlm. Steuerg. ABS Tachometer Drehzahlm. Telegramm akzeptiert ignoriert Telegramm erreicht alle Knoten. 05.012.11 05.012.12 CAN - Bus CSMA/CA CAN - Bus CSMA/CA CSMA/CA - Regeln Busanschaltung (stark vereinfacht) Kein Master, alle Knoten sind gleichberechtigt. Knoten 1 Ein Knoten darf senden, falls der Bus frei ist (CS = Carrier Sense). Knoten 2 +5V Sen+5V der E E Knoten 3 Knoten N +5V E Es kommt vor, daß mehrere Knoten gleichzeitig mit dem Startbit beginnen (MA = Multiple Access). +5V -5V E R Jeder Knoten muss seine Sendung sofort unterbrechen, wenn er feststellt, dass ein anderer Knoten gerade ein wichtigeres Telegramm senden will. (CA = Collision Avoidance) 05.012.13 0V Buskabel 2-aderig Im Ruhezustand führt das Buskabel eine Spannung von -5V = logisch '1'. 05 / Teil D / Seite 21 05.012.14 CAN - Bus CSMA/CA CAN - Bus CSMA/CA Funktion des Senders (stark vereinfacht) Knoten i +5V Es gibt zwei Buszustände: rezessiv und dominant. Knoten i Knoten 1 +5V Sender E +5V Sen+5V der E E E Empfänger Schalter geschlossen: sendet logisch '0' 0V Anmerkung: Der Empfänger arbeitet parallel und unabhängig zum Sender. 05.012.15 +5V E +5V Sen+5V der E E Knoten 3 R Buskabel 2-aderig Buskabel 2-aderig Pull-Up Widerstand 05.012.16 Beginnen mehrere Knoten gleichzeitig mit dem Senden des Startbits, so erhält der Knoten mit der wichtigsten Nachricht das alleinige Senderecht. +5V -5V E Vereinbarung: Je wichtiger die Nachricht, desto (numerisch) kleiner der Identifier. R Empfänger E Buszuteilung Knoten N +5V E +5V -5V CAN - Bus CSMA/CA Es gibt zwei Buszustände: rezessiv und dominant. Knoten 2 Knoten N rezessiv: Spannungsdifferenz -5V = logisch '1'. Alle Knoten senden logisch '1'. CAN - Bus CSMA/CA 0V Knoten 3 Empfänger Schalter offen: sendet logisch '1' Knoten 1 Knoten 2 Pull-Up Widerstand dominant: Spannungsdifferenz 5V = logisch '0'. Mind. ein Knoten sendet logisch '0'. Zur Klärung der Rechte überträgt jeder sendende Knoten als erstes nach dem Startbit den Identifier seiner Nachricht. 05.012.17 05 / Teil D / Seite 22 05.012.18 CAN - Bus CSMA/CA CAN - Bus CSMA/CA Beispiel: Paralleler Buszugriff durch Sensor 'Rad vr' und Sensor 'Kurbelwelle': Rad vl Rad vr +5V E Rad hl +5V Kurbelwelle +5V E Rad vl +5V -5V E 1. Schritt: Beide senden das Startbit (log. '0'): Rad vr +5V E E Rad hl +5V Kurbelwelle +5V E +5V -5V E R E R +5V Buskabel 2-aderig 0V Buskabel 2-aderig 0V Identifier Sensor 'Rad vr': 000.0000.1111 Identifier Sensor 'Kurbelwelle': 000.1000.0000 Beide sehen auf dem Bus +5V = log. '0'. 05.012.19 05.012.20 CAN - Bus CSMA/CA CAN - Bus CSMA/CA 2. Schritt: Beide senden das höchstwertige Bit ihres Identifiers: Rad vl Rad vr +5V E Rad hl +5V Kurbelwelle +5V E E 3. Schritt: Beide senden das zweite Bit ihres Identifiers: Rad vl +5V -5V Rad vr +5V E E Rad hl +5V E E R +5V -5V E R +5V 0V Kurbelwelle +5V +5V Buskabel 2-aderig 0V Sensor 'Rad vr': sendet log. '0' und sieht log. '0' Sensor 'Kurbelwelle': sendet log. '0' und sieht log. '0' Buskabel 2-aderig Sensor 'Rad vr': sendet log. '0' und sieht log. '0' Sensor 'Kurbelwelle': sendet log. '0' und sieht log. '0' 05.012.21 05 / Teil D / Seite 23 05.012.22 CAN - Bus CSMA/CA CAN - Bus CSMA/CA 4. Schritt: Beide senden das dritte Bit ihres Identifiers: 5. Schritt: Beide senden das vierte Bit ihres Identifiers: Rad vl Rad vr +5V E Rad hl +5V Kurbelwelle +5V E Rad vl +5V -5V E Rad vr +5V E E Rad hl +5V E '0' E R 0V Sensor 'Rad vr': sendet log. '0' und sieht log. '0' Sensor 'Kurbelwelle': sendet log. '0' und sieht log. '0' 05.012.23 Bedeutung der Abkürzungen aus Bild 05.012.25 stets '1' RTR 3 Stopbits (INT) DLC '1' 2 bit stets '0' Buskabel 2-aderig CAN - Bus Telegrammformat Standard CAN (Version 2.0A) Start- RTR bit '1' Sensor 'Rad vr': sendet log. '0' und sieht log. '0' Sensor 'Kurbelwelle': sendet log. '1', sieht aber log. '0' und verliert das Senderecht. 05.012.24 CAN - Bus Telegrammformat '0' E +5V Buskabel 2-aderig Bus 11 bit 4 bit 0-64 bit ruht Identifier DLC Daten +5V -5V R +5V 0V Kurbelwelle +5V Bus 15 bit 1 bit 7 Stop- ruht CRC ACK bits (EOF) Bedeutung d. Abkürzungen siehe Bild 05.012.26 CRC ACK EOF INT 05.012.25 05 / Teil D / Seite 24 Remote Transmisson Request (Sendeaufforderung) Data Length Code (Code der Länge des Datenfeldes) Cyclic Redundancy Check Acknowledge (Empfangsbestätigung) End of Frame (Telegrammende) Intermission (Pause) 05.012.26 CAN - Bus Remote Transmisson Request CAN - Bus Remote Transmisson Request Regelfall: Knoten sendet periodisch mit Identifier 000.0000.1111 Daten über Drehzahl des Rades vr. Sensor Rad vl Sensor Rad vr Mit RTR können andere Knoten zusätzliche Datenübertragungen anfordern. Sensor Kurbelwelle Sensor Rad hl Sensor Rad vl Buskabel Steuerg. ABS Tachometer Drehzahlm. Steuerg. ABS Tachometer Drehzahlm. Drehzahlm. 05.012.28 Sensor Kurbelwelle Sensor sendet Daten mit Identifier = 000.0000.1111 und RTR = 0, sobald der Bus frei wird. Sensor Rad vl Buskabel Steuerg. ABS Tachometer CAN - Bus Remote Transmisson Request Knoten prüfen über den Identifier, ob sie die Daten liefern können. Falls nicht, wird das Telegramm ignoriert. Sensor Rad hl Sensor Kurbelwelle sendet: Identifier = 000.0000.1111 RTR = 1 CAN - Bus Remote Transmisson Request Sensor Rad vr Sensor Rad hl Buskabel 05.012.27 Sensor Rad vl Sensor Rad vr Sensor Rad vr Sensor Rad hl Sensor Kurbelwelle Buskabel Telegramm akzeptiert ignoriert Steuerg. ABS 05.012.29 05 / Teil D / Seite 25 Tachometer Drehzahlm. 05.012.30 CAN - Bus Data Length Code CAN - Bus Data Length Code DLC: Beschreibung der Länge des Datenfeldes DLC: Beschreibung der Länge des Datenfeldes Bus ruht 11 bit Identifier 4 bit 0-64 bit DLC Daten stets '1' Anzahl Bytes im Datenfeld 3 Stopbits (INT) 0 1 2 3 4 5 6 7 8 '1' '0' Startbit RTR 2 bit stets '0' 15 bit CRC 1 bit ACK 7 Stopbits (EOF) DLC Bus ruht 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 1 0 0 0 1 1 0 0 1 1 0 0 1 0 1 0 1 0 1 0 05.012.31 05.012.32 CAN - Bus Acknowledge CAN - Bus Acknowledge ACK: Empfangsbestätigung Bus ruht 11 bit Identifier 4 bit DLC Der Sender sendet für das ACK-Bit eine '1': 0-64 bit Daten stets '1' 3 Stopbits (INT) Bus ruht '1' 11 bit Identifier 4 bit DLC 0-64 bit Daten stets '1' 3 Stopbits (INT) '1' '0' '0' Startbit RTR 2 bit stets '0' 15 bit CRC 1 bit ACK 7 Stopbits (EOF) Bus ruht Startbit 05.012.33 05 / Teil D / Seite 26 RTR 2 bit stets '0' 15 bit CRC 1 bit ACK 7 Stopbits (EOF) Bus ruht 05.012.34 CAN - Bus Acknowledge CAN - Bus Praktisch nutzbare Buslängen Gleichzeitig sendet jeder Empfänger bei erfolgreichem Empfang ein ACK-Bit '0' (dominant). Bus ruht 11 bit Identifier 4 bit DLC 0-64 bit Daten stets '1' Bitrate [kBits/s] 3 Stopbits (INT) '1' '0' Startbit RTR 2 bit stets '0' 15 bit CRC 1 bit ACK 7 Stopbits (EOF) Bus ruht 05.012.35 CAN - Bus Zusammenfassung alle Knoten gleichberechtigt, keine Master/Slaves; Zahl und Art der Ein- und Ausgänge variabel; Ein- und Ausgänge digital (ein/aus) oder analog; nachrichtenorientiertes Protokoll; Buszugriff mittels CSMA/CA, echtzeitfähig; zweiaderiges Buskabel, keine LWL; maximale Busausdehnung 40m bei 1MBaud; hohe Fehlersicherheit; ISO-Norm, herstellerunabhängig. 05.012.36 05 / Teil D / Seite 27 Bitzeit [µs] max. Buslänge [m] 1000 1,00 30 800 1,25 50 500 2,00 100 250 4,00 250 125 8,00 500 62,5 16,00 1000 20 50,00 2500 05.012.47