05 / Teil D / Seite 17. 05.012.01. CAN - Bus. Controller Area Network.
Entwicklungsziel: Vernetzung der elektrischen/elektronischen Kom- ponenten
eines ...
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