Académique Documents
Professionnel Documents
Culture Documents
31/12/2022 CHAPITRE 4 :
BUS CAN
Objectifs pédagogiques :
Figure 19 : Exemple d’arbitrage entre une trame de requête et une trame de données .................................... 14
1 INTRODUCTION
1.1 Historique
Depuis les années 1960 la longueur de câble utilisée dans une automobile ne cesse de croître
pour dépasser 2000 m à la fin des années 1990. Le nombre des connexions atteint 1800 à cette
même date. La fiabilité et la sécurité sont menacées. Les normes en matière de pollution et de
consommation d’énergie, de sécurité (ABS, ESP, AIR-BAG …) et la demande de confort
(mémorisation des réglages de conduite, climatisation régulée par passager, système de
navigation…) obligent les constructeurs à multiplier les capteurs et actionneurs intelligents dans
leur véhicules accélérant ce processus de multiplication des câbles et connexions depuis une
vingtaine d’années.
La société Robert Bosch GmbH (Allemagne) développe dès le début des années 1980 une
solution de multiplexage des informations circulant à bord de la voiture. Le bus CAN (Control Area
Network) est alors développé et sera normalisé dès 1983. En 1985, Mercedes commercialise la
première voiture (classe S) équipée d'un bus CAN et de cinq unités de calcul. Aujourd'hui, beaucoup
de véhicules sont totalement multiplexés. Leurs réseaux permettent de relier entre plus d'une
trentaine de calculateurs.
Le CAN (Controller Area Network) fait partie des réseaux de terrain (ou réseau embarqué)
les plus utilisés tant pour des applications automobiles que des applications industrielles
(automatisme, etc.). Le CAN occupe aujourd'hui une position de leader sur le marché
automobile. D’autres secteurs utilisent également le bus CAN :
▪ Véhicules industriels ;
▪ Matériel agricole ;
▪ Bateaux ;
▪ Avions ;
▪ Production industrielle
▪ Automatismes ;
▪ La domotique …
3
HNS re2sd Spécialité : IRIIA Cours RLI
CHAPITRE 4 : Le Protocole Bus CAN
Le multiplexage temporel consiste à faire circuler sur un même câble (un bus) une multitude
d’informations entre les différents équipements (très souvent des calculateurs). Ces équipements
communiqueront donc à tour de rôle. Cette technique permet de diminuer une quantité importante
de câblage à installer et de coût (en masse, matériaux, main d'œuvre, maintenance).
Le bus CAN (Controller Area Network) est un bus série de terrain car il doit fonctionner dans
un environnement limité et sévère (milieu industriel, atelier, voiture…) permettant la transmission
asynchrone de données numériques. Il s'agit d'un bus multiplexé.
• bus multi maîtres où tous les participants ont les mêmes droits ;
• les nœuds (hôtes) de ce bus ne sont pas adressés seuls les messages transmis
possèdent un identificateur. Chaque nœud scrute en permanence le bus et décide
selon l’identificateur si le message lui est destiné ou pas ;
• fiabilité élevée des mécanismes de protection du protocole.
• le protocole CAN 2.0A dit CAN standard qui possède un identificateur de 11 bits ce
qui permet de délivrer 2048 messages différents ;
• le protocole CAN 2.0B ou CAN étendu qui possède un identificateur 29 bits soit plus
de 536 millions de messages différents.
Le protocole CAN ne couvre que 2 (ou 3) des 7 couches du modèle OSI : les couches
Physique (couche 1) et Liaison (couche 2) et éventuellement la couche Application (couche 7).
3 Couche Physique
Cette couche correspond à l’aspect matériel (connecteurs) et électrique des signaux (codage,
tensions, impédance…).
Le bus CAN utilise des paires filaire différentielles torsadées (réduction des perturbations)
pour la transmission des données. La ligne est donc constituée de deux fils : CAN L (CAN Low)
et CAN H (CAN High). Le Signal CAN transmis est donc obtenu par la différence de tension
entre les deux lignes. La ligne du bus doit se terminer par des résistances de terminaison.
• CAN low speed ISO 11519 : (125 kbits/s, 2 à 20 nœuds, longueur limitée par la
capacité parasite). Dans l'automobile, il est appelé bus confort et utilisé pour la
climatisation, la radio, le tableau de bord … ;
• CAN high speed ISO 11898 : (125 kbits/s à 1Mbits/s, paire 120 Ω , 2 à 30 nœuds, 40m
à 1Mbits/s). Dans l'automobile, il est utilisé pour les équipements de sécurité
(freinage, moteur … ;
Les nœuds sont câblés sur le bus de telle manière qu'en cas d'émission simultanée de deux
nœuds, le NL0 s'impose par rapport au NL1 : Le NL0 est donc appelé état dominant et le
NL1, état récessif.
Débit en kbits/s
Les bits transitant sur le bus sont codés avec la méthode NRZ (Non Return to Zero). Pendant
la durée totale du bit, le niveau de tension de la ligne est maintenu, c’est à dire sa valeur reste
constante qu’elle soit dominante ou récessive.
Une des caractéristiques du codage NRZ est que le niveau du bit est maintenu pendant toute
sa durée. Cela pose des problèmes de fiabilité si un grand nombre de bits identiques se succèdent.
CAN utilise un codage NRZ. Afin de ne pas laisser de grande suite de 1 ou de 0, après 5 bits de
valeur identique, un bit de la valeur opposée est inséré (retiré à la réception). Cette technique est
appelée « bit stuffing »
Conséquences :
Particularité du bus CAN : l’adresse correspond à l’identification du message car il n’y a pas
d’identification de station (nœud). C’est la couche supérieure qui précisera le numéro d’identification
du message.
Dans les applications « temps réel », il est spécifié à la sous couche LLC des contraintes
temporelles sur les messages envoyés tels que la période, le temps d’arrivée, l’échéance…
Pour une garantie de service, tous les messages préparés (mis dans une file de transmission)
sont transmis avec respect de leurs échéances. En revanche, pour un service de meilleur effort, les
HNS re2sd Spécialité : IRIIA Cours RLI
8
CHAPITRE 4 : Le Protocole Bus CAN
messages en attente de transmission seront mis dans un ordre tel que le taux de perte de messages
(le nombre de messages dont les échéances ne sont pas respectées) soit minimal.
Cette couche gère l’accès au canal physique à l’aide d’un protocole de communication ;
autrement dit, elle récupère les unités de données (trames) de la couche LLC et les renvoie dans le
canal physique en ajoutant l’information de contrôle selon le protocole implanté. Les protocoles
dont traite cet article sont ceux qui ont pour objectif le respect des échéances des messages. Il existe
différents protocoles temps réel selon qu’ils garantissent le respect des échéances des messages ou
pas.
✓ Chaque station connectée au réseau écoute les trames transmises par les
stations émettrices. Chaque nœud décide quoi faire du message, s’il doit y répondre
ou non, s’il doit agir ou non ;
✓ Le protocole CAN autorise différents nœuds à accéder simultanément au bus. Un
procédé rapideet fiable d’arbitrage détermine le nœud qui émet en premier ;
Les trames de données et trames de requêtes sont séparées des trames précédentes
par un champ de bits appelé espace inter trame (interframe space). Il s’agit d’une suite de
plusieurs bits récessifs (NL1).
On trouve ensuite une 8ème zone dite espace inter trame (interframe) qui appartient à la
trame.
Dès que le bus est libre (bus idle), n’importe quel noeud relié au réseau peut
émettre un nouveaumessage.
Le bit SOF (début de trame de données) est dominant. Il signale à toutes les
stations le début d'un échange. Cet échange ne peut démarrer que si le bus était
précédemment au repos.
Le champ d'arbitrage est constitué des bits de l'identificateur ainsi que du bit RTR (Remote
Transmission Request).
La longueur de l'identificateur est de 11 bits. Les bits sont transmis dans l'ordre ID10 à ID0
(du bit de poids fort au bit de poids faible). Les 7 premiers bits de poids fort (ID10 à ID4) ne doivent
pas être tous récessifs. L'identificateur a la forme suivante : ID = (ID10 ID9 ID8 ID7 ID6 ID5 ID4 X X X
X). Les 4 derniers bits ne sont pas historiquement utilisés. Le nombre maximal d'identificateurs est
donc de 2032.
Pendant le champ d'arbitrage, les bits transmis et reçus sont comparés par l'interface
CAN.
Les identificateurs de chaque message permettent de définir quel message est prioritaire
sur tel autre.
Les bits R0 et R1 sont les bits de réserves (dominants en trame CAN 2.0A). Ils sont en réserve
pour des usages ultérieurs et permettent d'assurer des compatibilités avec de futures évolutions.
Les 4 derniers bits du champ de commande sont les bits DLC (Data Length Code) indiquent le
nombre d'octets qui seront contenus dans le champ de données.
Le champ de données contient les données utiles transmises. Il peut être composé
de 0 à 8 octets. Danschaque octet, le MSB est transmis en premier.
Le champ de CRC est composé d'une séquence de 15 bits suivi du CRC Delimiter (1 bit
récessif).
La séquence de CRC (Cyclic Redundancy Code) permet de vérifier l'intégrité des données
transmises. IL s'agit d'un polynôme calculé de la même manière par l’émetteur et le récepteur à
partir des bits du SOF, du champ d'arbitrage, du champ de contrôle et du champ de donnée.
▪ Code de vérification des données transmises sur 15 bits : le récepteur compare son
code à celui de l’émetteur ; si différence : pas d’acquittement.
▪ Délimiteur de vérification de données : marque la fin de vérification, 1 bit toujours
à l’état 1 (récessif).
Les 15 bits premiers représentent le reste de la division des bits des champs précédents de
la trame par le polynôme générateur g(x).
Le champ d'acquittement est composé de 2 bits, l'ACK Slot et le ACK Délimiter (1 bit
récessif) :
✓ Lors de la transmission d'un message par un nœud, le bit ACK Slot est un bit récessif ;
✓ Lors de l'acquittement, par un nœud, de la réception correcte d'un message, le bit ACK
Slot est un bit dominant.
La trame de donnée se termine par une séquence de 7 bits récessifs. Ce champ possède une
structure fixe. Les logiques de codage (à l'émission) et de décodage (aux réceptions), de bit stuffing
sont désactivées pendant la séquence du champ de fin de trame.
Une station nécessitant des données particulières peut initialiser la demande d'une
transmission en envoyant une trame de requête (remote frame). La structure d'une trame de
requête est identique à celle de donnée hormis le champ de données qui est optionnel dans ce type
de trame.
Arbitrage entre une trame de données et une trame de requête portant le même
identificateur : la trame de donnée est prioritaire sur la trame de requête.
Figure 19 : Exemple d’arbitrage entre une trame de requête et une trame de données
Cette trame est générée par n’importe quel noeud détectant une erreur. La trame d’erreur
est constituée de deux champs principaux : le drapeau d’erreur et le délimiteur de champ.
On peut dans le protocole du bus CAN détecter 5 types d’erreurs : Erreur de bit, Erreur de
stuffing, Erreur de CRC, Erreur d’acknowledge delimiter, Erreur d’acknowledge slot.
Chaque fois qu’un émetteur envoie un bit sur le bus, il vérifie en même temps si le niveau
émis sur le bus correspond à celui qu’il désire envoyer en faisant une surveillance du bus. Si le
niveau ne correspond pas, il le signale par un Bit Error.
Exception :
▪ Présence d’un bit dominant à la place d’un bit récessif dans le champ d’arbitrage
(perte d’arbitrage).
▪ Présence d’un bit dominant à la place d’un bit récessif dans le champ d’acquittement
(signalisation d’erreur par un recepteur).
Une erreur de Stuffing est détectée à chaque fois qu’il y a 6 bits ou plus consécutifs de
même signe sur le bus
Si la valeur du CRC calculée par le récepteur est différente de celle envoyée par l’émetteur, il
y a erreur de CRC (CRC Error).
Signalée lorsque le récepteur n’observe pas un bit récessif lors du champ de délimiteur
d’acquittement. Il en est de même pour le délimiteur de CRC.
Le transmetteur détecte une erreur d'acquittement lorsqu'il ne reçoit pas de bit dominant
pendant le ACK Slot.
Suivant le nombre d’erreur qu’un nœud comptabilise, l’état du mode de ce noeud peut
différer. Un compteur mémorise le nombre d’erreur rencontré lors de la transmission des trames sur
le bus. Deux compteurs séparés régissent respectivement le nombre d’erreurs en émission et en
réception. Il se nomme :
Par défaut (à l’initialisation), le nœud est dans l’état « erreur Active ». Le bus peut émettre
et recevoir sans restriction. Pendant le fonctionnement, les compteurs sont incrémentés lors de la
détection d’erreur (variable suivant le type d’erreur).
Pour chaque transmission réussie, le compteur est décrémenté. Le nœud reste dans l’état «
erreur active » tant que la valeur du compteur reste inférieure à 127.
Si la valeur des compteurs dépasse 127, le nœud passe à l’état « erreur passive ».
Dans ce mode ; le nœud peut émettre et recevoir, mais après une transmission, il doit
suspendre la transmission et attendre 8bits de plus qu’un noeud en mode erreur active pour pouvoir
retransmettre.
Si les compteurs dépassent la valeur 255, le nœud passe dans le mode « Bus off ». L’activité
du nœud est arrêtée, il ne participe plus à la communication. Seul un RESET permet de repasser en
mode erreur active (127 trames de onze bits récessifs).
La trame de surcharge indique aux autres nœuds qu’une station est surchargée. Elle est
formée de deux champs :
Dès qu’une trame de surcharge est émise, les autres nœuds voient sur le bus une suite de six
bits dominants qui ne respectent pas la règle du Bit-Stuffing. Ils émettent à leur tour une trame de
surcharge.
Seulement deux trames de surcharges consécutives sont autorisées sur le bus (pas plus de
12 bits dominants consécutifs émis sur le bus).
Elle sépare les trames de données ou de requêtes entre elles. Il s’agit d’une suite de plusieurs
bits récessifs. Elle est divisée en deux parties :