SEARCH2

mardi 9 février 2016

CAN

Cet article va nous permettre d'aborder le protocole CAN, nous aborderons sa mise en oeuvre dans le cadre d'échanges avec un véhicule.

Présentation

CAN a été développé depuis 1992 par des industriels, ce protocole présente de nombreux avantages : réseau multi maitre, mise en œuvre aisé, débits des transmissions. Il devient une référence en industrie et dans le monde automobile.
Dans cet article nous n'aborderons pas les spécifications du bus CAB.
On trouve sur Internet une littérature abondante sur le sujet; nous citerons simplement des sources et fournirons des liens vers des sites contenant ce type d'informations.

Pour résumer CAN est une recommandation, définissant le protocole des couches physiques au niveau transport.
Pour mettre en œuvre un bus CAN il suffit d'une paire torsadée et blindée.
Soulignons tout de même qu'avec une vitesse de plus de 500 kbauds on prêtera une attention particulière à la qualité des connections.

Mise en œuvre

Nous allons mettre en œuvre une liaison CAN entre notre ordinateur et une voiture.
les communications se feront au moyen d'une interface CANUSB de Lawicel, nous avons choisis cette solution plutôt que d'autre produits type ELM,MOBYDIC car cette interface n'est pas dédié au seuls automobiles.
En outre l'interface CANUSB propose deux types de driver, un port série virtuel et des API contenues dans une DLL.
Le port série virtuel est très utile pour les tests, on a un aperçu rapide des transmissions CAN. Il est mis en œuvre aisément avec des logiciels terminal de type Realterm, Hyperterminal ou autre.
Les API, elles ne vous seront utile que pour réaliser un logiciel mais c'est là le mode d'exploitation le plus performant surtout si vous envisager d'envoyer des trames CAN.

Le matériel

Pour notre application nous avons utiliser les éléments suivants:
  • une interface CANUSB et un PC avec un logiciel de type CAN Monitor Pro
  • un câble "maison" qui nous permet d'adapter le câblage
  • un câble OBD, avec deux fiches l'une en DB9 et l'autre en SAE J1962, que nous branchons sur le port diagnostique du véhicule
  • deux connecteurs DB9, un male et un femelle
Cela fait beaucoup de câble mais je voulais absolument conserver mon câble OBD en ceci qu'il me sert pour mon interface Mobydic.
Ce câble est apparemment un modèle standard, cependant j'ai préféré contrôler le câblage avant pour éviter tout dégât au véhicule, a l'interface CANUSB ou au PC. Je vous invite à procéder de la même manière.

Le câblage

Le câble maison ne présente pas de difficulté particulières, ce n’est pas du CMS, il faut simplement faire attention à la qualité des soudures.
Je vous conseille d'employer un câble de 2 m avec un minimum de 2 paires torsadées, blindées. Utiliser une paire pour les transmissions CAN et l'autre pour la masse. Relier la tresse à la masse à chaque extrémité du câble sur les DB9.
On part d'une DB9 Mâle sur la CAN USB, on branche un câble "maison" avec un DB9 Femelle. A l'extrémité du câble "maison" on retrouve un DB9 mâle qui se raccorde sur le câble "OBD-2" sur le connecteur DB9 femelle.
Le câblage du cable maison est le suivant :

Voici le schéma du connecteur DB9 mâle due l'interface CANUSB

Le schéma du cable OBD-2, avec le DB9 femelle

Maintenant pour rapel le brochage des DB9, notez que les brochages sont données connecteurs vue coté broches ou vue de face. La vue de face d'un DB9 mâle correspond à la vue arriere ou coté soudure d'un DB9 femelle et inverséeent.



Communications protocole OBD sur bus CAN


Les essais de communication sont réalisés avec CAN monitor Pro un excellent outil très flexible.



Quelques notions de CAN pour commencer.

Pour la liaison deux paires torsadées dans un câble blindé suffisent, Les trames ont un entête, des données et un contrôle de redondance cyclique pour contrôler l’intégrité des données

Notez qu’avec le CANUSB la gestion des CRC est totalement transparente. Mais nous essaierons de développer les méthodes liés au contrôle de la qualité des transmissions.

Pour le moment nous nous concentrons sur le protocole CAN, les trames sont émisses par des équipements disposant d’adresse ou ID. L’entête contient des informations sur la trame et sont format. Un DLC permet de connaitre le nombre d’octets de données. Les données sous forme de suite d’octet contenant des informations structurées.

Tout d’abord l’adressage CAN est dit 11 ou 29 Bit selon les réseaux et équipements interconnectées.

La priorité sur le bus CAN est donnée aux trame sont les ID sont les plus bas. Certaines adresses sont normalisées et réservé ç un usage particulier. Pour ce qui concerne la Prius 3 nous disposons de deux calculateurs qui communiquent selon le protocole OBD2. ODB 2 , plus particulièrement la norme ISO15495 définissent l’adressage des équipements OBD communiquant sur un bus CAN. Les équipements de test peuvent utiliser une adresse générique x7DF pour lire des données du véhicule, sur la copie d’écran ci-dessous on voit que tous les calculateurs supportant le protocole OBD répondent à la requête émises par l’interface de test qu’est le CANUSB. Ici les deux calculateurs ont les adresses x7E8 et x7EA.



La norme prévoit la possibilité de ne communiquer qu’avec l’un des 8 calculateurs prévues. Ci après nous nous intéressons au calculateur répondant avec un ID x7E8, la norme préconise que ce soit le calculateur du moteur, nous chercherons plus d’informations pour nous assurer que ce soit bien cela.



On détermine les adresse de la manière suivante : Adresse test = x7E0 + (n-1) pour le calculateur x7E0 + (n-1) + 8. Voir le tableau ci après

ECU Adr Test Adr ECU
1 0x07E0 0x07E8
2 0x07E1 0x07E9
3 0x07E2 0x07EA
4 0x07E3 0x07EB
5 0x07E4 0x07EC
6 0x07E5 0x07ED
7 0x07E6 0x07EE
8 0x07E7 0x07EF



Les entêtes de trame ou headers contiennent d’autres informations nous renseignant sur la nature de la trame et ses données. La norme CAN prévoit 4 types de trame.. Nous nous focalisons sur les trames de données, nous évoquerons les autres types de trame par la suite.

Des bits nous indiquent le type de trame notamment RTR pour les trames requête.

Le DLC nous indique la longueur des donnes de la trame en octet.

Les données sont codées en octet, elles ne peuvent dépasser 8 octets.

Nous allons aborder maintenant la description d’une trame capturée sur le bus CAN.







Aucun commentaire:

Enregistrer un commentaire