Ich bin im Allgemeinen kein "Auto-Mensch", also kann ich das hoffentlich gut genug erklären, um hier Hilfe zu bekommen:
Beim Senden von Nachrichten an ein OBD-II-Gerät erhalte ich in den meisten von mir getesteten Fahrzeugen eine Antwort. Bei Autos, die anscheinend mehr als einen ECU-Chip haben, bekomme ich jedoch eine Antwort von jedem von ihnen. Wenn ich beispielsweise einen 01 0C
PID-Befehl an ein Fahrzeug mit 3 ECU-Chips sende , erhalte ich 3 Antworten, die im Allgemeinen sehr ähnlich, aber immer noch unterschiedlich sind.
Ein 01 00
Befehl soll 4 Bytes zurückgeben, die die unterstützten PIDs des Fahrzeugs angeben, aber dies gibt auch 4 Bytes für jede ECU zurück - eines sind vollständig ausgearbeitete 4 Bytes mit mehreren Flags ein und aus, während die anderen nur zu haben scheinen eine Handvoll Flags aktiviert (diese Flags scheinen bisher immer Flags zu sein, die in der 'Haupt'-Antwort enthalten sind, aber ich bin mir nicht sicher, ob dies immer der Fall ist).
Beispiel:
SENT: 01 00
RECEIVED:
00 BF BF AC D3 - This response has the most binary flags turned on
00 98 18 80 11 - 8 flags on here
00 98 18 80 13 - 9 flags on here
Die letzten beiden Zeilen bestehen aus Flags, die auch in der ersten Zeile markiert sind, aber die Zeile 3 hat ein zusätzliches Flag, das Zeile 2 nicht hat.
Es scheint mir, dass es vielleicht ein einzelnes Steuergerät gibt, das sich als der "primäre" Chip qualifiziert, den ich beim Senden von Befehlen hören sollte, und (ich denke) ich verstehe, dass ich eine CAN-ID-Maske / einen CAN-ID-Filter verwenden kann achte nur auf die, die ich brauche.
Die Frage ist: Gibt es wirklich ein „primäres Steuergerät“, auf das ich achten sollte, oder sind alle diese Antworten gleich wichtig? Wenn es einen primären gibt, auf den ich zielen muss, gibt es einen Befehl, den ich senden kann, um zu bestimmen, welcher der "wichtigsten" ist?
Fahrzeuge getestet an:
2011 Chevy Cruze [2 ECUs]
2015 BMW M5 [3 ECUs]
2015 Range Rover Autobiography [3 ECUs]
Antworten:
Wenn Ihr Fahrzeug 2008 oder neuer ist und das Dosenprotokoll verwendet, können Sie mit dem Befehl AT CR auswählen, von welchem Steuergerät Sie hören möchten.
So geht's:
senden
Dadurch werden die Header aktiviert, um die Adressen der Steuergeräte anzuzeigen.
senden
Dies ist ein OBD-Befehl, um anzuzeigen, welche der Pids von 1 bis 20 unterstützt werden.
Ihre Antwort sollte lauten:
Dies zeigt, dass Sie 2 ECUs 7E8 (Motor) 7E9 (Getriebe) haben.
Ich habe 5 zurückgegebene ECUs gesehen: 7E8,7E9,7EA, 7EB, 7EC.
Um von nur einem Steuergerät zu hören, geben Sie AT CRA xxx aus, wobei xxx die Steuergeräteadresse ist.
Senden Sie Folgendes
dann
wird zurückkehren:
senden
um Header auszuschalten und dann zu senden:
und du wirst gerade zurückkommen
Wenn Ihr Fahrzeug eine 29-Bit-Dose ist, sieht die 0100-Antwort ungefähr so aus:
Dies zeigt 2 ECUs 18DAF118 (Getriebe) und 18DAF110 (Motor).
senden
nur vom Motor zu hören.
quelle
CAN funktioniert nicht so wie Sie denken.
CAN ist nicht modulbasiert, sondern nachrichtenbasiert. Kein Modul spricht direkt mit einem anderen Modul. In CAN generiert ein Modul eine Nachricht mit einer Adresse. Diese Adresse identifiziert die Daten, die in der Nachricht enthalten sein werden. Auch die Adresse gibt die Wichtigkeit der Nachricht an. Je niedriger die Adresse, desto höher die Priorität.
Zum Beispiel überträgt das ABS die Fahrzeuggeschwindigkeit. Jedes andere Modul, das die Daten benötigt, liest sie ein.
Es gibt kein Modul, das wichtiger ist als jedes andere. Es ist die Nachrichtenpriorität, die wichtig ist.
quelle