Capture de trames sur le réseau CAN - ABSA-NT
Transcription
Capture de trames sur le réseau CAN - ABSA-NT
Capture de trames sur le réseau CAN Généralités L’objet de ce TP consiste à fournir à l’utilisateur une bonne connaissance du bus CAN. Ce moyen de communication a été définit par Bosch, équipementier automobile qui a autorisé la fabrication de composants compatibles CAN. Ce protocole permet de faire communiquer en toute sécurité, capteurs, contrôleurs et actionneurs à des vitesses pouvant atteindre 1Mbits/s. Nos cartes ASCAN1, AS CAN2 et CAN-TEST ‘‘IT’’ supportent les plus récentes normes CAN 2.a et CAN 2.b. Le protocole CAN 2.0 comporte deux sous-spécifications qui diffèrent uniquement au niveau de la longueur de l'ID. La version 2.0A définit des ID de 11 bits et la version 2.0B des ID de 29 bits. On appelle ces trames respectivement des trames standards ("Standard Frames") et des trames étendues ("Extended Frames"). AS_CAN 2 est équipée d’une liaison CAN et d’un analyseur de trames CAN Pour découvrir graduellement le mode de fonctionnement du bus CAN, l’utilisateur aura à réaliser un mini réseau permettant l’échange d’informations entre plusieurs cartes CAN. Ce réseau sera constitué de 2 cartes AS CAN 2 et 1 carte d’application CAN-Test-IT . Capture de trames Le schéma de câblage est présenté ci-dessous. La carte 1 au format PCI communique avec la carte d’extension CAN-TEST-IT La carte 2 également au format PCI devra effectuer la capture de trames sur le réseau. Le test de la capture se fait en trois étapes : Sous le logiciel SCAN_ANALYSE, le menu <capture de bus> permet de configurer et exécuter une capture de trames. La première étape consiste à masquer l’identificateur de messages reçus pour la carte 2 sous le logiciel SCAN_ANALYSE. La fenêtre de configuration permet de paramétrer la liaison CAN : - le type de filtre d’acceptance des messages en réception (simple ou double) - le code ou les codes du filtre - le masque à appliquer sur le code du filtre Après avoir configuré les registres de masque et code, la carte 2 ne peut plus recevoir les trames de données envoyées par la carte 1 ou la carte CAN-TEST-IT. La deuxième étape consiste à exécuter la communication entre la carte 1 et la carte CANTEST-IT. Comme la capture se fait dans un laps de temps limité, il faut que le programme boucle indéfiniment et rapidement. On peut utiliser un programme d’exemple de pilotage de la carte CAN-TEST-IT. Il est écrit en C Standard. Il doit être exécuté sur un PC et il n'utilise pas Windows (c'est une application type 'Console' ou fenêtre DOS). Les fichiers sources (.C et .H) sont linkés avec une librairie (ASAN2DRV.LIB) de la carte AS CAN. Le programme exécutable généré a besoin des fichiers DLL pour mettre en œuvre la librairie. ASAN2DRV.DLL fait le lien avec le Device-Driver (pilote Windows) de la carte AS CAN. Le ficher CAN2_TST_COUNT est un programme permettant de réaliser un compteur utilisant les deux afficheurs 7 segments de la carte CAN-TEST-IT. Cliquer ici pour voir le détail du programme en C : CAN2_TST_COUNT La troisième étape consiste à effectuer une capture de trames sur le PC intégrant la carte 2. Sous le logiciel SCAN_ANALYSE, on sélectionne <Effectuer une trame> dans le menu <capture de bus>. Après une capture du bus CAN (ou une lecture d’un fichier de capture), cette fenêtre donne une représentation temporelle du signal sur le bus. Des informations textuelles indiquent les différents bits et champs d’un message. Début de la trame Fin de la trame Une trame est composée des champs suivants : - bit SOF (Start Of Trame) - zone d'arbitrage ID (11 bits) - bit RTR (Remote Transmission Request) : détermine s'il s'agit d'une trame de données ou d'une d'une trame de demande de message. - bit IDE qui établi la distinction entre format standart (état dominat) et format étendu (état récessif) - 1 bit réservé pour une utilisation future - 4 bits DLC : nombre d'octets contenus dans la zone de données - zone de données de longueur comprise entre 0 et 8 octets - zone CRC de 15 bits :(Cyclic Redundancy Code) 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. -zone ACK 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. - zone EOF de 7 bits : (End Of Frame) permet d'identifier la fin de la trame. Stuff bit : au cours de la construction d'une trame, si 5 bits consécutifs portent la même valeur 0 ou 1, un bit de valeur opposée est ajouté à la suite des 5 bits consécutifs.