Le bus CAN

Gestion des collisions avec CSMA/BA

Dans un système typique, certains paramètres vont changer plus rapidement que d'autres. Ce sera par exemple la vitesse d'un moteur, tandis qu'un paramètre plus lent pourra être la température de l'habitacle. Il est donc naturel que les paramètres qui varient le plus soient transmis le plus souvent et par conséquent doivent avoir une plus grande priorité. Dans les applications en temps réel, ceci nécessite non seulement une vitesse de transmission importante, mais aussi un mécanisme d'allocation du bus efficace qui soit capable de traiter les cas où plus d'un noeud cherchent à transmettre en même temps. Pour déterminer la priorité des messages, le CAN utilise la méthode CSMA/CD (Carrier Sense, Multiple Access with Collision Detect) avec la capacité supplémentaire de l'arbitrage non destructif (Non-Destructive Bitwise Arbitration) afin d'offrir une disponibilité maximale du bus. La priorité d'un message est déterminée par la valeur de son ID. La valeur de chaque ID, et donc la priorité de chaque type de messages, est assignée durant la conception du système. Un certain nombre de standards ont été développés selon les domaines d'utilisation du bus CAN pour fixer la priorité des ID et permettre une interopératibilité des différents équipements. Tout conflit de bus est résolu par le mécanisme du "ET cablé", c'est-à-dire qu'un état dominant écrase un état récessif. Concrètement, si plusieurs noeuds débutent leur trame en même temps, le premier qui présente un bit récessif alors qu'au moins un autre présente un bit dominant perd l'arbitrage (dans la trame, l'ID commence par le bit de poids fort).

Exemple d'une gestion de collision

Tout ce passe donc comme si le message de plus haute priorité était le seul à être transmis. Lorsqu'un noeud perd l'arbitrage, il devient automatiquement un récepteur du message en cours de transmission, et il n'essaiera de retransmettre son message que lorsque le bus sera à nouveau libre. L'avantage d'un tel système est une utilisation meilleure du bus qu'avec d'autres mécanismes, tels que le mécanisme de "fixed time schedule allocation" du Token ring ou l'arbitrage destructif de l'Ethernet.