F.CAIGNETLes circuits logiques programmables - FPGA1Introduction aux Protocoles decommunication :Le bus CAN(control Area Network)Fabrice CAIGNETLAAS - CNRSfcaignet@laas.frF.CAIGNETLes circuits logiques programmables - FPGA2Contenu :I. Introduction : Notion de multiplexageII. La notion de bus de communicationIII. Le bus CANF.CAIGNETLes circuits logiques programmables - FPGA3I. Introduction : Notion de multiplexageLe multiplexage automobile• Pourquoi le multiplexage ?• Les principes du multiplexage• Le protocole CANF.CAIGNETLes circuits logiques programmables - FPGA4I. Introduction : Notion de multiplexagePourquoi le multiplexage ?• L’électronique automobile est en évolution constante :• Exigences de plus en plus sévères en matière de pollution• Améliorations en matière de sécurité et de confort• Évolution en cours de vie du véhicule (options)• D’où une croissance constante, ces 5 dernières années, desfonctions électroniques :• ABS, REF, MSR, ESP, ASR• Direction à assistance variable, BVA, suspension pilotée, gestion moteur• Airbag, anti-démarrage, clim. régulée, détection du sous-gonflage desroues, aide au stationnement• Allumage automatique des feux de croisement, essuie-vitre automatique,correction de site des feux (lampes au Xénon)• Allumage automatique des feux de détresse en cas de forte décélérationou de choc• Régulation de vitesse avec radar anti-collision, navigation par satellite• Et à venir : direction et freins entièrement électrique, guidage du véhiculepar rapport aux « bandes blanches », …F.CAIGNETLes circuits logiques programmables - FPGA5I. Introduction : Notion de multiplexagePourquoi le multiplexage ?• Ce renforcement de l’électronique se traduit par :• Une - du nombre de calculateurs• Une - du nombre de capteurs• Une - des faisceaux de câbles électriques : encombrements, poidset coûtsEVOLUTION DU CABLAGE1960 1985 19950200400600800100012001400160018001960 1985 1995NOMBRE D’INTERCONNEXIONS1960 1985 199502004006008001000120014001600180020001960 1985 1995METRES (longueur de cablage)F.CAIGNETLes circuits logiques programmables - FPGA6I. Introduction : Notion de multiplexagePourquoi le multiplexage ? : exemple : câblage classiqueCertains capteurs ont des liaisons avec plusieurs calculateurs ou existent en 2exemplaires en raison de leur localisation. Les liaisons entre boîtiers sont de + en+ nombreusesF.CAIGNETLes circuits logiques programmables - FPGA7I. Introduction : Notion de multiplexagePourquoi le multiplexage ? Exemple : câblage classique¸ Deux réponses techniques pour limiter « l’inflation » des composantset du volume des câblages :ÿ L’intégration : regrouper plusieurs fonctions dans un seul boîtier (ex :gestion moteur et Boîtier de Servitude Intelligent (BSI)• Gestion moteur : injection, allumage, dépollution, refroidissement moteur• BSI : fermeture centralisée des portes, alarme, éclairage intérieur, antidémarrage,essuyage des vitres, gestion des clignotants, …• ESP (contrôle dynamique du véhicule) : ABS, REF, MSR, ASR, ESPÿ Le multiplexage : faire circuler une multitude d’informations entredivers calculateurs sur un seul canal de transmission appelé le bus (2fils): le bus CANF.CAIGNETLes circuits logiques programmables - FPGA8I. Introduction : Notion de multiplexageExemple : câblage avec multiplexageDiminution du nombre de capteurs et de liaisons entre boîtiers carchacun fournit aux autres, par l’intermédiaire du bus, les infos qu’ilreçoit en filaire : c’est le partage des informationsF.CAIGNETLes circuits logiques programmables - FPGA9I. Introduction : Notion de multiplexageExemple : Mise en place du multiplexage sur un système de refroidissement12SignalanalogiqueSondes detempératured’eau moteurMoto-ventilateursde refroidissementmoteurCalculateurinjection moteurBoîtier degestionrefroidissementmoteurCombiné1212BITRONMSystème classiquesans multiplexageF.CAIGNETLes circuits logiques programmables - FPGA10I. Introduction : Notion de multiplexageExemple : Mise en place du multiplexage sur un système de refroidissementSystème avecintroduction dumultiplexageSonde detempératured’eau moteurMotoventilateursderefroidissementmoteurCalculateurinjectionmoteurBSIBoîtier deServitudeIntelligentCalculateur declimatisationCombinéSignauxAnalogiquesSignauxNumériquesréseau CANréseau VANFils torsadésFils torsadés12MU de 0.3 à 4.5vDCBAHGFEFils nontorsadésF.CAIGNETLes circuits logiques programmables - FPGA11I. Introduction : Notion de multiplexageLes avantages du multiplexageÿ Moins de capteurs et/ou de nombres de liaisons avec les boîtiersÿ Le poids et les coûts diminuentÿ Enrichissement de fonctions sans surcoût important :• Faire allumer les feux de croisement lorsque le capteur de pluiedétecte une averse (évolution d’un logiciel)• Mise en action des feux de détresse lors d’une forte décélérationÿ Les méthodes répondent à une norme ISO donc fiabilité accrues(théoriquement)ÿ Les constructeurs « protègent » leur réseau de APV car la plupartdes interventions sur les systèmes multiplexés nécessitentl’utilisation d’outils de diagnostic particuliers :• Méthodes de recherche de pannes complexes + télé-assistance• Téléchargement de mise à jour• Apprentissage lors d’une installation ou d’un changement de composantsmultiplexés (ex : autoradio) : c’est le télé-codageF.CAIGNETLes circuits logiques programmables - FPGA12I. Introduction : Notion de multiplexageLes principes du multiplexage• Adaptation des boîtiers• Le réseau multiplexé• La transmission des données• Structure d’une trame• La synchronisation des horloges des boîtiers• Arbitrage : gestion des prioritésF.CAIGNETLes circuits logiques programmables - FPGA13I. Introduction : Notion de multiplexageLes principes du multiplexageBoîtier MultiplexéÉtage desortie capteurs Actionneurs Étaged’entréeUnité de traitementMicroprocesseurInterface demultiplexageBusPartie numériqueNumériqueF.CAIGNETLes circuits logiques programmables - FPGA14I. Introduction : Notion de multiplexageLes principes du multiplexage¸ L’étage d’entrée du boîtier :ÿ Il transforme (il code) les signaux analogiques des capteurs en signauxnumériques exploitables par le microprocesseur (ex : signal délivré par lathermistance d’eau)¸ L’étage de sortie du boîtier : (appelé étage de puissance)ÿ Il transforme les ordres, fournis par le microprocesseur sous forme designaux numériques, en signaux analogiques destinés aux actionneurs¸ L’étage de calcul : le microprocesseur (la puce)ÿ C’est le composant « intelligent » du boîtierÿ Il possède des mémoires qui peuvent être :• ROM : mémoire morte qu’on ne peut que lire• RAM : mémoire qui disparaît dès que l’alimentation est coupée• EEPROM : mémoire morte pouvant être reprogrammées (de + en +utilisée)ÿ La ROM ou l’EEPROM contiennent le ou les programmes à réaliser de la forme: SI ……, ALORS ……ÿ Les signaux traités le sont en général par groupes de 8 bits (ou plus) :F.CAIGNETLes circuits logiques programmables - FPGA15I. Introduction : Notion de multiplexageLes principes du multiplexage : l’interface¸ L’interface de multiplexage :ÿ Elle permet la communication entre le boîtier et le busÿ Les messages qui transitent par l’interface de multiplexage sontnumériques et portent le nom de tramesÿ Ces trames sont découpées en plusieurs champsÿ Chacun des champs est composé d’un nombre bien précis de bitsà l’état 1 ou à l’état 0Début Identificateur Com. Informations Contrôle Ack FinF.CAIGNETLes circuits logiques programmables - FPGA16I. Introduction : Notion de multiplexageLes principes du multiplexage : le réseau¸ Le réseau est l’ensemble des boîtiers qui communiquent entre eux¸ Réseau : une architecture + un protocole (VAN, CAN, LIN …)ÿ Architecture :• En étoile (VAN)• En râteau (VAN)• En série (CAN)ÿ Protocole :• maître/esclaves• multi-maîtres/esclaves• multi-maîtresC’est la disposition matérielledes nœuds (boîtiers)C’est la gestion de lacommunication entre les boîtiers(arbitrage, trame, horloge, débit)Maître : peut prendre l’initiative d’unecommunication sur le réseauEsclave : peut seulement répondre àun maîtreF.CAIGNETLes circuits logiques programmables - FPGA17I. Introduction : Notion de multiplexageLes principes du multiplexage : le réseauME EMaître / EsclavesSiège Platine deporteB.S.I.M M ME EMixteSiège Platine de porteB.S.I. AFFICHEUR ClimatisationM M MMulti-MaîtresRadio AFFICHEUR Lecteur CD¸ L’architecture du réseau est adaptée, suivant les besoins en vitesse d’échangesd’informations (ex : info passage rapport BVA au boîtier moteur (250 kbits/s) etcommande essuie glace arrière (62.5 kbits /s)).¸ Quelques particularités :• La vitesse maxi de communication est inversement proportionnelle à ladistance entre 2 participants• Plus il y a de participants sur le réseau, plus la vitesse de communicationdiminueF.CAIGNETLes circuits logiques programmables - FPGA18I. Introduction : Notion de multiplexageLes principes du multiplexage : le réseau (le protocole)¸ Le protocole : c’est la « langue » utilisée pour communiquerÿ C’est tout ce qui concerne l’acheminement des tramesÿ Les trames sont distribuées sur le busÿ Les « récepteurs » consultent l’identité de la trame (champ d’identification dela trame) et seuls ceux qui sont concernés par la trame, utilisent sesinformationsÿ Les échanges de trame, donc de bits, doivent se faire à un rythme bienprécis. Pour ce faire chacun des boîtiers possèdent une horloge interne(quartz)ÿ Les boîtiers récepteurs doivent caler leur horloge sur celle de l’émetteurÿ Il se peut que 2 boîtiers veuillent émettre une trame en même temps sur lebus ; une trame est forcément prioritaire sur l’autre, c’est l’arbitrage.ÿ Seule la trame prioritaire est émise mais la 2ème n’est pas détruite, ellesera ré-émise dès que le bus sera libre : arbitrage non destructifF.CAIGNETLes circuits logiques programmables - FPGA19le bus : exemple chez PSA(bus confort)(bus carrosserie)II. Notion de bus de communicationF.CAIGNETLes circuits logiques programmables - FPGA20Couronneroue70007005(x tops par tour)0100 1111 0101 00111010 1100 0100 1010Codage de la vitesseCouronne Moteur(60 dents - 2)0100 1111 010100111010 1100 01001010Codage durégime1320INTERFACEINTERFACEINTERFACEINTERFACE0100 1111 010100111010 1100 0100 10101010 1100 0100101013137800INTERFACE0100 1111 0101 00111010 1100 0100 1010INTERFACE0004BUS VAN CONFORTINTERFACEINTERFACEBUS VANCARROSSERIEBUS CANI/S1630BSILes principes du multiplexage – La transmission des messagesF.CAIGNETLes circuits logiques programmables - FPGA21II. Notion de bus de communicationstructure de trame• Début : symbole indiquant le début d'une trame ; les horloges internes desrécepteurs se « calent » sur celle de l’émetteur• Identificateur : champ d'identification de la trame qui sert à identifier le contenu dumessage (ex : régime moteur) et parfois les destinataires• Com. : champ de commande qui annonce la nature du message (données ou requête)pour le VAN, qui annonce le nbre d’octets du champ de données pour le CAN• Informations : champ contenant les données à transmettre (exemple :INFORMATION REGIME MOTEUR envoyée par le boîtier gestion moteur)• Contrôle : champ de contrôle de la cohérence de la trame (l’émetteur calcule un codeen fonction des données transmises ; les récepteurs font le même calcul et comparent: si il y a une différence, la trame ne sera pas acquittée)• Ack : champ accusé de réception si aucune erreur détectée en contrôle• Fin : symbole indiquant la fin de la trame• Séparateur de trame : un certain nombre de bits constituent un espace entre 2tramesDébut Identificateur Com. Informations Contrôle Ack FinF.CAIGNETLes circuits logiques programmables - FPGA22II. Notion de bus de communicationSynchronisation des horloges¸ Sur le réseau, la durée de transmission d’un bit peut varier d’unnoeud à l’autre ; les boîtiers doivent donc effectuer unesynchronisation pour une bonne réception : c’est la synchronisationdes horloges¸ Ce sont les horloges des récepteurs qui se calent sur l’horloge del’émetteur :• En début d’émission de trame sur le bus (: le bus passe de l’état derepos à celui d’activité)• Pendant l’émission de la trame : les bits Stuffing sur le CAN¸ Le récepteur compare sa durée de transmission d’un bit avec cellede la trame en cours de lecture.¸ La synchronisation consiste à allonger ou raccourcir la durée detransmission d’un bit du boîtier récepteur, pour l’ajuster avec celled’un bit du boîtier émetteurF.CAIGNETLes circuits logiques programmables - FPGA23II. Notion de bus de communicationnotion d’arbitrageEquipement A Equipement B Equipement CA1, A2, A3, A4 ; B1, B2, B3; C1, C2ÿ Arbitrage bit à bit (niveaux Récessif /Dominant)bit à 0 = Dominantbit à 1 = RécessifUn niveau Dominant l'emporte toujours sur unniveau RécessifACBDébut 0001 0001 1111 Com. Informations de A Contrôle Ack FinDébut 0001 0000 0000 Com. Informations de B Contrôle Ack FinDébut 0001 0000 0101 Com. Informations de C Contrôle Ack Finÿ Il peut arriver que 2 nœuds (ou plus) émettent simultanément une trame sur le bus.ÿ Au début d’émission pas de conflit, car le champ de début de trame est identiquepour tous les boîtiers.ÿ Mais ensuite il va falloir déterminer laquelle des trames est prioritaire sur lesautres, elle sera la seule transmise. F.CAIGNETLes circuits logiques programmables - FPGA24II. Notion de bus de communicationnotion d’arbitrageSur le busACBDébut 0001 0001 1111 Com. Informations de A Contrôle Ack FinDébut 0001 0000 0000 Com. Informations de B Contrôle Ack FinPerte d'arbitragede la trame de ADébut 0001 0000 ---- Com. Contrôle Ack FinDébut 0001 0000 0101 Com. Informations de C Contrôle Ack Finÿ Chaque émetteur compare le bit qu’il reçoit avec celui qu’il émet ; tantque ces 2 bits sont identiques les 2 transmissions continuentÿ Dès que 2 bits diffèrent, le boîtier ayant émis un bit à l’état récessif,cesse d’émettreF.CAIGNETLes circuits logiques programmables - FPGA25II. Notion de bus de communicationnotion d’arbitrageB Début 0001 0000 0000 Com. Informations de B Contrôle Ack FinSur le bus Début 0001 0000 0000 Com. Informations de B Contrôle Ack FinC Début 0001 0000 0101 Com. Informations de C Contrôle Ack FinPerte d'arbitrage de la trame de Cÿ Sur le VAN, la priorité d’une trame peut-être déterminée surtoute sa longueurÿ Sur le CAN, la priorité est déterminée sur le seul champd’identificationF.CAIGNETLes circuits logiques programmables - FPGA26III. Le bus CAN (control Area Network)GénéralitésLe protocole CAN (Control Area Network) est un protocole de communicationsérie qui supporte des systèmes temps réel avec un haut niveau de fiabilité.Ses domaines d’application s’étendent des réseaux moyens débits aux réseauxde multiplexages faibles coûts. Il est avant tout à classer dans la catégorie desréseaux de terrain- 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 denouveau au repos.- distinction d’erreurs : d’ordre temporaire ou de non-fonctionnalité permanenteau niveau d’un nœud.- déconnexion des nœuds défectueux.F.CAIGNETLes circuits logiques programmables - FPGA27III. Le bus CAN (control Area Network)Comment tout à commencéF.CAIGNETLes circuits logiques programmables - FPGA28III. Le bus CAN (control Area Network)Comment tout à commencé• Le CAN étant un protocole réseau, ils’intègre dans la norme ISO/OSI(ISO: International Standards Organization, OSI:Open Systems Interconnection)• Le CAN est un bus de communicationsérie développé à la fin des années 80par l’entreprise allemande RobertBosch. L’objectif était de fournir àl’industrie automobile un bus peucoûteux pour l’électronique embarquéeISO 11898 pour les applications à hautsdébitsISO 11519 pour les applications à basdébits.F.CAIGNETLes circuits logiques programmables - FPGA29III. Le bus CAN (control Area Network)Caractéristiques physiques du BusLe bus série est une paire différentielle connectée sur des résistances 120Oou des capacités de 30 pF résistant aux perturbationsF.CAIGNETLes circuits logiques programmables - FPGA30III. Le bus CAN (control Area Network)Caractéristiques physiques du Bus¸ Le bus CAN utilise deux fils (une paire torsadée ou non) dont lesdésignations sont CAN L (low) et CAN H (High)¸Les états logiques (0 ou 1) sont codés par différence de potentielentre les deux fils : tenue aux perturbationsIl existe deux possibilités deconfiguration du bus suivantque l’on souhaite travailler :- low speed (125 Kbits)- high speed (1 Mbits)F.CAIGNETLes circuits logiques programmables - FPGA31III. Le bus CAN (control Area Network)Caractéristiques physiques du Bus : low speedBit à 1 Bit à 0 Bit à 1F.CAIGNETLes circuits logiques programmables - FPGA32III. Le bus CAN (control Area Network)Caractéristiques physiques du Bus : high speedBit à 1 Bit à 0 Bit à 1F.CAIGNETLes circuits logiques programmables - FPGA33III. Le bus CAN (control Area Network)Caractéristiques physiques du Bus : résumé=F.CAIGNETLes circuits logiques programmables - FPGA34III. Le bus CAN (control Area Network)Principe de fonctionnement du busIl existe uniquement deux états logiques équivalents à- Dominant : 0- Récessif : 1Le bus utilise un fonctionnement de type « Wired-and » quifonctionnement de la façon suivante : un bit dominant (0) écrase unbit Récessif (1)F.CAIGNETLes circuits logiques programmables - FPGA35III. Le bus CAN (control Area Network)Principe de fonctionnement du bus : concepte « Wired-and »F.CAIGNETLes circuits logiques programmables - FPGA36III. Le bus CAN (control Area Network)Principe de fonctionnement du bus : concepte « Wired-and »F.CAIGNETLes circuits logiques programmables - FPGA37III. Le bus CAN (control Area Network)Principe de fonctionnement du bus : Synchronisation d’horloge¸ Pour que le message soit bien transmis, les horloges de l’émetteur etdu récepteur ne doivent pas avoir de décalage. Pour cela il suffit dere-synchroniser régulièrement l’horloge du récepteur sur celle del’émetteur¸ Le principe consiste à effectuer un bourrage de bit inverse : méthodede bit stuffing¸ Après 5 bits de même niveau, un bit (sans signification) de niveauinverse est ajouté¸ Le récepteur reconnaît ces bits stuffing, cale son horloge, lessupprime, et reconstitue le message initial¸ La vitesse de transmission CAN est exprimée en bits/s. Le débit réeldes infos ne doit pas tenir compte de ces bits stuffing.F.CAIGNETLes circuits logiques programmables - FPGA38III. Le bus CAN (control Area Network)Principe de fonctionnement du bus : Synchronisation d’horlogeTechnique de Bit-stuffingF.CAIGNETLes circuits logiques programmables - FPGA39III. Le bus CAN (control Area Network)Principe de fonctionnement du bus : Structure de trameIl existe plusieurs format de trames :- trame de données (data frame)- trame de requête (remote frame)- trame de gestion d’erreur (error frame)- Trame de surcharge (overload frame)- espace entre trame (inter-frame space)F.CAIGNETLes circuits logiques programmables - FPGA40III. Le bus CAN (control Area Network)Trame de donnéeUne trame de données se décompose en 7 champs différents (figure 3) :- le début de trame SOF (Start Of Frame), 1 bit dominant.- le champ d’arbitrage, 12 bits (identificateur).- le champ de contrôle, 6 bits (Commandes).- le champ de données, 0 à 64 bits(informations).- le champ de CRC (Cyclic Redundancy Code), 16 bits (contrôle).- le champ d’acquittement (Acknoledge), 2 bits.- le champ de fin de trame EOF (End Of Frame), 7 bits récessifs.Début Identificateur Com. Informations Contrôle Ack FinSOF (Start Of Frame) : Commence toujours par 1 bit dominant(bit à 0), la ligne étant précédemment au repos. Ce bit ne sertqu’à synchroniser les horloges internes des récepteurs sur celle del’émetteur : bit de startF.CAIGNETLes circuits logiques programmables - FPGA41III. Le bus CAN (control Area Network)Trame de donnéeF.CAIGNETLes circuits logiques programmables - FPGA42III. Le bus CAN (control Area Network)Trame de donnée : Champ d’arbitrageDébut Identificateur Com. Informations Contrôle Ack FinChamp composé de 12 bits :Les 11 premiers indiquent l’identité du contenu du message, etservent également à l’arbitrage (gestion des priorités)Le dernier bit (RTR : Remote transmission Requestbit) permet de coder la nature du message : trame de données(ex : régime moteur) ou trame de requête (demande de T° eau)bit à 0 (dominant) : trame de donnéesbit à 1 (récessif) : trame de requêteF.CAIGNETLes circuits logiques programmables - FPGA43III. Le bus CAN (control Area Network)Trame de donnée : Champ de commande¸ Champ de commande constitué de 6 bits :¸ Le premier bit IDE (Identifier Extention bit) est un bit dominantpermettant de spécifier qu’il s'agit d’une trame standart¸ Le deuxième bit est réservé est définit comme dominant.¸ Les 4 derniers permettent de coder le nombre d’octets du champ dedonnéesDébut Identificateur Com. Informations Contrôle Ack FinBit n°4 0 1 0 1 0 1 0 1 1Bit n°3 0 0 1 1 0 0 1 1 1Bit n°2 0 0 0 0 1 1 1 1 1Bit n°1 0 0 0 0 0 0 0 0 10 1 2 3 4 5 6 7 8Nbre d’octets du champ de donnéesF.CAIGNETLes circuits logiques programmables - FPGA44III. Le bus CAN (control Area Network)Trame de donnée : Champ de données¸ Ce champ contient de 0 à 8 octets de données (64 bits maxi)Début Identificateur Com. Informations Contrôle Ack FinF.CAIGNETLes circuits logiques programmables - FPGA45III. Le bus CAN (control Area Network)Trame de donnée : Champ de contrôle¸ Ce champ de vérification des données est composé de 2 parties :ÿ Code de vérification des données transmises sur 15 bits : lerécepteur compare son code à celui de l’émetteur ; si différence :pas d’acquittementÿ Délimiteur de vérification de données : marque la fin de vérification,1 bit toujours à l’état 1 (récessif)ÿ Ce contrôle est effectué par tous les boîtiers du réseauÿ Ce champ est étudié pour une trame de 127 bits max. Le nombremaximales d’erreurs détectées peut être de 5Début Identificateur Com. Informations Contrôle Ack FinLe champ de contrôle : CRC (Cyclic Redundancy) est composé de16 bits, il permet de vérifier les données transmisesF.CAIGNETLes circuits logiques programmables - FPGA46III. Le bus CAN (control Area Network)Trame de donnée : Champ d’acquitement¸ Ce champ d’acquittement est composé de 2 bits :ÿ Un bit d’acquittement à l’état 0 (dominant) si le calcul du code devérification des données est correct ; si une erreur : bit laissé àl’état haut (recessif)ÿ Un bit délimiteur d’acquittement, toujours à l’état haut (1)(recessif)ÿ Tous les boîtiers du réseau doivent acquitter, même si la trame neles concerne pas (perte de temps possible)Pendant cette période, l’émetteur laisse la trame libre…ce sont lesrécepteurs qui complètent la trame.Début Identificateur Com. Informations Contrôle Ack FinF.CAIGNETLes circuits logiques programmables - FPGA47III. Le bus CAN (control Area Network)Trame de donnée : Champ d’acquitementDébut Identificateur Com. Informations Contrôle Ack Fin¸ Champ de fin de trame : suite de 7 bits à l’état 1¸ Le codage par bit stuffing est désactivé à partir de cet instant¸ Remarque :• 3 bits à l’état 1 séparent obligatoirement 2 trames consécutives• 108 bits (sans les stuffing) sont nécessaires pour 64 bits de données F.CAIGNETLes circuits logiques programmables - FPGA48III. Le bus CAN (control Area Network)Trame de requête (remote frame)Scénario : demande d’informations d’un nœud à un autre.F.CAIGNETLes circuits logiques programmables - FPGA49III. Le bus CAN (control Area Network)Trame de requèteDébut Identificateur Com. Contrôle Ack FinUne trame de requête est constituée de la même manière qu’unetrame de données sauf que le champ de données est vide.Dans le champ d’arbitrage, le bit de RTR est récessif. Par conséquent si deuxnœuds émettent chacun une trame possédant le même identificateur (c’est àdire qu’un nœud émet une trame de données et l’autre une trame derequête), l’arbitrage sur le bit de RTR va donner la priorité à la trame dedonnées.Les règles de construction des autres divers champs d’une trame derequête sont les mêmes que dans le cas d’une trame de données.F.CAIGNETLes circuits logiques programmables - FPGA50III. Le bus CAN (control Area Network)Trame de gestion des erreursLes erreurs de transmission sont détectées par le décodage du champde contrôle, et sont spécifiées au niveau du champ d’acquittement.On peut dans le protocole du bus CAN détecter 5 types d’erreurs :- Erreur de bit- Erreur de stuffing- Erreur de CRC- Erreur d’acknowledge delimiter- Erreur d’acknowledge slotF.CAIGNETLes circuits logiques programmables - FPGA51III. Le bus CAN (control Area Network)Trame de gestion des erreurs : Erreur de BitChaque fois qu’un émetteur envoie un bit sur le bus, il vérifie en mêmetemps si le niveau émis sur le bus correspond à celui qu’il désire envoyeren faisant une surveillance du bus. Si le niveau ne correspond pas, il lesignale par un Bit Error.Exception :- présence d’un bit dominant à la place d’un bit récessif dans lechamp d’arbitrage (perte d’arbitrage)- présence d’un bit dominant à la place d’un bit récessif dans lechamp d’acquittement (signalisation d’erreur par un recepteur)F.CAIGNETLes circuits logiques programmables - FPGA52III. Le bus CAN (control Area Network)Trame de gestion des erreurs : Erreur de stuffingUne erreur de Stuffing est détectée à chaque fois qu’il y a 6 bitsou plus consécutifs de même signe sur le bus.Cependant,- Une erreur de Stuffing ne doit être signalée que dans leschamps d’identificateurs, de commande et de CRC.- La règle du Bit-Stuffing ne s’appliquant plus après la findu CRC. En aucun cas, une erreur de Bit-Stuffing ne doit êtresignalée dans le champ de fin de trame ou dans le champd’acquittement.F.CAIGNETLes circuits logiques programmables - FPGA53III. Le bus CAN (control Area Network)Trame de gestion des erreurs : Erreur de CRCSi la valeur du CRC calculée par le récepteur est différente decelle envoyée par l’émetteur, il y a erreur de CRC (CRC Error).F.CAIGNETLes circuits logiques programmables - FPGA54III. Le bus CAN (control Area Network)Trame de gestion des erreurs : Erreur d’acknowledge delimiterUne erreur d’Acknowledge Delimiter est signalée lorsque le récepteurn’observe pas un bit récessif lors du champ de Acknowledge Delimiter.Il en est de même pour le CRC Delimiter.Le délimiteur d’acquittementdoit impérativement être unbit récessif (niveau 1)Si une erreur est détectée lemessage doit être répeté.Trame de gestion des erreurs : Erreur de slot acknowledge delimiterUne erreur de Slot Acknowledge est signalée par l’émetteur s’il ne litpas un bit dominant lors du champ de slot acknowledge.F.CAIGNETLes circuits logiques programmables - FPGA55III. Le bus CAN (control Area Network)Trame de gestion des erreurs : résuméF.CAIGNETLes circuits logiques programmables - FPGA56III. Le bus CAN (control Area Network)Trame d’erreurCette trame est générée par n’importe quel nœud détectant une erreur.La trame d’erreur est constituée de deux champs principaux :- le drapeau d’erreur,- le délimiteur de champ.Le champ des drapeaux peut être constitué de deux sortes de drapeaux :- les drapeaux d’erreur active (Active Error Flag),- les drapeaux d’erreur passive (Passive Error Flag).F.CAIGNETLes circuits logiques programmables - FPGA57III. Le bus CAN (control Area Network)Gestion du mode d’erreurSuivant le nombre d’erreur qu’un nœud comptabilise, l’état du mode de cenœud peut différer. Un compteur mémorise le nombre d’erreur rencontrélors de la transmission des trames sur le bus. Deux compteurs séparésrégissent respectivement le nombre d’erreurs en émission et en réception.Il se nomme :- Transmit Error Counter pour l’émission (TEC)- Receive Error Counter pour la réception (REC)Par défaut (à l’initialisation), le nœud est dans l’état « erreur Active ». Lebus peut émettre et recevoir sans restriction.Pendant le fonctionnement, les compteurs sont incrémentés lors de ladétection d’erreur (variable suivant le type d’erreur).Pour chaque transmission réussie, le compteur est décrémenté.Le nœud reste dans l’état « erreur active » tant que la valeur ducompteur reste inférieure à 127F.CAIGNETLes circuits logiques programmables - FPGA58III. Le bus CAN (control Area Network)Gestion du mode d’erreurSi la valeur des compteurs dépasse 127, le nœud passe à l’état« erreur passive ».Dans ce mode; le nœud peut émettre et recevoir, mais aprèsune transmission, il doit suspendre la transmission et attendre8bits de plus qu’un nœud en mode erreur active pour pouvoirretransmettreSi les compteurs dépassent la valeur 255, le nœud passe dans lemode « Bus off ».L’activité du noeud est arrêtée, il ne participe plus à lacommunication.Seul un RESET permet de repasser en mode erreur active (127trames de onze bits récessifs).F.CAIGNETLes circuits logiques programmables - FPGA59III. Le bus CAN (control Area Network)Gestion du mode d’erreurF.CAIGNETLes circuits logiques programmables - FPGA60III. Le bus CAN (control Area Network)Gestion du mode d’erreur : gestion du compteurs de réception (REC)Le compteur de réception est incrémenté de 1 si :-un récepteur détecte une erreur, le compteur d’erreur deréception sera incrémenté de 1, sauf si l’erreur est un Bit Errordurant un flag d’erreur active ou un flag de surcharge.Le compteur de réception est incrémenté de 8 si :- un récepteur reçoit un bit dominant juste après un flag d’erreur.- un récepteur voit un Bit Error tandis qu’il reçoit un flag d’erreuractive ou un flag de surcharge.F.CAIGNETLes circuits logiques programmables - FPGA61III. Le bus CAN (control Area Network)Gestion du mode d’erreur : gestion du compteurs d’émission (TEC)Le compteur de transmission est incrémenté de 8 si :- un émetteur envoie un flag d’erreur, son compteur d’émissions’incrémente de 8 sauf si l’émetteur est en erreur passive et voit unAcknowledgment Error (il ne détecte aucun bit dominant sur lechamp d’acknowledge ou lors de l’envoie de la trame d’erreurpassive) et également si l’émetteur envoie un flag d’erreur lors d’uneerreur de Bit-Stuffing durant la période d’arbitrage (détection d’unbit dominant au lieu d’un bit récessif situé après le RTR).- un émetteur voit un Bit Error tandis qu’il émet un flag d’erreuractive ou un flag de surcharge.F.CAIGNETLes circuits logiques programmables - FPGA62III. Le bus CAN (control Area Network)Gestion du mode d’erreur : gestion des compteurs REC et TECLes compteurs d’émission et de réception s’incrémentent de 8si :- chaque nœud recevant sept bits dominants consécutifs aprèsréception d’un Active Error Flag, d’un Passive Error Flag ou d’unOverload Flag. Après détection de quatorzième bit dominantconsécutif (pour l’Active Error Flag ou l’Overload Flag) ou du huitièmebit dominant consécutif suivant le Passive Error Flag, et après toutesles suites de huit bits dominants consécutifs. F.CAIGNETLes circuits logiques programmables - FPGA63III. Le bus CAN (control Area Network)Gestion du mode d’erreur : gestion des compteurs REC et TECLe compteur de réception est décrémenté de 1 si :- le récepteur reçoit une trame sans erreur (jusqu’au champd’Acknowledge Slot) et si la valeur du compteur est comprise entre 1et 127. Si le compteur est à 0, sa valeur ne change pas (pasd’incrémentation). S'il est supérieur à 127, sa valeur est ramenéeentre 119 et 127.Le compteur d’émission est décrémenté de 1 si :- la transmission d’une trame se déroule sans erreur (jusqu’au champd’Acknowledge Slot). Si la valeur du compteur est à 0, le compteur nes’incrémente pas.Le compteur de réception est décrémenté de 1 si :- le récepteur reçoit une trame sans erreur (jusqu’au champd’Acknowledge Slot) et si la valeur du compteur est comprise entre 1et 127. Si le compteur est à 0, sa valeur ne change pas (pasd’incrémentation). S'il est supérieur à 127, sa valeur est ramenéeentre 119 et 127.F.CAIGNETLes circuits logiques programmables - FPGA64III. Le bus CAN (control Area Network)Trame de surcharge (overload frame)La trame de surcharge indique aux autres nœuds qu’une stationest surchargée. Elle est formée de deux champs :- le drapeau de surcharge (Overload Frame) avec six bitsdominants,- le délimiteur de surcharge (Overload Delimiter) avechuit bits récessifs.F.CAIGNETLes circuits logiques programmables - FPGA65III. Le bus CAN (control Area Network)Trame de surcharge (overload frame)Une trame de surcharge est émise sur le bus si :- un bit dominant est détecté durant la période d’intertrame.- un récepteur n’est pas prêt pour la réception d’une nouvelletrame de donnée ou de requête (retard sur le traitement desinformations circulant sur le bus).Dès qu’une trame de surcharge est émise, les autres nœuds voient surle bus une suite de six bits dominants qui ne respectent pas la règledu Bit-Stuffing. Ils émettent à leur tour une trame de surcharge.Seulement deux trames de surcharges consécutives sont autorisées surle bus (pas plus de 12 bits dominants consécutifs émis sur le bus).F.CAIGNETLes circuits logiques programmables - FPGA66III. Le bus CAN (control Area Network)Période inter-trameElle sépare les trames de données ou de requêtes entre elles. Il s’agitd’une suite de plusieurs bits récessifs. Elle est divisée en deux parties:- le champ d’intermission- le bus idleF.CAIGNETLes circuits logiques programmables - FPGA67III. Le bus CAN (control Area Network)Période inter-trameLe champ d’intermission :Le champ d’intermission est une suite de 3 bits récessifsconsécutifs. Durant la période d’intermission, l’émission de tramen’est pas autorisée. Les gestionnaires de protocole ne sont autorisésà signaler que les conditions de surcharge.Le champ de Bus Idle :Le champ de Bus Idle est celui du bus quand il est au repos. Leniveau de repos est le niveau récessif et aucune trame ne circule surle bus (succession de 5 bit récessifs).Le champ de suspension de transmission :Le champ de suspension de transmission est émis par un nœudlorsque celui-ci envoie une trame d’erreur passive.F.CAIGNETLes circuits logiques programmables - FPGA68III. Le bus CAN (control Area Network)La synchronisation du busLa synchronisation se fait de 2 façon :- Hard : sur le bit de start- Re- synchronisation sur chaque front récessif et dominant F.CAIGNETLes circuits logiques programmables - FPGA69III. Le bus CAN (control Area Network)La notion de « Nominal Bit Time »Les transitions des bits s’effectuent sur chaque front montant de l’horloge.Dans le protocole CAN, une période d’horloge correspond à ce que l’onappelle le Nominal Bit Time.Il représente en fait la durée du bit sur le bus. Cette durée est, commenous l’avons vu, étroitement liée à la période de l’horloge. Chaque stationreliée sur le bus doit être cadencée avec le même Nominal Bit Time pourpouvoir émettre et recevoir correctement les données circulant sur le bus.F.CAIGNETLes circuits logiques programmables - FPGA70III. Le bus CAN (control Area Network)La notion de « Nominal Bit Time »La durée du bit time de chaque circuit est construite à partir d’un nombredéterminé de périodes d’horloge issue de l’horloge interne de chaquecircuit CAN. On définit ainsi un « Time Quantun » qui est unediscrétisation plus petite utilisée par le bus CAN• La longueur du Time Quantum est programmée par la division del’oscillateur interne du composant d’interface.• Il y a entre 8 et 25 time quanta par Bit.• La longuer d’un bit (bit Time) et donc le debit (Bit Rate) est obtenu enprogramment la longueur du quantun et en programmant le nombre dequantum par Bit.F.CAIGNETLes circuits logiques programmables - FPGA71III. Le bus CAN (control Area Network)La notion de « Nominal Bit Time »La norme BOSCH décrit avec précision la composition de ce NominalBit Time qui est divisé en plusieurs segments :· le segment de synchronisation (SYNC_SEG),· le segment de propagation (PROP_SEG),· le segment de phase buffer n°1 (PHASE_SEG1),· le segment de phase buffer n°2 (PHASE_SEG2).Segment de synchronisationSegment de propagationSegment de Phase buffer 1Segment de Phase buffer 2F.CAIGNETLes circuits logiques programmables - FPGA72III. Le bus CAN (control Area Network)La notion de « Nominal Bit Time » : segment de synchronisationLe segment de synchronisation est utilisé pour synchroniser lesdifférents nœuds du bus. Comme nous le verrons par la suite, unetransition (de 0 à 1 ou de 1 à 0) doit s’effectuer dans ce segment pourpermettre une re-synchronisation des horloges des différents nœuds enmode de réception de trames.La durée de ce segment est toujours de 1 quantumF.CAIGNETLes circuits logiques programmables - FPGA73III. Le bus CAN (control Area Network)La notion de « Nominal Bit Time » : segment de synchronisationLe segment de propagation est utilisé pour compenser lesphénomènes de temps de propagation sur le bus.Il prend en compte le délai introduit par le driver.La longueur de ce segment varie ente 1 et 8 quanta.Durée PROP SEG= 2* ( t propag bus + t retard comparateurs +t retard drivers lignes) F.CAIGNETLes circuits logiques programmables - FPGA74III. Le bus CAN (control Area Network)La notion de « Nominal Bit Time » : Le segment de buffer phase1Il est surtout utilisé pour compenser les erreurs de phase détectéeslors des transitions.Ce segment peut être rallongé pendant la re-synchronisation.Il est composé de 1 à 8 quanta.Le point d’échantillonnage (Sample point) est le point auquel le bus estlu, Il est situé à la fin du segment de buffer 1F.CAIGNETLes circuits logiques programmables - FPGA75III. Le bus CAN (control Area Network)La notion de « Nominal Bit Time » : Le segment buffer phase2 :Il est surtout utilisé pour compenser les erreurs de phase détectéeslors des transitions.Ce segment peut être raccourci pendant la re-synchronisation.Il est composé de 1 à 8 quanta et doit être au moins aussi long que letemps de traitement de l’information, sans être plus long que le la phasebuffer 1.F.CAIGNETLes circuits logiques programmables - FPGA76III. Le bus CAN (control Area Network)La notion de « Nominal Bit Time » : exemple de re-synchronisationIci l’oscillateur de l’émetteur est plus lent que celui du récepteurF.CAIGNETLes circuits logiques programmables - FPGA77III. Le bus CAN (control Area Network)La notion de « Nominal Bit Time » : exemple de re-synchronisationIci l’oscillateur de l’émetteur est plus lent que celui du récepteurAjout d’un quantum au niveau du buffer1F.CAIGNETLes circuits logiques programmables - FPGA78III. Le bus CAN (control Area Network)La notion de « Nominal Bit Time » : exemple de re-synchronisationIci l’oscillateur de l’émetteur est plus rapide que celui du récepteurF.CAIGNETLes circuits logiques programmables - FPGA79III. Le bus CAN (control Area Network)La notion de « Nominal Bit Time » : exemple de re-synchronisationIci l’oscillateur de l’émetteur est plus rapide que celui du récepteurle buffre 2 est raccourciF.CAIGNETLes circuits logiques programmables - FPGA80III. Le bus CAN (control Area Network)La notion de « Nominal Bit Time » : bit timingDans l’implémentation de beaucoup de CAN, le segment de propagationet le segment de buffer 1 sont regroupés pour une programmation plussimple on crée les nouveaux segments :- timing segment 1- timing segment 2F.CAIGNETLes circuits logiques programmables - FPGA81III. Le bus CAN (control Area Network)La notion de « Nominal Bit Time » : choix de l’échantillonnageOn peur ainsi plus facilement programmer l’échantillonage.Attention le segment 2 ne peut pas dépassé 4 quantaCeci permet d’avoir une taille de bus maximale.F.CAIGNETLes circuits logiques programmables - FPGA82III. Le bus CAN (control Area Network)Résumé : implémentationF.CAIGNETLes circuits logiques programmables - FPGA83III. Le bus CAN (control Area Network)Résumé : implémentation le contrôleur CAN basicF.CAIGNETLes circuits logiques programmables - FPGA84III. Le bus CAN (control Area Network)Résumé : implémentation le contrôleur CAN completStockage et gestion des messagesF.CAIGNETLes circuits logiques programmables - FPGA85III. Le bus CAN (control Area Network)Résumé (composant siemens)Contrôleursbasic2 - 3€50€
posted by Isaac Hobart at 5:55 PM
Post a Comment
<< Home
View my complete profile