logo

Protocole CAN (Controller Area Network)

CAN signifie Réseau de zone de contrôleur protocole. Il s'agit d'un protocole développé par Robert Bosch vers 1986. Le protocole CAN est une norme conçue pour permettre au microcontrôleur et à d'autres appareils de communiquer entre eux sans aucun ordinateur hôte. La caractéristique qui rend le protocole CAN unique parmi les autres protocoles de communication est le type de bus de diffusion. Ici, la diffusion signifie que les informations sont transmises à tous les nœuds. Le nœud peut être un capteur, un microcontrôleur ou une passerelle qui permet à l'ordinateur de communiquer sur le réseau via le câble USB ou le port Ethernet. Le CAN est un protocole basé sur les messages, ce qui signifie que le message porte l'identifiant du message et qu'en fonction de cet identifiant, la priorité est décidée. Il n'est pas nécessaire d'identifier le nœud dans le réseau CAN, il devient donc très facile de l'insérer ou de le supprimer du réseau. Il s’agit d’un protocole de communication série semi-duplex et asynchrone. Le CAN est un protocole de communication à deux fils car le réseau CAN est connecté via le bus à deux fils. Les fils sont des paires torsadées ayant une impédance caractéristique de 120 Ω connectées à chaque extrémité. Initialement conçu principalement pour la communication au sein des véhicules, il est désormais utilisé dans de nombreux autres contextes. Comme l'UDS et le KWP 2000, PEUT également être utilisé pour les diagnostics embarqués.

Pourquoi CAN ?

Le besoin d’un protocole de communication standard centralisé est apparu en raison de l’augmentation du nombre d’appareils électroniques. Par exemple, il peut y avoir plus de 7 TCU pour divers sous-systèmes tels que le tableau de bord, la commande de transmission, l'unité de commande du moteur et bien d'autres dans un véhicule moderne. Si tous les nœuds étaient connectés un à un, la vitesse de communication serait alors très élevée, mais la complexité et le coût des câbles seraient très élevés. Dans l'exemple ci-dessus, un seul tableau de bord nécessite 8 connecteurs. Pour résoudre ce problème, CAN a été introduit comme une solution centralisée nécessitant deux fils, c'est-à-dire CAN high et CAN low. La solution consistant à utiliser le protocole CAN est assez efficace en raison de la priorisation des messages et flexible dans la mesure où un nœud peut être inséré ou supprimé sans affecter le réseau.

Applications du protocole CAN

Initialement, le protocole CAN a été conçu pour cibler les problèmes de communication qui se produisent au sein des véhicules. Mais plus tard, grâce aux fonctionnalités qu’il offre, il est utilisé dans divers autres domaines. Voici les applications du protocole CAN :

  • Automobile (véhicules de tourisme, camions, bus)
  • Équipement électronique pour l'aviation et la navigation
  • Automatisation industrielle et contrôle mécanique
  • Ascenseur et escaliers mécaniques
  • Automatisation des bâtiments
  • Instruments et équipements médicaux
  • Marine, médical, industriel, médical

Architecture en couches CAN

Comme nous savons que le Modèle OSI divise le système de communication en 7 couches différentes. Mais l'architecture en couches CAN se compose de deux couches, c'est-à-dire

Comprenons les deux couches.

  • Couche liaison de données : cette couche est responsable du transfert de données de nœud à nœud. Il vous permet d'établir et de mettre fin à la connexion. Il est également chargé de détecter et de corriger les erreurs pouvant survenir au niveau de la couche physique. La couche liaison de données est subdivisée en deux sous-couches :
      MAC:MAC signifie Contrôle d'accès aux médias. Il définit la manière dont les appareils d'un réseau accèdent au support. Il fournit l'encapsulation et la décapsulation des données, la détection des erreurs et la signalisation.
  • SARL :LLC signifie Contrôle de lien logique. Il est responsable du filtrage d'acceptation des trames, de la notification de surcharge et de la gestion de la récupération.
  • Couche physique : La couche physique est responsable de la transmission des données brutes. Il définit les spécifications des paramètres tels que le niveau de tension, la synchronisation, les débits de données et le connecteur.

Les spécifications CAN définissent le protocole CAN et la couche physique CAN, qui sont définis dans la norme CAN. ISO 11898. L'ISO 11898 comprend trois parties :

  • ISO 11898-1 : Cette partie contient la spécification de la couche liaison de données et de la liaison de signal physique.
  • ISO 11898-2 : Cette partie relève de la couche physique CAN pour le CAN haute vitesse. Le CAN haut débit permet un débit de données allant jusqu'à 1 Mbps utilisé dans le groupe motopropulseur et dans la zone de recharge du véhicule.
  • ISO 11898-3 : Cette partie relève également de la couche physique CAN pour le CAN basse vitesse. Il permet un débit de données allant jusqu'à 125 kbps et le CAN basse vitesse est utilisé là où la vitesse de communication n'est pas un facteur critique.

CiA DS-102 : La forme complète de CiA est CAN in Automation, qui définit les spécifications du connecteur CAN.

En ce qui concerne la mise en œuvre, le contrôleur CAN et l'émetteur-récepteur CAN sont implémentés dans le logiciel à l'aide des fonctions d'application, de système d'exploitation et de gestion de réseau.

Encadrement CAN

Comprenons la structure de la trame CAN.

Protocole CAN
    SOF :SOF signifie début de trame, ce qui indique que la nouvelle trame est entrée dans un réseau. C'est de 1 bit.Identifiant :Un format de données standard défini dans la spécification CAN 2.0 A utilise un identifiant de message de 11 bits pour l'arbitrage. Fondamentalement, cet identifiant de message définit la priorité de la trame de données.RTR :RTR signifie Remote Transmission Request, qui définit le type de trame, qu'il s'agisse d'une trame de données ou d'une trame distante. C'est de 1 bit.Champ de contrôle :Il a des fonctions définies par l'utilisateur.
      ALLER:Un bit IDE dans un champ de contrôle signifie extension d'identifiant. Un bit IDE dominant définit l'identifiant standard de 11 bits, tandis que le bit IDE récessif définit l'identifiant étendu de 29 bits.DLC :DLC signifie Data Longueur Code, qui définit la longueur des données dans un champ de données. C'est de 4 bits.Champ de données:Le champ de données peut contenir jusqu'à 8 octets.
    Champ CRC :La trame de données contient également un champ de contrôle de redondance cyclique de 15 bits, utilisé pour détecter la corruption si elle se produit pendant le temps de transmission. L'expéditeur calculera le CRC avant d'envoyer la trame de données, et le récepteur calculera également le CRC puis comparera le CRC calculé avec le CRC reçu de l'expéditeur. Si le CRC ne correspond pas, le récepteur générera l'erreur.Champ ACK :Il s'agit de l'accusé de réception du destinataire. Dans d'autres protocoles, un paquet distinct pour un accusé de réception est envoyé après réception de tous les paquets, mais dans le cas du protocole CAN, aucun paquet distinct n'est envoyé pour un accusé de réception.EOF :EOF signifie fin de trame. Il contient 7 bits récessifs consécutifs connus en fin de trame.

Nous allons maintenant voir comment les données sont transmises via le réseau CAN.

Protocole CAN

Un réseau CAN se compose de plusieurs nœuds CAN. Dans le cas ci-dessus, nous avons considéré trois nœuds CAN et les avons nommés nœud A, nœud B et nœud C. Le nœud CAN se compose de trois éléments indiqués ci-dessous :

  • Hôte
    Un hôte est un microcontrôleur ou un microprocesseur qui exécute une application pour effectuer un travail spécifique. Un hôte décide de la signification du message reçu et du message qu'il doit envoyer ensuite.
  • Contrôleur CAN
    Le contrôleur CAN gère les fonctions de communication décrites par le protocole CAN. Il déclenche également l'émission, ou la réception des messages CAN.
  • Émetteur-récepteur CAN
    L'émetteur-récepteur CAN est responsable de la transmission ou de la réception des données sur le bus CAN. Il convertit le signal de données en flux de données collectées à partir du bus CAN que le contrôleur CAN peut comprendre.

Dans le schéma ci-dessus, un câble à paire torsadée non blindée est utilisé pour transmettre ou recevoir les données. Il est également connu sous le nom de bus CAN, et le bus CAN se compose de deux lignes, à savoir la ligne CAN low et la ligne CAN high, également connues respectivement sous le nom de CANH et CANL. La transmission se produit en raison de la tension différentielle appliquée à ces lignes. Le CAN utilise un câble à paire torsadée et une tension différentielle en raison de son environnement. Par exemple, dans une voiture, le moteur, le système d’allumage et de nombreux autres appareils peuvent entraîner une perte et une corruption de données en raison du bruit. La torsion des deux lignes réduit également le champ magnétique. Le bus se termine par une résistance de 120 Ω à chaque extrémité.

Caractéristiques CAN

Protocole CAN

À l'aide de la tension différentielle, nous déterminerons comment 0 et 1 sont transmis via le bus CAN. La figure ci-dessus est le graphique de tension qui montre le niveau de tension de CAN bas et CAN haut. Dans la terminologie CAN, la logique 1 est dite récessive tandis que la logique 0 est dominante. Lorsque les lignes CAN high et CAN low sont appliquées avec 2,5 volts, la tension différentielle réelle serait de zéro volt. Un zéro volt sur le bus CAN est lu par l'émetteur-récepteur CAN comme un 1 récessif ou logique. Un zéro volt sur le bus CAN est un état idéal du bus. Lorsque la ligne CAN haute est tirée jusqu'à 3,5 volts et la ligne CAN basse est tirée vers le bas à 1,5 volts, la tension différentielle réelle du bus serait de 2 volts. Il est traité comme un bit dominant ou un 0 logique par l'émetteur-récepteur CAN. Si l’état du bus atteint le 0 dominant ou logique, il deviendra alors impossible de passer à l’état récessif par n’importe quel autre nœud.

Points clés tirés des caractéristiques du CAN

  • La logique 1 est un état récessif. Pour transmettre 1 sur le bus CAN, CAN high et CAN low doivent être appliqués avec 2,5 V.
  • La logique 0 est un état dominant. Pour transmettre 0 sur le bus CAN, CAN high doit être appliqué à 3,5 V et CAN low doit être appliqué à 1,5 V.
  • L'état idéal du bus est récessif.
  • Si le nœud atteint l’état dominant, il ne peut revenir à l’état récessif par aucun autre nœud.

Logique du bus CAN

Protocole CAN
Protocole CAN

À partir du scénario ci-dessus, nous apprenons que l’état dominant écrase l’état récessif. Lorsque le nœud envoie simultanément le bit dominant et le bit récessif, alors le bus reste dominant. Le niveau récessif se produit uniquement lorsque tous les nœuds envoient le bit récessif. Une telle logique est connue sous le nom de logique ET et est physiquement implémentée sous la forme d’un circuit à collecteur ouvert.

Principe de communication CAN

Comme nous le savons, le message est envoyé en fonction de la priorité définie dans le champ d'arbitrage. Pour la trame standard, l'identifiant du message est de 11 bits, tandis que pour la trame étendue, l'identifiant du message est de 29 bits. Il permet au concepteur du système de concevoir l'identifiant du message lors de la conception elle-même. Plus l'identifiant du message est petit, plus la priorité du message est élevée.

Comprenons comment fonctionne l'arbitrage à travers un organigramme.

Protocole CAN (Controller Area Network)

L'expéditeur souhaite envoyer le message et attend que le bus CAN devienne inactif. Si le bus CAN est inactif, l'expéditeur envoie le SOF ou le bit dominant pour l'accès au bus. Ensuite, il envoie le bit d'identification du message dans le bit de poids fort. Si le nœud détecte le bit dominant sur le bus alors qu'il a transmis le bit récessif, cela signifie que le nœud a perdu l'arbitrage et arrête de transmettre d'autres bits. L'expéditeur attendra et renverra le message une fois le bus libre.

Exemple d'arbitrage CAN

Protocole CAN

Si nous considérons trois nœuds, c'est-à-dire le nœud 1, le nœud 2 et le nœud 3, les identifiants de message de ces nœuds sont respectivement 0x7F3, 0x6B3 et 0x6D9.

Protocole CAN

La transmission des trois nœuds avec le bit le plus significatif est illustrée dans le diagramme ci-dessus.

onzeèmebit : comme les trois bits des nœuds sont récessifs, le bit du bus restera également récessif.

java dormir

dixèmebit : Tous les nœuds ont le 10ème bit récessif, donc le bus restera également récessif.

9èmebit : le nœud 1 a un bit récessif tandis que les autres nœuds ont un bit dominant, donc le bus restera également dominant. Dans ce cas, le nœud 1 a perdu l’arbitrage, il arrête donc d’envoyer des bits.

8èmebit : le nœud 2 et le nœud 3 envoient un bit récessif, de sorte que l'état du bus reste récessif.

7èmebit : le nœud 2 envoie un bit dominant tandis que le nœud 3 a envoyé un bit récessif, de sorte que l'état du bus reste dominant. Dans ce cas, le nœud 3 a perdu l'arbitrage, il arrête donc d'envoyer le message tandis que le nœud 2 a gagné l'arbitrage, ce qui signifie qu'il continuera à tenir le bus jusqu'à ce que le message soit reçu.