Ich verstehe, wie CAN funktioniert (glaube ich). Gute Info hier, wenn Sie sehen möchten: Unterschied zwischen OBDII und CAN
Kurz gesagt, es gibt mehrere Module und jedes Modul sendet interessante Daten über die Drähte. Jedes Modul erhält die Daten, es entscheidet dann, ob die Daten für dieses Modul interessant sind, ob es gespeichert wird, wenn nicht, ignoriert es. (Mir ist klar, dass dies sehr kurz ist und nicht auf Prioritäten eingeht, wenn mehrere Beiträge gleichzeitig usw. vorliegen, aber darüber müssen wir uns hier keine Gedanken machen.)
Ich habe einen Bluetooth-ELM327-OBD2-Scanner und einen Arduino / ESP32 verwendet, um Daten von meinem Auto zu lesen.
Ich habe gelesen, dass Sie bei einigen Autos nicht schneller als 10 Hz abfragen können, da dies zu internen Problemen führen kann. Hier wurde ich verwirrt.
Nehmen wir also an, alles, was ich bekommen möchte, ist die Drehzahl des ELM327.
Nach meinem Verständnis von CAN fragen Sie keine Daten ab, sondern speichern sie einfach jedes Mal, wenn sie gepostet werden, wenn sie für Sie interessant sind.
Mit meinem obigen Verständnis von CAN wäre das ELM327 sicherlich ein Modul und jedes Mal, wenn die Drehzahldaten gepostet würden, würde es die Daten speichern. Dann würde es mir nur die gespeicherten Drehzahldaten zurückgeben, wenn ich mit dem Arduino danach frage. Dies gilt zwar möglicherweise nicht, da die OBD2-Geräte Fehlercodes erhalten können, die auf den verschiedenen Modulen gespeichert und nicht veröffentlicht werden.
Oder gibt es ein "OBD2-Modul" im Auto, mit dem sich der ELM327 verbindet und der ELM327 es abfragt? Wenn dies der Fall wäre, sehe ich keine Notwendigkeit, dass die CAN-Kabel im OBD2-Stecker vorhanden sind, was sie sind.
Ich bin mir bewusst, dass OBD2 PIDs hat, ich bin mir nicht sicher, wie sie funktionieren. Was passiert bei der Abfrage? Sucht es nur nach zuvor gespeicherten Beiträgen im "OBD-Modul", indem es die PID als eine Art Schlüssel verwendet, oder konvertiert es es tatsächlich in CAN und fragt die Dose ab, was meiner Meinung nach gegen die Funktionsweise von CAN verstößt?
Liege ich völlig falsch, wie OBD2 mit CAN interagiert? Oder verstehe ich CAN nicht richtig?
Ich möchte die RPM-Daten schneller als 10 Hz erhalten, aber ich möchte nichts zerstören. Mein Auto ist ein 2006er Renault, falls das überhaupt hilft.
Vielen Dank im Voraus
Ihre Frage ist etwas weit gefasst, aber ich werde versuchen, den wichtigsten Punkt zu beantworten.
Sie sagten: "Nach meinem Verständnis von CAN fragen Sie keine Daten ab, Sie speichern sie einfach jedes Mal, wenn sie gepostet werden, wenn sie für Sie interessant sind.", aber so funktioniert es nicht.
OBD2 basiert auf einem Request/Response-Schema. Der OBD2-Adapter übersetzt zwischen UART und dem eigentlichen Fahrzeugprotokoll (in Ihrem Fall CAN) und sendet die Ziffern über den Bus. Es wartet dann auf Antworten. Wenn es Antworten erhält, sammelt es sie, übersetzt sie in Ziffern und meldet sie über den UART.
Wenn es innerhalb der Wartezeit (Standardeinstellung 200 ms) keine Antworten erhält, antwortet es mit "NO DATA" über den UART.
Wenn ich mich nicht irre, sind OBDII und CAN zwei separate Kommunikationsprotokolle auf separaten Drähten. OBDII verwendet serielle (ältere und langsame) Kommunikation auf zwei Drähten. Canbus verwendet zwei von OBDII getrennte Kabel, und Kommunikationsprotokolle sind nicht seriell, sondern werden auf parallelen Kabeln gesendet, im Gegensatz zu seriellen Kabeln, die im Grunde genommen Daten in einem Zug senden. Canbus wurde entwickelt, als die Elektronik in unseren Autos immer ausgefeilter wurde und nicht mehr in serieller Kommunikation gehandhabt werden konnte, was die überarbeitete serielle Kommunikation effektiv belasten würde. Händler mit ihren speziellen Scantools haben Zugriff auf alles, im Gegensatz zu generischen Lesegeräten, die nur Zugriff auf OBDII-Codes haben. Neuere Lesegeräte lesen ABS-Codes für mehr Zugriff auf Daten. Die Drehzahl wird von den seriellen OBDII-Kommunikationsleitungen abgelesen, nicht vom Canbus. Serielle Kommunikation ist zwar langsamer, aber für die meisten Menschen, die an Live-Daten interessiert sind, in Ordnung und fast nicht wahrnehmbar. Händler verwenden Canbus, um Sensoren und Programmierung zu testen. Serielle Kommunikation kann keine Sensoren testen oder die verschiedenen Module programmieren. Ich habe ein preisgünstiges Lesegerät, aber es kann keine Canbus-Daten anzeigen und ist auf die Dekodierung generischer Fehler beschränkt. Mein Aftermarket-Clone-Scantool von GMs macht (glaube ich, habe aber nicht alles ausprobiert) praktisch alles, was ein Scantool eines Händlers tut, aber zu viel geringeren Kosten, indem es auf OBDII- und Canbus-Daten zugreift. Mein Scantool wurde verwendet, um Ersatzfernbedienungen für das Karosseriesteuermodul (BCM) zu programmieren, alle Messgeräte und Anzeigen für einen Displaytest einschließlich Verkabelung und Modul einzuschalten und verschiedene Fehler wie den Verlauf der Batterietrennung oder Fehler im Zusammenhang mit Batterietrennungen zu ziehen. Mein allgemeiner Leser kann nicht so tief in jedes Modul eintauchen wie das Scantool. Wenn ich für den Online-Zugriff auf die Website von GM bezahle,
Pᴀᴜʟsᴛᴇʀ2
Rory Alsop
av4625