le bus can ivan francoisivan.francois92.free.fr/le_bus_can.pdf · couche physique elle définit...
TRANSCRIPT
Le bus CAN
Ivan FRANCOIS 1
1
LE BUS CAN
Control Area Network
2
Introduction
Bus/réseau de terrain
Respecte les spécifications ISO/OSI
Fonctionne dans des environnements limités etsévères
Haut niveau de fiabilité
Le bus CAN
Ivan FRANCOIS 2
3
CAN pour l’automobile
CAN est conçu par BOSCH en 1983 devantla montée de l’électronique embarquée dansles voitures et du nombre de câbles
La première voiture multiplexée à utiliser lebus CAN comme support de transmission aété réalisée en 1991 (avec un débit de 500kbit/s)
Actuellement, il peut y avoir plusieurs busCAN dans une voiture suivant les modèles
4
CAN pour l’automobile
Situation du câblage dans les années 80
Tableau de bord
Contrôle moteur
Airbag
Sièges électriques
Boite de vitesse
Vitres électriques
Phares
suspensions
ABS
Climatisation
Le bus CAN
Ivan FRANCOIS 3
5
CAN pour l’automobile
Situation sur les modèles récents
Tableau de bord
Contrôle moteur
Airbag
Sièges électriques
Boite de vitesse
Vitres électriques
Phares
suspensions
ABS
Climatisation
Bus CAN Bus CAN
6
Couches OSIOpen System Interconnection
Le bus CAN ne concerneque les couches basses:
– Couche physique
– Couche liaison de données
APPLICATION
PRESENTATION
SESSION
TRANSPORT
RESEAU
LIAISON
PHYSIQUE
Le bus CAN
Ivan FRANCOIS 4
7
Couches OSI
COUCHE LIAISON
LLC ( Logic Link Control )
Filtrage d'acceptance des messages
Notification de sucharge ( overload )
Recouvrement des erreurs
MAC ( Medium Access Control )
Encapsulation/Décapsulation des données
Codage de trame ( Stuffing/Destuffing )
Medium Access Management
Détection d'erreur
Signalisation d'erreur
Acquittement
Sérialisation/Désérialisation
COUCHE PHYSIQUE
PLS ( Physical Signalling )
Codage/Décodage de bit
Bit timing
Synchronisation
PMA ( Physical Medium Attachment )
Caractéristiques
Driver/Receiver
MDI ( Medium Dependent Interface )
Connecteurs
8
Couche liaisonSous couche LLC
La sous-couche LLC s’occupe:
– du filtrage des messages.
– de la notification de surcharge (Overload).
– de la procédure de recouvrement des erreurs.
Le bus CAN
Ivan FRANCOIS 5
9
Couche liaisonSous couche MAC
C’est le noyau du protocole CAN. Elle a pourfonction de présenter les messages reçus enprovenance de la sous-couche LLC etd’accepter les messages devant êtretransmis vers la sous-couche LLC. Elle estresponsable de :– la mise en trame du message.– l’arbitrage.– l’acquittement.– la détection des erreurs.– la signalisation des erreurs.
10
Couche physique
Elle définit comment le signal est transmis. Sonrôle est d’assurer le transfert physique des bitsentre les différents nœuds en accord avectoutes les propriétés (électriques,électroniques…) du système
A l’intérieur d’un unique réseau la couchephysique doit être la même pour chaque noeud.
Cette couche s’occupe donc :– de gérer la représentation du bit (codage, timing…).
– de gérer la synchronisation bit.
– de définir les niveaux électriques des signaux.
– de définir le support de transmission.
Le bus CAN
Ivan FRANCOIS 6
11
Implémentations CAN typique
Nœud A Capteur
Microcontrôleur avec contrôleur
CAN intégré
Interface de ligne: CAN transceiver
CAN L (CAN LOW)
CAN H (CAN HIGH)
DAC, I2C, SPI,…
CANTX CANRX
TXD RXD
CANLCANH
Nœud N Capteur
Microcontrôleur avec contrôleur
CAN intégré
Interface de ligne: CAN transceiver
DAC, I2C, SPI,…
CANTX CANRX
TXD RXD
CANLCANH
120Ω
BUS CAN120Ω
12
Caractéristiques physiques du bus CAN
La transmission des données est effectuée sur une paire filaire différentielle. La ligne est donc constituée de deux fils :
La transmission en paire différentielle permet de s'affranchir des problèmes de parasites
CAN L (CAN LOW)
CAN H (CAN HIGH) Paire filaire
Le bus CAN
Ivan FRANCOIS 7
13
Caractéristiques physiques du bus CAN
Pour les niveaux physiques sur le bus, il estimportant de distinguer les deux types detransmission possibles :
– transmission en bus CAN low speed ≤125kb/s
– transmission en bus CAN high speed >125kb/s
14
Caractéristiques physiques du bus CAN
Niveau de tension du bus CAN Low Speed
Le bus CAN
Ivan FRANCOIS 8
15
Caractéristiques physiques du bus CAN
Niveau de tension du bus CAN High Speed
16
L’interface de ligne
C’est l’interface finale entre lemicrocontrôleur et les fils
Ce circuit réalise la transposition de niveauxasymétriques (0 à 5V) en niveauxdifférentiels sur une ligne d’impédancecaractéristique de 120 Ω
Le bus CAN
Ivan FRANCOIS 9
17
Règles de fonctionnement et définitions
Nœud: Sous-ensemble relié à un réseau decommunication et capable de communiquersur le réseau selon un protocole decommunication (ici le protocole CAN)
Flexibilité: aucune modification logicielle oumatérielle n’est requise lorsqu’un nœud estajouté au réseau
18
Règles de fonctionnement et définitions
Débit bit (bit rate): le débit bit peut varierentre différents systèmes, mais il doit êtrefixe et uniforme au sein d’un même système
Fonctionnement multimaître : lorsque lebus est libre, chaque nœud peut déciderd’envoyer un message. Seul le message deplus haute priorité prend possession du bus.
Le bus CAN
Ivan FRANCOIS 10
19
Arbitrage - Identificateur
Si deux nœuds ou plus tentent d’émettre unmessage sur un bus libre il faut régler lesconflits d’accès. On effectue alors unarbitrage bit à bit (non destructif) tout au longdu contenu de l’identificateur.
Ce mécanisme garantit qu’il n’y aura ni pertede temps, ni perte d’informations.
20
Arbitrage
Utilisation de la dominance de bit:
– 0 bit dominant
– 1 bit récessif
Exemple 3 nœuds veulent émettre en même temps:
– N1: 01100111010
– N2: 01100101000
– N3: 01100101011
Le bus CAN
Ivan FRANCOIS 11
21
Arbitrage
Nœud 1 0 1 1 0 0 1 1 Perdu
Nœud 2 0 1 1 0 0 1 0 1 0 0 0 Gagné
Nœud 3 0 1 1 0 0 1 0 1 0 1 0 Perdu
Bus CAN 0 1 1 0 0 1 0 1 0 0 0
22
Arbitrage
Tous les nœuds vérifient l’état du bus aprèsémission d’un bit
Si un bit récessif est émis et un bit récessifest lu, le nœud continue à émettre
Si un bit récessif est émis et un bit dominantest lu, il y a conflit et perte d’arbitrage. Lenœud stoppe son émission et passe enmode réception
Le bus CAN
Ivan FRANCOIS 12
23
Sécurisation de la transmissionBit stuffing
Insertion d’un ‘0’ après une suite de cinq ‘1’consécutifs
Insertion d’un ‘1’ après une suite de cinq ‘0’consécutifs
Cette technique est uniquement active surles champs de SOF, d’arbitrage, de contrôle,de données et de CRC (délimiteur exclu)
24
Sécurisation de la transmissionBit stuffing
6ème ‘1’ consécutif
Trame originale: 010011111110010001
Trame transmise: 0100111110110010001Bit de transparence inséré dans la trame
6ème ‘0’ consécutif
Trame originale: 010000001110010001
Trame transmise: 0100000101110010001Bit de transparence inséré dans la trame
Le bus CAN
Ivan FRANCOIS 13
25
Les différents types de trames
Trame de données (data frame)
Trame de requête (remote frame)
Trame d’erreur (error frame)
Trame de surcharge (overload frame)
26
Trame de données
Il existe 2 formats de trame de données:
– CAN 2.0A trame standard. Identificateur sur 11 bits
– CAN 2.0B trame étendue. Identificateur sur 29 bits
Le bus CAN
Ivan FRANCOIS 14
27
Trame de données
Espace inter
trame
SOF
Arbitration
ID
RTR
IDE DLC DATA BYTE CRCACK
END OF FRAME
Espace inter
trame
1
bit
11 bits ou
29 bits
1
bit
2
bits
4
bits0-8 octets 16 bits
2 bits
7 bits
Champ de données
Champ de commandes
Champ d’arbitrage
Début de trame
Champ de CRC
Champ d’acquittement
Fin de trame
28
Trame de donnéesDébut de trame
Début de trame 1 bit
– Constitué d’un seul bit dominant
– Signale le début d’un échange
– Un nœud est autorisé à émettre que si le bus estlibre
Le bus CAN
Ivan FRANCOIS 15
29
Trame de donnéesChamp d’arbitrage
Champ d’arbitrage 12 bits
– Identificateur 11 bits (CAN 2.0 A) ou 29 bits (CAN2.0 B)
Ordre de ID10 (MSB) vers ID0 (LSB)
L’identificateur le plus prioritaire (valeur la plus faible)
gagne le bus
– RTR Remote Transmission Request 1bit
Récessif lors d’une trame de requête
Dominant lors d’une trame de données
30
Trame de donnéesChamp de commande
Champ de commande 6 bits
– Bits de réserve 2 bits
Permettent d’assurer la compatibilité entre CAN 2.0A et
CAN 2.0B (dominants pour CAN 2.0A)
– DLC Data Length Code 4 bits
Nombre d’octets contenues dans le champ de données
(0 à 8 octets)
Le bus CAN
Ivan FRANCOIS 16
31
Trame de donnéesChamps de données
Champs de données 0 à 64 bits
– Champ où se trouvent les données utilestransmises
– 0 octets minimum, 8 octets maximum
– Chaque octet est transmis avec le bit de poids forten tête
32
Trame de donnéesChamp de CRC
Champ de CRC (Cyclic Redondance Code)16 bits
– Séquence CRC 15 bits
– Délimiteur de CRC 1 bit
Ce champ permet de s’assurer de la validitédu message transmis
Un calcul permet de déterminer 5 erreurs aumaximum
Le bus CAN
Ivan FRANCOIS 17
33
Trame de donnéesCalcul du CRC
On considère le polynôme f(x), dont lescoefficients sont les bits de début de trame,des champs d’arbitrage, de contrôle et dedonnées
Le polynôme obtenu est multiplié par x15
On divise ensuite ce polynôme par lepolynôme générateur:
g(x)=x15+x14+x10+x8+x7+x4+x3+1
Le reste de cette division donne le CRC
34
Trame de donnéesCalcul du CRC
Exemple: L’identifiant 5 envoi de l’octet A0h SOF=0
Id=101
RTR=0
IDE=00
DLC=0001
Donnée=1010
Le polynôme est f(x) = x17+x15+x8+x7+x5
Le bus CAN
Ivan FRANCOIS 18
35
Trame de donnéesCalcul du CRC
On multiplie f(x) par x15 . On obtient:
x32+x30+x23+x22+x20
Ensuite, on divise (modulo 2) ce polynômepar
x15+x14+x10+x8+x7+x4+x3+1
Un algorithme permet d’effectuer cettedivision
Le reste de la division donne le CRC sur 15bits
36
Trame de donnéesChamp d’acquittement
Champ d’acquittement
– ACK SLOT émis à l’état récessif
A chaque fois qu’une station a émis un message valide,
elle superpose un bit dominant sur le Ack Slot.
Sinon elle envoi une trame d’erreur
L’acquittement signifie qu’au moins une station a reçue
la trame
– ACK DELIMITER toujours récessif
Bit délimiteur d’acquittement
Le bus CAN
Ivan FRANCOIS 19
37
Trame de donnéesFin de trame
Fin de trame 7 bits
– 7 bits récessifs successifs
– Les logiques de codage et de décodage Bit
Stuffing sont désactivées pendant la séquence defin de trame
38
Trame de requête
Les règles de construction des diverschamps sont les mêmes que dans le casd’une trame de données. Le champ dedonnées est vide
Si un nœud a besoin d’un certain nombre dedonnées, il va émettre une trame de requêteen prenant soin d’indiquer dans le champ decontrôle le nombre d’octets de données dontil a besoin
Permet une coopération de type Client-Serveur
Le bus CAN
Ivan FRANCOIS 20
39
Trame de requête
Début de trame
– Identique à la trame de données
Champ d’arbitrage
– Identificateur identique à la trame de données
– RTR toujours récessif
Une trame de données sera toujours prioritaire sur une
trame de requête
40
Trame de requête
Champ de commande 6 bits
– Bits de réserve 2 bits
Permettent d’assurer la compatibilité entre CAN 2.0A et
CAN 2.0B
– DLC Data Length Code 4 bits
Nombre d’octets contenues dans le champ de données
(0 à 8 octets) qui devra être retournée par la trame de
donnée demandée
Le bus CAN
Ivan FRANCOIS 21
41
Trame de requête
Champ de données
– Toujours vide
Champ de CRC d’acquittement et fin detrame
– Identique à la trame de données
42
Gestion des erreurs
Principe: une station qui détecte une erreur,la signale aux autres par une trame d’erreur
Le bus CAN
Ivan FRANCOIS 22
43
Différents types d’erreurs
Erreur de Bit stuffing (stuff bit error)– 6 bits consécutifs de même niveau entre le SOF et le CRC
delimiter
Erreur de bit (bit error)– dominant + récessif = récessif !
Erreur de CRC (CRC error)– CRC error : CRC calculé ≠ CRC trame
Erreur d’acknoledge (ack error)– Acknoledge récessif!
Erreur de forme– Bit dominant fin de trame, inter trame ou CRC delimiter
44
Confinement d’erreurs
Un mécanisme permet de faire la distinctionentre un défaut temporaire (surtension,perturbation aléatoire) et une pannepermanente (mauvaise connexion, nœuddéfectueux, perturbation persistante,...)
Une station peut prendre l’un des trois étatssuivants:
– « error active »
– « error passive »
– « bus off »
Le bus CAN
Ivan FRANCOIS 23
45
Compteur d’erreurs
2 compteurs d’erreurs permettent deconnaitre l’état d’un nœud:
– sur les trames émises (TEC – transmit errorcounter)
– sur les trames reçues (REC – receive errorcounter)
46
Evolution des compteurs
REC :– Réception d’une trame corrompue : +1 ou +8 selon
l’erreur (jusque 128)
– Réception d’une trame correcte : -1 (si >0)
TEC :
– Emission d’une trame corrompue : +8 (jusque 256)
– Emission d’une trame correcte : -1 (si >0)
Il existe quelques exceptions mineures à cesrègles (ex: quand une station est seule sur leréseau)
Le bus CAN
Ivan FRANCOIS 24
47
Règle de changement des états
Error active
Reset
Bus Off
Error passive
REC>=127 OU
TEC>=127
REC<127 OU
TEC<127
TEC>=256
128
OCCURRENCES
DE 11 BITS
RECESSIFS
48
Etats des erreurs
0 à 127 état error active– Fonctionnement normal mais en cas d’erreur,
transmission d’un active error flag pendant latrame d’erreur
128 à 255 état error passive– Fonctionnement normal mais en cas d’erreur,
transmission d’un passive error flag pendant latrame d’erreur
Le bus CAN
Ivan FRANCOIS 25
49
Etats des erreurs
>255 Bus Off
– Le nœud se déconnecte du bus
– Les drivers de bus ne sont plus actifs
– Le nœud sera autorisé à se reconnecter aprèsqu’il ait observé, sans erreurs sur le bus, 128trames de 11 bits récessifs
50
Trame d’erreur
Trame de données
incomplète6 bits 0…6 bits 8 bits 3 bits
Flag d’erreur Délimiteur d’erreurs intertrame
Superposition des flags
d’erreurs
Erreur
Trame d’erreur
Le bus CAN
Ivan FRANCOIS 26
51
Trame d’erreur
Champ flag d’erreur
– Superposition des différents flag d’erreursauxquels ont contribué les différents nœudsprésents sur le bus
– 2 types de flag d’erreur
Active error flag
Passive error flag
Champ délimiteur d’erreur
– 8 bits récessifs consécutifs
52
Trame d’erreur
Trame de données
incomplète
6 bits
000000
0…6 bits
000000
8 bits
111111113 bits
Flag d’erreur Délimiteur d’erreurs intertrame
Superposition des flags
d’erreurs
Trame de données
incomplète
6 bits
111111
0…6 bits
111111
8 bits
111111113 bits
Flag d’erreur Délimiteur d’erreurs intertrame
Superposition des flags
d’erreurs
Active error flag: 6 bits dominants successifs
Passive error flag: 6 bits récessifs successifs
Le bus CAN
Ivan FRANCOIS 27
53
Trame de surcharge
Indique qu’une station est surchargée pour un certain laps de temps
Trame de données6 bits
dominants
0…6 bits
dominants
8 bits
récessifs3 bits
Flag de
surcharge
Délimiteur de
surchargeintertrame
Superposition des flags
de surcharge
Trame de surcharge
54
Trame de surcharge
Une trame de surcharge est émise si:– un bit dominant est détecté durant la période
d’intertrame
– un récepteur n’est pas prêt pour la réceptiond’une nouvelle trame de donnée ou de requête(retard sur le traitement des informations circulantsur le bus)
Pas plus de 2 trames de surchargesconsécutives
Le bus CAN
Ivan FRANCOIS 28
55
Nominal Bit Time
Le Nominal Bit Time représente la durée dubit sur le bus
Chaque station reliée sur le bus doit êtrecadencée avec le même Nominal Bit Timepour pouvoir émettre et recevoircorrectement les données
Le Nominal Bit Time, exprimé en secondes,correspond à l’inverse du débit sur le bus
56
Nominal Bit Time
Exemple:
Bus CAN 125 Kbits/S donne un Nominal bit timede 8 µS
Bus CAN 1 Mbits/S donne un Nominal bit timede 1 µS
1
Nominal_Bit_Rate (débit)
Nominal_Bit_Time =
Le bus CAN
Ivan FRANCOIS 29
57
Nominal Bit Time
Nominal Bit Time est divisé en plusieurssegments
Nominal Bit Time
SYNC_SEG PROG_SEG PHASE_SEG1 PHASE_SEG2
segment de
synchronisation
1 bit
segment de
propagation
1 à 8 bits
segment de phase
buffer n°1
1 à 8 bits
segment de phase
buffer n°2
1 à 8 bits
58
Time Quantum Tq
Unité de temps construite à partir de lapériode de l’oscillateur interne de chaquenœud
Tq = m * Tosc
Tosc
Tq
Le bus CAN
Ivan FRANCOIS 30
59
Time Quantum Tq
Nominal bit time Tbit = Tq*(SYNC_SEG + PROG_SEG +
PHASE_SEG1 + PHASE_SEG2)
Exemple:
– SYNC_SEG = 1 bit
– PROG_SEG = 1 bit
– PHASE_SEG1 = 3 bits
– PHASE_SEG2 = 3 bits
Si Fosc = 8 Mhz et m=2 alors
Tq = 2*125 ns = 250 ns
Soit Tbit = 8 * 250ns = 2 µs
Donc un nominal bit rate (débit brut du bus CAN) = 500 Kbits/s
⇒Tbit= 8*Tq
60
Débit net / débit brut
Le débit brut– S’étend de 125 kb/s à 1 Mb/s suivant le type de bus
CAN utilisé
– Compte tous les bits qui sont transmis sur le bus
Le débit net– Ne tient compte que des bits transportant des
informations utiles
– Ne compte pas tous les bits tels que le SOF, lesAcknowlegde Delimiter, les bits de Bit-Stuffing...
Le bus CAN
Ivan FRANCOIS 31
61
Exercices
A un instant donné, le bus devient libre et 2 tramesd’identificateurs 31 et 29 (émises respectivement parles stations 1 et 2) sont en concurrence.Représenter les bits émis par les stations 1 et 2 et leniveau résultant sur le bus
Quelle est la durée maximale de transmission d’unetrame CAN (2.0A) sur un réseau à 125kbit/s ?
Sur un bus CAN à 500kbit/s, quel débit utile(données) peut-on espérer ?
62
Application au Pic 18F4685
Le pic 18f4685 possède un contrôleur CANintégré
Les deux formats de trame de données 2.0Aet 2.0B sont compatibles
3 modes de fonctionnement: mode 0, mode1 et mode 2
Le bus CAN
Ivan FRANCOIS 32
63
Réglage du débit
D’après les équations du transparent 56
1/débit =Tbit = Tq*(SYNC_SEG + PROG_SEG + PHASE_SEG1 + PHASE_SEG2)
Or Tbit=1/débit et Tq =m.Tosc soit
).mPHASE_SEG2 PHASE_SEG1 PROG_SEG (SYNC_SEG
FoscDébit
+++
=
64
Réglage des registres
3 registres BRGCON1, BRGCON2 et BRGCON3permettent de régler le débit (datasheet p. 312)
La variable BRP(baud rate prescaler) est directementliée à m:
m=2*(BRP+1) soit
1)).2(BRPPHASE_SEG2 PHASE_SEG1 PROG_SEG (SYNC_SEG
FoscDébit
++++
=
Le bus CAN
Ivan FRANCOIS 33
65
Filtres et masques
Les filtres et masques sont utilisés afin dedéterminer si un message reçu doit êtrechargé dans les buffers
Si le masque est à zéro, le message seraaccepté
Si le filtre est égal à l’identificateur, lemessage sera accepté.
66
Table de vérité des fitres/masques
Masque bit n Filtre bit nIdentificateur
bit nBit n accepté ou rejeté
0 X X Accepté
1 0 0 Accepté
1 0 1 Rejeté
1 1 0 rejeté
1 1 1 Accepté