Cours Systèmes Embarqués - Le Bus CAN
Cours Systèmes Embarqués - Le Bus CAN
Cours Systèmes Embarqués - Le Bus CAN
Réseaux locaux: Le BUS I2C Réseaux locaux: Le Bus CAN Réseaux locaux: Le Bus RS485 MODBUS - PROFIBUS Diagnostic et Surceillance
Introduction : Top
Depuis les années 1960 la longueur de câble utilisée dans l'automobile ne cesse de croître pour dépasser 2000 m en 1995. Le nombre des connexions
atteint 1800 à cette même date. La fiabilité et la sécurité sont menacés.
Les normes en matière de pollution et de consommation d'énergie obligent les constructeurs à multiplier les capteurs et actionneurs intelligents dans leur
véhicules accélérant ce processus de multiplication des câbles et connexion depuis une vingtaine d 'années.
Le besoin de sécurité accrue (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…) ne font que renforcer cette tendance.
La société BOSCH 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
apparaîtra et sera normalisé dans les années qui suivent (dès 1983).
Les composants CAN se démocratisent et investissent d'autres secteurs de l'électronique embarqué (médical, produits numériques, systèmes
électrotechnique…).
2) Le bus CAN
Le bus CAN (Control Area Network) est un moyen de communication série qui supporte des systèmes embarqués temps réel avec un haut niveau de fiabilité. Ses
domaines d'application s'étendent des réseaux moyens débits aux réseaux de multiplexages faibles coûts. Il est avant tout à classer dans la catégorie des réseaux
de terrain utilisé dans l'industrie.
La structure du protocole du bus CAN possède implicitement les principales ropriétés suivantes :
hiérarchisation des messages.
garantie des temps de latence.
souplesse de configuration.
réception de multiples sources avec synchronisation temporelle.
fonctionnement multimaître.
détections et signalisations d'erreurs.
retransmission automatique des messages altérés dès que le bus est de nouveau au repos.
distinction d'erreurs : d'ordre temporaire ou de non-fonctionnalité permanente au niveau d'un nœud, déconnexion automatique des noeuds défectueux.
De part la nature différentielle de la transmission du signal sur le bus CAN, l'immunité électromagnétique est assurée car les deux lignes du bus sont toutes les
deux affectées de la même manière par un signal perturbateur.
Pour les niveaux physiques sur le bus, il est important de distinguer les deux types de transmission possibles :
transmission en bus CAN low speed,
transmission en bus CAN high speed.
ISO11519-2 Low Speed CAN < 125Kbps ISO11898 High Speed CAN 125Kbps - 1Mbps
Le tableau ci-dessous résume les principales différences entre les deux types de bus notamment sur les débits supportés.
4) Protocole CAN
Le concept de communication du bus CAN est celui de la diffusion d'information (broadcast) : chaque station connectée au réseau écoute les trames transmises
par les stations émettrices. Ensuite chaque nœud décide quoi faire du message, s'il doit y répondre ou non, s'il doit agir ou non, etc…
Le protocole CAN autorise différents stations à accéder simultanément au bus. C'est un procédé rapide et fiable d'arbitrage qui détermine la station qui émet en
premier.
L'accès au bus est donc aléatoire car une station peut émettre à n'importe quel moment. Mais cet accès se fait par priorité ; cette méthode est appelée CSMA
CD/AMP (Carrier Sense Multiple Acces with Collision Detection and Arbitration Message Priority).
Comme dans la plupart des protocoles, il est nécessaire d'utiliser un vocabulaire adapté à la situation. Nous allons donc définir un certain nombre de termes et de
règles de fonctionnement concernant le protocole CAN.
- Noeud :
Sous-ensemble relié à un réseau de communication et capable de
communiquer sur le réseau selon un protocole de communication (ici le protocole
CAN).
- 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 les formes dites de dominante et
récessive. 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 OU 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 noeud relié au réseau peut émettre un nouveau message.
- Routage des informations :
Des noeuds 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 noeuds 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. Chaque noeud peut également détecter des erreurs sur un
message qui ne lui est pas destiné et en informer les autres noeuds.
- Trame de données, trame de requête :
Une trame de données (data frame) est une trame qui transporte, comme son nom l'indique, des données. Une trame de requête est émise par un noeud désirant
recevoir une trame de données (l'identificateur est le même pour les deux trames dans ce cas).
- Débit bit :
Le débit 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 :
Les identificateurs de chaque message permettent de définir quel message est prioritaire sur tel autre.
- Demande d'une trame de données :
Un noeud peut demander à un autre nœud d'envoyer une trame de données, et pour cela il envoie lui-même une trame de requête. La trame de données
correspondant à la trame de requête initiale possède le même identificateur.
- Fonctionnement multimaître :
Lorsque le bus est libre, chaque noeud 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 multimaître. Si deux noeuds 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 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).
- 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 noeud 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.
Pour une longueur de bus supérieure à 200 mètres il est nécessaire d'utiliser un optocoupleur, et pour une longueur de bus supérieure à 1 kilomètre il est
nécessaire d'utiliser des systèmes d'interconnexion tels que des répéteurs ou des ponts.
N'importe quel module connecté sur un bus CAN doit pouvoir supporter un débit d'au moins 20 kbit/s
puis, une 8emme zone dite d'espace interframe (intertrame) qui fait partie intégrante de la trame.
Exemple d'arbitrage
Il y a deux Bits de réserves : Les deux premiers bits (émis dominants en trame 2.0A) sont en réserve d'usages ultérieurs et permettent d'assurer des compatibilités
futures ascendantes (notamment celles de la trame dite étendue CAN 2.0B). Les contrôleurs CAN doivent être aptes à traiter toutes combinaisons de tous les bits
du champ de commande.
4 bits DLC : Les 4 derniers bits du champ de commande (champ DLC - Data Length Code) indiquent le nombre d'octets qui seront contenus dans le champ de
données.
Contrairement au cas précédent, dans le cas d'une remote frame, le bit RTR est récessif. C'est donc ce bit qui différencie une data frame d'une remote frame.
Exemple :
Comparaison de 2 trames avec le même identificateur, l'une de données l'autre de requête : la trame de donnée est prioritaire sur la trame de requête.
les conditions internes d'un récepteur qui nécessitent un certain temps (un retard) pour accepter la prochaine data frame ou remote frame.
la détection d'un bit dominant durant la phase intermission. Dans ce cas le démarrage de l'overload frame a lieu juste après la détection du bit dominant.
Afin de ne pas bloquer le bus indéfiniment seules deux overload frame consécutives peuvent être générées pour retarder les data ou remote frame suivantes.
Cette trame ne comprend que deux champs :
Le champ des flags de surcharge,
Le délimiteur de champ.
Comme l'indique la figure, elle peut se produire à la fin d'un end of frame ou d'un error delimiter ou encore d'un autre overload delimiter en lieu et place du début de
l'interframe.
bus CAN cours microcontrôleur CANH CANL programmation Protocole Noeud Message Arbitrage bit stuffing bit timing bit timing Identificateur