CAN-Grundlagen |
Datenübertragung |
|
EVA-Prinzip |
Signale
Ein
analoges Signal kann
jeden Wert zwischen 0% und 100% annehmen. Das Signal ist also stufenlos. Der
Verlauf eines digitalen
Signals ist stufenförmig, es wurde aus dem analogen Signal aufbereitet. Ein
binäres Signal kennt nur die Zustände 0 und 1 bzw.
High und Low.
Zahlensysteme
In der Computertechnik gibt es drei wichtige
Zahlensysteme: das dezimale, das
binäre und das hexadezimale Zahlensystem.
Bit
Ein
Bit
(binary digit) ist die kleinste Informationseinheit (ein
Schaltzustand pro Zeiteinheit) in einem Datenverarbeitungssystem.
In der Elektronik kann diese
Information nur den Wert 0 oder 1 bzw. „ja“ oder „nein“ haben.
Zum Datenaustausch über CAN werden Informationen in einer
festgelegten Weise strukturiert: Die grundlegende Informationseinheit ist das
"Signal". Es kann unterschiedliche Wertebereiche umfassen: Wenigstens ein Bit,
z. B. "Signal=1" bedeutet "Bremse betätigt" bzw. "Signal=0" bedeutet "Bremse
nicht betätigt", aber auch 16 oder mehr Bit, z. B. für "Motordrehmoment" oder
"Fahrzeuggeschwindigkeit". Für jedes Signal muss eine Übersetzung im "Data
Dictionary" dem Wörterbuch des Herstellers, eindeutig festgelegt sein.
Bei zwei Bits gibt es
vier verschiedene Varianten. Jeder Variante kann eine Information zugeordnet
werden, die für alle Steuergeräte verbindlich ist. Als Beispiel dient der
Fensterheber im Türmodul. Kommt das Signal erstes Bit 0 V und zweites Bit
ebenfalls 0V vom Türmodul, so lautet die Information „Fensterheber befindet sich
gerade in Bewegung“.
Mögliche Variante |
2. bit |
1. bit |
Information Fensterheber |
eins |
0 Volt |
0 Volt |
in Bewegung |
zwei |
0 Volt |
5 Volt |
in Ruhe |
drei |
5 Volt |
0 Volt |
im Fangbereich |
vier |
5 Volt |
5 Volt |
in Blockierneigung |
- 1 bit = 2 Möglichkeiten
- 2 bit = 4 Möglichkeiten
- 3 bit = 8 Möglichkeiten
- 4 bit = 16 Möglichkeiten
- 8 bit = 256 Möglichkeiten
- 12 bit = 4096 Möglichkeiten
- ...
Formel:
Anzahl der Varianten = 2n (n = Anzahl der Bits)
Beispiele von
Signal Strukturierungen
1) Ein Motordrehmoment wird auf CAN
mit 12 Bit ($120) dargestellt, d. h. es sind ganze Zahlen von 0 bis 4095
möglich. Die Umrechnung in das reale Drehmoment erfolgt nach der Vorschrift:
Drehmoment = ((CAN-Wert x 0,25) 200) Nm
Damit sind Drehmomente von 200 Nm bis 823,75 Nm bei einer
Auflösung von 0,25 Nm darstellbar.
2) Signal "Aktueller Gang" des
AT-Getriebes ($ 320-4 Bit):
"0" bedeutet Gang wird gerade gewechselt 0 0 0 0 0 0 0 0
0 0 0 0
"1" bedeutet 1. Gang 0 0 0 0 0 0 0 0 0 0 0 1
"2" bedeutet 2. Gang 0 0 0 0 0 0 0 0 0 0 1 0
"3" bedeutet 3. Gang 0 0 0 0 0 0 0 0 0 0 1 1
"4" bedeutet 4. Gang 0 0 0 0 0 0 0 0 0 1 0 0
"8" bedeutet Rückwärtsgang 0 0 0 0 0 0 0 0 1 0 0 0
"9" bedeutet Neutral
Alle anderen darstellbaren Zahlen von "0" bis "2047"
dürfen nicht verwendet werden.
Achtung! Alle Beispiele sind mehr oder weniger frei
erfunden, die Umrechnung ist nicht für alle Fzg-Projekte gleich!
Mehrere Signale werden zu einem "Datenrahmen"
(engl. Frame) zusammengefasst. Ein solcher Frame ist die kleinste Datenpackung,
die über CAN verschickt werden kann. Ein Frame hat mindestens kein, maximal acht
Datenbytes. Im Data Dictionary wird festgelegt, welche Signale der Frame enthält
und wo sie angeordnet sind.
Umwandeln des Binären Codes in eine Dezimalzahl
Codestelle |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
2er Potenz |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
ergibt |
128 |
64 |
32 |
16 |
8 |
4 |
2 |
1 |
Beispielcode: 01001110 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
Für jede Stelle kann eine 1
(gesetzt) oder 0 (nicht gesetzt) vergeben werden |
0 |
64 |
0 |
0 |
8 |
4 |
2 |
0 |
Es werden nur die mit 1
gesetzten Stellen mit dem oben eingetragenen Wert „gefüllt“ |
Der Dezimalwert ist die Summe aller
Positionen Hier ist das: 64 + 8 + 4 + 2 = 78
|
Binär codierte
Dezimalzahl
Für die Umwandlung von größeren Zahlen in Zahlen eines
anderen Zahlensystems ist ein größerer Rechenaufwand erforderlich. Durch eine
codierte Darstellung von Teilen der Zahl lässt sich der Aufwand für die
Umwandlung verringern. Die für die codierte Darstellung benötigte Stellenzahl
ist jedoch größer als bei einer direkten Umwandlung, dafür aber übersichtlicher.
Die Dezimalzahlen können in jeder Stelle 10 verschiedene Ziffern aufweisen. Für
die binäre Darstellung von 10 Elementen sind 4 Stellen erforderlich. Eine binär
codierte Dezimalzahl hat daher je Stelle der Dezimalzahl eine binäre
Vierergruppe.
Beispiel
Umwandlung der Dezimalzahl 316 in eine binär codierte Dezimalzahl
Die binär codierte Dezimalzahl 316 besteht in diesem Fall
aus drei Zahlengruppen zu je vier Stellen.
Es werden im binär codierten Zahlensystem nicht alle
Bitkombinationen ausgenutzt, da das dezimale Zahlensystem ja nur 10
Ziffernzeichen hat. Damit alle Vierergruppen ausgenutzt werden können,
wurden für die, im binär codiertem Dezimalsystem verbotenen Codes, weitere
Zeichen aus dem Alphabet eingeführt.
Die Basis für das
Hexadezimalsystem
ist 16. In einem Byte kann eine zweistellige Hexadezimalzahl codiert werden.
Beispiel: Z (16) = C4 |
Der dezimale Wert ist |
Hexadezimalzahl C 4 |
C * 16 = 192 |
Binär codiert 1100 0001 |
+ 4 * 1 = 4 |
A = 10, B=11, C=12, D=13, E=14, F=15 |
192 + 4 =196 |
Wenn sich in einer Hexadezimalzahl ein
Buchstabe befindet, ist es einfach diese Zahl als Hex-Zahl zu erkennen. Bei
einer Zahl mit Ziffern ist das Erkennen einer Hex-Zahl nicht möglich. Für eine
eindeutige Zuordnung ist die Schreibweise einer Hex-Zahl mit einem h als Postfix
oder $ als Prefix versehen.
Beispiele: $FE = 254 (15*16+14*1); $12
= 18 (1*16+2+1); 22h = 34 (2*16+2*1); ABh =
171(10*16+11*1)
Ein
Byte
ist aus acht Bits
zusammengesetzt. Es lassen sich mit einem Byte
256
unterschiedliche Zeichen darstellen.
-
1 Kilobyte (KB) = 210
Bytes = 1024 Byte
-
1 Megabyte (MB) = 220
Bytes, also 1024 KB (1.048.576 Bytes)
-
1 Gigabyte (GB) = 230
Bytes, also 1024 MB (1.073.741.824 Bytes)
Die
Umrechnung entspricht nicht genau dem Faktor 1000, sondern dem Faktor 1024!
CAN nutzt eine
Non-return-to-zero-Codierung (NRZ).
Dabei wird einem Bit genau ein Zustand des Logikpegels zugeordnet,
low = 0 und high = 1. Mehrere gleiche Bits hintereinander erscheinen
auf dem Bus also als ein entsprechend längerer gleichbleibender
Pegel. Da bei CAN kein Takt übertragen wird, wird
grundsätzlich nach fünf gleichen Bits ein sogenanntes Stopfbit
(Stuffbit) eingefügt. Der Low-Pegel ist auf den CAN-Bus
dominant. Wenn auf den Bus gleichzeitig rezessive High-Pegel und
dominante Low-Pegel gesendet werden, erscheint auf dem Bus der Low-
Pegel.
Identifier und
Arbitrierung
Im CAN-Bus sind alle Teilnehmer
gleichberechtigt, das bedeutet, dass bei einen zufälligen Zugriff auf den Bus
jeder Teilnehmer, sobald der Bus frei ist, senden kann. Es wird ein
nachrichtenorientiertes Protokoll gesendet. Ein Teilnehmer am CAN-Bus hat nicht,
wie sonst üblich, eine Adresse. Zur Identifizierung von Nachrichten wird ihre
Kennung, der Identifier
gesendet. Das heißt, jede Nachricht kann von jedem Teilnehmer empfangen werden.
Da der Zugriff auf den Bus zufällig
erfolgt, kann es vorkommen, dass mehrere Teilnehmer gleichzeitig den
Sendevorgang beginnen.
Es muss entschieden werden,
wer zuerst an der Reihe ist. Das Datenprotokoll mit der höchsten Priorität wird
zuerst gesendet.
So ist das Datenprotokoll vom Steuergerät ABS aus
Sicherheitsgründen wichtiger als das vom Steuergerät Getriebesteuerung. Jedem
Datenprotokoll ist entsprechend seiner Priorität im Statusfeld ein Code
(Identifier), bestehend aus 11 Bits zugeordnet. Dabei hat jedes Bit einen Wert,
dem eine Wertigkeit zugeordnet ist Der Identfier arbeitet auf der
Grundlage der Dominanz des Low-Pegels. Die Teilnehmer senden den Identfier ihrer
Nachricht, bis diese sich in einem Bit unterscheiden. Der Teilnehmer, der in
diesem Augenblick einen rezessiven High-Pegel sendet, bemerkt, dass das von ihm
gesendete Signal nicht dem entspricht, was nun auf dem Bus anliegt. Er beendet
den Sendevorgang, bis der andere Teilnehmer das Übertragen seiner Nachricht
abgeschlossen hat. Derjenige Teilnehmer mit dem kleineren Identifier hat die
höhere Priorität und setzt sich durch und wird übertragen. Teilnehmer mit
Nachrichten niederer Priorität, müssen ihre Botschaften anschließend erneut
senden. Man dient diesen Vorgang
Arbitrierung.
Der Vorteil der sich daraus ergibt ist, dass Empfangsstationen hinzugefügt
werden können, ohne Veränderungen an der Soft- und Hardware vornehmen zu müssen.
Der 11 bits lange Identfier beim CAN ermöglicht 2048 verschiedene Nachrichten.
Jeder Identfier darf nur einfach verwendet, das heißt von nur einem Teilnehmer
gesendet, werden.
|
Im Beispiel links hat beim 2. bit
zunächst der Identifier des Automatikgetriebes den niedrigeren Wert und
verliert.
Beim nächsten Bit sendet das Motronic-Steuergerät einen
rezessiven High Pegel und scheidet aus.
Das ABS-Steuergerät gewinnt und sendet die Nachricht. |
Signalpegel im CAN - Bus
am
Beispiel von BMW
Spannungspegel K - CAN (BMW)
Wenn der Spannungspegel des CAN - Low
von High (4,0 V) auf Low (1,0 V) wechselt, so ist das eine logische 0.
Wechselt der Spannungspegel wieder
auf High (4,0 V), so ist das eine logische 1.
Der Spannungspegel des CAN - High ist
immer spiegelbildlich zum CAN - Low. |
|
Spannungspegel PT - CAN (BMW)
Im nicht aktiven Zustand des Busses
befindet sich der Buspegel von Low und High auf 2,5 V (logische 1).
Wird nun der Bus aktiv, so wechselt
der Spannungspegel des CAN - Low auf Low (1,0 V).
Der CAN-High hingegen wechselt auf
High (4,0 V). Dies bedeutet eine logische 0. |
|
Bitzeit und
Übertragungsrate
Die Übertragungsgeschwindigkeit wird in Form der
Übertragungsrate
angegeben. Diese gibt die maximale Anzahl der übertragbaren Bits in einer
Sekunde an. Somit ist die Einheit der Übertragungsrate
"Bits pro Sekunde", also "bits/s".
Für die Berechnung der Übertragungsrate spielt die Zeit,
die ein einzelnes Bit für die Übertragung benötigt (die so genannte "Bitzeit")
eine wesentliche Rolle. Da solche Bitzeiten nur Sekundenbruchteile betragen,
wird die Bitzeit in
"Mikrosekunden" (µs)
angegeben. Eine Mikrosekunde ist bekanntlich der millionste Teil einer Sekunde.
Wenn man die Bitzeit kennt, lässt sich die Übertragungsrate einfach berechnen:
Übertragungsrate = 1 Bit / Bitzeit
Quellen: VW, BMW, Multiplikator
Lehrgang, BTZ Ingolstadt,
Autor: Johannes Wiesinger
|