Fachbereich DCSM der Hochschule Rhein-Main Fachseminar Prof. Dr.-Ing Karl-Otto Linn Wintersemester 2009/2010 Ausarbeitung CAN-Bus Eingereicht von: Mark HÖCHSMANN 356575 am 01.03.2010 Adolfstraße 8 65185 WIESBADEN Deutschland mark.hoechsmann@web.de
Inhaltsverzeichnis 1. Feldbussysteme... 2 1.1. Grundlagen... 2 1.2. Einsatzgebiete... 2 1.2.1. Automatisierungstechnik... 2 1.2.2. Gebäudetechnik... 3 1.2.3. Mobile Systeme... 3 1.2.4. Maschineninterne Systeme... 4 2. CAN-Bus... 4 2.1. Entwicklung... 4 2.2. Anforderung... 5 2.2.1. Netzwerk... 5 2.2.2. Kommunikationsstruktur... 5 2.2.3. Datenintegrität... 5 2.3. Umsetzung... 6 2.3.1. Grundlagen... 6 2.3.2. Physikalische Vernetzung... 6 2.3.3. CAN-Highspeed... 6 2.3.4. CAN-Lowspeed... 7 2.3.5. Vorteile... 8 2.3.6. Aufbau einer CAN-Nachricht... 8 2.3.7. Buslogik... 9 2.3.8. Prinzip des Buszugriffs... 9 2.3.9. Prinzip der Arbitrierung... 9 2.4. Fehlererkennung und -behandlung... 11 2.4.1. Bitmonitoring... 11 2.4.2. Bitstuffing... 11 2.4.3. Form Check... 11 2.4.4. Cyclic Redundancy Check... 11 2.4.5. ACK Check... 11 2.4.6. Fehlerbehandlung... 12 2.4.7. Fehlerverfolgung... 12 3. Quellenverzeichnis... 14 1
1. Feldbussysteme 1.1. Grundlagen Feldbussysteme entstanden um das Jahr 1980. Ein Feldbussystem besteht aus Aktoren und Sensoren, die mit einem Steuergerät verbunden sind. Um die einzelnen Elemente besser Erklären zu können, beziehe ich mich hier auf eine automatische Rollladensteuerung. Sensoren sind, wie der Name schon sagt, Bausteine die zum Beispiel Helligkeit messen. Diese Werte werden dann an das Steuergerät übermittelt, das die Daten analysiert und bei Bedarf Befehle an den Rollladenmotor (Aktor) sendet um den Rollladen zu öffnen oder zu schließen. Diese Feldbussysteme sind nachrichtenbasierend, d.h. sie übertragen die Daten digital, und lösten somit die damaligen analogen Systeme nach und nach ab. 1.2. Einsatzgebiete Heutzutage werden Feldbussysteme in vielen Bereichen in der Industrie eingesetzt. Nachfolgend werden einige wichtige Einsatzgebiete beschrieben. 1.2.1. Automatisierungstechnik In der Automatisierungstechnik sind Feldbussysteme nicht mehr wegzudenken. Sie dienen zum Beispiel der Steuerung von Fließbändern oder auch verschiedener Montagegeräte. 2
1.2.2. Gebäudetechnik Auch in der Gebäudetechnik kommen diese Systeme zum Einsatz. Sie dienen der Steuerung von fast allen, in großen Gebäuden vorkommenden, Anlagen wie Klimaanlage, Heizung, Rollläden, Alarmanlagen, Beleuchtung oder auch der Stromversorgung. Es können auch sehr komplexe Anlagen wie eine Tiefensonde gesteuert werden. 1.2.3. Mobile Systeme Mobile Systeme sind meist in Kraftfahrzeugen zu finden. Hier übernehmen sie die Steuerung von sicherheitsrelevanten Systemen. Dazu gehören ABS-Steuerung, Airbag-Steuerung, ESP, Motor- und Getriebesteuerung und noch viele Andere. Es werden aber auch Systeme die zur Verbesserung des Komforts dienen gesteuert wie Klimaanlage, Fensterheber, Heizung und Entertainmentsystem des Fahrzeugs. 3
1.2.4. Maschineninterne Systeme Die Verbreitung dieser Art von Feldbussystemen ist nicht sehr bekannt. Sie kommt bei industrieller Fertigung von Stoffen in computergesteuerten Webstühlen oder auch in Robotern vor. Teilweise kommen diese Systeme auch in Verbindung mit den Systemen aus der Automatisierungstechnik zum Einsatz. 2. CAN-Bus 2.1. Entwicklung 1983 begann die Firma Bosch mit der Entwicklung des CAN-Busses und stellte diesen 1985 erstmals zusammen mit der Firma Intel vor. 1991 wurde der CAN-Bus das erste Mal serienmäßig in einem Fahrzeug verbaut. Mercedes verbaute den CAN-Bus damals in der S-Klasse und steuerte damit den Motor, das Getriebe und die Armaturen. Seit dem Jahr 2001 wird der CAN-Bus auch in Fahrzeugen der unteren Mittelklasse verbaut. Die Entwicklung des CAN-Busses wurde durch das Aufkommen immer höherer Datenmengen und der Nachfrage nach mehr Sicherheit vorangetrieben. Die Entwicklung ermöglichte es auch die verschiedenen KFZ-internen Systeme miteinander zu vernetzen. Außerdem war es auch möglich den Komfort im Auto durch den CAN-Bus zu erhöhen. 4
2.2. Anforderung 2.2.1. Netzwerk Folgende Anforderungen wurden an das Netzwerk gestellt. Maximale Netzausdehnung von ca. 40 m Teilnehmerzahl zwischen 10 und 32 Teilnetze für verschiedene Funktionsbereiche Bustopologie (in Ausnahmen auch Sterntopologie erlaubt z.b. Zentralverriegelung) Sehr geringen Latenzzeiten zwischen 1 ms und 10 ms für hochpriore Anwendungen 2.2.2. Kommunikationsstruktur Folgende Anforderungen wurden an die Kommunikationsstruktur gestellt. Datenaustausch zwischen Steuergeräten und Peripheriegeräten (Many-to-Many) Jeder darf senden (Kollisionsgefahr) Sehr hohe Nachrichtenanzahl mit sehr kleinen Nachrichten (einige wenige Bytes) Echtzeitfähigkeit 2.2.3. Datenintegrität Folgende Anforderungen wurden an die Datenintegrität gestellt. Übertragungssicherheit bei besonders schweren Bedingungen (Elektromagnetische Störungen, Umwelteinflüsse... ) Schnelle Fehlererkennung (wenige ms) Fehlerkorrekturmaßnahmen 5
2.3. Umsetzung 2.3.1. Grundlagen Jeder Teilnehmer wird als CAN-Knoten bezeichnet, egal welche Rolle er übernimmt. Eine logische 0 wird auch dominantes Bit genannt. Die logische 1 wird rezessives Bit genannt. Die Bits werden durch Spannungsunterschiede auf den beiden Plus-Leitungen des Busses signalisiert. 2.3.2. Physikalische Vernetzung Wie der Name schon vermuten lässt, werden die einzelnen Knoten mit der Bustopolgie miteinander verbunden. Dazu werden drei in sich verdrillte Leitungen benutzt (CAN_high, CAN_low und Ground). Beim CAN_Highspeed werden an jedem Ende der Leitung 120 Ω- Widerstände angebracht um die auftretenden Reflexionen zu minimieren. Beim CAN_low wird direkt bei jedem Teilnehmer terminiert. 2.3.3. CAN-Highspeed Bei Bus-Idle (Leitung frei) liegen auf beiden CAN-Leitungen 2,5 V an. Dies bedeutet einen Spannungsunterschied von 0 V, was eine logische 1 signalisiert. Eine logische 0 liegt bei einem Spannungsunterschied von 2 V an. Dazu wird die Spannung auf der CAN_high-Leitung auf 3,5 V erhöht und die CAN_low-Leitung auf 1,5 V reduziert. Hierbei werden Datenraten von 40 Kbit/s bis zu 1 Mbit/s erreicht. 6
2.3.4. CAN-Lowspeed Bei Bus-Idle (Leitung frei) liegen auf der CAN_low-Leitung 5 V an und auf der CAN_high- Leitung 0 V. Dies ergibt einen Spannungsunterschied von 5 V, was eine logische 1 signalisiert. Eine logische 0 liegt auch hier bei einem Spannungsunterschied von 2 V an. Dazu wird die Spannung auf der CAN_high-Leitung auf 3,6 V erhöht und die CAN_low-Leitung auf 1,4 V reduziert. Hierbei werden Datenraten von 5 Kbit/s bis zu 125 Kbit/s erreicht. Der Vorteil beim CAN-Lowspeed liegt vor allem darin, dass er auch mit nur einer intakten Plus-Leitung funktionsfähig bleibt. 7
2.3.5. Vorteile Durch die Gegensinnigkeit der Pegel bleibt die Spannungsdifferenz der Leitungen auch bei Störungen weitestgehend erhalten, da Störungen meist beide Leitungen betreffen. Fehlerbits können bei falscher Spannungsdifferenz sofort erkannt werden genauso wie der Ausfall eines CAN-Knotens. Beim Ausfall eines CAN-Knotens können die anderen Teilnehmer normal weiterarbeiten. 2.3.6. Aufbau einer CAN-Nachricht SOF - StartofFrame ist immer dominant, also 0 und zeigt den Beginn einer Nachricht an. Dient auch zur Synchronisation. (1 Bit) Identifier gibt an, welchen Inhalt die Nachricht hat bzw. an wen sie gerichtet ist und welche Priorität sie hat (11 Bit) RTR-RemoteTransmissionRequest (1Bit). 0 bedeutet normales Datagramm. 1 bedeutet Request IDE Identifier Bit signalisiert ob es sich um ein Standard- (0) oder ein Extended- Frame (1) handelt (1 Bit) r reserviert (1 Bit) DLC Data Length Code gibt an wie viele Bytes an Nutzdaten enthalten sind (4 Bit) 8
Data Field - Nutzdaten (Bis zu 8 Bytes) CRC enthält die Prüfsumme der Nutzdaten und am Ende ein delimiter Bit (15 Bit) ACK Acknowledge Bit dient zur Bestätigung der empfangenen Daten bzw. zur Fehlermeldung bei falsch empfangenen Daten. Werden vom Sender immer rezessiv gesendet. Das zweite Bit ist ein delimiter (2 Bit) EOF End of Frame signalisiert das Ende der Nachricht mit sieben rezessiven Bits (7 Bit) ITM Intermission gehört nicht zum Frame wird aber immer gesendet (3 Bit) 2.3.7. Buslogik Auf dem Bus wird die Wired-And-Logik gefahren. Das heißt es liegt nur eine logische 1 an, wenn ausnahmslos alle Teilnehmer eine logische 1 senden. Falls auch nur ein Teilnehmer eine logische 0 sendet, liegt auf dem gesamten Bus eine logische 0 an. Darum wird die logische 0 auch dominantes Bit genannt und die logische 1 rezessives Bit. 2.3.8. Prinzip des Buszugriffs Da theoretisch alle Teilnehmer gleichzeitig senden könnten, muss der Zugriff auf den Bus gesteuert werden. Beim CAN-Bus wird die Carrier-Sense-Multiple-Access Collision- Avoidance (CSMA-CA) Methode angewendet um den Buszugriff zu steuern. Das bedeutet, dass nur gesendet werden darf wenn der Bus frei ist. Da bei freiem Bus eine logische 1 anliegt ist es leicht zu erkennen ob ein Teilnehmer gerade sendet oder nicht. Ein Teilnehmer darf allerdings erst senden, nachdem elf Bitzeiten lang eine logische 1 angelegen hat. 2.3.9. Prinzip der Arbitrierung Nun kann es natürlich vorkommen, dass zwei Teilnehmer gleichzeitig anfangen zu senden. Deshalb wird in der Arbitrierungsphase entschieden, welcher der beiden Teilnehmer zuerst 9
senden darf. Senden darf der Teilnehmer, der den niedrigeren Wert im Identifier-Feld, also die höhere Priorität hat. Da in der Arbitrierungsphase auch gleichzeitig am Bus gelauscht wird, kann jeder Teilnehmer erkennen ob im Moment ein anderer Teilnehmer mit höherer Priorität sendet. Hierzu ein Beispiel: Nehmen wir an, dass alle drei Teilnehmer gleichzeitig begonnen haben zu senden. Sender 3 hat die höchste Priorität, müsste also als Sender nach der Arbitrierungsphase als einziger Sender übrig bleiben. Beim Senden des ersten Bits passiert noch nichts. Beim Senden des zweiten Bits erkennt Sender 1, dass die logische 1 die er sendet nicht am Buspegel anliegt, was bedeutet, dass noch jemand sendet der eine höhere Priorität hat. Daraufhin stellt Sender 1 seinen Sendevorgang ein. Beim Senden des dritten Bits stell auch Sender 2 fest, dass noch jemand mit höherer Priorität sendet und stellt seinen Sendevorgang ebenfalls ein. Nun sendet nur noch Sender 3 und die Arbitrierungsphase wurde erfolgreich beendet. 10
2.4. Fehlererkennung und -behandlung 2.4.1. Bitmonitoring Bitmonitoring wird vom Sender ausgeführt. Hierbei vergleicht der Sender den Sendepegel mit dem am Bus angelegten Pegel. Sollten sich diese Beiden unterscheiden werden Fehlermaßnahmen eingeleitet. Dieses Verfahren wird nicht auf die Felder Identifier und ACK angewendet. 2.4.2. Bitstuffing Bitstuffing wird ebenfalls vom Sender angewendet. Dabei wird nach fünf gleichen Bits ein Stuffbit mit komplementärem Wert eingefügt. Dieses Verfahren dient hauptsächlich der Synchronisation der Teilnehmer. Falls ein beliebiger Teilnehmer sechs Bits gleicher Wertigkeit empfängt, leitet dieser eine Fehlermaßnahme ein. Hierbei muss es sich nicht unbedingt um den adressierten Empfänger handeln. 2.4.3. Form Check Beim Form Check wird, wie der Name vermuten lässt, die Form der Empfangenen Nachricht überprüft. Hierbei wird die Position der beiden Delimiter-Bits und die sieben EOF-Bits überprüft. Bei einem erkannten Fehler werden auch hier Fehlermaßnahmen eingeleitet. 2.4.4. Cyclic Redundancy Check Hierbei wird der empfangene Wert des CRC-Feldes mit dem selbst berechneten Wert des CRCs verglichen. Bei einem Unterschied werden auch wieder Fehlermaßnahmen eingeleitet. Diese Fehlererkennungsmethode wird auch von allen Teilnehmern durchgeführt, unabhängig davon ob sie adressiert wurden oder nicht. 2.4.5. ACK Check Beim ACK Check wird der Buspegel bei ACK mit dem rezessiv gesendeten ACK-Bit verglichen. Wenn nun kein dominanter Pegel anliegt kann das zwei Fehlerursachen haben. Entweder es gibt keine Empfänger, oder alle Teilnehmer haben die Nachricht falsch empfangen. Auch hier werden wieder Fehlermaßnahmen eingeleitet. 11
2.4.6. Fehlerbehandlung Wenn ein Fehler erkannt wurde, wird automatisch ein Error-Frame gesendet. Dieses beinhaltet sechs dominante Bits, um bewusst einen Bitstuffing-Fehler auszulösen. Nun wissen alle Teilnehmer, dass ein Fehler vorliegt. Daraufhin werden noch acht rezessive Delimiter-Bits gesendet. Wie nach jeder Nachricht, wird auch nach dem Error-Frame noch drei Bits gewartet (ITM) bis wieder gesendet wird, damit wieder elf Bitzeiten lang Ruhe auf dem Bus war. Nun kann die Nachricht wiederholt gesendet werden. 2.4.7. Fehlerverfolgung Da jeder Knoten theoretisch zu jeder Zeit ein Error-Frame senden kann, könnte ein defekter Knoten den ganzen Datenverkehr auf dem Bus lahm legen. Um dies zu verhindern hat jeder Knoten einen Receive-Error-Counter (REC) und einen Transmit-Error-Counter (TEC). Wenn eine Nachricht erfolgreich empfangen oder gesendet wurde, wird der jeweilige Counter um eins gesenkt. Beim Empfangen eines Error-Frames wird der REC um eins erhöht. Beim Senden eines Error-Frames wird der TEC um acht erhöht. Beim Start des Systems befindet sich jeder Knoten im Zustand Error-Active (Normalzustand). Wenn beide Counter einen höheren Wert als 127 haben wird der Zustand des Knotens in Error-Passive geändert, was folgenden Auswirkungen hat: dieser Knoten darf die Error-Frames nur noch rezessiv senden und beim senden zwei aufeinanderfolgenden Nachrichten muss er eine Zwangspause von 8 zusätzlichen Bits abwarten. 12
Bei einem Wert von über 255 des TEC wechselt der Knoten in den Zustand Bus-Off. Somit ist dieser Knoten nicht mehr aktiv im System beteiligt und wird nicht mehr am Datenverkehr teilnehmen. Er kann nur durch einen Hardreset wieder in den Zustand Error-Active gebracht werden. 13
3. Quellenverzeichnis Etschberger, Konrad 2000: Controller-Area-Network. 2. völlig überarbeitete Ausgabe, München (u.a.) Vektor Informatik GmbH 2006: ControllerAreaNetwork (CAN). http://www.controllerareanetwork.de/. [04.01.2010] Vektor Informatik GmbH 2006: Einführung in CAN. http://www.vector-elearning.com/vl_einfuehrungcan_portal_de.html. [04.01.2010] ME-Meßsysteme GmbH: CAN Bus Grundlagen. http://www.me-systeme.de/canbus.html. [04.01.2010] GSI Helmholtzzentrum für Schwerionenforschung GmbH: CAN. http://www.gsi.de/informationen/wti/ee/kontrollsysteme/bus_can.html. [04.01.2010] 14