Cadres reçus de véhicules avec plusieurs puces ECU

10

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 00commande 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]
Rein S
la source
1
Il peut être utile de nous indiquer la marque et le modèle sur lesquels vous avez essayé. Ce que je sais, c'est que les voitures avec 3 ECU ont tendance à être configurées avec deux ECU ordinaires (un pour chaque banque de moteurs) et un ECU "maître" qui gère les signaux vers / depuis (et éventuellement entre?) Les deux ECU ordinaires. L'ECU "maître" ne fait pas grand-chose de plus, donc si un code de diagnostic est défini, la source de celui-ci sera l'ECU ordinaire, pas le "maître". Cependant, vous devrez peut-être interroger le maître via l'interface OBD-II pour obtenir les DTC. J'aimerais pouvoir vous aider plus que cela, mais c'est tout ce que j'ai pour l'instant.
Zaid
1
Je suis ingénieur logiciel, mais je n'ai pas utilisé OBD ou CAN, mais cette page est-elle utile? Il semble qu'il devrait y avoir un moyen de filtrer les messages.
JPhi1618
@Zaid Merci pour les informations supplémentaires. J'ai mis à jour ma question avec les voitures sur lesquelles je l'ai testée, mais c'est quelque chose que je devrai décider pour un certain nombre de véhicules donnés; cela peut ne pas finir par avoir de l'importance, selon la réponse exacte à laquelle je dois m'attendre lors de l'envoi de PID non pris en charge, mais je voulais juste couvrir toutes mes bases
Rein S
@ JPhi1618 C'est en fait à peu près le même contexte dans lequel j'avais besoin de cela. Cela pourrait très bien être le chemin que je dois suivre! Merci beaucoup pour le lien, je vais y plonger un peu plus profondément.
Rein S
1
Si vous trouvez quelque chose d'intéressant que vous pensez pouvoir étoffer en une «réponse», revenez et répondez à votre propre question. C'est totalement permis.
JPhi1618

Réponses:

5

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

AT H1

cela activera les en-têtes pour voir les adresses des ECU.
envoyer

0100

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:

7E8064100BE3EA813
7E906410098188013
>

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

AT CRA 7E8

puis

0100

retournera:

7E8064100BE3EA813

envoyer

AT H0

pour désactiver les en-têtes puis envoyer:

0100

et vous reviendrez juste

4100BE3EA813

Si votre véhicule est un 29 bits, la réponse 0100 ressemblera à:

18DAF11806410088180013
18DAF110064100BE5FA813
>

cela montre 2 ECU 18DAF118 (transmission) et 18DAF110 (moteur).
envoyer

AT CRA 18DAF110

d'entendre juste du moteur.

godzilla
la source
salut !! je travaille sur un prototype de système de diagnostic de véhicule. J'ai parcouru votre réponse mais j'ai quelques questions ... 1) y a-t-il une commande AT pour vérifier combien d'ECU sont disponibles. 2) lorsque l'en-tête est désactivé, pourquoi une seule chaîne "4100BE3EA813" est affichée et non les deux "410098188013"
Dev
4

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.

vini_i
la source
Juste pour faire un suivi: s'il n'y a pas de module plus important que l'autre, y a-t-il une raison de filtrer les réponses de plusieurs calculateurs? Par exemple, si je demande un RPM pour la BMW M5, j'obtiens 3 réponses (elles sont généralement similaires, mais jamais exactement les mêmes). Dois-je simplement «faire confiance» à la première réponse comme une lecture précise? Y a-t-il une raison pour ne pas se contenter de la première réponse pour chaque demande?
Rein S
Si toutes les réponses ont la même adresse, faites confiance à la première. S'ils n'ont pas la même adresse, faites confiance à celle qui a la priorité la plus élevée. La priorité la plus élevée a l'adresse la plus basse.
vini_i