Logo Kfztech  

Was ist neu? Kfz Blog Suche Tech-News    Kontakt   Zeuschners
kfztech.de Kfz-Technik Abkürzungs-ABC Auto Infos kfztech TV Unterricht Ausbildung
 

Elektrik

CAN Grundlagen 3 - Bits und Byte

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.

CAN-Grundlagen

 Datenübertragung

 

EVA-Prinzip

analoges Signal

digitales Signal

binäres Signal

Zahlensysteme

In der Computertechnik gibt es drei wichtige Zahlensysteme: das dezimale, das binäre und das hexadezimale Zahlensystem.

dezimales Zahlensystem Das Dezimalsystem (Basis 10) ist das bekannte, arabische Zahlensystem.
Binärcode Das Binärsystem (Basis 2) ist eines der gebräuchlichsten Zahlensysteme in der Datenverarbeitung, da es nur zwei Zustände kennt: 0 und 1, bzw. ein oder aus, bzw. hohe Spannung oder niedrige Spannung.

Jedes Zeichen besteht aus einer bestimmten Reihenfolge von Binärzeichen (z.B. 10010110). Mit diesem Binärcode kann der Computer oder das Steuergerät Informationen verarbeiten.

Hexadezimal Code Als Kurzschreibweise für Binärzeichen dient das Hexadezimalsystem (Basis 16). Mit zwei Hexadezimalzahlen lassen sich achtstellige Binärzahlen zusammenfassen. Der Vorteil hierbei ist eine kürzere Schreibweise.

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

3 1 6
0011 0001 0110

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.

Arbitrierung 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 K-CAN

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.

Spannungspegel Powertrain CAN

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

CAN-Grundlagen

 Datenübertragung

 

EVA-Prinzip

Quellen: VW, BMW, Multiplikator Lehrgang, BTZ Ingolstadt,

Autor: Johannes Wiesinger


Twitter LogoFacebook Logo


Impressum, Copyright       Link Us

redaktionell bearbeitet: Johannes Wiesinger

geändert: 29.12.2022