Je ne suis généralement pas un `` passionné de voiture '', alors j'espère que je pourrai l'expliquer assez bien pour obtenir de l'aide ici:
Lorsque j'envoie des messages à un appareil OBD-II, je reçois une réponse dans la plupart des voitures que j'ai testées. Cependant, avec des voitures qui ont apparemment plus d'une puce ECU, j'obtiens une réponse de chacune d'entre elles. Par exemple, si j'envoie une 01 0C
commande PID à un véhicule avec 3 puces ECU, je reçois 3 réponses qui sont généralement très similaires mais toujours différentes.
Une 01 00
commande est censée retourner 4 octets qui indique les PID pris en charge du véhicule, mais cela retourne également 4 octets pour chaque calculateur - l'un étant un 4 octets entièrement étoffé avec plusieurs indicateurs activés et désactivés, tandis que les autres semblent n'avoir une poignée de drapeaux activés (jusqu'à présent, ces drapeaux semblent toujours être des drapeaux qui sont inclus dans la réponse «principale», mais je ne sais pas si c'est toujours le cas).
Exemple:
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
Les deux dernières lignes sont constituées de drapeaux qui sont également marqués dans la première ligne, mais la ligne 3 a un drapeau supplémentaire que la ligne 2 n'a pas.
Il me semble qu'il existe peut-être un seul calculateur qui se qualifie comme la puce `` principale '' que je devrais écouter lorsque j'envoie des commandes, et (je pense) je comprends que je peux utiliser un masque / filtre CAN ID pour ne fais attention qu'à ceux dont j'ai besoin.
La question est: y a-t-il vraiment un «ECU primaire» auquel je devrais prêter attention, ou toutes ces réponses sont-elles également importantes? S'il y en a une principale que je dois cibler, puis-je envoyer une commande pour déterminer laquelle est la plus importante?
Véhicules testés sur:
2011 Chevy Cruze [2 ECUs]
2015 BMW M5 [3 ECUs]
2015 Range Rover Autobiography [3 ECUs]
Réponses:
Si votre véhicule est 2008 ou plus récent, il utilise le protocole CAN, vous pouvez utiliser la commande AT CR pour sélectionner l'ECU dont vous souhaitez entendre parler.
Voici comment:
envoyer
cela activera les en-têtes pour voir les adresses des ECU.
envoyer
il s'agit d'une commande OBD pour montrer lesquels des pids de 1 à 20 sont pris en charge.
votre réponse devrait être comme:
cela montre que vous avez 2 ECU 7E8 (moteur) 7E9 (transmission),
j'ai vu 5 ECU retournés: 7E8,7E9,7EA, 7EB, 7EC.
Pour entendre un seul ECU, vous émettez à l'ARC xxx où xxx est l'adresse de l'ECU.
envoyer ce qui suit
puis
retournera:
envoyer
pour désactiver les en-têtes puis envoyer:
et vous reviendrez juste
Si votre véhicule est un 29 bits, la réponse 0100 ressemblera à:
cela montre 2 ECU 18DAF118 (transmission) et 18DAF110 (moteur).
envoyer
d'entendre juste du moteur.
la source
CAN ne fonctionne pas comme vous le pensez.
CAN n'est pas basé sur un module, il est basé sur un message. Aucun module ne parle directement à aucun autre module. En CAN, un module génère un message avec une adresse, cette adresse identifie les données qui seront contenues dans le message. L'adresse donne également l'importance du message. Plus l'adresse est basse, plus la priorité est élevée.
Par exemple, l'ABS transmettra la vitesse du véhicule. Tous les autres modules qui ont besoin des données les liront.
Il n'y a pas de module plus important que n'importe quel autre, c'est la priorité du message qui est importante.
la source