Seite 1 von 1

CAN Bus & K-Line mitschneiden

Verfasst: Sa 2. Apr 2016, 11:38
von fightforlife
Guten Tag Leute,

da ich mich Hobby mäßig gerne mit Microcontrollern wie dem Arduino beschäftige und ich über den Winter ein wenig langeweile hatte, habe ich mich mal mit den Kommunikationsleitungen unseres Mopeds beschäftigt.

Dieses Thema soll einfach nur als Info dienen, falls jemand anders auch Interesse an diesem Thema hat. Ich konnte nämlich im Netz keine konkreteren Informationen finden! Außerdem beziehen sich alle meine Infos größtenteils nur auf das alte Modell, da ich nur dieses besitze.

Zunächst mal welche Protokolle gibt es?
Die alten Daytonas haben unter dem Sitz, im Diagnosestecker, die sogenannte K-Line auf Pin 7. Triumph arbeitet hier mit dem Protokoll ISO 9141-2, welches eine Datenübertragungsrate von 10,4 kbit/s ermöglicht. Außerdem kommunizieren der Tacho und die ECU direkt über ein CAN Bus mit einer Übertragungsrate von 500 kbit/s. Dies ist leider nicht im Diagnosestecker verkabelt, sondern muss direkt angezapft werden.
Die neuen Daytonas haben keine K-Line mehr im Diagnosestecker, dafür aber ein vollständiges CAN Bus (ISO 15765-4 mit 500 kbit/s). Vermutlich ist dies der selbe Bus, der bei den alten Modellen nur ECU und Tacho verbunden hat.

K-Line, alte Daytona, ISO 9141-2
Die K-Line im Diagnosestecker unter dem Sitz bei den alten Daytonas ist eine reine Diagnoseleitung. Hier ist keine aktiver Informationsaustausch vorhanden. Stattdessen können die Standard OBD2-PIDS genutzt werden um einzelne Informationen konkret von der ECU abzufragen. Dabei folgt Triumph der Standard-Norm, welche in den Quellen verlinkt ist. Ich habe nur einzelne PIDs wie TPS, RPM, etc ausprobiert, aber diese funktionierten zuverlässig. Genutzt habe ich dafür ein Arduino Mega mit einem MC33290 Chip und dieser Bibliothek: https://github.com/iwanders/OBD9141.
Hauptproblem bei dieser Art der Informationsabfrage ist die Wartezeit der ECU. Hinzukommt die langsame Übertragungsrate von nur 10,4 kbit/s. Dies führt dazu, dass pro Anfrage einer Information, z.B. der Dosselklappenstellung, etwa 60 ms vergehen. Möchte man jetzt gerne 3 Werte wie TPS, RPM und Gang gleichzeitig wissen, ist dies nicht möglich, da insgesamt etwa eine 5tel Sekunde vergeht. Deshalb sind die Werte in TuneECU auch so träge...

Can Bus, alte Daytona, ECU-Tacho
Der Tacho und die ECU der alten Daytonas kommunizieren direkt über ein CAN Bus um die nötigen Echtzeit-Informationen, wie Drehzahl und Gang auszutauschen. Dieser besteht aus 2 Leitungen welche direkt von der ECU zum Tacho gehen. Sie finden sich am grauen Stecker der ECU und sind rot sowie blau. Rot ist CAN HIGH und blau CAN LOW.
Wenn man diese !sehr vorsichtig! anzapft, lassen sich verschiedene Informationen mit Hilfe eines Arduinos und einem CANBus-Shields in Echtzeit abgreifen. Alle Informationen die über den CAN-Bus übertragen werden, lassen sich hier finden: https://www.race-technology.com/wiki/in ... torbikeCAN

Das Hautpproblem ist nun diese Daten zu den mitgeschnittenen IDs und Daten zuzuordnen.
In der folgenden Tabelle habe ich meine bisherigen Erkenntnisse dargestellt. [tr=] [td=]ID (HEX)[/td] [td=]Datenbytes[/td] [td=]Aktualisierung[/td] [td=]Kommentar[/td] [/tr] [tr=] [td=]518[/td] [td=]2 Datenbytes[/td] [td=]oft[/td] [td=]vermutlich Drehzahl oder TPS[/td] [/tr] [tr=] [td=]519[/td] [td=]2 Datenbytes[/td] [td=]oft[/td] [td=]Geschwindigkeit in Km/h[/td] [/tr] [tr=] [td=]530[/td] [td=]4 Datenbytes[/td] [td=]selten[/td] [td=]TPS evtl. in Byte 2[/td] [/tr] [tr=] [td=]540[/td] [td=]7 Datenbytes[/td] [td=]selten[/td] [td=]Gang in den ersten 4 Bits[/td] [/tr] [tr=] [td=]550[/td] [td=]4 Datenbytes[/td] [td=]selten[/td] [td=]evtl. Spritverbrauch[/td] [/tr] [tr=] [td=]568[/td] [td=]1 Datenbyte[/td] [td=]oft[/td] [td=]keine Veränderung[/td] [/tr] [tr=] [td=]569[/td] [td=]2 Datenbytes[/td] [td=]oft[/td] [td=]keine Veränderung[/td] [/tr] [tr=] [td=]570[/td] [td=]8 Datenbytes[/td] [td=]selten[/td] [td=]Temperaturen in Byte 3 und 5[/td] [/tr]
Warum der ganze Stress?
Zum ersten, es macht mir Spaß und gleichzeitig lernt man einiges in Sachen Programmierung und Funktionsweise von aktuellen Mopeds.
Aber das eigentliche Ziel ist es ein System wie den PC5 mit Autotune oder den Bazzaz Self Mapper für ein Bruchteil des Preises zu erstellen, um das Mopete perfekt einzustellen. Dafür wird neben einem Arduino als Datenlogger noch eine Breitbandlambdasonde benötigt, welche die aktuelle Gemischzusammensetzung meldet. Somit lassen sich dann in Echtzeit, Daten wie TPS, RPM, Gang und AFR während der Fahrt mitloggen und per bereits fertigem Excel-Script in ein Mapping Diagramm übertragen. Mit Hilfe der Differenzen zu den Soll-AFR-Werten von Triumph für zum Beispiel das Arrow-Tune, lassen sich die Luftmengen im Map anpassen um eine ideale Gemischzusammensetzung zu gewährleisten. Vorteile dieses Systems, sind die allgemeine Verwendbarkeit an verschiedenen Fahrzeugen mit geringfügiger Anpassung und natürlich die Kosten (~200€). Hinzu kommt die Möglichkeit Daten je nach Wunsch mitzuschneiden. Nachteil ist natürlich der Aufwand und die nötigen Kenntnisse zur Programmierung.

Quellen und weitere Infos:
  • http://onkickstand.com/daytona-hacking/
  • http://www.triumph675.net/forum/showthread.php?t=168657
  • https://www.race-technology.com/wiki/in ... torbikeCAN
  • https://en.wikipedia.org/wiki/OBD-II_PIDs
Neuere Infos füge ich hinzu sobald ich mehr Zeit finde mit dem Moped zu spielen. Bei dem Wetter ist jetzt erstmal fahren dran! Weizen1

Re: CAN Bus & K-Line mitschneiden

Verfasst: Sa 2. Apr 2016, 12:00
von fightforlife
Weiterer sehr interessanter Link bzgl. der Abstimmung, den ich vergessen hatte:
http://www.tuneecu.com/Dr_Feinbeins_kleine_Abstimmfibel/t5_kleine_abstimmfibel.htm
[smilie=bow.gif]

Re: CAN Bus & K-Line mitschneiden

Verfasst: Mo 25. Apr 2016, 15:11
von fightforlife
Hier mal ein kleines Update in Sachen CAN-BUS:

ID 1304, 2 Bytes, 100 HZ: Drehzahl aus (A*256+B)/4 mit 0,25 Genauigkeit

ID 1305, 2 Bytes, 100 HZ: KM/H mit 0,01 Genauigkeit

ID 1328, 4 Bytes, 20 HZ: Byte 1&2 RPM, 0, 0

ID 1344, 7 Bytes, 10 HZ: Gang, konstanten, Byte 6 steigt in Stufen

ID 1360, 4 Bytes, 3 HZ: Byte 1 steigt in Stufen, anderen 0

ID 1384, 1 Bytes, 100 HZ: Byte 1=1

ID 1385, 2 Bytes, 100 HZ: Byte 1 255, Byte 2 1

ID1392, 8 Bytes, 2 HZ: Sprit und Temperaturen, Gas An/aus

Re: CAN Bus & K-Line mitschneiden

Verfasst: Mi 4. Mai 2016, 13:30
von fightforlife
So, ich konnte fast alle CAN-BUS Daten entschlüsseln. Wer also einen sehr günstigen Datenlogger bauen will, kann sich gerne hier bedienen.

ID1304 alle 10ms von ECU:
- RPM=(B2*256+B1)/4 in U/min

ID1305 alle 10ms von ECU:
- Speed=(B2*256+B1)/10 in km/h

ID 1328 alle 100ms von Tacho:
- RPM in B1/B2
- Speed in B3/B4
- beides mit leichtem Offset, evtl zur Anzeigenkalibrierung.

ID 1344 alle 100ms von ECU:
- Gang=B1/16 abgerundet (ersten 4 bits)
- Momentanverbrauch=B2/20 in l/100km, wobei B3 den Stillstand signalisiert. (Display ausblenden)
- Strecke=(B5*256+B4)/20 in km
- Verbrauch=(B7*256+B6)/100 in l

ID 1360 alle 300ms:
- ein Zähler im Stillstand in B1, Funktion bisher unbekannt. B2-B4=0

ID 1384 alle 10ms:
- evtl Heartbeat oder Sicherheitsschalter (Sturz, Ständer) B1=1

ID 1384 alle 10ms:
- Zähler in B1, B2=1 Unbekannt

ID 1392 alle 500ms:
- Drosselklappenwinkel=(90/256)*B1 in °, angenommen TPS geht von 0-90°
- B2 noch unbekannt, evtl Leerlaufsteller oder ähnliches
- Kühltemperatur=(B4*256+B3)/10, vermutlich ohne Offset
- Außentemperaur=(B6*256+B5)/10 - 10° in °C, Offset ist geschätzt.
- Zündzeitpunkt=(B8*256+B7)/10 in °vOT, evtl minimaler Offset


Weizen1

Re: CAN Bus & K-Line mitschneiden

Verfasst: Mi 4. Mai 2016, 15:46
von darkdog
Respekt! :D

Re: CAN Bus & K-Line mitschneiden

Verfasst: Mo 24. Sep 2018, 09:43
von Rat_Style
Gibt es hier noch jemanden der in dem Bereich aktiv ist?

Möchte gerne eine Daytona mit einem Motoscope ausstatten und benötige dazu die CAN Daten.

Grüße

Re: CAN Bus & K-Line mitschneiden

Verfasst: Mo 15. Okt 2018, 16:26
von Rat_Style
Moin,

haben am Wochenende meine Daytona selbst ausgelesen und alles an Info's vom CAN Bus aufnehmen können.

Nun bin ich gespannt was Motogadget dazu sagt.

Grüße

Re: CAN Bus & K-Line mitschneiden

Verfasst: Di 16. Okt 2018, 10:10
von KaiHawaii
Klingt interessant, halt uns mal bitte auf dem Laufenden was du alles auslesen/auswerten kannst.

Re: CAN Bus & K-Line mitschneiden

Verfasst: Di 16. Okt 2018, 15:42
von Rat_Style
Drehzahl
Geschwindigkeit
Drehzahl vom Tacho
Geschwindigkeit vom Tacho
Reserveleuchte
Neutralleuchte (Leerlauf)
Motorkontrollleuchte
Gangposition
Momentanverbrauch
Momentanverbrauch einblenden
Tageskilometer
Durchschnittsverbrauch
Kühlmitteltemperatur Balken + Warnleuchte
Drosselklappenwinkel
Kupplungsschalter
Kühlmitteltemperatur
Ansauglufttemperatur
Zündzeitpunkt

Das zumindest bei meinem Modell von 09.

Re: CAN Bus & K-Line mitschneiden

Verfasst: Mi 17. Okt 2018, 12:27
von KaiHawaii
Cool, wie geht das im groben, wie kann ich die Signale mitloggen?

Re: CAN Bus & K-Line mitschneiden

Verfasst: Mi 17. Okt 2018, 14:23
von Sonic675R
17. Okt 2018, 12:27 » KaiHawaii hat geschrieben:Cool, wie geht das im groben, wie kann ich die Signale mitloggen?
Da steckt schon bisschen Hintergrundwissen dahinter :wink: ...und dann "einfach" mit Rasperry oder Arduino ein Modul bauen was CAN-Daten verarbeiten und visualisieren kann via PC, dann das ganze zwischen ECU und Tacho klemmen und dann alle Funktionen am Motorrad ausführen und dabei mitloggen.

Am Ende die ganzen CAN-Signale noch entschlüsseln und den einzelnen Funktionen zuordnen..

Also alles ganz einfach, drum haben es bis jetzt schon so viele Menschen getan Weizen1

Re: CAN Bus & K-Line mitschneiden

Verfasst: Mi 17. Okt 2018, 15:01
von Rat_Style
Wie Sonic schon so nett umschreibt, das wird nichts ohne Kenntnisse über CAN Protokolle, Erfahrungen beim Umrechnen von HEX in BIN und Diagnose an solchen Systemen.

Ansonsten fix n Rasberry an den CAN klemmen, mithören, interpretieren, prüfen, fertig. Weizen1