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
 |
Auf dem Oszillogramm
ist ein einzelnes Bit erkennbar.
Die Bitzeit des
Busses beträgt 8 μs.
1 bit / 8 μs
= 0,125 Bit / 1 μs
=125000 Bit / 1 s
= 125 kBit / 1 s
Die Übertragungsrate
des Busses beträgt also
125 kBit / s.
Bild: Lernsystem Original Marken Partner |
für Ausbildung
und Schule:
Schulungsstand CAN-LIN-BUS
Quellen: VW, BMW, Multiplikator Lehrgang, BTZ Ingolstadt,
Original Marken Partner,
 
|
|