Vous êtes sur la page 1sur 31

Le bus CAN

LE BUS CAN

Le bus CAN

TABLE DES MATIERES

1. Introduction ........................................................................................................................ 3
2. Le protocole CAN ............................................................................................................... 3
3. Protocole CAN et couches OSI .......................................................................................... 3
4. Quelques rgles de fonctionnement et dfinitions............................................................. 5
5. Trame de donnes ............................................................................................................... 8
5.1.

Champ darbitrage ................................................................................................................. 9

5.2.

Champ de contrle................................................................................................................ 10

5.3.

Champ de donnes ................................................................................................................ 11

5.4.

Champ de CRC ..................................................................................................................... 11

5.5.

Champ dacquittement......................................................................................................... 12

5.6.

Champ de fin de trame ......................................................................................................... 13

6. Trame de requte .............................................................................................................. 13


7. Traitement des erreurs...................................................................................................... 14
7.1.

Les diffrents types derreurs .............................................................................................. 14

7.2.

Les trames derreurs ............................................................................................................ 16

7.3.

Recouvrement des erreurs ................................................................................................... 17

8. Fin de trames CAN ........................................................................................................... 20


8.1.

Trame de surcharge.............................................................................................................. 20

8.2.

Priode dintertrame ............................................................................................................ 20

8.3.

Autres modes ......................................................................................................................... 21

9. Codage de ligne................................................................................................................. 22
10.

Le Nominal Bit Time..................................................................................................... 22

10.1.

Description des diffrents segments................................................................................. 23

10.2.

Dure des diffrents segments et notion de Time Quantum........................................... 24

11.

Synchronisation des horloges ....................................................................................... 25

11.1.

Notion de RJW ................................................................................................................... 26

11.2.

Notion derreur de phase.................................................................................................. 26

11.3.

Les rgles de synchronisation........................................................................................... 27

12.

Caractristiques physiques du bus CAN....................................................................... 29

12.1.

Support de transmission ................................................................................................... 29

12.2.

Dbit sur le rseau et temps de latence............................................................................ 31

13.

Bibliographie ................................................................................................................. 32

14.

Webographie.................................................................................................................. 32
2 / 32

Le bus CAN

1.

INTRODUCTION

Ce document a pour but de prsenter les caractristiques essentiels du bus/rseau de terrain


CAN (Control Area Network). Bien plus qu'un bus au sens lectrique, le bus CAN est un
rseau part entire respectant le modle d'interconnexion des systmes ouverts OSI de l'ISO.
C'est un rseau de terrain aussi car il doit fonctionner dans un environnement limit et svre
comme une usine, un atelier, une voiture
Le bus/rseau CAN, standard de fait, est promu un essor rapide.

2.

LE PROTOCOLE CAN

Le protocole CAN (Control Area Network) est un protocole de communication srie qui
supporte des systmes temps rel avec un haut niveau de fiabilit. Ses domaines dapplication
stendent des rseaux moyens dbits aux rseaux de multiplexages faibles cots. Il est avant
tout classer dans la catgorie des rseaux de terrain utilis dans l'industrie pour remplacer
la boucle analogique 20mA.
La structure du protocole du bus CAN possde implicitement les principales proprits
suivantes :
- hirarchisation des messages.
- garantie des temps de latence.
- souplesse de configuration.
- rception de multiples sources avec synchronisation temporelle.
- fonctionnement multimatre.
- dtections et signalisations derreurs.
- retransmission automatique des messages altrs ds que le bus est de nouveau au
repos.
- distinction derreurs : dordre temporaire ou de non-fonctionnalit permanente au
niveau dun nud.
- dconnexion automatique des nuds dfectueux.
En tudiant la norme BOSCH on se rend compte que le protocole CAN ne couvre seulement
que deux des sept couches du modle d'interconnexion des systmes ouverts OSI de l'ISO.

3.

PROTOCOLE CAN ET COUCHES OSI

On retrouve ainsi dans le protocole CAN, la couche liaison de donnes (couche 2) et la


couche physique (couche 1) (figure 1). La couche de liaison de donnes est subdivise en
deux sous-couches (LLC Logic Link Control), et MAC (Medium Access Control), tandis que
la couche physique est divise en trois sous-couches (PLS Physical Signalling), PMA
(Physical Medium Access), MDI (Medium Dependent Interface).
3 / 32

Le bus CAN

La sous-couche MAC reprsente le noyau du protocole CAN. Elle a pour fonction de


prsenter les messages reus en provenance de la sous-couche LLC et daccepter les messages
devant tre transmis vers la sous-couche LLC. Elle est responsable de :
- la mise en trame du message.
- larbitrage.
- lacquittement.

Couche de communication de donnes


LLC ( Logic Link Control )
Filtrage d'acceptance des messages
Notification de sucharge ( overload )
Recouvrement des erreurs
------------------------------------------------------------------------MAC ( Medium Access Control )
Encapsulation/Dcapsulation des donnes
Codage de trame ( Stuffing/Destuffing )
Medium Access Management
Dtection d'erreur
Signalisation d'erreur
Acquittement
Srialisation/Dsrialisation

Superviseur CAN
--------------------------------------Dfauts
de
confinement
---------------------------------------

Couche Physique
PLS ( Physical Signalling )
Codage/Dcodage de bit
Bit timing
Synchronisation
------------------------------------------------------------------------PMA ( Physical Medium Attachment )
Caractristiques Driver/Receiver
------------------------------------------------------------------------MDI ( Medium Dependent Interface )
Connecteurs

Gestion
des dysfonctionnements
du bus

Figure 1 : Le protocole CAN et le modle OSI


-

la dtection des erreurs.


la signalisation des erreurs.

Elle est supervise par une entit de supervision qui est un mcanisme apte faire la
distinction entre les drangements de courtes dures et des pannes permanentes.

4 / 32

Le bus CAN

La sous-couche LLC soccupe quant elle :


- du filtrage des messages.
- de la notification de surcharge (Overload).
- de la procdure de recouvrement des erreurs.

La couche physique dfinit comment le signal est transmis et a par consquent pour rle
dassurer le transfert physique des bits entre les diffrents nuds en accord avec toutes les
proprits (lectriques, lectroniques) du systme. Il est vident qu lintrieur dun mme
et unique rseau la couche physique doit tre la mme pour chaque nud. Cette couche
soccupe donc :
- de grer la reprsentation du bit (codage, timing).
- de grer la synchronisation bit.
- de dfinir les niveaux lectriques des signaux.
- de dfinir le support de transmission.

4.

QUELQUES
DEFINITIONS

REGLES DE

FONCTIONNEMENT ET

Comme dans la plupart des protocoles, il est ncessaire dutiliser un vocabulaire adapt la
situation. Nous allons donc dfinir un certain nombre de termes et de rgles de
fonctionnement concernant le protocole CAN.
-

Nud : sous-ensemble reli un rseau de communication et capable de


communiquer sur le rseau selon un protocole de communication (ici le protocole
CAN).
Valeurs du bus : le bus peut avoir lune des deux valeurs logiques
complmentaires dfinies, non pas en 0 et 1 comme dhabitude, mais sous les
formes dites de dominante et rcessive. Dans le cas dune transmission simultane
de bits rcessifs et dominants, la valeur rsultante du bus sera dominante
(quivalence avec un OU cbl).
Message : chaque information est vhicule sur le bus laide dun message
(trame de bits) de format dfini mais de longueur variable (et limite). Ds que le
bus est libre (bus idle), nimporte quel nud reli au rseau peut mettre un
nouveau message.
Routage des informations : des nuds peuvent tre ajouts au rseau sans quil ny
ait rien modifier tant au niveau logiciel que matriel. Chaque message possde
un identificateur (identifier) qui nindique pas la destination du message mais la
signification des donnes du message. Ainsi tous les nuds reoivent le message,
et chacun est capable de savoir grce au systme de filtrage de message si ce
dernier lui est destin ou non. Chaque nud peut galement dtecter des erreurs
sur un message qui ne lui est pas destin et en informer les autres nuds.
Trame de donnes, trame de requte : une trame de donnes (data frame) est une
trame qui transporte, comme son nom lindique, des donnes. Une trame de

5 / 32

Le bus CAN

requte est mise par un nud dsirant recevoir une trame de donnes
(lidentificateur est le mme pour les deux trames dans ce cas).
Dbit bit : le dbit bit peut varier entre diffrents systmes, mais il doit tre fixe et
uniforme au sein dun mme systme.
Priorits : les identificateurs de chaque message permettent de dfinir quel
message est prioritaire sur tel autre.
Demande dune trame de donnes : un nud peut demander un autre nud
denvoyer une trame de donnes, et pour cela il envoie lui-mme une trame de
requte. La trame de donnes correspondant la trame de requte initiale possde
le mme identificateur.
Fonctionnement multimatre : lorsque le bus est libre, chaque nud peut dcider
denvoyer un message. Seul le message de plus haute priorit prend possession du
bus.
Arbitrage : le problme de larbitrage rsulte du fonctionnement multimatre. Si
deux nuds ou plus tentent dmettre un message sur un bus libre il faut rgler les
conflits daccs. On effectue alors un arbitrage bit bit (non destructif) tout au
long du contenu de lidentificateur. Ce mcanisme garantit quil ny aura ni perte
de temps, ni perte dinformations. Dans le cas de deux identificateurs identiques,
la trame de donnes gagne le bus. Lorsquun bit rcessif est envoy et quun bit
dominant est observ sur le bus, lunit considre perd larbitrage, doit se taire et
ne plus envoyer aucun bit. L'arbitrage est qualifi de CSMA/CA (Carrier Sense
Multiple Access - Collision Avoidance).
Scurit de transmission : dans le but dobtenir la plus grande scurit lors de
transferts sur le bus, des dispositifs de signalisation, de dtection derreurs, et
dautotests ont t implments sur chaque nud dun rseau CAN. On dispose
ainsi dun monitoring bus (vrification du bit mis sur le bus), dun CRC (Cyclic
Redundancy Check), dune procdure de contrle de larchitecture du message,
dune mthode de Bit-Stuffing. On dtecte alors toutes les erreurs globales, toutes
les erreurs locales au niveau des metteurs, jusqu 5 erreurs alatoires rparties
dans un message. La probabilit totale rsiduelle de messages entachs derreurs
est infrieure 4.7*10-11.
Signalement des erreurs et temps de recouvrement des erreurs : tous les messages
entachs derreur(s) sont signals au niveau de chaque nud par un flag. Les
messages errons ne sont pas pris en compte, et doivent tre retransmis
automatiquement.
Erreurs de confinement : un nud CAN doit tre capable de faire les distinctions
entre des perturbations de courtes dures et des dysfonctionnements permanents.
Les nuds considrs comme dfectueux doivent passer en mode switched off en
se dconnectant (lectriquement) du rseau.
Points de connexion : la liaison de communication srie CAN est un bus sur lequel
un nombre important dunits peuvent tre raccordes. En pratique le nombre total
dunits sera dtermin par les temps de retard (dus aux phnomnes de
propagation) et/ou les valeurs des charges lectriques que ces units prsentent sur
le bus.
Canal de liaison simple : le bus consiste en un simple canal bidirectionnel qui
transporte les bits. A partir des donnes transportes, il est possible de rcuprer
des informations de resynchronisation. La faon dont le canal est implment (fil
standard, liaison optique, paire diffrentielle) nest pas dtermine dans la
norme officielle BOSCH.

6 / 32

Le bus CAN

Acquittement : tous les rcepteurs vrifient la validit dun message reu, et dans le
cas dun message correct ils doivent acquitter en mettant un flag.
Mode Sleep (sommeil), Mode Wake-up' (rveil) : afin de rduire la
consommation dnergie, chaque lment CAN peut se mettre en Sleep mode.
Dans ce mode il ny a aucune activit interne au nud CAN considr et ses
drivers sont dconnects du bus. La reprise de fonctionnement (mode Wake-up)
seffectue lorsquil y a une activit sur le bus ou par dcision interne llment
CAN. On observe une attente due une resynchronisation de loscillateur local
qui teste la prsence de 11 bits conscutifs sur le bus (lactivit interne au nud
CAN a cependant repris). Par suite les drivers se reconnectent au bus. Afin
dobtenir les meilleures performances en dbit sur un rseau de type CAN, il est
ncessaire dutiliser des oscillateurs quartz.

Par ailleurs il existe deux types de format (trame standard, trame tendue) pour les trames de
donnes et de requte, et ils diffrent seulement lun de lautre par lidentificateur
(identificateur de 11 bits pour les trames standards, de 29 bits pour les trames tendues).
Le transfert des messages se manifeste et est command laide de quatre types de trames
spcifiques et dun intervalle de temps les sparant. Outre les trames de donnes et de
requte, on a donc galement des trames derreurs (mises par nimporte quel nud ds la
dtection dune erreur), et des trames de surcharge (ces trames correspondent une demande
dun laps de temps entre les trames de donnes et de requte prcdentes et successives). Il
existe un espace intertrame de 3 bits rcessifs entre les trames de donnes et de requte.
En ce qui concerne le flot de bits des trames du bus CAN, la mthode de codage NRZ (Non
Return to Zero) a t retenue. Ceci revient dire que pendant la dure totale du bit gnr son
niveau reste constant quil soit dominant ou rcessif.
De plus afin de scuriser la transmission des messages on utilise la mthode dite de BitStuffing (bit de transparence). Cette mthode consiste, ds que lon a mis 5 bits de mme
polarit sur le bus, insrer un bit de polarit contraire pour casser des chanes trop
importantes de bits identiques. On obtient ainsi dans le message un plus grand nombre de
transitions ce qui permet de faciliter la synchronisation en rception par les nuds. Cette
technique est uniquement active sur les champs de SOF, darbitrage, de contrle, de CRC
(dlimiteur exclu). Pour un fonctionnement correct de tout le rseau, cette technique doit tre
implmente aussi bien la rception qu lmission.

7 / 32

Le bus CAN
Trame
Stuffer

Trame
Stuffe

Trame
Stuffer

Trame
Stuffe

Figure 2 : Technique de Bit-Stuffing

5.

TRAME DE DONNEES

Une trame de donnes se dcompose en 7 champs diffrents (figure 3) :


- le dbut de trame SOF (Start Of Frame), 1 bit dominant.
- le champ darbitrage, 12 bits.
- le champ de contrle, 6 bits.
- le champ de donnes, 0 64 bits.
- le champ de CRC (Cyclic Redundancy Code), 16 bits.
- le champ dacquittement (Acknoledge), 2 bits.
- le champ de fin de trame EOF (End Of Frame), 7 bits rcessifs.

8 / 32

Le bus CAN
Espace
Intertrame

Espace
Intertrame

Trame de Donnes

ou
Trame de
Surcharge

Dbut
de
trame
Champ
d'arbitrage
Champ de
commande

Champ de
donnes

Champ de
CRC
Champ
d'acknowlegde
Fin de
Trame

Figure 3 : Format de la trame CAN

Le dbut de trame nest effectif que si le bus tait prcdemment au repos. Tous les nuds du
rseau doivent se resynchroniser sur le bit de SOF.

5.1.

Champ darbitrage

Dans une trame standard, le champ darbitrage est compos des 11 bits de lidentificateur
(figure 4) et dun bit de RTR (Remote Transmission Request) qui est dominant pour une trame
de donnes et rcessif pour une trame de requte. On ne dtaillera pas ici le champ
darbitrage pour une trame. Ceux qui dsire voir plus de dtails sur ce point peuvent faire
appel la norme BOSCH. Pour lidentificateur les bits sont transmis dans lordre, de ID_10
ID_0 (le moins significatif est ID_0). Par ailleurs les 7 bits les plus significatifs (de ID_10
ID_4) ne doivent pas tous tre rcessifs. Pour des raisons de compatibilit avec des anciens
circuits, les 4 derniers bits de lidentificateur (ID_3 ID_0) ne sont pas utiliss, ce qui rduit
le nombre de combinaisons possibles.

9 / 32

Le bus CAN

Format Standard

Champ
d'arbitrage

Champ de
commande

Identificateur ( 11 bits )

SOF
( 1 bit )

RTR
( 1 bit )

Figure 4 : Champ arbitrage

5.2.

Champ de contrle

Le champ de contrle est compos de 6 bits (figure 5). Les deux premiers (r1 dans une trame
standard, et r0) sont des bits de rserve et leur rle est dassurer des compatibilits futures
ascendantes (par exemple avec les trames tendues). Les quatre derniers bits permettent de
dterminer le nombre doctets de donnes contenus dans le champ de donnes pour une trame
de donnes ou bien le nombre doctets de donnes dont a besoin un nud du rseau lors dune
trame de requte. Le nombre doctets de donnes ne peut pas excder la valeur de 8.
Taille
des DLC (Data Length Code)
donnes en octets DLC3
DLC2
0
D
D
1
D
D
2
D
D
3
D
D
4
D
R
5
D
R
6
D
R
7
D
R
8
R
D
D : bit Dominant, R : bit Rcessif

DLC1
D
D
R
R
D
D
R
R
D

DLC0
D
R
D
R
D
R
D
R
D

Tableau 1 : Codage des bits DLC suivant la taille des donnes en octets

10 / 32

Le bus CAN

Champ de
commande

Champ
d'arbitrage
IDE/r1

r0

DLC3

Bits
rservs
( 2 bits )

DLC2

DLC1 DLC0

Longueur du champ
de donnes
DLC
( Data Length Code )
( 4 bits )

Champ de
donnes
ou
Champ de
CRC

Figure 5 : Champ contrle

5.3.

Champ de donnes

Le champ de donnes a une longueur qui peut varier de 0 64 bits (0 8 octets). Cette
longueur a t dtermine lors de lanalyse du champ de contrle. Dans le cas dune trame de
requte, le champ de donnes est vide.

5.4.

Champ de CRC

Le champ de CRC est compos de 16 bits (figure 6). La squence CRC calcule est contenue
dans les 15 premiers bits tandis que le dernier bit est un dlimiteur de fin de champ de CRC
(bit toujours rcessif).
Ce champ de CRC permet de sassurer de la validit du message transmis, et tous les
rcepteurs doivent sastreindre ce procd de vrification. Seuls les champs de SOF,
darbitrage, de contrle et de donnes sont utiliss pour le calcul de la squence de CRC. Les
codes utiliss par les contrleurs de bus CAN sont des codes linaires de. De fait la longueur
maximale du dbut de trame ne doit pas excder 215 bits pour une squence de CRC de 15
bits. Le nombre maximal derreurs dtectes dans la trame est de 5.
La squence de CRC est calcule par la procdure suivante :
- le flot de bits (hors Bit-Stuffing ), constitu des bits depuis le dbut de la trame
jusqu la fin du champ de donnes (pour une trame de donnes) ou bien la fin du
champ de contrle (pour une trame de requte) est interprte comme un polynme
f(x) avec des coefficients 0 et 1 affects la prsence, effective ou non, de chaque
bit. Le polynme obtenu est alors multipli par x15 complt pour l'ajout du mot de
CRC.
- le polynme ainsi form est divis (modulo 2) par le polynme gnrateur
La chane de bits correspondante ce
g(x)=x15+x14+x10+x8+x7+x4+x3+1.
polynme est : 1100010110011001.
- Le reste de la division du polynme f(x) par le polynme gnrateur g(x) constitue
la squence CRC de 15 bits.

11 / 32

Le bus CAN

Champ de
donnes
ou
Champ de
commande

Champ de
CRC
Champ
d'acknolegde
Squence CRC ( 15 bits )

Dlimiteur
CRC
( 1 bit )

Figure 6 : Champ CRC

La ralisation du module de calcul de CRC est particulirement aise laide de registres


dcalages. La norme BOSCH propose le programme informatique correspondant
lalgorithme prcdemment dcrit :
CRC_REG=0 ;
REPEAT
CRC_NXT_BIT=(NXT_BIT) XOR (CRC_REG(14)) ;
CRC_REG(14:1)=CRC_REG(13:0) ;
CRC_REG(0)=0 ;
IF CRC_NXT_BIT THEN
CRC_REG(14:0)=CRC_REG(14:0) XOR (4599hex) ;
ENDIF
UNTIL(CRC SEQUENCE starts or there is an ERROR condition)

5.5.

Champ dacquittement

Le champ dacquittement possde 2 bits (figure 7). La station mettrice de la trame laisse le
bus libre pendant 2 coups dhorloge (ce qui correspond lmission de deux bits rcessifs) et
elle passe en mode rception pendant le premier coup dhorloge.
Le premier bit correspond lacquittement par lensemble des nuds ayant reu le message.
Si aucune erreur na t dtecte par un nud (aprs calcul du CRC), ce dernier met un bit
dominant sinon il met une trame derreur. La station mettrice du message originel doit
alors tre capable de ragir en fonction de lmission dun bit dominant ou non par les autres
stations sur le premier bit du champ dacquittement.
Le second bit est un bit dlimiteur dacquittement qui doit toujours tre rcessif.

12 / 32

Le bus CAN

Champ
d'acknolegde
Champ de
CRC

Fin de
trame

Acknolegde
( 1 bit )

Dlimiteur
d'acknolegde
( 1 bit )

Figure 7 : Champ acquittement

5.6.

Champ de fin de trame

Ce champ de fin de trame est constitu de 7 bits rcessifs, ce qui droge la rgle de BitStuffing. Ce champ tant fixe, il est ncessaire de dsactiver le codage ( lmission) et le
dcodage ( la rception) suivant la rgle du Bit-Stuffing.

6.

TRAME DE REQUETE

Une trame de requte est constitue de la mme manire quune trame de donnes sauf que le
champ de donnes est vide (figure 8).
Dans le champ darbitrage, le bit de RTR est rcessif. Par consquent si deux nuds mettent
chacun une trame possdant le mme identificateur (cest dire quun nud met une trame
de donnes et lautre une trame de requte), larbitrage sur le bit de RTR va donner la priorit
la trame de donnes.
Si un nud a besoin dun certain nombre de donnes, il va mettre une trame de requte ds
que le bus sera libre en prenant soin dindiquer dans le champ de contrle le nombre doctets
de donnes dont il a besoin.
Les rgles de construction des autres divers champs dune trame de requte sont les mmes
que dans le cas dune trame de donnes.

13 / 32

Le bus CAN
Espace
Intertrame

Espace
Intertrame

Trame de requte

ou
Trame de
Surcharge

Dbut
de
trame
Champ
d'arbitrage
Champ de
commande

Champ de
CRC
Champ
d'acknowlegde
Fin de
Trame

Figure 8 : Trame de requte

7.

TRAITEMENT DES ERREURS

Lors de lmission dune trame sur le bus, des erreurs de transmission peuvent venir perturber
le bon fonctionnement des diffrents utilisateurs du bus. Lerreur peut venir dun nud, et
empcher le rseau de fonctionner correctement. Pour cela, des mthodes de dtection
derreurs de transmissions sont prvues par le protocole CAN.

7.1.

Les diffrents types derreurs

Le Bit Error :

Chaque fois quun metteur envoie un bit sur le bus, il vrifie en mme temps si le niveau
mis sur le bus correspond celui quil dsire envoyer en faisant une surveillance du bus. Si
le niveau ne correspond pas, il le signale par un Bit Error.
Cependant, le Bit Error nest pas signal dans les cas suivants :
- Aucune erreur de Bit Error nest signale lorsquun bit dominant est envoy dans le champ
darbitrage la place dun bit rcessif. Le bit dominant signifie simplement une perte
darbitrage.
- De mme, pour un bit dominant lors de lacknowledge slot, la place dun bit rcessif.
- Un metteur envoyant un flag derreur passive (bit rcessif) et recevant un bit dominant, ne
doit pas signaler un Bit Error.

14 / 32

Le bus CAN

Lerreur de Stuffing (Stuff Error) :


Une erreur de Stuffing est dtecte chaque fois quil y a 6 bits ou plus conscutifs de mme
signe sur le bus.
Cependant, une erreur de Stuffing ne doit tre signale que dans les champs didentificateurs,
de commande et de CRC. La rgle du Bit-Stuffing ne sappliquant plus aprs la fin du CRC.
En aucun cas, une erreur de Bit-Stuffing ne doit tre signale dans le champ de fin de trame ou
dans le champ dacquittement.
Lerreur de Cyclic Redundancy Code (CRC Error) :
Si la valeur du CRC calcule par le rcepteur est diffrente de celle envoye par lmetteur, il
y a erreur de CRC (CRC Error).
Lerreur dAcknowledge Delimiter :
Une erreur dAcknowledge Delimiter est signale lorsque le rcepteur nobserve pas un bit
rcessif lors du champ de Acknowledge Delimiter. Il en est de mme pour le CRC Delimiter.
Lerreur de Slot Acknowledge (Acknowledgment Error) :
Une erreur de Slot Acknowledge est signale par lmetteur sil ne lit pas un bit dominant lors
du champ de slot acknowledge.
La figure 9 rsume les diffrents types derreurs et leur validit suivant lendroit o lon se
trouve dans la trame.

Bit
Error

Acknowledgment
Bit Error
Error
Acknowledge
CRC Delimiter
Delimiter Error
Error

Bit Error

Stuff Error

CRC Error

Identificateur

commande donnes

cyclic redundancy
1 1
code

SOF

Fin de
trame

Ack
slot Ack
crc
delimiter
delimiter

Bit RTR

Figure 9 : Les sources d'erreur dans la trame CAN

15 / 32

Espace
intertrame

Le bus CAN

7.2.

Les trames derreurs


La trame derreur :

La trame derreur est constitue de deux champs principaux :


- le drapeau derreur,
- le dlimiteur de champ.
La figure 10 montre de quelle manire est construite la trame derreur.
Intertrame

Trame en cours d'mission


Drapeaux d'erreur

Dlimiteur de champ

Figure 10 : Construction de la trame d'erreur

Le champ des drapeaux peut tre constitu de deux sortes de drapeaux :


- les drapeaux derreur active (Active Error Flag),
- les drapeaux derreur passive (Passive Error Flag).
Les trames diffrent suivant le type de drapeaux quelles contiennent. Les figures 11 et 12
reprsentent les deux types de trame avec leurs drapeaux respectifs.

Trame d'erreur active


Trame de donne
en cours de
transmission

Flag Error Active

Error Delimiter

6 bits dominants

8 bits rcessifs

Figure 11 : Trame d'erreur active

16 / 32

Le bus CAN

Trame d'erreur passive


Trame de donne
en cours de
transmission

Flag Error Active

Error Delimiter

6 bits rcessifs

8 bits rcessifs

Figure 12 : Trame d'erreur passive


La trame derreur active :
Elle est forme de six bits dominant conscutifs pour le champ de drapeau suivi de huit bits
rcessifs pour le dlimiteur. Par construction, la trame derreur brise la rgle du Bit-Stuffing.
Les autres rcepteurs vont donc se mettre mettre des trames derreurs actives (sils sont en
mode derreur active) la fin du drapeau de la premire station qui a mis la trame derreur.
Toutes les stations vont donc mettre tour de rle la trame derreur. La dernire station aura
en charge dmettre le champ dError Delimiter, les autres champs ayant t remplacs par
les bits dominants des drapeaux mis.
Remarque :
La norme limite le nombre de bits dominant conscutifs 12 bits.
La trame derreur passive :
La trame est forme de six bits rcessifs pour le drapeau et de huit bits rcessifs pour le
dlimiteur. Le champ du drapeau brise de nouveau la rgle du Bit-Stuffing et les metteurs
envoient tour de rle le Passive Error Flag (sils sont en mode derreur passive). Mais une
trame dActive Error Flag reste prioritaire sur une trame de Passive Error Flag si elles sont
envoyes en mme temps. En effet, Les bits dominants de lActive Error Flag remplacent les
bits rcessifs du Passive Error Flag. La fin de la trame quant elle ne change pas puisquelle
est forme dans les deux cas de huit bits rcessifs.

7.3.

Recouvrement des erreurs

Le recouvrement des erreurs est assur par la retransmission automatique de la trame


incrimine jusqu' ce que lmission de cette trame seffectue sans erreur. La validit du
message est acquise sil ny a aucune erreur depuis le SOF (Start Of Frame) jusqu' la fin de
trame.
Si lmetteur narrive pas mettre sa trame correctement, il essaye de nouveau de lmettre
jusqu' ce que son compteur derreur passe en mode derreur passive.

17 / 32

Le bus CAN

La gestion des modes derreur :


Suivant le nombre derreur quun nud comptabilise, ltat du mode de ce nud peut diffrer.
Un compteur mmorise le nombre derreur rencontr lors de la transmission des trames sur le
bus. Deux compteurs spars rgissent respectivement le nombre derreurs en mission et en
rception. Il se nomme :
- Transmit Error Counter pour lmission,
- Receive Error Counter pour la rception.
Lorsque le nombre derreur devient trop important et que le gestionnaire est dj en erreur
passive, le nud se met en Bus Off et se dconnecte du bus. Il ne reoit ni met ce moment
l aucune trame circulant sur le bus CAN.
Le passage dans les diffrents modes seffectue suivant la valeur des compteurs comme le
montre la figure 13.
Reset

REC > 127


et TEC > 127

Error
Active
128 occurences
de 11 bits rcessifs

REC < 128


et TEC < 128

Error
Passive

TEC: Transmit Error Counter

Bus
Off

TEC > 255

REC: Receive Error Counter

Figure 13 : Compteur d'erreur et tat d'un noeud

Les rgles de passages dans les modes :


Lincrmentation et la dcrmentation des compteurs ne se fait pas avec le mme rapport. En
effet, le compteur sincrmente plus vite lorsqu'il y a une erreur quil ne se dcrmente
lorsque la trame reue est correcte.
Les rgles dincrmentation et de dcrmentation des compteurs sont les suivantes :
Le compteur de rception est incrment de 1 si :
- un rcepteur dtecte une erreur, le compteur derreur de rception sera incrment
de 1, sauf si lerreur est un Bit Error durant un flag derreur active ou un flag de
surcharge.

18 / 32

Le bus CAN

Le compteur de rception est incrment de 8 si :


un rcepteur reoit un bit dominant juste aprs un flag derreur.
un rcepteur voit un Bit Error tandis quil reoit un flag derreur active ou un flag
de surcharge.
Le compteur de transmission est incrment de 8 si :
un metteur envoie un flag derreur, son compteur dmission sincrmente de 8
sauf si lmetteur est en erreur passive et voit un Acknowledgment Error (il ne
dtecte aucun bit dominant sur le champ dacknowledge ou lors de lenvoie de la
trame derreur passive) et galement si lmetteur envoie un flag derreur lors
dune erreur de Bit-Stuffing durant la priode darbitrage (dtection dun bit
dominant au lieu dun bit rcessif situ aprs le RTR).
un metteur voit un Bit Error tandis quil met un flag derreur active ou un flag
de surcharge.
Les compteurs dmission et de rception sincrmentent de 8 si :
chaque nud recevant sept bits dominants conscutifs aprs rception dun Active
Error Flag, dun Passive Error Flag ou dun Overload Flag. Aprs dtection de
quatorzime bit dominant conscutif (pour lActive Error Flag ou lOverload
Flag) ou du huitime bit dominant conscutif suivant le Passive Error Flag, et
aprs toutes les suites de huit bits dominants conscutifs.

Le compteur de rception est dcrment de 1 si :


le rcepteur reoit une trame sans erreur (jusquau champ dAcknowledge Slot) et
si la valeur du compteur est comprise entre 1 et 127. Si le compteur est 0, sa
valeur ne change pas (pas dincrmentation). S'il est suprieur 127, sa valeur est
ramene entre 119 et 127.
Le compteur dmission est dcrment de 1 si :
la transmission dune trame se droule sans erreur (jusquau champ
dAcknowledge Slot). Si la valeur du compteur est 0, le compteur ne sincrmente
pas.

Les modes derreurs :

Mode derreur active :

Le gestionnaire de protocole est en mode derreur active si le compteur de rception et le


compteur dmission ont une valeur infrieure 127. Dans ce mode, le nud met des trames
derreurs actives (Active Error Flag).

Mode derreur passive :

19 / 32

Le bus CAN

Le gestionnaire de protocole est en mode derreur passive si le compteur de rception ou le


compteur dmission est suprieur ou gal 128 et infrieur 255. Dans ce mode, le nud
met des trames derreurs passives (Passive Error Flag).

Mode Bus Off :

Le gestionnaire de protocole est en mode Bus Off si la valeur d'un des deux compteurs est >
255. Le nud est alors totalement dconnect du bus (les drivers de lignes ne sont plus actifs).
Il sort de cet tat de Bus Off avoir reu 127 trames de onze bits rcessifs.

8.

FIN DE TRAMES CAN


8.1.

Trame de surcharge

La trame de surcharge indique aux autres nuds quune station est surcharge. Elle est forme
de deux champs :
- le drapeau de surcharge (Overload Frame) avec six bits dominants,
- le dlimiteur de surcharge (Overload Delimiter) avec huit bits rcessifs.
La figure 14 reprsente la trame.
Trame de surcharge
Trame de donne en cours

Overload Delimiter

Overload Flag

Figure 14 : Trame de surcharge

Une trame de surcharge est mise sur le bus si :


- un bit dominant est dtect durant la priode dintertrame.
- un rcepteur nest pas prt pour la rception dune nouvelle trame de donne ou de
requte (retard sur le traitement des informations circulant sur le bus).
Ds quune trame de surcharge est mise, les autres nuds voient sur le bus une suite de six
bits dominants qui ne respectent pas la rgle du Bit-Stuffing. Ils mettent leur tour une trame
de surcharge. Seulement deux trames de surcharges conscutives sont autorises sur le bus
(pas plus de 12 bits dominants conscutifs mis sur le bus).

8.2.

Priode dintertrame

20 / 32

Le bus CAN

Elle spare les trames de donnes ou de requtes entre elles. Il sagit dune suite de plusieurs
bits rcessifs.

Le champ dintermission :

Le champ dintermission est une suite de 3 bits rcessifs conscutifs. Durant la priode
dintermission, lmission de trame nest pas autorise. Les gestionnaires de protocole ne sont
autoriss 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. Le niveau de repos est le niveau
rcessif et aucune trame ne circule sur le bus.

Le champ de suspension de transmission :

Le champ de suspension de transmission est mis par un nud lorsque celui-ci envoie une
trame derreur passive.
La figure 15 reprsente les diffrents champs.
Les champs de fin de trame
Intertrame
Trame de donne
ou de requte
Intermission

Suspension de transmission

Bus Idle

Nouvelle trame de donne


ou de requte

Figure 15 : Priode d'intertrame

8.3.

Autres modes

Pour la gestion de lnergie sur le bus, les drivers de ligne peuvent tre dsactivs lorsqu'il ny
a plus de trames sur le bus.
Pour activer ces drivers sur le bus, la station devra observer 11 bits rcessifs la suite. La
procdure ainsi dcrite est la procdure de rveil appele Wake-up. Un identificateur a t
rserv cette fonction pour viter de perdre un trop grand nombre de trames lors de la
reconnexion sur le bus.
Lors des dmarrages dune station sur le bus, le Start-up se charge de connecter les drivers de
lignes et dobserver la squence voulue pour commencer mettre ou recevoir des trames
du bus.

21 / 32

Le bus CAN

9.

CODAGE DE LIGNE

Dans le protocole CAN le code de ligne (en bande de base) choisi pour la transmission des
donnes sur le bus est le code NRZ (Non Return to Zero). La figure 16 donne un exemple de
codage.

Figure 16 : Codage NRZ du bus CAN

Remarque :
La rgle du Bit-Stuffing ne modifie en aucun cas le procd de codage de ligne.
Comme le montre la figure 16, les transitions des bits seffectuent sur chaque front montant
de lhorloge. Dans le protocole CAN, une priode dhorloge correspond ce que lon appelle
le Nominal Bit Time.

10. LE NOMINAL BIT TIME


Le Nominal Bit Time reprsente en fait la dure du bit sur le bus. Cette dure est, comme nous
lavons vu, troitement lie la priode de lhorloge. Chaque station relie sur le bus doit tre
cadence avec le mme Nominal Bit Time pour pouvoir mettre et recevoir correctement les
donnes circulant sur le bus.
Ainsi, la dure du bit time de chaque circuit est construite partir dun nombre dtermin de
priodes dhorloge issue de lhorloge interne de chaque circuit CAN.
La norme BOSCH dcrit avec prcision la composition de ce Nominal Bit Time qui est divis
en plusieurs segments :

le segment de synchronisation (SYNC_SEG),


le segment de propagation (PROP_SEG),
le segment de phase buffer n1 (PHASE_SEG1),
le segment de phase buffer n2 (PHASE_SEG2).

La figure 17 donne un aperu de ces divers composants et de leur agencement.

22 / 32

Le bus CAN

Nominal Bit Time


SYNC_SEG

PROP_SEG

PHASE_SEG1

PHASE_SEG2

Sample point

Figure 17 : Dcomposition du nominal Bit Time


En fait, le Nominal Bit Time, exprim en s, correspond videmment linverse du dbit sur le
bus. Nous avons donc la formule suivante:
No min al _ Bit _ Time =

10.1.

1
.
No min al _ Bit _ Rate

Description des diffrents segments

le segment de synchronisation : le segment de synchronisation est utilis pour


synchroniser les diffrents nuds du bus. Comme nous le verrons par la suite, une
transition (de 0 1 ou de 1 0) doit seffectuer dans ce segment pour permettre
une resynchronisation des horloges des diffrents nuds en mode de rception de
trames.

Le segment de propagation : le segment de propagation est utilis pour


compenser les phnomnes de temps de propagation sur le bus. Par dfinition :

Dure_ PROP_ SEG = 2*(t _ propag_bus + t _retard_comparateurs + t _retard_drivers_lignes)

Les segments buffer phase1 et buffer phase2 : les segments buffer phase1
et buffer phase2 sont surtout utiliss pour compenser les erreurs de phase
dtectes lors des transitions. Nous verrons aussi que ces segments peuvent tre
plus courts ou plus longs cause des phnomnes de resynchronisation.

Le point dchantillonnage ou sample point : le point dchantillonnage ou


sample point est le point o la valeur du bit est lue sur le bus. Il est situ la fin du
segment de buffer phase1 et constitue la seule valeur mmorise pour le niveau
du bit. On saffranchit des phnomnes de propagation et doscillation des donnes
sur le bus dans les segments prcdents.

23 / 32

Le bus CAN

10.2.

Dure des diffrents segments et notion de Time Quantum

Le Time Quantum : Le Time Quantum est une unit de temps qui est construite partir de la
priode de loscillateur interne de chaque nud. Les frquences de fonctionnement du bus
CAN stendant de 125 KHz 1 MHz et celle des oscillateurs tant de plusieurs MHz, le
Time Quantum reprsente plusieurs priodes dune horloge doscillateur. La priode
dhorloge de loscillateur est appele minimum Time Quantum. La valeur du prscalaire m
dtermine le rapport entre le Time Quantum et le Minimum Time Quantum :

TIME _ QUANTUM = m * MINIMUM _ TIME _ QUANTUM .

La valeur de m peut varier de 1 32. La figure 18 reprsente la construction dun Time


Quantum partir dune priode dhorloge interne au circuit.

Priode de
l'oscillateur

Time Quantum

Figure 18 : Construction du Time Quantum

Dans lexemple ci-dessus, le facteur m est gal 4.


La dure des diffrents segments :
Segment
Synchronisation - SYNC_SEG
Propagation - PROP_SEG
Buffer phase1 - PHASE_SEG1
Buffer phase1 - PHASE_SEG2

Dure en Time Quanta


1
18
18
18

Le nombre de Time Quanta dans un Nominal Bit Time peut ainsi varier de 8 25. La figure 19
donne le nombre de Time Quanta possible par segment de Nominal Bit Time.

24 / 32

Le bus CAN
1 Time
Quantum

18

18

SYNC
SEG

PROP_SEG

PHASE_SEG1

18

PHASE_SEG2

Sample point

Figure 19 : Dure des diffrents segments

Le choix du nombre de Time Quanta pour chaque segment dpend de la frquence de


loscillateur. Un nombre important de Time Quanta par segment augmente la prcision de la
synchronisation des diffrents nuds sur le bus.

11. SYNCHRONISATION DES HORLOGES


Chaque nud doit produire un nominal Bit Time pour pouvoir recevoir et mettre les donnes
circulant sur le bus en synchronisme avec les autres circuits. En effet, si les Nominal Bit Time
de chaque nud ne sont pas du tout synchroniss, la valeur lue sur le bus au moment de
lchantillonnage peut ne pas tre la valeur correcte au bon moment, comme le reprsente la
figure 20. Ces retards peuvent tre gnants, dans la phase dacquittement de la trame o il y a
peu de temps pour finir de calculer le CRC et envoyer un bit ltat dominant lors de
lAcknowledge Slot pour confirmer que la trame a bien t reue.

25 / 32

Le bus CAN

Nominal Bit Time


circuit 1

Bits emis

Nominal Bit Time


circuit 2

Sample point

Sample point

Bits reus

Figure 20 : Problme de la synchronisation

La norme BOSCH prvoit donc des rgles de synchronisation du Nominal Bit Time de chaque
circuit pour palier aux inconvnients exposs ci-dessus.

11.1.

Notion de RJW

Pour corriger les drives du Nominal Bit Time, il faut placer des butes que la drive de la
priode ne pourra pas dpasser. La bute en question sappelle le RJW : Resynchronisation
Jump Width. Le RJW est une variable entire programme une valeur comprise entre 1 et le
minimum de (4, segment de phase1).
1 < Rjw < min( 4, PHASE _ SEG1) .

La valeur est mise dans le registre du circuit lors de linitialisation et ne change pas en cours
de fonctionnement.

11.2.

Notion derreur de phase

Lerreur de phase (PHASE_ERROR) est dtecte lorsqu'une transition dun bit dominant
rcessif ou dun bit rcessif dominant ne seffectue pas lintrieur du segment de
synchronisation. Une variable note e sert quantifier cette erreur de phase et fournit le signe.
Le calcul de e est fait de la manire suivante :
e = 0, si la transition seffectue dans le segment de synchronisation
(SYNC_SEG).
e > 0, si la transition seffectue avant le point dchantillonnage (Sample
Point).
e < 0, si la transition seffectue aprs le point dchantillonnage (Sample
Point).
26 / 32

Le bus CAN

La rgle simple voque ci-dessus sert de base pour resynchroniser les diffrents Nominal Bit
Time de chaque circuit connect au bus. La rgle sappuie sur les transitions des bits rcessifs
dominant ou dominant rcessif qui arrivent au moins tous les 5 bits de mme signe
conscutifs, cause de la rgle du Bit-Stuffing.
Lerreur de phase e est donc calcule par rapport au Sample Point qui dtermine si le
PHASE_SEG1 doit tre allong ou si le PHASE _SEG2 doit tre raccourci pour que la
prochaine transition seffectue dans le SYNC_SEG. La figure 21 donne un exemple et les
consquences des emplacements des transitions sur la longueur des segments du Nominal Bit
Time.
Transition d'un bit sur la ligne

Nominal
Bit Time

SYNC
SEG

SYNC
SEG

PROP_SEG

PROP_SEG

PHASE_SEG1

PHASE_SEG2

e > 0, on allonge PHASE_SEG1


SYNC
SEG

PROP_SEG

PHASE_SEG1

PHASE_SEG1

Sample point
PHASE_SEG2
e < 0, on raccourcit PHASE_SEG2

Sample point

Figure 21 : Erreur de phase

11.3.

Les rgles de synchronisation

La hard-synchronisation :
Leffet dune hard-synchronisation est de faire repartir le Nominal Bit Time depuis le segment
de synchronisation (SYNC_SEG) chaque fois quun ordre de hard-synchronisation est
donn par le gestionnaire du protocole. Le Nominal Bit Time en cours est abandonn et un
nouveau Nominal Bit Time repart ds le Time Quantum suivant, depuis le segment de
synchronisation (SYNC_SEG).
La resynchronisation :
Le calcul et lordre de resynchronisation sont donns partir de la valeur de lerreur de phase
e, et dpendent aussi de la valeur du RJW :
Si lerreur de phase est nulle (e = 0, la transition est dans le SYNC_SEG),
leffet de la resynchronisation est le mme que celui de la hard-synchronisation.

27 / 32

Le bus CAN

Si lerreur de phase est positive et infrieure en valeur absolue RJW


(0<e<RJW), le PHASE_SEG1 sera rallong de e.
Si lerreur de phase est ngative, mais infrieure RJW en valeur absolue
(e<0 et e<RJW) le PHASE_SEG2 est raccourci de e.
Si lerreur de phase est positive et suprieure ou gale RJW (e>0 et
e>RJW), le PHASE_SEG1 est rallong de RJW.
Enfin, si lerreur de phase est ngative et suprieure RJW (en valeur
absolue -e<0 et e>RJW) le PHASE_SEG2 est raccourci de RJW.
Le tableau suivant rsume les rgles voques ci-dessus.
Erreur de phase
0<e<RJW
E<0 et e<RJW
e>0 et e>RJW
E<0 et e>RJW

Effet sur PHASE_SEG1


Allong de e

Effet sur PHASE_SEG2


Raccourci de e

Allong de RJW
Raccourci de RJW
Tableau 2 : Rgles de resynchronisation

Les rgles de synchronisation :


Un seul type de synchronisation est autoris pour un mme Nominal Bit Time.
Hard-synchronisation :
Une hard-synchronisation est faite chaque fois quune transition
seffectue dans le segment de synchronisation SYNC_SEG.
Une hard-synchronisation est effectue lorsque le bus est au repos (bus
idle) et quune transition dun bit rcessif un bit dominant est dtecte, autrement dit
lors dun SOF (Start Of Frame).
Resynchronisation :
Une resynchronisation est effectue si une transition est dtecte au point
dchantillonnage prcdent et que la valeur lue sur le bus immdiatement aprs la
transition est diffrente de celle lue sur le bus avant la transition.
Les transitions des bits rcessifs dominants peuvent tre utilises pour
la resynchronisation si elles respectent la rgle prcdente, sauf si un nud met un bit
dominant qui ne suit pas la rgle de resynchronisation avec une transition de rcessif
dominant et une erreur de phase positive. La rgle ne sapplique que si les transitions
des bits de rcessif dominant sont utilises pour la resynchronisation.

28 / 32

Le bus CAN

12. CARACTERISTIQUES PHYSIQUES DU BUS CAN


12.1.

Support de transmission

La transmission des donnes est effectue sur une paire filaire diffrentielle. La ligne est donc
constitue de deux fils :
- CAN L (CAN LOW),
- CAN H (CAN HIGH).
CAN L
Paire filaire

CAN H

Figure 22 : Paire filaire du bus CAN

Le CAN est un bus de terrain, soumis des parasites importants. La transmission en paire
diffrentielle permet de s'affranchir de ces problmes. Les montages diffrentiels ont en plus
un fort taux de rjection en mode commun CMRR.
Pour les niveaux physiques sur le bus, il est important de distinguer les deux types de
transmission possibles :
- transmission en bus CAN low speed,
- transmission en bus CAN high speed.
Le tableau ci-dessous rsume les principales diffrences entre les deux types de bus
notamment sur les dbits supports.
Paramtres
Dbit
Nombre de nuds sur le bus
Courant de sortie (mode
mission)
Niveau dominant
Niveau rcessif
Caractristique du cble
Tensions dalimentation

CAN low speed


125 kb/s
2 20
> 1 mA sur 2,2 k

CAN high speed


125 kb/s 1 Mb/s
2 30
25 50 mA sur 60

CAN H = 4V
CAN L = 1V
CAN H = 1,75V
CAN L = 3,25V
30 pF entre les cbles de ligne
5V

CAN H = 3,5 V
CAN L = 1,5 V
CAN H = 2,5 V
CAN L = 2,5 V
2*120
5V

Tableau 3 : Les 2 types de bus CAN

29 / 32

Le bus CAN

CAN low speed

5
CAN H

4
CAN L

CAN L

3,25
2,5
1,75

CAN H

CAN H
CAN L

1
0
Bit rcessif

Bit dominant

Bit rcessif

Figure 23 : Niveaux de tension du bus CAN low speed

tension
sur la
paire filaire
(en V)

CAN high speed

CAN H
3,5
2,5
1,5

CAN L
0
Bit rcessif

Bit dominant

Bit rcessif

Figure 24 : Niveaux de tension du bus CAN high speed

30 / 32

Le bus CAN

Le schma dun circuit CAN reli au bus est prsent figure 25.

CAN H

CAN L

Interface
Drivers
de
ligne

Circuit CAN
Gestionnaire de
protocole

sortie
0 ou 1
logique

Bits
dominants
ou
rcessifs

Figure 25 : Schma de principe d'un circuit CAN

12.2.

Dbit sur le rseau et temps de latence

Le dbit du rseau est calcul par rapport au Nominal Bit Time. Il stend de 125 kb/s 1
Mb/s suivant le type de bus utilis. Les valeurs ci-dessus correspondent au dbit dit brut du
rseau, cest dire en comptant tous les bits qui sont transmis sur le bus.
Le dbit dit net ne tient compte que des bits transportant des informations utiles. Le dbit net
est en fait le dbit utile du bus en ne comptant pas tous les bits tels que le SOF, les
Acknowlegde Delimiter, les bits de Bit-Stuffing...
Le temps de latence est un intervalle de temps qui reprsente la dure coule entre le
moment o une demande de requte est formule et linstant o la rponse est prsente sur le
bus. Le temps de latence dpend du nombre de nuds matres dsirant effectuer un transfert
de donnes.

31 / 32

Vous aimerez peut-être aussi