Ankündigung

Einklappen
Keine Ankündigung bisher.

Daten aus CAN-Bus selbst auslesen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    #61
    AW: Daten aus CAN-Bus selbst auslesen

    @Martin: Danke für Dein Engagement! Das Projekt ist spannender als jeder Krimi :)

    Gruß
    Dieter

    Kommentar


      #62
      AW: Daten aus CAN-Bus selbst auslesen

      Das ist übrigens mein Anschlusskabel, das ich für den Zweck aus einem OBD-Verlängerungskabel gebaut habe. Ich wollte den schlanken Winkelstecker, damit er unter der Klappe im Auto eingesteckt bleiben kann, und das Flachbandkabel, damit ich es erstmal einfach durch den Spalt der Klappe nach außen führen kann. Das funktioniert gut!
      www-IMG_20190404_235251.jpg

      Kommentar


        #63
        AW: Daten aus CAN-Bus selbst auslesen

        Stichwort Verlängerungskabel: Da hatte ich also noch den abgeschnittenen OBD-Stecker übrig (Weibchen), an dem ich erfreulicherweise noch ein Stück Kabel gelassen hatte. Mit 2 weiteren Sub-D-9 Stecker/Buchse habe ich zwischenzeitlich das "Snüffelstück" gebaut:
        www-IMG_20190404_235337.jpg
        Das Teil funktioniert! Einfach zwischen Arduino und OBD-Kabel klemmen und ein OBD-Diagnosegerät mit anstecken. Schon kann man mit Arduino den OBD-Datenverkehr zwischen Diagnosegerät und Defender mitlesen.

        Kommentar


          #64
          AW: Daten aus CAN-Bus selbst auslesen

          ...auf diese Weise habe ich den OBD-Datenverkehr - einmal mit einem billig-OBD-Gerät und einmal mit BT-Adapter und der App "AndrOBD" - protokolliert. Da die CAN-IDs für OBD (und OBD-PIDs) sehr gut dokumentiert sind, habe ich hier auch schon sämtliche Daten identifiziert und deuten können.

          Beide Geräte (billig-Gerät und die App per BT) senden mit der CAN-ID 0x7DF und die Antwort kommt (bei OBD so genormt; 8 BIT weiter) mit der CAN-ID 0x7E8. Sowohl im request, als auch in der answer steht in Byte 2 dann auch die OBD-PID drin. (PIDs sind jene, von denen @DefNder eingangs sprach und wir schön aneinander vorbei geredet haben.:v)

          Das jeweilige Diagnosegerät fragt in der Kommunikation das Steuergerät nach den von ihm unterstützten PIDs. Hier also eine Liste der PIDs, die von meinem TD4-Steuergerät unterstützt werden: (Für alle diejenigen, die auch selbst requests auf den CAN-Bus senden wollen, um an ihre Informationen zu kommen.)

          0 (PIDs supported [01h – 20h])
          1 Monitor status since DTCs cleared.
          4 Calculated engine load
          5 Engine coolant temperature
          11 Intake manifold absolute pressure
          12 Engine RPM
          13 Vehicle speed
          15 Intake air temperature
          16 MAF air flow rate
          18 Commanded secondary air status
          28 OBD standards this vehicle conforms to
          31 Run time since engine start
          32 (PIDs supported [21 - 40])
          33 Distance traveled with MIL on
          35 Fuel Rail Gauge Pressure
          44 Commanded EGR
          48 Warm-ups since codes cleared
          49 Distance traveled since codes cleared
          51 Absolute Barometric Pressure
          64 (PIDs supported [41 - 60])
          66 Control module voltage
          73 Accelerator pedal position D
          74 Accelerator pedal position E
          77 Time run with MIL on
          78 Time since trouble codes cleared

          Zur aktuellen Tankfüllungs-Diskussion: Die PID 47 (2Fh) ist leider nicht dabei. ("Fuel Tank Level Input" mit 0..100%)

          Herzlich eingeladen sind die Besitzer eines passenden Nanocom, es auch einmal am "Snüffelstück" anzuschließen. Vielleicht erfahren wir ja noch einige interessante nicht-genormte/modellspezifische requests. (HS

          Kommentar


            #65
            AW: Daten aus CAN-Bus selbst auslesen

            Sagenhaft! Ich hab' einen einfachen OBDII-Scanner und checke bei Gelegenheit, ob der noch etwas anderes hat. Aus der Erinnerung meine ich, daß er die Fahrgestellnummer (VIN) anzeigen kann, aber das prüfe ich noch.

            Gruß
            Dieter

            Kommentar


              #66
              AW: Daten aus CAN-Bus selbst auslesen

              Zitat von BlackPanther Beitrag anzeigen
              Sagenhaft! Ich hab' einen einfachen OBDII-Scanner und checke bei Gelegenheit, ob der noch etwas anderes hat. Aus der Erinnerung meine ich, daß er die Fahrgestellnummer (VIN) anzeigen kann, aber das prüfe ich noch.

              Gruß
              Dieter
              Hallo Dieter,
              ich vermute: Ja, das kann er! Die oben genannten PIDs werden unter dem "Service" 01 abgefragt. ("show current data", Byte 1) Gesehen habe ich auf dem Bus auch die Services 02, 07 und 09. Im Service 09 wird mit PID 2 die VIN abgefragt. Im Service 03 übrigens die Fehlercodes, im Servcie 07 die "pending" Fehler Codes.
              Gruß
              Martin

              Kommentar


                #67
                AW: Daten aus CAN-Bus selbst auslesen

                Moin!
                Der Fender ist wieder da und hat die Plakette! :D In der Zwischenzeit hatte ich Zeit für jede Menge kleiner Bugfixes im Programm - unter Anderem auch für die Verbrauchsanzeige. So sieht der Verbrauch aus, wenn man gemütlich zwischen Feldern dahertuckert:
                www-IMG_20190412_141039.jpg
                (Und wieder ein kleiner Bug: Unten ist ganz rechts ein "m" hängen geblieben. Ist mittlerweile auch erledigt.)

                Im Stillstand wechselt die aktuelle Verbrauchsanzeige, vom Landyschoner inspiriert, auf Liter pro Stunde:
                www-IMG_20190412_141054.jpg

                Das Kabel hat genau die richtige Länge, damit mein Provisorium schonmal sicher im Blickfeld liegen kann. Ich Depp bin erst jetzt drauf gekommen; vorher lags immer in der Cubbybox. :o So macht das richtig Spaß beim Fahren!
                www-IMG_20190412_141105.jpg

                Beim zügigen Beschleunigen mit kaltem Motor im Bereich 1./2. Gang zeigt der Momentanverbrauch schonmal gerne an die 40L/100km an. Es geht bestimmt auch noch mehr, aber das tue ich dem Motor nicht an. Ich brauche bald mal ein schönes Gehäuse!

                Kommentar


                  #68
                  AW: Daten aus CAN-Bus selbst auslesen

                  ok, sehr schön .... und wir dann eine Bestellliste ;-)

                  Kommentar


                    #69
                    AW: Daten aus CAN-Bus selbst auslesen

                    Ich krieg' langsam Schwielen an den Händen vom applaudieren!

                    Gruß
                    Dieter

                    Kommentar


                      #70
                      AW: Daten aus CAN-Bus selbst auslesen

                      Martin ist ja inzwischen schon echt in die Tiefen der CAN-Bus-Daten und der Anzeige und Verarbeitung vorgedrungen, echt klasse. Wie soll es denn jetzt weitergehen? Sollte man mal einen aktuellen Stand und dann die erforderliche Hard- und Software definieren, so daß Interessierte das nachbauen können?

                      Und was wäre dann noch denkbar?

                      Gruß
                      Dieter

                      Kommentar


                        #71
                        AW: Daten aus CAN-Bus selbst auslesen

                        Ich würd ihm erstmal Zeit lassen, bis er selbst meint, dass da andere Leute drüber schauen können, dass das Dingen sich gutmütig und stabil verhält. An ein anderes, neues Fahrzeug angesteckt sollte es weder dieses Fzg noch sich selbst verwirren, wenn der Bus spinnt (zu niedrige Spannung z.B.), sollte es nicht selbst auch spinnen. Wenn khamuul dann zufrieden ist, kann er es ja auf github spielen, damit Leute hier das clonen, durchlesen und vielleicht ausprobieren können.

                        Features, die ich sinnvoll fände, wären einstellbare Units of Measure, Alarme/Events (Wert zu niedrig/hoch/außerhalb eines gegebenen Intervals), Aufzeichnung dedizierter Werte (sofort/nach Zeitplan/getriggert durch andere Events wie z.B. CHT zu hoch) auf SD. Aber wie gesagt, ist sein Ding, er wird entscheiden, was er machen will, oder was er ggfs. gern anderen überlässt.
                        Gruß, Micha

                        Kommentar


                          #72
                          AW: Daten aus CAN-Bus selbst auslesen

                          Moin!
                          Ihr könnt gerne alles von mir erfahren, was Ihr wissen wollt! Vielleicht fuchs ich mich ja auch noch bei github ein oder ähnliches. Ales braucht Zeit...

                          Momentan hat sich die Rost-Baustelle bei mir zwischendurch in erschreckendem Maße an einem Querträger hinten aufgetan. (...da, wo der dicke Dreieckslenker(?) zur Hinterachse befestigt ist...) Also erstmal stundenlang im Rost rumgestochert, geprüft, ob die vorhandenen Mittelchen noch ausreichend vorhanden sind und auch gleich nochmal den ganzen Rahmen abgesucht. Dabei hat sich dann noch eine Baustelle aufgetan: Die Bremsleitung vorne links - da, wo sie direkt überm Rahmen verläuft. (Schaut mal bei Euch hin!) Wär Zeit für einen TD4-Horrorbilderthread... Das hat jetzt also erstmal Priorität (safety first!) - sorry Leute, bald gehts weiter!

                          "Hardware definieren" kann ich aber gerne schon machen:
                          - Arduino UNO (die neueren haben eine nette "Kunststoffwanne" dabei, sodass die Kontakte der Unterseite schonmal geschützt sind.)
                          - CAN-Bus-Shield "v1.2" (von seeed)
                          - LCD-Keypad-shield (mit 1602 Ideal Standard Display) von SainSmart
                          PIN 10 des LCD-shield ist zur Regelung der Hintergrundbeleuchtung da - den hab ich gekappt; die Helligkeit ist maximal.
                          - Ein OBD-Verlängerunskabel mit superflachen Winkelsteckern und Flachbandkabel
                          Das wird aufgeschnitten und ein sub-d 9-polig fürs CAN-shield angelötet.
                          (4 Pins: GND, +12V, CAN-hi und CAN-lo = OBD-Pins 4+5, 16, 6, 14 / siehe auch Wikipedia)
                          - Das andere Ende vom OBD-Kabel kann zum Bau eines "Snüffelstück"s verwendet werden. (+ 2x d-sub-9)

                          Das funktioniert bestimmt auch gut mit ähnlichen Produkten anderer Hersteller / soll keine Werbung sein hier! Das ist halt meine Auswahl gewesen. Durch Verwendungs von shields (Platinen, die man direkt "huckepack" auf die Arduino-Platine setzen kann) gibts erfreulicherweise erstmal nicht viel zu löten - allenfalls das Kabel hab ich mir selbst gebaut. (Gibts möglicherweise ja auch fertig zu kaufen.)

                          Zur Software-Seite schonmal soviel:
                          Sowohl für das LCD-Keypad-shield als auch fürs CAN-shield gibt es librarys (LiquidCrystal.h und mcp_can.h), die die Programmierung sehr vereinfachen. Ich verwende sie auch. Die 5 Tasten des Keypads gehen bei dem shield über unterschiedliche Widerstände gemeinsam auf einen Analog-Eingang (A0), sodass man sie als unterschiedliche Spannungswerte unterscheiden kann.

                          Kommentar


                            #73
                            AW: Daten aus CAN-Bus selbst auslesen

                            zur groben Orientierung

                            Kommentar


                              #74
                              AW: Daten aus CAN-Bus selbst auslesen

                              Danke für die Infos!

                              Gruß
                              Dieter

                              Kommentar


                                #75
                                AW: Daten aus CAN-Bus selbst auslesen

                                Moin!

                                Nach Bremsleitungstausch und Owatrol-Schlacht konnte es endlich wieder auf dieser Baustelle etwas weiter gehen. Zumindest fast. =)

                                Ich habe heute ein paar Stunden darauf verwendet, mich in github einzulesen, das Prinzip dahinter zu verstehen und erste Dateien hochzuladen. Wer sich also für meinen code bzw. die Softwareseite interessiert, der kann dort mal nach dem "DeCANder" suchen. (So heißt es jetzt.) Momentan habe ich meine Version 1 aufgespielt, die sämtliche Datenbytes (wahlweise auch als 16-BIT-Wert interpretiert) roh auf dem Display anzeigen kann und gleichzeitig alle empfangenen Daten-Bytes seriell (als hex) auf den USB-Port schubst - in CSV-Form, sodass ein Rechner (z.B. mit Putty) fleißig mitschreiben kann. Auf diese Weise habe ich selbst die meisten Werte im Nachhinein durch Auswertung am Rechner identifizieren können. ("reverse engineering") Einzelne auch über die Anzeige am Display, in Abhängigkeit vom aktuellen Fahrzustand. Wer also hier mitspielen möchte, kann die Version 1 schonmal ausprobieren, denn ich habe schließlich noch nicht alle Werte identifizieren können.

                                Im Code fürs "head-up-display" (kommt ab Version 2), dass derzeit schon sehr viele interpretierte Werte anzeigen kann (siehe Fotos weiter oben), werde ich in der nächsten Zeit noch etwas aufräumen und ihn dann in github einstellen. Gerne könnt Ihr dann dort mitentwickeln oder auch z.B. "branches" nach Euren Vorstellungen erzeugen. Vielleicht entsteht ja insgesamt was feines draus. Die Dokumentation auf github werde ich möglichst auf internationalem englisch machen; mal sehen, was mein Schul-Englisch so her gibt. :v

                                Sprich: Was neues auf dem Teil ist heute nicht entstanden - aber dafür hab ich mich auf github eingearbeitet und die Versionen 0+1 dort hochgeladen.

                                Eins hatte ich auf Fahrten in der Zwischenzeit noch bemerkt: Die Ansauglufttemperatur ist wohl doch keine. Der Wert steht wieder in der Rätsel-Ecke. Alle anderen stimmen 100%ig und haben zum Teil eine tolle Genauigkeit!

                                Gruß
                                Martin

                                Kommentar

                                Lädt...
                                X