CAN
CONTROLLER AREA NETWORK
(CAN)
CAN
Applications du bus CAN
CAN
CAN
Introduction
CAN est un véritable réseau qui respecte le modèle OSI
CAN est classé dans la catégorie des réseaux de terrain
CAN supporte des systèmes temps réel avec un haut niveau
de fiabilité
1
CAN
Historique 3
1983: Premier projet CANBUS chez Bosch
1987: Premier contrôleur CAN puces vendues
1991: publication de la spécification CAN 2.0A
1992: Mercedes-Benz utilise un réseau CAN
1993: la norme ISO 11898
Présents: La majorité des véhicules utilisent le bus CAN.
Topologie du bus CAN CAN
Câblage traditionnel
Simple CAN
&
Léger
2 câbles pour l’alimentation électrique 12 V DC
1 paire torsadée pour les transferts d’informations
CAN
Propriétés 2
CAN : Controller Area Network
CAN est un protocole de communication Asynchrone série
Half duplex
Fonctionnement multimaître
Détection et signalisation des erreurs : distinction des
erreurs temporaire et des erreurs permanentes au
niveau d’un nœud
Déconnexion automatique des nœuds défectueux
CAN
Propriétés
Les points forts du système CAN sont les suivants :
– Le système d’allocation du bus,
– La détection des erreurs,
– La fiabilité des échanges de données. Utilisation temps
réel possible car un temps maximal entre l’émission et la
réception des trames pour un processus quelconque peut
être défini
– Transmission des données séries, basée sur le CAN,
– Jusqu’à 1 Mbit/s,
– Efficacité d’environ 57 %,
– Jusqu’à 127 noeuds (équipements),
– Possibilité de plusieurs maîtres,
– Inter-opérabilités de différents équipements provenant
de différents fabricants
CAN
SPECIFICATION du bus CAN 4
Suivant la norme de BOSCH, CAN couvre deux couches de l’OSI:
la couche liaison de données (couche 2),
la couche physique (couche 1).
CAN
SPECIFICATION du bus CAN 6
Sensor Actuator
Signals Signals
Node 1 Node 2 Node
N
Micro
Controller
CAN
Controller
RX TX
CAN
Transceiver
CAN CAN
H L
CAN
Couche physique : Niveau du Bus 7
Niveau du bus
Recessif (1 logic)
Dominant (0 logic)
le bus peut avoir l’une des deux valeurs logiques complémentaires
définies, non pas en 0 et 1 comme d’habitude, mais sous les formes
dites de dominante et récessive.
Transmission différentielle : Haute protection contre les
perturbations électromagnétiques
CAN
Couche physique :Niveau du Bus
Physiquement le bus est une paire torsadée de deux fils électriques : CAN L (low) et
CAN H (High)
Les états logiques (0 ou 1) sont codés par différence de potentiel entre les deux fils :
immunité importante au bruit
Codage binaitre CAN
NRZ : bits dominants et récessifs
•La succession de bits transitant sur le bus est codé avec la méthode du
NRZ (Non Return To Zero).
•Pendant la durée totale du bit, le niveau de tension de la ligne est maintenu,
c’est à dire que pendant toute la durée durant laquelle un bit est généré, sa
valeur reste constante qu’elle soit dominante ou récessive.
0 1 1 0 1 0 0
dominant récessif récessif dominant récessif dominant dominant
CAN
Sécurité de transmission& Bit Stuffing 30
Cette méthode consiste, dès que l’on a émis 5 bits de même polarité
sur le bus, à insérer un bit de polarité contraire pour casser des
chaînes trop importantes de bits identiques.
Trame à l'émission avant la mise en place des bits de stuffing
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
Trame avec bits de stuffing (S)
1 2 3 4 5 6 7 S 8 9 10 11 12 13 14 15 16 17 18 19 S 20 21 22 23 24
CAN
Arbitrage
dû au fonctionnement multimaître. 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. Lorsqu’un bit
récessif est envoyé et qu’un bit dominant est observé sur
le bus, l’unité considérée perd l’arbitrage, doit se taire et
ne plus envoyeraucun bit.
L'arbitrage est qualifié de CSMA/CA
(Carrier Sense Multiple Access - Collision Avoidance)
24
Accès au média et arbitrage CAN
Abandon
Nœud 2 Abandon
Nœud 1
CAN
Principe d’échange des données 8
Node 1 Node 2 Node 3 Node 4
CAN core CAN core CAN core CAN core
Frame Filter Frame Filter Frame Filter Frame Filter
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).
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 .
Chaque noeud : emmetteur et recepteur
CAN
Routage des messages
Routage des informations : des nœuds peuvent être ajoutés au
réseau sans qu’il n’y ait rien à modifier tant au niveau logiciel que
matériel.
Chaque message possède un identificateur (identifier) qui n’indique
pas la destination du message mais la signification des données du
message. Ainsi tous les nœuds reçoivent le message, et chacun est
capable de savoir grâce au système de filtrage de message si ce
dernier lui est destiné ou non.
Chaque nœud peut également détecter des erreurs sur un message
qui ne lui est pas destiné et en informer les autres nœuds.
9
CAN
Messages
Message : chaque information est véhiculée sur le bus à l’aide d’un
message (trame de bits) de format défini. Dès que le bus est libre
(bus idle), n’importe quel nœud relié au réseau peut émettre un
nouveau message.
Acquittement : tous les récepteurs vérifient la validité d’un message
reçu, et dans le cas d’un message correct ils doivent acquitter en
émettant un flag.
10
CAN
Trames du bus CAN 11
Le transfert des messages se manifeste et est commandé à l’aide de quatre
types de trames spécifiques et d’un intervalle de temps les séparant:
Trame de données (data frame) : 2 standards
Standard 11-bit identifier
Etendue 29-bit identifier
est une trame qui transporte, comme son nom l’indique, des données (8 octets).
Trame de requête : est émise par un nœud désirant recevoir une trame de
données.
Trames d’erreurs : émises par n’importe quel nœud dès la détection d’une
erreur.
Trames de surcharge :ces trames correspondent à une demande d’un laps
de temps entre les trames de données et de requête précédentes et
successives
CAN
Trame de données : STANDARD vs ETENDU 12
CAN 2.0A standard 11-bit identifier
S 11-bit R I r DL 0..8 Data AC
O T D CRC EOF
0 C bytes K
F Identifier R E
S High 11- S I R
Low 18-bit r r DL 0..8 Data
O bit R D T CRC ACK EOF
R E Identifier 1 0 C bytes
F Identifier R
CAN 2.0B standard 29-bit identifier
CAN
Trame de données standard (1/7) 13
Start-Of-Frame bit (SOF)
S 11-bit R I r
DL 0..8 Data AC
O T D CRC EOF
0 C bytes K
F Identifier R E
Marque le début de la trame de données
Seulement autorisé lorsque le bus est libre
Synchronise tous les nœuds CAN
CAN
Trame de données standard (2/7) 14
Champ d’arbitrage: 12 bits
S 11-bit R I r DL 0..8 Data AC
O T D CRC EOF
0 C bytes K
F Identifier R E
Composé de Identifier field + RTR bit
RTR (Remote Transmission Request) bit
“0” Trame de données
“1” Trame de requete
11-bit Identifier 2048 identificateurs
Identificateur transmis à partir de ID-10 (MSB) to ID-0
(LSB)
CAN
Trame de données standard (3/7) 15
Champ de controle: 6 bits
S 11-bit R I r DL 0..8 Data AC
O T D CRC EOF
0 C bytes K
F Identifier R E
IDE (IDentifer Extended) bit
“0” Trame Standard
“1” Trame Etendue
r0 bit reservé
4-bits DLC (Data Length Code) = le nombre d’octets
de données contenus dans le champ de données (0
to 8)
15
CAN
Trame de données standard (4/7) 16
Data Field : from 0 to 64 bits
S 11-bit R I r
DL 0..8 Data AC
O T D CRC EOF
0 C bytes K
F Identifier R E
Minimum = 0 byte
Maximum = 8 bytes
Données transmises à partir de MSB jusqu’à LSB
16
CAN
Trame de données standard (5/7) 17
Champ CRC : 16 bits
S 11-bit R I r
DL 0..8 Data AC
O T D CRC EOF
0 C bytes K
F Identifier R E
15-bit CRC (Cyclic Redundancy Check) 15-bit D
E
1-bit CRC delimiteur (recessive) CRC L
Principe:
Le récepteur calcule le CRC et le compare à celui obtenu à
partir de l'émetteur. Si elles diffèrent, une erreur CRC est
signalée
CAN
Trame de données standard (6/7) 18
Champ Acknowledge : 2 bits
S 11-bit R I r
DL 0..8 Data AC
O T D CRC EOF
0 C bytes K
F Identifier R E
Acknowledge slot bit
D
État récessif envoyé par l'émetteur DEL ACK
E
Transmit ter
slot
Les récepteurs le remplacent par l'état L
dominant
Acknowledgement delimiter bit Liste
ACK
Liste Receivers
n n
(recessive )
D
ACK b
CAN bus
DEL E
slot
L 18
CAN
Trame de données standard (7/7) 19
End-Of-Frame Flag : 7 bits
S 11-bit R I r
DL 0..8 Data AC
O T D CRC EOF
0 C bytes K
F Identifier R E
Sequence de 7 bits recessif
Bit stuffing mechanism disactivé
CAN
Trame de données étendue 20
Arbitration and Control Fields
S High 11- S I R
Low 18-bit r r DL 0..8 Data AC
O bit R D T CRC EOF
R E Identifier 1 0 C bytes K
F Identifier R
IDE bit recessif
SRR (Substitute Remote Request) recessif
29-bit Identifier
+Identifier transmitted from ID-28 (MSB) to ID-0 (LSB)
CAN
Trame de requete 21
RTR dominant(0 logic)
Utilisé pour identificateur standard ou etendu
S 11-bit R I r
DL 0..8 Data AC
O T D CRC EOF
0 C bytes K
F Identifier R E
S 11-bit R I r
DL 15-bit AC
O T D EOF
0 C CRC K
F Identifier R E
CAN
Espace entre les trames 22
Espace entre les trames
CRC AC EOF Bus idle
K
3 bits
Sequence de 3 bits recessifs
les trames de données et de request sont tojours séparées par
“Interframe Space”
Transmission de données est interdite pendant cette période
Les trames Erreur et Surcharge ne sont pas précédées par une période d’intertrame
CAN
Trame d’erreur 23
Trame d’erreur
Interframe
space
Error Flag Error Delimiter
R
Data frame 6 bits 8 bits Bus Idle or Data frame
D
Error detection
Cadre d'erreur passive
Pas de bit dominant transmis : un flag d'erreur de
6 bits récessifs
La gestion des erreurs
Différents erreurs peuvent être générées dans le bus CAN. On distingue :
Erreur bit (Bit error) : Un nœud envoyant un bit sur le bus regarde aussi en même temps les
bits qu'il reçoit (Bit monitoring). Il considère comme une erreur de bit lorsque le bit envoyé
est différent du bit reçu.
Erreur de stuffing (Stuff error) : Le nœud détecte une erreur de stuffing lorsqu'il reçoit 6 bits
consécutifs de même valeur dans une partie d'un message qui devrait être codée avec la
méthode du bit stuffing.
Erreur de CRC (CRC error) : Une erreur de CRC est détectée lorsque le CRC calculé par un
récepteur est différent de la valeur du CRC contenu dans la trame.
Erreur de forme (Form error) : Une "Form error" est détectée lorsqu'un bit qui devrait être à
une certaine valeur est à une valeur différente (un délimiteur par exemple).
Erreur d’acquittement (ACK error) : Le transmetteur détecte une erreur d'acquittement
lorsqu'il ne reçoit pas de bit dominant pendant le ACK Slot.