Vous êtes sur la page 1sur 33

Le bus CAN

LE BUS CAN

Control Area Network

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

 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
3 CAN dans une voiture suivant les modèles

CAN pour l’automobile

 Situation du câblage dans les années 80

Climatisation Sièges
Contrôle électriques
suspensions
moteur

Tableau de bord Airbag

ABS
Vitres
Boite de
électriques
vitesse Phares

Ivan FRANCOIS 2
Le bus CAN

CAN pour l’automobile

 Situation sur les modèles récents


Climatisation Sièges
suspensions Contrôle électriques
moteur
Airbag
Bus CAN Tableau de bord Bus CAN

ABS Boite de
Vitres
vitesse Phares
électriques

Couches OSI
Open System Interconnection

APPLICATION

PRESENTATION
 Le bus CAN ne concerne SESSION
que les couches basses:
TRANSPORT
– Couche physique
RESEAU
– Couche liaison de données
LIAISON

PHYSIQUE

Ivan FRANCOIS 3
Le bus CAN

Couches OSI

COUCHE LIAISON
LLC ( Logic Link Control ) MAC ( Medium Access Control )
Filtrage d'acceptance des messages Encapsulation/Décapsulation des données
Notification de sucharge ( overload ) Codage de trame ( Stuffing/Destuffing )
Recouvrement des erreurs Medium Access Management
Détection d'erreur
Signalisation d'erreur
Acquittement
Sérialisation/Désérialisation

COUCHE PHYSIQUE
PLS ( Physical Signalling ) PMA ( Physical Medium MDI ( Medium Dependent
Codage/Décodage de bit Attachment ) Interface )
Caractéristiques Connecteurs
7 Bit timing
Driver/Receiver
Synchronisation

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.

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 :
– la mise en trame du message.
– l’arbitrage.
– l’acquittement.
– la détection des erreurs.
– la signalisation des erreurs.
9

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 :
– 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.
10

Ivan FRANCOIS 5
Le bus CAN

Implémentations CAN typique

Nœud A Capteur Nœud N Capteur


DAC, I2C, SPI,… DAC, I2C, SPI,…

Microcontrôleur Microcontrôleur
avec contrôleur avec contrôleur
CAN intégré CAN intégré
CANTX CANRX CANTX CANRX

TXD RXD TXD RXD

Interface de ligne: Interface de ligne:


CAN transceiver CAN transceiver
CANL CANL
CANH CANH
120Ω BUS CAN CAN L (CAN LOW)

11 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) Paire
filaire

 La transmission en paire différentielle permet


12
de s'affranchir des problèmes de parasites

Ivan FRANCOIS 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

Bus CAN
0 1 1 0 0 1 0 1 0 0 0
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 Arbitration R Espace


SO AC END OF
inter T IDE DLC DATA BYTE CRC inter
F ID K FRAME
trame R trame

1 11 bits ou 1 2 4 2
0-8 octets 16 bits 7 bits
bit 29 bits bit bits bits bits

Champ Champ de
Fin de trame
d’arbitrage données
Champ
Champ de
Début de d’acquittement
commandes
trame
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

 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
33  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

 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
35 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

 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 Client-
38 Serveur

Ivan FRANCOIS 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)


– 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
43

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:
– « error active »
– « error passive »
44 – « bus off »

Ivan FRANCOIS 22
Le bus CAN

Compteur d’erreurs

 2 compteurs d’erreurs permettent de


connaitre l’état d’un nœud:

– 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 128
OCCURRENCES
REC<127 OU DE 11 BITS
RECESSIFS
TEC<127

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
6 bits 0…6 bits 8 bits 3 bits
incomplète

Flag d’erreur Délimiteur d’erreurs 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 6 bits 0…6 bits 8 bits
3 bits
incomplète 000000 000000 11111111

Flag d’erreur Délimiteur d’erreurs intertrame

Superposition des flags


d’erreurs

Passive error flag: 6 bits récessifs successifs


Trame de données 6 bits 0…6 bits 8 bits
3 bits
incomplète 111111 111111 11111111

Flag d’erreur Délimiteur d’erreurs intertrame

52 Superposition des flags


d’erreurs

Ivan FRANCOIS 26
Le bus CAN

Trame de surcharge

 Indique qu’une station est surchargée pour


un certain laps de temps
6 bits 0…6 bits 8 bits
Trame de données 3 bits
dominants dominants récessifs

Flag de Délimiteur de
intertrame
surcharge surcharge

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 = 1
Nominal_Bit_Rate
(débit)
Exemple:
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 segment de segment de phase segment de phase


synchronisation propagation buffer n°1 buffer n°2
1 bit 1 à 8 bits 1 à 8 bits 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

Tq
58

Ivan FRANCOIS 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 Tq =m.Tosc soit

Fosc
Débit =
(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

Fosc
Débit =
(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é


Masque bit n Filtre bit n
bit n ou rejeté
0 X X Accepté

1 0 0 Accepté

1 0 1 Rejeté

1 1 0 rejeté

1 1 1 Accepté
66

Ivan FRANCOIS 33