• Hallo Besucher,
    dieses Forum ist aus einem ca. 50-köpfigen Freundeskreis rund um die BMW F Twin GS Modelle entstanden.
    Dieses Forum legt Wert auf Freundschaften und Begegnung und ist ohne jegliche kommerzielle Absicht und ohne Werbung!
    Wir freuen uns, dass wir nun schon fast 200 aktive Mitglieder haben, und freuen uns über jeden Neuzugang, der freundschaftlichen Umgang pflegt und sucht!
    Viele Mitglieder wirst Du vielleicht schon als "Anonymous" oder "Gast" aus anderen F800GS-Foren kennen.

    Die meisten von uns fahren die F-GS-Modelle schon seit Erscheinen der F800GS und kennen sich mit Technik und Tricks der Motorräder sehr gut aus.

    Willst du uns also kennenlernen, erstelle einfach ein Benutzerkonto.
    Nach der Freischaltung, solltest du die Gelegenheit nutzen, dich Vorzustellen! Das Admin-Team wünscht dir viel Spaß!

Zum F800 CAN-Bus

Mr_Wolf

Mitglied
Registriert
22 April 2019
Beiträge
429
Punkte Reaktionen
148
Punkte
43
Ort
bei München
Modell
  1. F800GS
Modelljahr
2009
Hallo zusammen,

während der Winterpause hatten wir hier mal eine Diskussion zum CAN-Bus der F800. Jetzt, nachdem ich die Batterie wieder eingebaut habe, habe ich interessehalber mal den CAN-Bus meiner E8GS 0219 (Bj 2009) genauer unter die Lupe genommen.
Falls sich noch jemand dafür interessiert, was da so auf dem Bus gequasselt wird oder falls sich jemand ein alternatives Anzeigeinstrument oder Fahrtenschreiber bauen will, hier einige Infos:
Über den CAN-Bus sind die Systeme (soweit vorhanden) Anzeigeinstrument, ZFE, ECU, ABS und DWA miteinander verbunden. Entgegen landläufiger Meinung führt der CAN-Bus nicht in den Cartool-Stecker und auch nicht in die Diagnose-Buchse (das ist ein anderes Interface).
Der CAN-Bus besteht aus den beiden Kabeln CAN_Low und CAN_High (Kabelfarben Braun-Weiß und Schwarz-Weiß), die vordefinierte Übertragungsrate ist 500kbps. Gesendet werden ausschließlich Standard-CAN frames mit 11-Bit Identifier und 8 Datenbytes.
Hier mal eine Liste von Daten-Frame-IDs, mit den jeweiligen Inhalten, die ich identifizieren konnte:

ID 0x10C (kommt wohl von der ECU, ca. alle 10ms)
- Datenbyte 1: Stellung des Gasgriffs (Öffnungs-% = Bytewert / 2,55)
- Datenbyte 2: Konnte ich noch nicht eindeutig identifizieren, hat aber etwas mit dem Motorbetrieb zu tun
- Datenbyte 3: Drehzahl (ca.: Angezeigte Drehzahl = Bytewert * 65)
- Datenbyte 4: Flags für Kupplungsschalter (Bit 2) und Killschalter (Bit 0)
- Datenbyte 5: Flag für Seitenständerschalter (Bit 2), weitere Flags im Zusammenhang mit dem Anlassvorgang

ID 0x130 (kommt wohl von der ZFE, ca. alle 10ms)
- Datenbyte 6: Flags für Fußbremsschalter (Bit 5) und Fernlichtschalter (Bit 0), weitere Flags im Zusammenhang mit dem Anlassvorgang
- Datenbyte 7: Flags für Warnblinker (Bit 5), Blinker (Bits 4,3) und Handbremsschalter (Bit 0), weitere Flags im Zusammenhang mit dem Anlassvorgang

ID 0x294 (kommt wohl vom ABS, ca. alle 10ms)
- Datenbyte 1: Flags für Zustand des ABS: an/aus (Bit 6), ABS-Warnung (Bits 5)
- Datenbyte 2/3: Geschwindigkeit vom Vorderrad (ca.: Geschwindigkeit = 16Bit-Wert / 15)
- Datenbyte 4/5: 16Bit Tick-Counter für Distanzmessung am Vorderrad (zählt 606 Ticks/sek bei ca. 100km/h, d.h. ca. 21,8 Ticks/Meter)
- Datenbyte 6: Flags für Zustand des ABS: an/aus (Bit 7), aktive ABS-Regelung vorne oder hinten (Bit 6)

ID 0x2A8 (kommt wohl vom ABS, ca. alle 10ms)
- Datenbyte 2/3: Geschwindigkeit vom Hinterrad (ca.: Geschwindigkeit = 16Bit-Wert / 15)
- Datenbyte 4/5: 16Bit Tick-Counter für Distanzmessung am Hinterrad (zählt 657 Ticks/sek bei ca. 100km/h, d.h. ca. 23,7 Ticks/Meter)

ID 0x2BC (kommt wohl von der ECU, ca. alle 100ms)
- Datenbyte 1: Flag für Öldruckschalter (Bit 6)
- Datenbyte 2: Kühlmitteltemperatur (Standard-Betriebstemperatur liegt bei Bytewert 141-143)
- Datenbyte 3/4: 16-Bit Counter mit Bezug zur Einspritzmenge, vermutlich kummulierte Öffnungszeit der Einspritzventile für die Anzeige des Momentanverbrauchs
- Datenbyte 5: Eingelegter Gang (Bits 7-4), weitere Flags im Zusammenhang mit dem Anlassvorgang
- Datenbyte 7: vermutlich Flag für Betriebszustand der Benzinpumpe (Bit 0)

ID 0x2D0 (kommt wohl von der ZFE, ca. alle 100ms)
- Datenbyte 1: Außentemperatur (Anzeigewert = Bytewert / 2 - 40)
- Datenbyte 3: Tankfüllstand
- Datenbyte 7: Flags für Zustand der Griffheizung (Bits 5,4)

ID 0x33F (kommt wohl von der DWA, ca. alle 200ms)
- Datenbyte 1: Kommando an die ZFE, mit den Blinkern zu leuchten (Bit 4)
- Datenbyte 2: Flag zum Zustand der DWA, an/aus (Bit 0)

ID 0x3F8 (kommt vermutlich von der Anzeigeeinheit, ca. alle 1s)
- Datenbyte 1/2/3: 24Bit-Wert Insgesamt gefahrene km (Kopie zu Wert in ID 0x3FF)

ID 0x3FF (kommt wohl von der ZFE, ca. alle 1s)
- Datenbyte 2/3/4: 24Bit-Zähler für Sekunden seit letztem Anschluss der Batterie
- Datenbyte 5/6/7: 24Bit-Wert Insgesamt gefahrene km (Kopie zu Wert in ID 0x3F8)

Einige weitere Signale gibt es noch, die ich noch nicht nachvollziehen konnte. Was ich gar nicht untersucht habe, sind Remote-Frames, also die Anforderungen von z.B. Diagnosedaten, Fehlerspeicher, Ansteuerungen, etc. Dafür gibt es ja Motoscan und ähnliches.

Viel Spaß beim Tüfteln.
Kai

P.S.: Wer sich am CAN-Bus seines Fahrzeugs zu schaffen macht, sollte sehr genau wissen, was er tut (soll nicht heißen, das ich weiß, was ich tue...)! Hier besteht enormes Potential, die gesamte Fahrzeugelektronik durcheinander zu bringen oder gar zu beschädigen.
 
Falls sich noch jemand dafür interessiert, was da so auf dem Bus gequasselt wird
Interessant ist es schon. Deine Angaben sagen mir auch etwas, weil ich beruflich viel mit dem CAN-Bus zu tun hatte, allerdings nicht im Kfz-Bereich. Eine andere Frage ist, was ich damit mangels Bastelmöglichkeiten bezüglich der F800GS anfangen kann.
Hier besteht enormes Potential, die gesamte Fahrzeugelektronik durcheinander zu bringen oder gar zu beschädigen.
Solange man sich aufs Lauschen beschränkt ohne dabei die Datenübertragung zu stören, sollte ja nicnt viel passieren können. Allerdings hätte ich in einem solchen Beitrag auch einen Disclaimer gebracht.
Entgegen landläufiger Meinung führt der CAN-Bus nicht in den Cartool-Stecker und auch nicht in die Diagnose-Buchse (das ist ein anderes Interface).
Da das Diagnose-Interface nur an die Motorsteuerung geht, darüber aber alle möglichen Daten anderer Steuergeräte abgerufen werden können, muss ja eine Gateway-Funktionalität in der Motorsteuerung vorhanden sein, die für bestimmte Funktionen ja auch über das Lauschen hinausgehen muss.
 
Eine andere Frage ist, was ich damit mangels Bastelmöglichkeiten bezüglich der F800GS anfangen kann.
Ich weiß auch noch nicht wirklich, was ich damit anfangen soll. Hab das mehr oder weniger nur aus Neugier heraus gemacht.
Eine alternative Tankanzeige wäre vielleicht eine Option, weil mich die Standard-Anzeige im Fahrcomputer schon ein paar mal reingelegt hat.
Solange man sich aufs Lauschen beschränkt ohne dabei die Datenübertragung zu stören, sollte ja nicnt viel passieren können.
Um eine wirklich nur lauschende Hardware aufzubauen, muss man schon etwas beachten. CAN-Controller senden standardmäßig zumindest das Acknowledge in den Bus, selbst wenn sie auf listen-only programmiert sind.
Aber selbst bei einer wirklich "silent" Hardware kann man noch genug Mist bauen: zu lange/falsch verlegte Zuleitungskabel, zu hohe Eingangskapazität, Kurzschlüsse (im Bus, zu Masse, zu Bat). Wenn das passiert, hat man mindestens einen vollen Fehlerspeicher und ein Motorrad im Notlaufbetrieb.

Da das Diagnose-Interface nur an die Motorsteuerung geht, darüber aber alle möglichen Daten anderer Steuergeräte abgerufen werden können, muss ja eine Gateway-Funktionalität in der Motorsteuerung vorhanden sein, die für bestimmte Funktionen ja auch über das Lauschen hinausgehen muss.
Die Diagnosebuchse geht über ein K-Line Interface (alter asynchroner Standard) in die ECU und die vermittelt dann weiter über CAN. Einen direkten Zugriff auf den CAN-Bus gibt es wohl bewusst nicht, weil man dann ja bei den freiliegenden Pins in der Buchse recht einfach die oben beschriebenen Fehler-Optionen herbeiführen könnte, die zum Totalausfall führen.
 
Zurück
Oben Unten