- Controller area network
-
Pile de protocoles 7. Application 6. Présentation 5. Session 4. Transport 3. Réseau 2. Liaison 1. Physique Modèle Internet
Modèle OSILe bus CAN (Controller Area Network) est un bus système série, fruit de la collaboration entre l'Université de Karlsruhe et Bosch. Il est surtout utilisé dans le secteur de l'automobile. Il fut présenté avec Intel en 1985.
Le bus CAN est une application d'une approche connue sous le nom de multiplexage, et qui consiste à raccorder à un même câble (un bus) un grand nombre de calculateurs qui communiqueront donc à tour de rôle. Cette technique élimine le besoin de câbler des lignes dédiées pour chaque information à faire transiter (connexion point-à-point). Dès qu'un système (voiture, avion, réseau téléphonique…) atteint un certain niveau de complexité, l'approche point-à-point devient impossible du fait de l'immense quantité de câblage à installer et de son coût (en masse, matériaux, main d'œuvre).
L'introduction des bus multiplexés (principalement le CAN) dans l'automobile avait pour objectif de réduire la quantité de câbles dans les véhicules (il y a jusqu'à 2 km de câbles par voiture), mais elle a surtout permis l'explosion du nombre de calculateurs et capteurs distribués dans tout le véhicule, et des prestations correspondantes (baisse de consommation, dépollution, sécurité active/passive, confort, détection des pannes…), tout en n'augmentant pas trop les longueurs câblées.
Sommaire
Principe et normes
Il existe pour le moment 2 normes couvrant la couche 2 du modèle OSI :
- Le CAN standard ou CAN 2.0 A : avec un identifiant d'objet codé sur 11 bits, qui permet d'accepter théoriquement jusqu'à 2 048 types de messages (limité à 2 031 pour des raisons historiques).
- Le CAN étendu ou CAN 2.0 B : avec un identifiant d'objet codé sur 29 bits, qui permet d'accepter théoriquement jusqu'à 536 870 912 types de messages. À la demande du SAE qui est à l'origine du standard J1939.
Ces 2 normes sont compatibles, c’est-à-dire qu'il peut circuler sur un même réseau des messages suivant la norme 2.0A et des messages suivant la norme 2.0B.
L'accès au bus CAN suit la technique CSMA/CR (écoute de chaque station avant de parler mais pas de tour de parole, résolution des collisions par priorité). L'émission d'une trame commence par l'émission de son identifiant d'objet. Les collisions sont résolues par un principe de « bit dominant » : si une station émet un '1' pendant qu'une autre émet un '0', c'est le '0' qui est transmis sur le support. La station qui a émis le 1 voit qu'elle n'est pas seule, sait qu'elle n'est pas la plus prioritaire, et cesse d'émettre.
Concernant les couches physiques, il existe plusieurs normes applicables, les 2 plus fréquentes sont :
- 11898-2 concernant le CAN High Speed ;
- 11898-3 concernant le CAN Low Speed Fault Tolerant.
Pour le CAN High Speed la norme ISO 11898-2 recommande les vitesses suivantes en fonction de la longueur de bus et des charges capacitives :
- 1 Mbit/s → 60 m
- 500 Kbit/s → 150 m
- 100 Kbit/s → 1000 m
- 20 Kbit/s → 1200 m
Le bus CAN a été normalisé avec la norme ISO 11898.
La communication se fait en série par le biais de trames qui se constituent des éléments suivants :
- Bit SOF (Start Of Frame) indique le début d’une nouvelle trame à l’ensemble des éléments du réseau
- zone d'arbitrage (11bits en standard) il s’agit de la zone où tous les périphériques communiquent leur adresse, cette zone permet de déterminer qui peut envoyer sa trame. On rappelle que les adresses les plus basses sont prioritaires.
- bit RTR (Remote Transmission Request) : détermine s'il s'agit d'une trame de données ou d'une trame de demande de message.
- bit IDE qui établi la distinction entre format standard (état dominant) et format étendu (état récessif)
- 1 bit réservé pour une utilisation future (r0 et aussi r1 en format étendu)
- 4 bit DLC (Data Length Code) : nombre d'octets contenus dans la zone de données (par exemple pour une trame de 6 octets on enverra 0110)
- zone de données de longueur comprise entre 1 et 8 octets
- zone CRC de 15 bits :(Cyclic Redundancy Code = Contrôle de redondance cyclique). Ces bit sont recalculés à la réception et comparés aux bits reçus. S'il y a une différence, une erreur CRC est déclarée. Pour rappel, la détection d’erreur CRC se base sur une succession de divisions du message reçu par un polynôme prédéfini.
Grâce à ce système de détection, le taux d’erreur enregistré est très faible (inférieur à 4,6.10-11). De plus, le réseau est capable de différencier les erreurs ponctuelles des erreurs redondantes. Ainsi tout périphérique défaillant peut être déconnecté du réseau afin de limiter les perturbations. Le réseau entre alors en mode « dégradé ».
- zone ACK (acknowledge : accusé de réception) composé d'un bit à l'état récessif ainsi qu'un bit séparateur ACK. Le premier bit doit être forcé à l’état dominant par les stations ayant bien reçu cette trame. C'est à cause de ce bit récessif que le débit du CAN est limité. En effet il faut que le module qui reçoit le message ait le temps d'émettre l'accusé de réception. C'est ce qui explique que la longueur du câblage détermine le débit. Ce problème a poussé à développer le flexray qui règle ce problème et qui peut atteindre 10Mbit/s de débit.
- zone EOF de 7 bits : (End Of Frame) permet d'identifier la fin de la trame
- Un dernier bit peut apparaître, il s'agit du bit de « stuff ». Lorsque la trame comporte 5 bits consécutifs identiques (00000 ou 11111), il est ajouté un bit complémentaire des autres afin de resynchroniser l'horloge du bus.
Par exemple 1111 1110 deviendra 1111 1011 0, la zone intégrant le bit de stuffing s'arrête à la fin du CRC.
En plus des trames classiques, il existe aussi des trames d'erreur. Ces trames, composées uniquement de bits dominants, permettent à un calculateur qui détecte une erreur d'annuler la lecture de la trame pour l'ensemble du réseau (de façon à ce que tous les calculateurs aient accès dans tous les cas à une information certifiée par l'ensemble du réseau).
Plusieurs couches applications (couche 7) ont été définies sur la norme CAN :
- CANopen
- DeviceNet
- SAE J1939
- ISO11783 (ISOBUS)
- NMEA2000
- CANaerospace
- MilCAN
- CAL
- SDS
- CAN Kingdom.
Des réseaux alternatifs à CAN sont progressivement introduits dans les architectures Électriques Électroniques automobiles, tels FlexRay ou MOST.
Alternatives au bus CAN
Bibliographie
- Dominique Paret, Le bus Can : Description, de la théorie à la pratique, Dunod, 2009, 277 p. (ISBN 978-2100047642)
- (en) Wolfhard Lawrenz, CAN System Engineering From Theory to Practical Applications, Springer, 2007, 468 p. (ISBN 978-0387949390).
Livre en anglais écrit par le chef de projet du réseau CAN chez Bosch lors de la création du protocole.
Notes et références
Voir aussi
Liens internes
Liens externes
- Site web du Can In Automation
- Cours sur le CANbus de l'ENSEIRB
- Plate-forme indépendante de discussion CANLIST (en)
Catégories :- Bus informatique
- Protocole de communication
- Protocole réseau sur la couche liaison
Wikimedia Foundation. 2010.