LE BUS CAN Introduction

Download Report

Transcript LE BUS CAN Introduction

Le bus CAN
LE BUS CAN
Control Area Network
1
Introduction
Bus/réseau de terrain
Respecte les spécifications ISO/OSI
Fonctionne dans des environnements limités et
sévères
Haut niveau de fiabilité
2
Ivan FRANCOIS
1
Le bus CAN
CAN pour l’automobile
3
CAN est conçu par BOSCH en 1983 devant
la montée de l’électronique embarquée dans
les voitures et du nombre de câbles
La première voiture multiplexée à utiliser le
bus CAN comme support de transmission a
été réalisée en 1991 (avec un débit de 500
kbit/s)
Actuellement, il peut y avoir plusieurs bus
CAN dans une voiture suivant les modèles
CAN pour l’automobile
Situation du câblage dans les années 80
suspensions
Contrôle
moteur
Climatisation
Tableau de bord
Airbag
ABS
Boite de
vitesse
Sièges
électriques
Phares
Vitres
électriques
4
Ivan FRANCOIS
2
Le bus CAN
CAN pour l’automobile
Situation sur les modèles récents
suspensions
Climatisation
Contrôle
moteur
Sièges
électriques
Airbag
Bus CAN
ABS
Tableau de bord
Boite de
vitesse
Bus CAN
Phares
Vitres
électriques
5
Couches OSI
Open System Interconnection
APPLICATION
PRESENTATION
Le bus CAN ne concerne
que les couches basses:
–
–
Couche physique
Couche liaison de données
SESSION
TRANSPORT
RESEAU
LIAISON
PHYSIQUE
6
Ivan FRANCOIS
3
Le bus CAN
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
7
PLS ( Physical Signalling )
Codage/Décodage de bit
Bit timing
Synchronisation
PMA ( Physical Medium
Attachment )
Caractéristiques
Driver/Receiver
MDI ( Medium Dependent
Interface )
Connecteurs
Couche liaison
Sous 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.
8
Ivan FRANCOIS
4
Le bus CAN
Couche liaison
Sous couche MAC
C’est le noyau du protocole CAN. Elle a pour
fonction de présenter les messages reçus en
provenance de la sous-couche LLC et
d’accepter les messages devant être
transmis vers la sous-couche LLC. Elle est
responsable de :
–
–
–
–
–
9
la mise en trame du message.
l’arbitrage.
l’acquittement.
la détection des erreurs.
la signalisation des erreurs.
Couche physique
Elle définit comment le signal est transmis. Son
rôle est d’assurer le transfert physique des bits
entre les différents nœuds en accord avec
toutes
les
propriétés
(électriques,
électroniques…) du système
A l’intérieur d’un unique réseau la couche
physique doit être la même pour chaque noeud.
Cette couche s’occupe donc :
–
–
–
10
Ivan FRANCOIS
–
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.
5
Le bus CAN
Implémentations CAN typique
Nœud A
Capteur
Nœud N
Capteur
DAC, I2C, SPI,…
DAC, I2C, SPI,…
Microcontrôleur
avec contrôleur
CAN intégré
Microcontrôleur
avec contrôleur
CAN intégré
CANTX
CANRX
CANTX
CANRX
TXD
RXD
TXD
RXD
Interface de ligne:
CAN transceiver
CANL
11
120Ω
CANH
Interface de ligne:
CAN transceiver
CANL
BUS CAN
CANH
CAN L (CAN LOW)
CAN H (CAN HIGH)
120Ω
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 :
CAN L (CAN LOW)
CAN H (CAN HIGH)
12
Ivan FRANCOIS
Paire
filaire
La transmission en paire différentielle permet
de s'affranchir des problèmes de parasites
6
Le bus CAN
Caractéristiques physiques du bus
CAN
Pour les niveaux physiques sur le bus, il est
important de distinguer les deux types de
transmission possibles :
–
transmission en bus CAN low speed ≤125kb/s
–
transmission en bus CAN high speed >125kb/s
13
Caractéristiques physiques du bus
CAN
Niveau de tension du bus CAN Low Speed
14
Ivan FRANCOIS
7
Le bus CAN
Caractéristiques physiques du bus
CAN
Niveau de tension du bus CAN High Speed
15
L’interface de ligne
C’est
l’interface
finale
entre
le
microcontrôleur et les fils
Ce circuit réalise la transposition de niveaux
asymétriques (0 à 5V) en niveaux
différentiels sur une ligne d’impédance
caractéristique de 120 Ω
16
Ivan FRANCOIS
8
Le bus CAN
Règles de fonctionnement et
définitions
Nœud: Sous-ensemble relié à un réseau de
communication et capable de communiquer
sur le réseau selon un protocole de
communication (ici le protocole CAN)
Flexibilité: aucune modification logicielle ou
matérielle n’est requise lorsqu’un nœud est
ajouté au réseau
17
Règles de fonctionnement et
définitions
Débit bit (bit rate): le débit bit peut varier
entre différents systèmes, mais il doit être
fixe et uniforme au sein d’un même système
Fonctionnement multimaître : lorsque le
bus est libre, chaque nœud peut décider
d’envoyer un message. Seul le message de
plus haute priorité prend possession du bus.
18
Ivan FRANCOIS
9
Le bus CAN
Arbitrage - Identificateur
Si deux nœuds ou plus tentent d’émettre un
message sur un bus libre il faut régler les
conflits d’accès. On effectue alors un
arbitrage bit à bit (non destructif) tout au long
du contenu de l’identificateur.
Ce mécanisme garantit qu’il n’y aura ni perte
de temps, ni perte d’informations.
19
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
20
Ivan FRANCOIS
10
Le bus CAN
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
0
1
1
0
0
1
0
1
0
0
0
Bus CAN
21
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écessif
est lu, le nœud continue à émettre
Si un bit récessif est émis et un bit dominant
est lu, il y a conflit et perte d’arbitrage. Le
nœud stoppe son émission et passe en
mode réception
22
Ivan FRANCOIS
11
Le bus CAN
Sécurisation de la transmission
Bit 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 sur
les champs de SOF, d’arbitrage, de contrôle,
de données et de CRC (délimiteur exclu)
23
Sécurisation de la transmission
Bit stuffing
6ème ‘1’ consécutif
Trame originale: 010011111110010001
Trame transmise: 0100111110110010001
Bit de transparence inséré dans la trame
6ème ‘0’ consécutif
Trame originale: 010000001110010001
Trame transmise: 0100000101110010001
Bit de transparence inséré dans la trame
24
Ivan FRANCOIS
12
Le bus CAN
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)
25
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
26
Ivan FRANCOIS
13
Le bus CAN
Trame de données
Espace
inter
trame
SO
F
Arbitration
ID
R
T
R
1
11 bits ou
29 bits
1
bit
bit
IDE
DLC
DATA BYTE
CRC
2
bits
4
bits
0-8 octets
16 bits
Champ de
données
Champ
d’arbitrage
Début de
trame
Champ de
commandes
AC
K
2
bits
END OF
FRAME
Espace
inter
trame
7 bits
Fin de trame
Champ
d’acquittement
Champ de
CRC
27
Trame de données
Dé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 est
libre
28
Ivan FRANCOIS
14
Le bus CAN
Trame de données
Champ d’arbitrage
Champ d’arbitrage 12 bits
–
Identificateur 11 bits (CAN 2.0 A) ou 29 bits (CAN
2.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
29
Trame de données
Champ 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)
30
Ivan FRANCOIS
15
Le bus CAN
Trame de données
Champs de données
Champs de données 0 à 64 bits
–
Champ où se trouvent les données utiles
transmises
–
0 octets minimum, 8 octets maximum
–
Chaque octet est transmis avec le bit de poids fort
en tête
31
Trame de données
Champ 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 au
maximum
32
Ivan FRANCOIS
16
Le bus CAN
Trame de données
Calcul du CRC
33
On considère le polynôme f(x), dont les
coefficients sont les bits de début de trame,
des champs d’arbitrage, de contrôle et de
données
Le polynôme obtenu est multiplié par x15
On divise ensuite ce polynôme par le
polynôme générateur:
g(x)=x15+x14+x10+x8+x7+x4+x3+1
Le reste de cette division donne le CRC
Trame de données
Calcul 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
34
Ivan FRANCOIS
17
Le bus CAN
Trame de données
Calcul du CRC
35
On multiplie f(x) par x15 . On obtient:
x32+x30+x23+x22+x20
Ensuite, on divise (modulo 2) ce polynôme
par
x15+x14+x10+x8+x7+x4+x3+1
Un algorithme permet d’effectuer cette
division
Le reste de la division donne le CRC sur 15
bits
Trame de données
Champ 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
36
Ivan FRANCOIS
18
Le bus CAN
Trame de données
Fin 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 de
fin de trame
37
Trame de requête
38
Ivan FRANCOIS
Les règles de construction des divers
champs sont les mêmes que dans le cas
d’une trame de données. Le champ de
données est vide
Si un nœud a besoin d’un certain nombre de
données, il va émettre une trame de requête
en prenant soin d’indiquer dans le champ de
contrôle le nombre d’octets de données dont
il a besoin
Permet une coopération de type ClientServeur
19
Le bus CAN
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
39
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
40
Ivan FRANCOIS
20
Le bus CAN
Trame de requête
Champ de données
–
Toujours vide
Champ de CRC d’acquittement et fin de
trame
–
Identique à la trame de données
41
Gestion des erreurs
Principe: une station qui détecte une erreur,
la signale aux autres par une trame d’erreur
42
Ivan FRANCOIS
21
Le bus CAN
Différents types d’erreurs
Erreur de Bit stuffing (stuff bit error)
–
Erreur de bit (bit error)
–
Acknoledge récessif!
Erreur de forme
–
43
CRC error : CRC calculé ≠ CRC trame
Erreur d’acknoledge (ack error)
–
dominant + récessif = récessif !
Erreur de CRC (CRC error)
–
6 bits consécutifs de même niveau entre le SOF et le CRC
delimiter
Bit dominant fin de trame, inter trame ou CRC delimiter
Confinement d’erreurs
Un mécanisme permet de faire la distinction
entre un défaut temporaire (surtension,
perturbation
aléatoire)
et
une
panne
permanente (mauvaise connexion, nœud
défectueux, perturbation persistante,...)
Une station peut prendre l’un des trois états
suivants:
–
–
44
Ivan FRANCOIS
–
« error active »
« error passive »
« bus off »
22
Le bus CAN
Compteur d’erreurs
2 compteurs d’erreurs
connaitre l’état d’un nœud:
permettent
de
–
sur les trames émises (TEC – transmit error
counter)
–
sur les trames reçues (REC – receive error
counter)
45
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 à ces
règles (ex: quand une station est seule sur le
réseau)
46
Ivan FRANCOIS
23
Le bus CAN
Règle de changement des états
Reset
Error active
REC>=127 OU
TEC>=127
REC<127 OU
TEC<127
128
OCCURRENCES
DE 11 BITS
RECESSIFS
Error passive
TEC>=256
Bus Off
47
Etats des erreurs
0 à 127 état error active
–
Fonctionnement normal mais en cas d’erreur,
transmission d’un active error flag pendant la
trame d’erreur
128 à 255 état error passive
–
Fonctionnement normal mais en cas d’erreur,
transmission d’un passive error flag pendant la
trame d’erreur
48
Ivan FRANCOIS
24
Le bus CAN
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ès
qu’il ait observé, sans erreurs sur le bus, 128
trames de 11 bits récessifs
49
Trame d’erreur
Erreur
Trame de données
incomplète
6 bits
0…6 bits
Flag d’erreur
8 bits
Délimiteur d’erreurs
3 bits
intertrame
Superposition des flags
d’erreurs
Trame d’erreur
50
Ivan FRANCOIS
25
Le bus CAN
Trame d’erreur
Champ flag d’erreur
–
–
Superposition des différents flag d’erreurs
auxquels ont contribué les différents nœuds
pré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
51
Trame d’erreur
Active error flag: 6 bits dominants successifs
Trame de données
incomplète
6 bits
000000
0…6 bits
000000
Flag d’erreur
8 bits
11111111
Délimiteur d’erreurs
3 bits
intertrame
Superposition des flags
d’erreurs
Passive error flag: 6 bits récessifs successifs
Trame de données
incomplète
6 bits
111111
0…6 bits
111111
Flag d’erreur
52
Ivan FRANCOIS
8 bits
11111111
Délimiteur d’erreurs
3 bits
intertrame
Superposition des flags
d’erreurs
26
Le bus CAN
Trame de surcharge
Indique qu’une station est surchargée pour
un certain laps de temps
Trame de données
6 bits
dominants
0…6 bits
dominants
Flag de
surcharge
8 bits
récessifs
3 bits
Délimiteur de
surcharge
intertrame
Superposition des flags
de surcharge
Trame de surcharge
53
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éception
d’une nouvelle trame de donnée ou de requête
(retard sur le traitement des informations circulant
sur le bus)
Pas plus de 2 trames de surcharges
consécutives
54
Ivan FRANCOIS
27
Le bus CAN
Nominal Bit Time
Le Nominal Bit Time représente la durée du
bit sur le bus
Chaque station reliée sur le bus doit être
cadencée avec le même Nominal Bit Time
pour
pouvoir
émettre
et
recevoir
correctement les données
Le Nominal Bit Time, exprimé en secondes,
correspond à l’inverse du débit sur le bus
55
Nominal Bit Time
Nominal_Bit_Time =
Exemple:
1
Nominal_Bit_Rate
(débit)
Bus CAN 125 Kbits/S donne un Nominal bit time
de 8 µS
Bus CAN 1 Mbits/S donne un Nominal bit time
de 1 µS
56
Ivan FRANCOIS
28
Le bus CAN
Nominal Bit Time
Nominal Bit Time est divisé en plusieurs
segments
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
57
Time Quantum Tq
Unité de temps construite à partir de la
période de l’oscillateur interne de chaque
nœud
Tq = m * Tosc
Tosc
58
Ivan FRANCOIS
Tq
29
Le bus CAN
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
⇒Tbit= 8*Tq
– 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
–
–
59
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, les
Acknowlegde Delimiter, les bits de Bit-Stuffing...
60
Ivan FRANCOIS
30
Le bus CAN
Exercices
A un instant donné, le bus devient libre et 2 trames
d’identificateurs 31 et 29 (émises respectivement par
les stations 1 et 2) sont en concurrence.
Représenter les bits émis par les stations 1 et 2 et le
niveau résultant sur le bus
Quelle est la durée maximale de transmission d’une
trame 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 ?
61
Application au Pic 18F4685
Le pic 18f4685 possède un contrôleur CAN
intégré
Les deux formats de trame de données 2.0A
et 2.0B sont compatibles
3 modes de fonctionnement: mode 0, mode
1 et mode 2
62
Ivan FRANCOIS
31
Le bus CAN
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
Débit =
Tq =m.Tosc
soit
Fosc
(SYNC_SEG + PROG_SEG + PHASE_SEG1 + PHASE_SEG2).m
63
Réglage des registres
3 registres BRGCON1, BRGCON2 et BRGCON3
permettent de régler le débit (datasheet p. 312)
La variable BRP(baud rate prescaler) est directement
liée à m:
m=2*(BRP+1) soit
Débit =
Fosc
(SYNC_SEG + PROG_SEG + PHASE_SEG1 + PHASE_SEG2).2(BRP + 1)
64
Ivan FRANCOIS
32
Le bus CAN
Filtres et masques
Les filtres et masques sont utilisés afin de
déterminer si un message reçu doit être
chargé dans les buffers
Si le masque est à zéro, le message sera
accepté
Si le filtre est égal à l’identificateur, le
message sera accepté.
65
Table de vérité des fitres/masques
Identificateur Bit n accepté
bit n
ou rejeté
Masque bit n
Filtre bit n
0
X
X
Accepté
1
0
0
Accepté
1
0
1
Rejeté
1
1
0
rejeté
1
1
1
Accepté
66
Ivan FRANCOIS
33