next up previous contents
Next: 2.3 Infrarot-Transceiver Up: 2. Grundlagen Previous: 2.1 Der Mikroroboter Khepera

  
2.2 Das Bussystem CAN

Zum Aufbau des Kommunikationsnetzes wird das Feldbussystem CAN2.1 [Ets94] verwendet. Von der Firma Bosch ursprünglich für den Automobilbereich entwickelt, hat dieses System mittlerweile eine weite Verbreitung gefunden. Es besitzt einige Eigenschaften, die für das aufzubauende Netzwerk von Vorteil sind. Diese sind unter anderem:

In einem CAN-Bussystem sind generell alle Teilnehmer gleichberechtigt. Im Konfliktfall, d.h. wenn zwei oder mehr Teilnehmer gleichzeitig senden wollen, wird während des Sendens entschieden, welche Nachricht höher priorisiert ist und somit weitersenden darf. Alle anderen brechen ihre Sendung dann ab. Dies wird folgendermaßen realisiert:

Für die logischen Zustände 0 und 1 werden zwei verschiedene Spannungspegel benutzt, diese werden unterschieden nach dominanten und rezessiven Pegeln. Dabei wird ein dominanter Pegel einen rezessiven immer überschreiben. Jeder Teilnehmer, der etwas auf den Bus schreibt, liest auch gleichzeitig. Wenn er dabei feststellt, daß er einen rezessiven Pegel schreibt und einen dominanten liest, weiß er, daß gleichzeitig jemand anders eine höher priorisierte Nachricht verschickt und bricht die eigene Sendung ab. Im anderen Fall, wenn er einen dominanten Pegel sendet und nur einen rezessiven Pegel empfängt, muß der Bus defekt sein, denn ein rezessiver Pegel kann einen dominanten nicht überschreiben - außer eben im Fehlerfall. Der Busteilnehmer reagiert darauf mit einem Fehlertelegramm und versucht es nach einiger Zeit erneut.


  
Abbildung: Aufbau eines CAN-Telegramms (aus [Mot97])
Aufbau eines CAN-Telegramms

Im CAN-Bussystem erfolgt eine Identifizierung aller Nachrichten durch einen Identifier2.3, in der hier verwendeten CAN-Spezifikation ist dieser 11 Bit lang.

Der Identifier wird am Anfang jedes Telegramms zur Busarbitrierung genutzt. Dabei hat ein dominantes Bit Priorität, es setzt sich zerstörungsfrei durch.

Das Vorgehen bei einer eingehenden Nachricht ist folgendermaßen:

Von den ersten 8 Bit des Identifiers werden die Bits, die im Acceptance Mask Register auf null gesetzt sind, mit denen im Acceptance Code Register verglichen. Ist der Vergleich positiv, wird der Prozessor geweckt und mit der Verarbeitung begonnen, ansonsten verbleibt er im Sleep-Mode.

Die Abbildungen 2.2 bis 2.4 verdeutlichen, wie sich eine CAN-Zelle beim Eingang eines Telegramms verhält.


  
Abbildung 2.2: Allgemeiner Ablauf
Allgemeiner Ablauf


  
Abbildung 2.3: Beispiel einer relevanten Nachricht
Beispiel einer relevanten Nachricht


  
Abbildung 2.4: Beispiel einer irrelevanten Nachricht
Beispiel einer irrelevanten Nachricht

Nach dem Identifier kommt ein Feld mit der Anzahl der versandten Bytes - es können 0 bis 8 Bytes pro Telegramm übertragen werden. Diese eigentlichen Informationsbytes folgen direkt anschließend. In Abbildung 2.1 ist ein komplettes CAN-Telegramm dargestellt.

Ein CAN-Telegramm enthält weiterhin auch eine CRC-Prüfsumme. Wenn ein CAN-Busteilnehmer ein Telegramm erhält, so bildet er diese Prüfsumme und vergleicht sie mit der empfangenen. Stimmen sie überein, so war die Übertragung mit recht großer Sicherheit korrekt und es wird ein Acknowledge gesendet.


 
Abbildung 2.5: Der Acknowledge-Slot. Oben das gesendete Telegramm, unten das empfangene (inklusive Acknowledge)
Der Acknowledge-Slot

Erst jetzt weiß auch der sendende Teilnehmer, daß das Telegramm korrekt empfangen wurde. Solange dieses Acknowledge nicht empfangen wird, wiederholt der Sender das Telegramm.

CAN definiert auch die Schnittstelle zum Bus. Dazu sind vier Leitungen spezifiziert: 

TX0
Sendesignal, invertierbar
TX1
wahlweise Sendesignal oder Bustakt, invertierbar
RX0
Signaleingang, abschaltbar
RX1
inverser Signaleingang, abschaltbar

Die innere Beschaltung dieser definierten Anschlüsse ist in Abbildung 2.6 erkennbar. Wie die Aus- und Eingänge sich verhalten sollen, kann per Software eingestellt werden.


  
Abbildung 2.6: Die Aus- und Eingangsleitungen einer CAN-Zelle
Die Aus- und Eingangsleitungen einer CAN-Zelle


next up previous contents
Next: 2.3 Infrarot-Transceiver Up: 2. Grundlagen Previous: 2.1 Der Mikroroboter Khepera
Christopher Odenbach
1999-06-01