die datenschleuder. - Chaosradio - CCC
die datenschleuder. - Chaosradio - CCC
die datenschleuder. - Chaosradio - CCC
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
<strong>die</strong> <strong>datenschleuder</strong><br />
TANK AN G-G-G-GROSSHIRN, TANK AN GROSSHIRN<br />
in Abhängigkeit der Busgeschwindigkeit. Bei 1 MBit/s<br />
ergeben sich maximal 30 m, wohingegen man bei 40<br />
kBit/s Buslängen von bis zu 1 km erreichen kann. Allgemein<br />
sagt <strong>die</strong> Worst-Case Design Regel, dass Buslänge<br />
x Bitrate < 40m x 1Mbit/s sein muss. Auch <strong>die</strong><br />
Länge der Stichleitungen ist durch <strong>die</strong> Bitrate begrenzt.<br />
So ergibt sich für den High Speed CAN eine maximale<br />
Länge von 5 Metern. Die Anzahl der Teilnehmer<br />
ist durch den Standard nicht begrenzt. Allerdings<br />
kann man mit den üblichen Leitungstreibern maximal<br />
32 Teilnehmer versorgen. Mit teurerer Hardware können<br />
derzeit bis zu 128 Teilnehmer an einem Bus betrieben<br />
werden.<br />
Der Buszugriff geschieht im CSMA/CD+CR Verfahren.<br />
Jeder Knoten darf, wann immer er will, senden (Multiple<br />
Access), sobald er eine Pause auf dem Bus entdeckt<br />
(Carrier Sense). Wenn zur gleichen Zeit ein zweiter<br />
Knoten eine Nachricht senden möchte, so wird<br />
das erkannt (Collission Detection). Im Gegensatz zum<br />
bekannten Ethernet kommt es dabei allerdings<br />
zu einer nicht destruktiven Collision<br />
Resolution. Das bedeutet, dass sich <strong>die</strong> Nachricht<br />
mit der höheren Priorität durchsetzt<br />
und der Sender der anderen Nachricht sofort<br />
zum Empfänger wird. Grundlegend für <strong>die</strong>-<br />
sen Mechanismus ist eine spezielle Leitungsko<strong>die</strong>rung.<br />
Im Prinzip ist es eine Non-Returnto-Zero<br />
(NRZ) Ko<strong>die</strong>rung. Wenn allerdings<br />
ein Knoten eine 1 und ein anderer eine 0<br />
schreibt, dann liegt auf dem Bus eine 0. Man<br />
sagt, dass <strong>die</strong> 1 rezessiv und <strong>die</strong> 0 dominant<br />
ist. Im Fall einer Kollision erkennt einer der<br />
Sender, dass er überschrieben wird, indem er<br />
während der sog. Arbitrierungsphase beim<br />
Schreiben jedes Bit gleichzeitig liest und vergleicht.<br />
Der andere Sender bemerkt <strong>die</strong> Kollision<br />
nicht und sendet weiter, so dass sich<br />
seine Nachricht durchsetzt. Die Arbitrierungsphase<br />
geht über den kompletten Identifier,<br />
so dass Nachrichten mit kleinen Identifiern<br />
hohe Priorität haben. Das gleichzeitige<br />
Senden von zwei Nachrichten mit dem selbem<br />
Identifier ist verboten und muss durchs<br />
Systemdesign verhindert werden.<br />
Zur Synchronisation der Busteilnehmer <strong>die</strong>nt<br />
ein einzelnes, dominantes Startbit vor dem<br />
Identifier einer Nachricht. Zusätzlich wird<br />
jeder Flankenwechsel zur weichen Synchronisation<br />
verwendet. Dadurch kann man billige<br />
und ungenaue Quarze verwenden. Um<br />
sicherzustellen, dass genug Flankenwechsel<br />
vorkommen, wird nach fünf gleichen Pegeln<br />
zwangsweise ein Flankenwechsel eingebaut<br />
(Bit Stuffing Regel). Das zusätzliche Bit <strong>die</strong>nt<br />
nur der Synchronisation und enthält keinerlei<br />
Informationenen.<br />
Im CAN 2.0A Frame folgen dem Identifier<br />
sieben Control Bits. Das erste davon ist<br />
das Remote Transfer Request (RTR) Bit. Eine<br />
� standard frame<br />
extended frame �<br />
#83 / 2004<br />
Nachricht mit gesetztem RTR darf keine<br />
Daten beinhalten. Vielmehr ist <strong>die</strong>se<br />
Nachricht eine Aufforderung, zu antworten.<br />
Die Antwort ist eine normale<br />
CAN Nachricht mit gleicher ID und nicht<br />
gesetztem RTR. Damit kann man z.B.<br />
einen Sensor pollen, falls man keine regelmäßigen<br />
Updates der Meßwerte braucht.<br />
Das RTR Bit gilt als gesetzt, wenn es den<br />
Wert 1 hat. Da <strong>die</strong> Arbitrierungsphase<br />
das RTR Bit einschließt, wird ein Request<br />
von der Antwort überschrieben, falls beide<br />
gleichzeitig gesendet werden. Das<br />
nächste Control Bit <strong>die</strong>nt zur Unterscheidung<br />
des verwendeten Nachrichtenformats.<br />
Dabei steht eine 0 für Standard und<br />
eine 1 für Extended Frames. Die letzten<br />
4 Bits heißen Data Length Code (DLC)<br />
und geben <strong>die</strong> Anzahl der Datenbytes an,<br />
<strong>die</strong> direkt danach folgen. Alle Werte zwischen<br />
0 und 8 sind zugelassen, da auch<br />
eine Nachricht ohne Datenbytes allein<br />
durch ihr Auftauchen auf dem Bus eine<br />
Information sein kann. Eine anschließende<br />
15 Bit CRC Summe <strong>die</strong>nt zur Erkennung<br />
von Übertragungs- und Empfangsfehlern.<br />
Sie erlaubt das Entdecken von<br />
bis zu 6 Einzelfehlern und 15 Bit Burstfehlern.<br />
Die nächsten zwei Bit sind der<br />
Acknowledge Slot. Jeder Knoten, der <strong>die</strong><br />
Nachricht mit korrektem Format empfangen<br />
hat, sendet in <strong>die</strong>ser Zeit ein 0.<br />
Der Sender schreibt ein 1 und erwartet,<br />
<strong>die</strong> 0 zu lesen. Geschieht das nicht,<br />
so hat niemand <strong>die</strong> Nachricht empfangen.<br />
Abgeschlossen wird ein Frame mit<br />
sieben rezessiven Bits, dem End Of Frame<br />
(EOF). Dabei wird absichtlich <strong>die</strong> Bit<br />
Stuffing Regel verletzt, so dass jeder <strong>die</strong>se<br />
Marke eindeutig erkennen kann. Als<br />
letztes kommen noch 3 rezessive Inter<br />
Frame Bits. Sie geben den Teilnehmer<br />
<strong>die</strong> nötige Zeit, um <strong>die</strong> Nachricht in den<br />
Empfangspuffer zu schreiben und sich<br />
auf <strong>die</strong> nächste Nachricht vorzubereiten.<br />
Sollte einem Teilnehmer ausnahmsweise<br />
<strong>die</strong>se Pause nicht ausreichen, so kann<br />
er ein Overload Frame senden. Dieses<br />
besteht aus 6 dominanten Bits und verzögert<br />
den Anfang der nächsten Nachricht.<br />
CAN 2.0B Frames beginnen auch<br />
mit einem Start Bit. Darauf folgen <strong>die</strong> ersten<br />
11 Bit des Identifiers. An der Bitposition,<br />
an der Standard Frames das RTR Bit haben, steht<br />
allerdings immer eine 1. Anschließend kommt das IDE<br />
Bit, welches zur Identifikation des Frame Formates hier<br />
auch den Wert 1 hat. Jetzt folgen <strong>die</strong> letzten 18 Bit des<br />
Identifiers und das RTR Bit. Nach zwei weiteren Bits,<br />
<strong>die</strong> immer den Wert 0 haben, sind Extended Frames<br />
mit Standard Frames wieder identisch.<br />
25<br />
25