0% ont trouvé ce document utile (0 vote)
40 vues43 pages

Chap2 CAN 2ndpart

Le document traite du bus CAN en détaillant l'identification des nœuds, l'arbitrage du bus, et le format des trames. Il explique comment les identifiants déterminent la priorité des messages et comment le protocole CSMA/CR gère l'accès au canal sans collisions. Enfin, il aborde le calcul et la vérification du code CRC pour assurer l'intégrité des données transmises.

Transféré par

chayma.homri
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
40 vues43 pages

Chap2 CAN 2ndpart

Le document traite du bus CAN en détaillant l'identification des nœuds, l'arbitrage du bus, et le format des trames. Il explique comment les identifiants déterminent la priorité des messages et comment le protocole CSMA/CR gère l'accès au canal sans collisions. Enfin, il aborde le calcul et la vérification du code CRC pour assurer l'intégrité des données transmises.

Transféré par

chayma.homri
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Module : Communication dans les

systèmes embarqués

Chapitre 2:
Le Bus CAN
(partie 2)

1
Sans CAN
Avec CAN
Identification des nœuds CAN
 En CAN, il y a 11 bits utilisés pour l’identifiant. Plus l’identifiant est petit,
plus l’équipement est prioritaire, car un bit à un niveau 0 est dominant.

 L’identifiant indique la nature du message, pas l’adresse de l’expéditeur, ni


l’adresse du destinataire.

 Les équipements recevant les messages, vérifient l’identifiant du message


pour déterminer si ce message est d’intérêt ou pas.

 L’identficateur CAN2.0A est sur 11 bits alors qu’on a 29 bits pour CAN
2.0B

 Les 11 bits de CAN 2.0A autorisent 211 = 2048 combinaisons.


 Les 29 bits de CAN 2.0B autorisent 229 = 536 870 912 combinaisons.
Identification des nœuds CAN
 Les identificateurs sont attribués (par les concepteurs des
services embarqués en voiture) aux objets selon l’urgence
et l’importance de ces objets pour l’ensemble de
l’application.
 En général, les objets associés aux grandeurs issues des
capteurs ou à destination des actionneurs ont des
identificateurs avec des valeurs faibles pour leur
permettre d’être échangés en priorité en cas de conflit
d’accès au bus
Identification des nœuds CAN
 Chaque nœud relié au réseau est producteur des valeurs
d’un ou de plusieurs objets identifiés ou consommateur
des valeurs d’un ou de plusieurs objets identifiés. Un
nœud peut être à la fois producteur et consommateur de
valeurs d’objets identifiés.
 Grâce à l’identificateur contenu dans une trame, les
nœuds connectés au réseau, et qui sont en permanence à
l’écoute du bus, reconnaissent les objets qui les
intéressent (ceux qu’ils consomment ou qu’ils produisent)
et traitent les trames ; tout nœud fait une copie de la
trame courante (s’il est consommateur de l’objet diffusé)
ou envoie sa valeur (s’il est producteur de l’objet diffusé)
Arbitrage du bus CAN : CSMA/CR
 Le bus CAN utilise CSMA/CR (Carrier Sense Multiple Access
with Collision Resolution)
 Comme le protocole CAN repose sur une communication
multi-maîtres, il faut que tous les nœuds participent à
l’organisation de l’accès au canal
 Dans deux sources émettent leur trames en même temps, il
y’a un arbitrage effectué par toutes les sources pour que la
source gagnant l’arbitrage continue d’émettre alors que l’autre
stoppe son émission.
 L’utilisation de bits récessifs et dominant permet de pouvoir
faire un arbitrage non destructif.
=> L’arbitrage non destructif permet de laisser passer le
message le plus prioritaire.
 L’arbitrage repose que l’identificateur qui identifie la nature
du message et sa priorité.
Exemple d’arbitrage du bus CAN
Exemple d’arbitrage du bus CAN

L’équipement 2 vient de perdre


l’arbitrage
Exemple d’arbitrage du bus CAN

L’équipement 2 cesse toute


activité et maintient son signal
à 1.
Exemple d’arbitrage du bus CAN
 Ainsi, l’équipement 1 envoie un message important qui
possède un identifiant lui donnant la priorité poursuit la
transmission du message et l’équipement 2 qui envoie un
message moins prioritaire cesse sa transmission et reçoit
le message au cas où il est le destinataire.

 L’équipement 2, tentera de retransmettre son message


lorsque le message envoyé par l’équipement 1 sera
terminé (s’il gagne la prochaine phase d’arbitrage, à moins
qu’il soit le seul à transmettre).
Partage du canal
 Grâce à l’arbitrage effectué par identifiant, il n’ya plus de
collision et les nœuds se partagent l’accès au canal.
 Les services les plus prioritaires ayant un identifiant plus
petit, la priorité résout les conflits d’accès. Les autres
réemettent dès qu’ils détectent de nouveau le bus libre.
Format des trames CAN
 Données (Data Frame)
 Requête (Request Frame)
 Erreur (Error Frame)
 Surcharge (Overload Frame)
Format d’une trame de données
 Voici l’allure d’une trame de données:

Bus libre Bus libre


Format d’une trame de données
 Voici l’allure d’une trame de données:

 Début de trame (SOF):


 Un seul bit dominant (0) pour indiquer le début du message;
 Envoyé que si le bus est libre;
 Les autres équipements se synchronisent sur ce signal.
Format d’une trame de données
 Voici l’allure d’une trame de données:
Format d’une trame de données
 Voici l’allure d’une trame de données:

Taille du champ varie en Taille du champ = 1 bit


fonction de la norme A •Data Frame : bit dominant
ou B •Remote Transmission
•Identificateur du type Request(demande d’une
de message et de sa remote frame): bit récessif
priorité.
Format d’une trame de données
 Voici l’allure d’une trame de données:

Taille du champ = 4 bits


•indique le nombre d’octets
du message (entre 0 et 8
octets).
Format d’une trame de données
 Voici l’allure d’une trame de données:

Données transmises
(de 0 à 8 octets => 64
bits
Format d’une trame de données
 Voici l’allure d’une trame de données:

On utilise le code CRC (Cyclic Bit récessif (1)


redundancy Check) pour
vérifier l’intégrité des données
transmises
CRC
 CRC = Cyclic Redundancy Code
 Le calcul de CRC permet au récepteur d'un message de
vérifier que les données transmises ne contiennent pas
d'erreurs.
 Pour faire cela, l'émetteur du message calcule une valeur
"CheckSum" qui est fonction du contenu du message, puis
l'ajoute à la fin du message. Le récepteur fait le même
calcul, et contôle que le "CheckSum« à la même valeur
que celui de l'émetteur.
CRC
 En émission :
 on ajoute au message à émettre un code de contrôle tel que le
polynôme correspondant au message plus le code de contrôle
soit divisible (avec une opération XOR logique) par le
polynôme générateur choisi.
 En réception :
 La combinaison du message reçu + le champ CRC doit
être divisible par le polynôme générateur (résultat nul de la
division par le biais du XOR).
 On vérifie donc par une division euclidienne en base 2 que le
reste de la division est nul.
CRC à l’émission d’un mot
 On choisit un polynôme générateur puis on le transforme en
un mot binaire.
 Exemple : avec le polynôme générateur x^4+x^2+x, on obtient
10110.
 On ajoute m zéros au mot binaire à transmettre où m est le
degré du polynôme générateur.
 Exemple : on souhaite transmettre le mot 11100111 en utilisant le
polynôme générateur x^4+x^2+x, on obtient alors 111001110000.
 On va ajouter itérativement à ce mot, le mot correspondant
au polynôme générateur jusqu’à ce que le mot obtenu soit
inférieur au polynôme générateur. Ce mot obtenu correspond
au CRC à ajouter au mot avant de l’émettre.
 On effectue donc une division euclidienne dans laquelle on ne
tient pas compte du quotient.
Méthodologie de calcul du CRC
 Enumérer les étapes de calcul
 1) Extraction de la combinaison binaire à partir du
polynôme CRC => CRC
 2) Ajout de m bits à 0 à droite du message => m’
 3) XOR entre m’ et CRC
 4) On effectue l’opération XOR à partir du premier bit
récessif à gauche. A chaque nouvelle opération XOR, on
cherche le prochain bit à gauche récessif
 5) La condition d’arrêt : tous les bits à gauche (bits de
poids le plus fort) des derniers m bits (bits de poids le
plus faible ) sont à 0.
Exemple à l’émission
Vérification à la réception
Code CRC : Code de détection d’erreur
 Exercice d’application 1:
 Soit les données composées des 6 bits suivants : 110101
 Le protocole de transmission utilisé génère un champ CRC en
se basant sur le polynôme générateur : x^2 + 1
 Calculer le code CRC généré par l’émetteur.
 Quelle sera la séquence envoyée ?
 Vérifier que l’émission a été bien effectuée.
 Remarques :
 Le choix du polynôme générateur doit permettre de respecter le
nombre de bits maximum dédiés au champ CRC et de détecter un
maximum d’erreurs de données sans allonger le délai de calcul à
chaque trame reçue (chaque bit à 1 indique une erreur dans ce bit)
=> choix non trivial
 Ethernet utilise un CRC à 32 bits.
 La compression des fichiers par ZIP utilisé un CRC à 16 ou 32 bits
Exercice d’application 2

Soit :
• Le message à encoder est : 11010011101100
• Le polynôme générateur est x^3 + x + 1

Donner le CRC correspondant sur 4 bits.


Exemple 2

Remarques :

 La condition d’arrêt : le premier bit récessif à droite a un


degré inférieur ou égal à celui du polynôme générateur
(ici 3)
 Sinon on continue d’appliquer l’opération XOR
 A chaque ligne, on décale l’opération au 1er bit récessif à
gauche
Code CRC : Code de détection d’erreur
Code CRC - Détection d’erreur
 Une erreur change le polynôme et entraine un
changement du reste de la division des deux polynômes
qui ne sera plus null.

 Dans le cas du CAN, le polynôme diviseur est:


 x15 + x14 + x10 + x8 + x7 + x4 + x3 + x0 .
Format d’une trame de données (Suite)
 Voici l’allure d’une trame de données:

Acknowledgment field
1er bit (ACK slot) – bit récessif généré par
l’émetteur alors que les récepteurs mettent un bit
dominant.
2e bit (ACK delimiter) – bit récessif.
Format d’une trame de données
 Voici l’allure d’une trame de données:

Fin de trame:
7 bits récessifs.
Trame de requête

• Identique Trame de données sauf RTR


• RTR mis à Récessif
• Longueur données à 0
• DLC ajusté sur le nombre d’octets de données à retourner
• La trame de donnée est prioritaire sur la trame de requête de même
identifiant

Etat D pour une trame de données


Bit RTR
Etat R pour une trame de requête
SOF Identifiant Cde CRC ACK EOF

DLC (Data Length Code) longueur des données à retourner par le nœud
qui va émettre la réponse

34
Trame d’erreur

• La trame ne comprend que 2 champs....


• 1 champ Drapeau d’erreur «active» ou «passive»
• 1 délimiteur - 8 bits récessifs
• Les drapeaux d’erreur transgressent la loi du bit stuffing (6 à 12 bits
dominants en erreur active) => c’est ce qui permet aux nœuds du
réseau de détecter qu’il y’a une erreur

Trame en cours
de diffusion Champ de trame d’erreur Intertrame

Drapeau d’erreur Délimiteur du champ

6 à 12 bits D en erreur active 8 bits R


6 à 12 bits R en erreur passive

35
Trame de surcharge
• La trame ne comprend que 2 champs :
• Le champ de surcharge est composé de 6 bits dominants
• 1 champ délimiteur - 7 bits récessifs
• Le champ de surcharge transgresse la loi du bit stuffing =>
détection d’une erreur de surcharge ( 6 D + 7 R)

Trame de surcharge Intertrame

Champ de surcharge Délimiteur du champ

6 bits D 7 bits R

36
Trame de surcharge
 Une trame de surcharge est émise par exemple quand :
 un récepteur n’est pas prêt pour la réception d’une nouvelle trame
de donnée ou de requête (retard sur le traitement des informations
circulant sur le bus).
 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 pour
chaque nœud.
 La trame de surcharge sert à installer un délai pour laisser le
nœud en question traiter les trames précédentes (le temps de
recevoir toutes les trames de surcharge).
Exercices d’application
Exercice d’application 1
 Si le CRC sur 8 bits reçu dans une trame est égal à
10010100 (x^7 + x^4+x^2)et que les données sur
forment la suite binaire 1110 0111 1110.
 Cette trame contient elle des erreurs?
 Le polynôme générateur est x^8 + x^4 + x^2 + 1

 Correction : diviser la concaténation du msg avec le CRC


par le polynôme : si le reste est égal à 0 alors il n’ya pas
d’erreur sinon oui.
Exercice d’application 2
 Soit un protocole A qui utilise un polynôme générateur :
x^7+x^4 +x^3 + x^2 +x + x^0
 Quel est le nombre de bits réservés au champ CRC dans ce
cas? Justifier votre réponse.
 On souhaite transmettre le message suivant sur 2 octets :
1101 1100 1101 1101
 Quel est le nombre de XOR à effectuer au pire des cas pour calculer
le CRC à partir d’un message de cette taille?
Si on compte les 7 bits à ajouter aux message d’origine pour pouvoir
calculer le CRC, le nombre XOR max est égal à la taille du message
envoyé.
 Quel sera la suite binaire totale à envoyer ?
Faire des XOR successifs jusqu’à ce que le premier 1 à gauche aie une
position égale ou inférieure au degré du polynôme générateur
Exercice d’application 3
 Calculer la durée maximale de transmission d’une trame
CAN standard sur un réseau à 125 kbits/s.
Exercice d’application 4:
Donner le résultat de la phase d’arbitrage . Quel sera le nœud gagnant?
Exercice d’application 5
 Soit deux nœuds A, B ayant les propriétés respectives suivantes :
 l’identifiant des trames de requêtes destinées au A est 0h711
 l’identifiant des trames de données provenant du A est 0h771
 l’identifiant des trames de requêtes destinées au B est 0h712
 l’identifiant des trames de données provenant du B est 0h772
1) Donner l’identifiant maximal en hexadécimal pouvant être utilisé
avec le protocole CAN2.0A, sachant que les 7 derniers bits ne
peuvent pas être tous récessifs (pour éviter d’être pris pour une
trame d’erreur).
2) Dessiner le chronogramme correspondant à la phase d’arbitrage
CAN dans le cas où tous les deux nœuds envoient des trames de
données.
3) Dessiner le chronogramme dans le cas où le nœud A transmet
une trame de requête vers le service offert par le nœud B et B une
trame de données.

Vous aimerez peut-être aussi