CAN Bus PDF Imprimer Envoyer
Lundi, 19 Janvier 2009 09:04
Le bus CAN (Controller Area Network) est le fruit de la collaboration entre l'Université de Karlsruhe et Bosch Gmbh. Il fait  partie des bus de terrain les plus utilisés dans le monde tant pour des applications liées aux véhicules que des applications industrielles, en devenant dans ce cas une alternative à la boucle analogique 20mA.

Ce bus de classe C ( 125 kbit/s à 1 Mbit/s) est présent dans l'automobile avec deux débits distincts.
Le CAN High (250 kbit/s) répond à la demande de débit élevé entre organes de sécurité et le calculateur (Airbag, ABS...).
Le CAN Low  (125 kbit/s) est utilisé pour les organes ne requérant pas un timing serré (rétroviseurs électriques, climatisation...).
can_volvo
L'accés au bus CAN dans le cas du protocole ODB2 (Full CAN) se trouve sur le connecteur standard
  • pin 6:   CAN High
  • pin 14: CAN Low
CAN_plug
Attention, un bus CAN peut se trouver en complément d'un autre bus lié au protocole ODB2, dans ce cas les données des stations (nœuds) ne sont pas accessibles aux outils grand public. Ce bus CAN complémentaire peut se trouver sur des entrées libres de la prise standard.
Dans le cas d'un véhicule Full-CAN l'accès à des modules tel que ABS, Airbag n'est pas possible à l'aide d'un scanner grand public. Ces remarques ne s'appliquent pas au groupe VAG (Wolkswagen, Audi, Skoda) qui autorise l'accès à ces informations (notamment les identifiants des modules sur le bus) permettant l'émergence de logiciels bon marché voire gratuit.

Les signaux CAN High et CAN Low véhiculent la même information mais sont complémentés. Cela signifie qu'à un "1" logique sur l'un, correspond un "0" sur l'autre et inversement. Le but est d'offrir une meilleure résistance aux parasites ceux ci affectant de même manière les CAN High et Low.
CAN_High_Low

L'arbitrage est de type CMSA/CR et présente un champ d'arbitrage (Identificateur) de 11 ou 29 bits.
  • format standard : CAN 2.0 A → Identificateur 11bits
  • format étendu    : CAN 2.0 B → Identificateur 29 bits
Les constructeurs ont retenu le CAN 2.0 A, le nombre de stations possédant un identificateur unique étant suffisant pour équiper une voiture. Les identificateurs de module (nœud) restent propre à une marque et peuvent même être différents d'un type de véhicule à l'autre.
Les bus CAN 2.0 A et B demeurent compatibles entre eux.

Les bits sont dits :
Dominants → ‘0’ logique
Récessifs  → ’1’ logique

Dans le cas du bus CAN les bits dominants "0 logique" remportent l'arbitrage, ce qui signifie que plus l'identificateur de nœud est petit plus il est prioritaire.

 

Une trame sur le bus CAN se présente de la manière suivante.
IFSSOFArbitrageComDonnéeCRCACKEOD
  • IFS : Inter Frame Space, permet de favoriser un noeud plus lent ou défavoriser un nœud défectueux sur le bus.
  • SOF : Start Of Frame, 1 bit dominant utilisé pour synchroniser les stations sur le bus.
  • Arbitrage : Champ d'arbitrage sur 11 bits ou 29 bits + 1 bit RTR (RTR Dominant → trame de donnée, RTR Recessif → trame  de requête).
  • Com : 6 bits, Indique le nombre d'octets présent dans le champs de données.
  • Données : 0 à 8 octets (64 bits).
  • CRC : Contrôle de redondance cyclique sur 16 bits.
  • ACK : Acquitement sur 2 bits, premier bit, dominant → acquitté, récessif → non acquité, deuxième bit toujours recessif.
  • EOD : Champ de fin de frame, 7 bits récessifs
Afin de sécuriser la transmission des données, la méthode dite de "Bit-Stuffing" est utilisée. Cette méthode consiste, dès que l’on a émis plusieurs bits de même polarité sur le bus (5 bits pour le CAN), à insérer un bit de polarité opposé pour briser des chaînes trop longues de bits identiques.
Dans le cas du codage suivant :
1011111101000001
101111101010000011
Le but est de crée des transitions supplémentaires pour améliorer la fiabilité de la transmission mais on peut aussi créer un code d’échappement bref. Ce code d’échappement est ici utilisé pour envoyer une trame d’erreur, par exemple lorsqu’une station détecte un mauvais CRC (rappelez-vous que toutes les stations reçoivent les trames). Le message d’erreur comporte un en-tête de 6 bits dominants ce qui constitue une violation du bit stuffing et permet ainsi la propagation de l’erreur à toutes les stations (qui vont à leur tour detecter cette violation).
Le protocole CAN impose que les stations possèdent deux compteurs afin d'enregistrer les erreurs de reception et d'emission.
  • Une reception erronée   → compteur reception incrementé de 1
  • Un envoi erroné              → compteur emmission incrementé de 8
  • Une reception correcte  → compteur reception decrementé de 1
  • Un envoi correct             → compteur emmission decrementé de 1
Lorsque les deux compteurs sont inférieurs à 128, les nœuds sont dits "Erreur Active". Ils sont fiables et aptes à générer des trames "erreur active".
De 128 à 255 les nœuds sont en mode "Erreur passive". Le niveau de confiance accordé est  faible. Ils ne peuvent générer que des trames "erreur passive" et voient leur temps d'accés au bus réduit.
Au-delà de 255, le nœud est déconnecté du bus. Il est "Bus off". Il reste dans cet état jusqu'à ce qu'il reçoive une commande de remise en service et prouve sa viabilité aprés 128 receptions de 11 bits recessifs (IFS non soumis au bit stuffing).

 

 

Mis à jour ( Mardi, 09 Octobre 2012 19:05 )