CoursDocuments

Bus CAN ( Controller Area Network) La couche liaison et traitement des erreurs

Ministère de l’Enseignement Supérieur et de la Recherche Scientifique Cours: chapitre 4 

Les Bus de communication: Bus CAN (Controller Area Network) La couche liaison et traitement des erreurs 

Version 1.0, Septembre 2018 

Bus CAN – La couche liaison 

On retrouve ainsi dans le protocole CAN, la couche liaison de données (couche 2) et la couche physique (couche 1). 

La couche de liaison de données est subdivisée en deux sous- couches: 

  • LLC (Logic Link Control
  • MAC (Medium Access Control

la couche physique est divisée en trois sous-couches: 

  • PLS (Physical Signalling), 
  • PMA (Physical Medium Access), 
  • MDI (Medium Dependent Interface

Bus CAN – La couche liaison 

La sous-couche MAC représente le noyau du protocole CAN. Elle a pour fonction de présenter les messages reçus en provenance de la sous-couche LLC et d’accepter les messages devant être transmis vers la sous-couche LLC. Elle est responsable de : – la mise en trame du message. – l’arbitrage. – l’acquittement. 

La sous-couche LLC s’occupe quant à elle : – du filtrage des messages. – de la notification de surcharge (Overload). – de la procédure de recouvrement des erreurs. 

Bus CAN – Le protocole CAN 

Nœud : sous-ensemble relié à un réseau de communication et capable de communiquer sur le réseau selon un protocole de communication. Chaque nœud peut détecter des erreurs sur un message qui ne lui est pas destiné et en informer les autres nœuds. 

Valeurs du bus : le bus peut avoir l’une des deux valeurs logiques complémentaires définies, non pas en 0 et 1 comme d’habitude, mais sous la forme de bit nommé dominant ou récessif. Dans le cas d’une transmission simultanée de bits récessifs et dominants, la valeur résultante du bus sera dominante (équivalence avec un ET câblé). 

Message : chaque information est véhiculée sur le bus à l’aide d’un message (trame de bits) de format défini mais de longueur variable (et limitée). Dès que le bus est libre (bus idle), n’importe quel nœud relié au réseau peut émettre un nouveau message. Routage des informations : des nœuds peuvent être ajoutés au réseau sans qu’il n’y ait rien à modifier tant au niveau logiciel que matériel. Chaque message possède un identificateur (identifier) qui n’indique pas la destination du message mais la signification des données du message. Ainsi tous les nœuds reçoivent le message, et chacun est capable de savoir grâce au système de filtrage de message si ce dernier lui est destiné ou non. 

Règles de fonctionnement et définitions 

Bus CAN – Le protocole CAN 

Trame de données et de requête : une trame de données (data frame) transporte des données. Une trame de requête est émise par un nœud désirant recevoir une trame de données (dans ce cas l’identificateur est le même pour les deux trames). 

Débit (bit/s) : le débit peut varier entre différents systèmes, mais il doit être fixe et uniforme au sein d’un même système. Priorités : en cas de demandes de prise du bus simultanées les identificateurs de chaque message permettent aussi de définir quel message est prioritaire sur tel autre. Fonctionnement multi-maître: lorsque le bus est libre, chaque nœud peut décider d’envoyer un message. Seul le message de plus haute priorité prend possession du bus. Arbitrage : le problème de l’arbitrage résulte du fonctionnement multi-maître. Si deux nœuds ou plus tentent d’émettre un message sur un bus libre il faut régler les conflits d’accès. On effectue alors un arbitrage bit à bit (non destructif) tout au long du contenu de l’identificateur. Ce mécanisme garantit qu’il n’y aura ni perte de temps, ni perte d’informations. Dans le cas de deux identificateurs des trames de requête et de données identiques, la trame de données gagne le bus. Lorsqu’un bit récessif est envoyé et qu’un bit dominant est observé sur le bus, l’unité considérée perd l’arbitrage, doit se taire et ne plus envoyer aucun bit. L’arbitrage est qualifié de CSMA/CA (Carrier Sense Multiple Access – Collision Avoidance).

Règles de fonctionnement et définitions 

Bus CAN – Le protocole CAN 

Sécurité de transmission : dans le but d’obtenir la plus grande sécurité lors de transferts sur le bus, des dispositifs de signalisation, de détection d’erreurs, et d’autotests ont été implémentés sur chaque nœud d’un réseau CAN. On dispose ainsi d’un monitoring bus (vérification du bit émis sur le bus), d’un CRC (Cyclic Redundancy Check), d’une procédure de contrôle de l’architecture du message, d’une méthode de Bit-Stuffing. On détecte alors toutes les erreurs globales, toutes les erreurs locales au niveau des émetteurs, jusqu’à 5 erreurs aléatoires réparties dans un message. La probabilité totale résiduelle de messages entachés d’erreurs est inférieure à 4.7*10-11. 

Signalement des erreurs et temps de recouvrement des erreurs : tous les messages entachés d’erreur(s) sont signalés au niveau de chaque nœud par un flag. Les messages erronés ne sont pas pris en compte, et sont retransmis automatiquement. 

Erreurs de confinement : un nœud CAN doit être capable de faire les distinctions entre des perturbations de courtes durées et des dysfonctionnements permanents. Les nœuds considérés comme défectueux doivent passer en mode switched off en se déconnectant (électriquement) du réseau. 

Règles de fonctionnement et définitions 

Bus CAN – Le protocole CAN 

Points de connexion : la liaison de communication série CAN est un bus sur lequel un nombre important d’unités peuvent être raccordées. En pratique le nombre total d’unités sera déterminé par les temps de retard (dus aux phénomènes de propagation) et/ou les valeurs des charges électriques que ces unités présentent sur le bus. Canal de liaison simple : le bus consiste en un simple canal bidirectionnel qui transporte les bits. A partir des données transportées, il est possible de récupérer des informations de resynchronisation. La façon dont le canal est implémenté (fil standard, liaison optique, paire différentielle…) n’est pas déterminée dans la norme officielle BOSCH. Acquittement : tous les récepteurs vérifient la validité d’un message reçu, et dans le cas d’un message correct ils doivent acquitter en émettant un flag. Mode Sleep (sommeil) et Mode Wakeup (réveil) : afin de réduire la consommation d’énergie, chaque élément CAN peut se mettre en Sleep mode. Dans ce mode il n’y a aucune activité interne au nœud CAN considéré et ses drivers sont déconnectés du bus. La reprise de fonctionnement (mode Wakeup) s’effectue lorsqu’il y a une activité sur le bus ou par décision interne à l’élément CAN. On observe une attente due à une resynchronisation de l’oscillateur local qui teste la présence de 11 bits consécutifs sur le bus (l’activité interne au nœud CAN a cependant repris). Par suite les drivers se reconnectent au bus. Afin d’obtenir les meilleures performances en débit sur un réseau de type CAN, il est nécessaire d’utiliser des oscillateurs à quartz. 

Règles de fonctionnement et définitions 

Bus CAN – Le protocole CAN Règles de fonctionnement et définitions 

il existe deux types de format (trame standard, trame étendue) pour les trames de données et de requête, et ils diffèrent seulement l’un de l’autre par l’identificateur (identificateur de 11 bits pour les trames standards, de 29 bits pour les trames étendues). 

Le transfert des messages se manifeste et est commandé à l’aide de quatre types de trames spécifiques et d’un intervalle de temps les séparant. Outre les trames de données et de requête, on a donc également des trames d’erreurs (émises par n’importe quel nœud dès la détection d’une erreur), et des trames de surcharge (ces trames correspondent à une demande d’un laps de temps entre les trames de données et de requête précédentes et successives). Il existe un espace inter-trame de 3 bits récessifs entre les trames de données et de requête. En ce qui concerne le flot de bits des trames du bus CAN, la méthode de codage NRZ (Non Return to Zero) a été retenue. Ceci revient à dire que pendant la durée totale du bit généré son niveau reste constant qu’il soit dominant ou récessif. 

Bus CAN – Le protocole CAN Règles de fonctionnement et définitions Afin de sécuriser la transmission des messages on utilise la méthode dite de Bit-Stuffing (bit de transparence). Méthode de Bit-Stuffing: Cette méthode consiste, dès que l’on a émis 5 bits de même polarité sur le bus, à insérer un bit de polarité contraire pour casser des chaînes trop importantes de bits identiques. On obtient ainsi dans le message un plus grand nombre de transitions ce qui permet de faciliter la synchronisation en réception par les nœuds. Cette technique est uniquement active sur les champs de SOF, d’arbitrage, de contrôle, de CRC (délimiteur exclu). Pour un fonctionnement correct de tout le réseau, cette technique doit être implémentée aussi bien à la réception qu’à l’émission. 

Couche 2: Niveau trame: Trame de données 

Une trame de données se décompose en 7 champs différents: – le début de trame SOF (Start Of Frame), 1 bit dominant. – le champ d’arbitrage, 11 bits (ID) + 1 bit (RTR) en standard et, 29 bits (ID) + 2 bits (SRR/IDE) + 1 bit (RTR) en étendu– le champ de contrôle, 6 bits. – le champ de données, 0 à 64 bits. – le champ de CRC (Cyclic Redundancy Code), 15 bits + 1 bit – le champ d’acquittement (Acknoledge), 2 bits. – le champ de fin de trame EOF (End Of Frame), 7 bits récessifs

La signification de certains bits : 

  • RTR : Remote Transmission Request bit, 
  • SRR : Subsitute Remote Request bit, 
  • IDE : Identifier Extension bit. 

Le bit RTR (Remote Transmission Request) permet de déterminer le type de trame : 

  • RTR = état dominant : trame de données 
  • RTR = état récessif : trame de requête 

Le début de trame (SOF) n’est effectif que si le bus était précédemment au repos (bus idle). Tous les nœuds du réseau doivent se resynchroniser sur le bit de SOF. 

Bus CAN – Le protocole CAN 

Bus CAN – Le protocole CAN Couche 2: Niveau trame: Trame de données 

10 

Couche 2: Niveau trame: Trame de données 

Dans une trame standard, le champ d’arbitrage est composé des 11 bits de l’identificateur et d’un bit de RTR (Remote Transmission Request) qui est dominant pour une trame de données et récessif pour une trame de requête. Pour l’identificateur les bits sont transmis dans l’ordre, de ID_10 à ID_0 (le moins significatif est ID_0). Par ailleurs les 7 bits les plus significatifs (de ID_10 à ID_4) ne doivent pas tous être récessifs. Pour des raisons de compatibilité avec des anciens circuits, les 4 derniers bits de l’identificateur (ID_3 à ID_0) ne sont pas utilisés, ce qui réduit le nombre de combinaisons possibles. 

le champ d’arbitrage 

l’identificateur permet de router le message vers le bon nœud mais il indique aussi la priorité du message, qui détermine l’assignation du bus lorsque plusieurs stations émettrices sont en concurrences. 

Bus CAN – Le protocole CAN 

11 

Couche 2: Niveau trame: Trame de données 

Les priorités sont attribuées statiquement lors de l’analyse conceptuelle 

du réseau, au moyen Le procédé d’attribution du bus est basé sur le principe de l’arbitrage bit à bit, selon lequel les nœuds en compétition, émettant simultanément sur le bus, comparent bit à bit l’identificateur de leur message avec celui des messages concurrents. Les stations de priorité moins élevées perdront la compétition face à celle qui a la priorité la plus élevée. Les stations sont câblées sur le bus par le principe du « ET câblé », en cas de conflit c’est à dire émission simultanée, la valeur 0 écrase la valeur 1. On appelle donc l’état dominant l’état logique 0, et l’état récessif l’état logique 1. Les bits de l’identificateur sont transmis dans l’ordre, de ID_10 à ID_0 

(du MSB vers LSB). 

Bus CAN – Le protocole CAN 

12 

le champ d’arbitrage 

le champ d’arbitrage 

les stations 1, 2 et 3 demandent le bus en même temps. Pour les départager, on applique la méthode d’arbitrage et les premières stations a émettre un bit récessif sont exclues et devront attendre que la station qui a pris le bus (la station avec la priorité la plus haute) libère la ligne. 

Dans l’exemple la station 1 est exclue en premier puis la station 3. La station 2 à donc la plus haute priorité. 

Exemple 

Bus CAN – Le protocole CAN Couche 2: Niveau trame: Trame de données 

13 

le champ d’arbitrage 

Le bus CAN utilise la méthode d’accès CSMA/CR (Carrier Sense Multiple Access / Collision Resolution) dont les principes généraux sont les suivants : 

  • Toutes les stations sont égales 
  • Chaque station émet quand elle veut (bus libre) 
  • Les collisions sont acceptées 
  • Les collisions sont détectées par les stations 
  • Les collisions sont gérées par le protocole 
  • Il y a une stratégie d’arbitrage des collisions 
  • La station qui remporte l’arbitrage continue sa transmission Dans l’exemple la station 1 est exclue en premier puis la station 3. La station 2 à donc la plus haute priorité. 

Exemple 

Bus CAN – Le protocole CAN Couche 2: Niveau trame: Trame de données 

14 

le champ de contrôle 

  • Le champ de contrôle est composé de 6 bits. Les deux premiers (r1 dans une trame standard, et r0)sont des bits de réserve et leur rôle est d’assurer des compatibilités futures ascendantes (par exemple avec les trames étendues). 
  • Les quatre derniers bits permettent de déterminer le nombre d’octets de données contenus dans le champ de données pour une trame de données ou bien le nombre d’octets de données dont a besoin un nœud du réseau lors d’une trame de requête. Le nombre d’octets de données ne peut pas excéder la valeur de 8 (64 bits). 

Bus CAN – Le protocole CAN Couche 2: Niveau trame: Trame de données 

15 

Bus CAN – Le protocole CAN 

Le champ de données a une longueur qui peut varier de 0 à 64 bits (0 à 8 octets). Cette longueur a été déterminée lors de l’analyse du champ de contrôle. Dans le cas d’une trame de requête, le champ de données est vide. 

16 

Codage des bits DLC suivant la taille des données en octets 

Couche 2: Niveau trame: Trame de données 

le champ de contrôle 

le champ de données 

  • Ce champ de CRC permet de s’assurer de la validité du message transmis, et tous les récepteurs doivent s’astreindre à ce procédé de vérification. 
  • Seuls les champs de SOF, d’arbitrage, de contrôle et de données sont utilisés pour le calcul de la séquence de CRC. 
  • De fait la longueur maximale du début de trame ne doit pas excéder 215 bits pour une séquence de CRC de 15 bits. 
  • Le nombre maximal d’erreurs détectées dans la trame est de 5. 

le champ CRC 

17 

Le champ de CRC est composé de 16 bits. La séquence CRC calculée est contenue dans les 15 premiers bits tandis que le dernier bit est un délimiteur de fin de champ de CRC (bit toujours récessif). 

Bus CAN – Le protocole CAN Couche 2: Niveau trame: Trame de données 

le champ CRC 

La séquence de CRC est calculée par la procédure suivante : 

le flot de bits (hors Bit-Stuffing ), constitué des bits depuis le début de la trame jusqu’à la fin du champ de données (pour une trame de données) ou bien la fin du champ de contrôle (pour une trame de requête) est interprétée comme un polynôme f(x) avec des coefficients 0 et 1 affectés à la présence, effective ou non, de chaque bit. Le polynôme obtenu est alors multiplié par x15 complété pour l’ajout du mot de CRC. 

le polynôme ainsi formé est divisé (modulo 2) par le polynôme générateur g(x)=x15+x14+x10+x8+x7+x4+x3+1. La chaîne de bits correspondante à ce polynôme est : 1100010110011001

Le reste de la division du polynôme f(x) par le polynôme générateur g(x) 

constitue la séquence CRC de 15 bits. 

Bus CAN – Le protocole CAN Couche 2: Niveau trame: Trame de données 

18 

le champ CRC 

La réalisation du module de calcul de CRC est particulièrement aisée à l’aide de registres à décalages. La norme BOSCH propose le programme informatique correspondant à l’algorithme précédemment décrit : 

CRC_REG=0 ; REPEAT 

CRC_NXT_BIT=(NXT_BIT) XOR (CRC_REG(14)) ; CRC_REG(14:1)=CRC_REG(13:0) ; CRC_REG(0)=0 ; IF CRC_NXT_BIT THEN 

CRC_REG(14:0)=CRC_REG(14:0) XOR (4599hex); ENDIF UNTIL(CRC SEQUENCE starts or there is an ERROR condition) 

Bus CAN – Le protocole CAN Couche 2: Niveau trame: Trame de données 

19 

le champ d’acquittement 

Le champ d’acquittement possède 2 bits. La station émettrice de la trame laisse le bus libre pendant 2 coups d’horloge (ce qui correspond à l’émission de deux bits récessifs) et elle passe en mode réception pendant le premier coup d’horloge. 

  • Le premier bit correspond à l’acquittement par l’ensemble des nœuds ayant reçu le message. Si aucune erreur n’a été détectée par un nœud (après calcul du CRC), ce dernier émet un bit dominant sinon il émet une trame d’erreur. La station émettrice du message originel doit alors être capable de réagir en fonction de l’émission d’un bit dominant ou non par les autres stations sur le premier bit du champ d’acquittement. 
  • Le second bit est un bit délimiteur d’acquittement qui doit toujours être récessif. 

Bus CAN – Le protocole CAN Couche 2: Niveau trame: Trame de données 

20 

le champ de fin de trame 

Ce champ de fin de trame est constitué de 7 bits récessifs, ce qui déroge 

à la règle de Bit-Stuffing. Ce champ étant fixe, il est nécessaire de 

désactiver le codage (à l’émission) et le décodage (à la réception) suivant la 

règle du Bit-Stuffing.. 

Bus CAN – Le protocole CAN Couche 2: Niveau trame: Trame de données 

21 

Couche 2: Niveau trame: Trame de requêtes 

  • Une trame de requête est constituée de la même manière qu’une trame de données sauf que le champ de données est vide. 
  • Dans le champ d’arbitrage, le bit de RTR est récessif. Par conséquent si deux nœuds émettent chacun une trame possédant le même identificateur (c’est à dire qu’un nœud émet une trame de données et l’autre une trame de requête), l’arbitrage sur le bit de RTR va donner la priorité à la trame de données. 
  • Si un nœud a besoin d’un certain nombre de données, il va émettre une trame de requête dès que le bus sera libre en prenant soin d’indiquer dans le champ de contrôle le nombre d’octets de données dont il a besoin. 

Bus CAN – Le protocole CAN 

22 

Les différents types d’erreurs 

Le Bit Error : 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. Cependant, le Bit Error n’est pas signalé dans les cas suivants : – Aucune erreur de Bit Error n’est signalée lorsqu’un bit dominant est envoyé dans le champ d’arbitrage à la place d’un bit récessif. Le bit dominant signifie simplement une perte d’arbitrage. – De même, pour un bit dominant lors de l’acknowledge slot, à la place d’un bit 

Couche 2: Traitements des erreurs 

23 

Lors de l’émission d’une trame sur le bus, des erreurs de transmission peuvent venir perturber le bon fonctionnement des différents utilisateurs du bus. L’erreur peut venir d’un nœud, et empêcher le réseau de fonctionner correctement. Pour cela, des méthodes de détection d’erreurs de transmissions sont prévues par le protocole CAN. 

Bus CAN – Le protocole CAN 

 

télécharger gratuitement Bus CAN(Controller Area Network) La couche liaison et traitement des erreurs

Articles similaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Bouton retour en haut de la page

Adblock détecté

S'il vous plaît envisager de nous soutenir en désactivant votre bloqueur de publicité