Zum Inhalt springen

Controller Area Network

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 13. März 2003 um 20:39 Uhr durch Frakyjoe (Diskussion | Beiträge) (corr. Objectidentifierbits in Frameaufbau). Sie kann sich erheblich von der aktuellen Version unterscheiden.

CAN-Bus

(Controller Area Network) gehört zu den Feldbussen.

Serielles Bussystem, das von BOSCH für die KFZ-Automatisierung entwickelt wurde, um die Kabelbäume (bis zu 2km) zu reduzieren und dadurch Gewicht zu sparen.

Es können beliebige Geräte an den Bus angeschaltet werden, wenn sie die Spezifikationen erfüllen. Bisher existieren 2 Normen:

CAN20 A (11bit Objectidentifier) (--> theor. 2048 Teilnehmer)

CAN20 B (27bit Objectidentifier) (--> theor. 134217728 Teilnehmer)


Funktion

Übertragungs Verfahren

Der CAN-Bus arbeitet nach dem CSMA- (Carrier Sense Multiple Access) Verfahren (vgl. Ethernet). Die Daten sind [[[NRZ]]] -L codiert. Weiters wird zur Datensicherung Bit-stuffing verwendet (siehe unten).

Objectidentifier

Der Objectidentifier kennzeichnet die Nachricht,und ist keine Geräteadresse! Das heißt, das zum Beispiel in einem Messsystem einer Temperatur, Spannung, Drehzahl ein eigener Identifier zugewiesen. Dieses System ermögicht es jedem Teilnehmer, die für sich relevanten Daten anhand des Identifiers vom Bus zu nehmen, oder nicht.

Gleichzeitig dient der OI auch zur Festlegung der Sendeberechtigung bei gleichzeitiger Übertragung (Kollision) durch den Prozess der sog. bitweisen Arbitrierung.

Die Übertragung der Daten erfolgt so, dass ein Bit, je nach Zustand, entweder dominant oder rezessiv auf den Busleitungen wirkt. Ein dominantes überschreibt dabei ein rezessives.

Arbitrierung der Daten, Priorität

Gleichzeitig mit dem Senden lauscht jeder Sender auch auf den Bus. Senden nun 2 Teilnehmer gleichzeitig, so überschreibt das erste dominante Bit eines der beiden, das entsprechend rezessive des anderen, welcher das erkennt und seine Übertragung beendet, damit der andere seine Daten übertragen kann. (=bitweise Arbitrierung)

Durch dieses Verfahren ist auch eine Hierarchie der Nachrichten untereinander gegeben. Die Nachricht mit dem höchsten Identifier darf "immer" übertragen werden. (Was von vorteil ist, wenn z.B. das ABS auslösen soll...)

Sicherung der Daten

Der CAN-Bus erreicht Bitfehlerraten (BER Bit Error Rate) in der Größenordnung von 0.00003. Zum einen verwendet man eine CRC (Cyclic Redundency Check = Prüfsumme) von 15Bit und zum anderen "Bit-stuffing". Dabei wird nach 5 rezessiven bits ein dominantes bit eingefügt, um die Konsistenz zu wahren, und keinen Fehler vorzutäuschen.

Im Falle einer von einem Empfänger erkannten Kollision sendet dieser einen Error-Frame aus, und veranlasst so alle Teilnehmer am Bus, den Frame zu verwerfen. Der Sender hat die Möglichkeit, sofort nach dem Errorframe seine Daten zu wiederholen. (im Standard werden noch aktive und passive Error-Frames unterschieden)

Frame Aufbau

Ein Frame enthält:

  • Start of Frame (SOF) = ein dominantes bit
  • Arbitrierungsfeld (Objectidenttifier [OI]) = 12 (28) bit (11 [27] bit + 1 RTR [=Remote Transmission Request] sh. unten)
  • Kontrollfeld (CTRL) = 6 bit (2 bit reserviert + 4 bit Länge der Daten, entfällt bei Remote-Frame sh. unten)
  • Datenfeld (DATA) = 0-64 bit
  • Prüfsumme (CRC) = 16 bit (15 bit CRC + 1 bit dom. = CRC-Delimiter)
  • Bestätigung (ACK, Acknowledge) = 2 bit (1 bit rez. = ACK-Slot + 1 bit dom. = ACK-Delimiter)
  • End of Frame (EOF) = 7 bit rez.
  • Intermission = 3 bit (=min. Anzahl der Bits die aufeinanderfolgende Botschaften trennt)

danach ist der Bus wieder im Idle-Modus und der nächste darf senden.

RTR (Remote Transmission Request)

Ein gesetztes RTR-Bit kennzeichnet einen Remote-Frame (rezessiv). Mit Hilfe eines Remoteframe, kann ein Teilnehmer einen anderen auffordern, seine Daten zu senden.

Das CTRL-Feld wird ignoriert. Datenlänge = 0. Der Objectidentifier ist derselbe, wie der der angeforderten Nachricht.

ACK-Slot

Der Acknowledge-Slot wird verwendet, um den Empfang zu quittieren. Jeder Empfänger, der keinen Fehler feststellen konnte, setzt einen dominanten Pegel an der Stelle des ACK-Slots.


weitere Quellen

Für weitere Informationen sei hier auf den Standard verwiesen, der im Internet relativ leicht auffindbar ist.