CAN, communication simple



CAN, Controller Area Network

Jean Marc Masson octobre 2011

1. Références

Paret, Dominique, Réseaux multiplexés pour systèmes embarqués, Dunod, 2005, ISBN10 : 2-10-005267-5 ISBN13 : 978-2-10-005267-7

Le bus CAN sur le site de l'ENSEIRB (Bordeaux) :

CAN specification (Bosch) :

CAN Wiki

Microchip AN228 A CAN Physical layer discussion

2. Les réseaux pour systèmes embarqués

1. Systèmes embarqués

• Autonomes

• Applications particulières

o iPod

o ordinateur de véhicules

o appareils médicaux

o automates programmables

o etc..

• Généralement à temps réel

• Généralement = une seule tâche

• Un ou plusieurs processeurs

• Une ou plusieurs interfaces

2. Réseaux

• CAN = Controller Area Network (automobile)

• LIN = Local Interconnect Network (automobile)

• FlexRay: automobile, aéronautique

• CANopen: automobile, industriel, medical

• CANaerospace

3. Le réseau CAN

• Développé par Bosch GmbH (équipementier automobile)

• Université de Karlsruhe

• Début = 1985

• ISO 11898

4. Accès au bus et arbitrage

Plusieurs sources de message peuvent utiliser le média.

Les stations sont en compétition pour l’accès au média

( un arbitrage est nécessaire

1. Arbitrage CSMA/CD

Carrier Sense Multiple Access/Collision Detection

Principe :

• si deux stations ou plus tentent d’accéder au média en même temps, il y a détection par chacune de la collision.

• Chaque émetteur se retire, puis réémet après un délai variable

• Problème : + de trafic ( + de collision ( + de retraits ( blocage

Ralentissement du réseau

• Exemple

Longueur du réseau : l = 4 m

Vitesse de propagation : Vprop = 2e8 m/s

tprop = l / Vprop = 20 ns

[pic]

[pic]

Si B émet avant tprop, il y a collision

Voir : domaine de collision

2. Arbitrage CSMA/CA

• Carrier Sense Multiple Access/Collision Avoidance

• L’émetteur écoute la ligne

• Si la ligne est occupée, il attend

• Si la ligne est libre, il émet un court message RTS (Request To send)

• Le récepteur répond avec CTS (Clear To Send)

3. Contention au niveau bit

• Un bit « dominant » a la priorité sur un bit « recessif »

• Il est « dominant » parce qu’il a de l’énergie, du courant, de la lumière, du rayonnement électromagnétique

• Exemple : l = 4 m ( tprop = 20 ns. C’est le emps de bit maximum

4. Mode de diffusion des messages

• L’identificateur du message envoyé concerne la fonction du message et non l’adresse du destinataire

• Les destinataires filtrent les messages qui leur sont utiles

5. Traitement et gestion des erreurs

Acquitement positif :

• Si la station reçoit correctement un message, elle place un ACK positif dans le temps prévu pour ça (ACK slot)

• Si plusieurs nœuds reçoivent correctement, les ACK positifs se superposent

• Si un nœud décèle une erreur, elle envoie un message après. (acquitement négatif)

• Si aucun nœud n’émet d’ACK positif, il y a retransmission.

• Si Nombre d’ACK positif ≥1, message envoyé correctement

• 1 message d’erreur identifie le type d’erreur

5. Le CAN

• Marché automobile

o Europe (tous)

o Japon (beaucoup)

o USA (peu)

o 5 à 10 nœuds pour le moteur

o 15 nœuds ou + pour l’habitacle

• Économie de $

• Protocole précis : ISO 11898

• Plusieurs fabricants : T.I. Philips, Motorola, Microchip

• Marché en croissance importante (2008 = 65 M de véicules)

• Détection d’erreurs

• Multi-maître

• Arbitrage au niveau du bit (bit-wise)

6. Le protocole CAN dans un modèle en couches

Modèle en couche : ISO/OSI International Standard Organisation/Open Systems Interconnection

|ISO/OSI | |CAN |

|Application | |Application |

| | | |

|Présentation | | |

| | | |

|Session | | |

| | | |

|Transport | | |

| | | |

|Réseau | | |

| | | |

|Communication de données | |Sous-couche LLC |

| | |Logical Link Control |

| | |Sous-couche MAC |

| | |Medium Access Control |

| | | |

|Physique | |PLS Physical signaling |

| | |PMA Physical Medium Attachement |

| | |MDI Medium Dependant Interface |

1. Sous-couches

1. LLC Logical Link Control

• Filtrage d’acceptation des messages

• Envoi des données aux applications

• Réception des données de l’application

2. MAC medium Access Control

• Encapsulation/décapsulation des données

• Codage de trame (stuffing/destuffing)

• Détection d’erreurs (CRC)

• Signalisation d’erreurs

• Acquittements

• Sérialisation/désérialisation

3. PLS Physical signaling

• Codage décodage(bit)

• Bit timing

• Synchronisation

4. PMA Physical Medium Attachement

• Transceiver

• Matérialisation des bits (0, 1)

5. MDI Medium Dependant Interface

• Connecteurs

2. Propriétés du CAN (+ vocabulaire)

• Nœud = station = élément de base

• Nœud émetteur = celui qui parle

• Nœud récepteur = du message

• Bus ( bits

Un bit peut être récessif ou dominant

Si un bit dominant est transmis en même temps qu’un récessif, le dominant gagne toujours.

Exemples

Électrique

|[pic] |Recessif = + |

| | |

| |Dominant = - |

Optique

Recessif = pas de lumière

Dominant = lumière

RF

Recessif = pas de porteuse

Dominant = porteuse présente

• Débit du bus

En bps

Le même pour tous les nœuds

• Trame

Définie (norme) pour le routage, l’arbitrage et la gestion des erreurs

• Routage

o Chaque nœud à in identificateur (ID)

o Tous les nœuds « voient » le message

o Seuls les nœuds « interessés » prennent le message

o Arbitrage à 11 bits (V 2.0A) ou 29 bits (V 2.0B)

o Possibilité de Multicast

• Arbitrage

o Chaque émetteur écoute la ligne

o Si message reçu = message envoyé, pas de problème

o Si message reçu != message envoyé, un message dominant a gagné ( arrêt immédiat puis retransmission

• Détection d’erreurs

o CRC ( moins d’1 erreur non détectée sur 4,7e11 message

o Messages erronés rejetés par le nœud récepteur + demande de réemission

• Points de connexion

o Limités par la charge des nœuds (R, C)

o Limités par la longueur du réseau

• Transfert des messages

o Data Frame

Trame de données

o Remote Frame

Trame de requête (un nœud demande une trame de données)

o Error Frame

Signale une erreur

o Overload frame

Signale une surcharge (Le nœud demande du temps)

o Interframe Space

Bus Iddle

3. Codage des bits

Codage NRZ

| |0 |1 |0 |0 |

| | | | | |

B28……B0 = les bits d’ID

SRR = Substitut de RTR = récessif

IDE = ID Extended

Dominant si ID 11 bits

Récessif si ID 29 bits ( les bits suivants sont des ID

1. Commande (6 bits)

|R |R |L |L |L |L |

RR = 2 bits réservés

LLLL = longueur des datas à venir, en bytes (0 à 8)

2. Données

0 à 8 octets

Chaque octet = MSB en premier

3. CRC (16 bits)

Bits vérifiés = toute la trame avant le CRC : Start, arbitrage, commande, données

Polynôme générateur = 1100010110011001

15 bits de CRC

1 bit délimiteur récessif

4. Acquittement (2 bits)

1er bit = ACK slot

2ème bit = délimiteur récessif

L’émetteur place 2 bits récessif

Si réception bonne, le récepteur place le 1er bit dominant, sinon récessif

5. End of frame

7 bits récessifs

7. Implémentation du bus CAN (de Microchip AN228)

Utilité

Dominant et récessif non définis dans la norme

Transmission en milieu bruyant (automobile)

1. Méthode choisie

[pic]

[pic]

La résistance de terminaison est placée pour éviter la réflexion

1. Longueur vs bande passante

Selon ISO 11898

Si l = 40 m, débit = 1 Mbit/s

Si on augmente l, on diminue le débit

2. Transceivers (=émetteur/récepteur)

Philips PCA82C251

Microchip MCP2551

Voir CAN Wiki

[pic]

2. Avec Microchip MCP2551 : Montage

Brancher deux PIC 18F258 de cette façon, sur deux plaquettes:

[pic]

Note : si on diminue R2, le Slew Rate (SR) augmente

Si R2 = 0, High speed, mais EMI augmente

Si R2 élevée, EMI diminue, mais le SR élevé, Le MCP chauffe

• Connecter les CANH ensemble et les CANL ensemble

3. Avec Microchip MCP2551 : programmes

Dans le PIC émetteur :

// Jean Marc Masson 22 octobre 2011 CCS C

//-----------------------------------------------------------------

// CAN_1_ecrit.C

// PIC: 18F4580

// envoi de données par CAN

// fonctionne avec CAN_2_lit.c

//-----------------------------------------------------------------

#include "18F4580.H"

#fuses HS,NOWDT,PUT,NOPROTECT,NOLVP

#use delay(clock=20000000)

#use RS232(Baud=19200,Xmit=PIN_C6,Rcv=PIN_C7, bits=8, errors)

#include

void cligne()

{

output_high(PIN_A5);

delay_ms(200);

output_low(PIN_A5);

delay_ms(200);

}

//-------------------- Programme principal -----------------------

void main(void) {

int i, data[2];

can_init();

// atention: l'initialisation valide les ID étendues

delay_ms(1000);

cligne();

data[0] = 'A';

for (;;)

{

can_putd(0x400,data,1,1, TRUE,FALSE); // 0x400 = ID

// data = donnée utile

// 1 = 1 byte de data

// 1 = priorité

// TRUE = ID étendu

// FALSE = pas de RTR(Si on place TRUE, il s,agit de

//REMOTE FRAME (les datas ne sont pas transmis)

data[0]++;

if (data[0] > 'Z') data[0] = 'A';

cligne();

delay_ms(1000);

}

}

Dans le PIC récepteur :

// Jean Marc Masson CCS C

//-----------------------------------------------------------------

// CAN_2.C

// PIC 18F4580

//

// Réception de données sur le réseau CAN

// ID = 0x400

// fonctionne avec CAN_1_ecrit.c

//-----------------------------------------------------------------

#include "18F4580.H"

#fuses HS,NOWDT,PUT,NOPROTECT,NOLVP

#use delay(clock=20000000)

#use RS232(Baud=19200,Xmit=PIN_C6,Rcv=PIN_C7, bits=8, errors)

#include

//----------------cligne()---------------------

void cligne()

{

output_high(PIN_A5);

delay_ms(100);

output_low(PIN_A5);

delay_ms(100);

}

//-------------------- Programme principal -----------------------

void main(void) {

int buffer[8], rx_len, rx_stat;

int data;

int32 rx_id;;

can_init();

// delay_ms(1000);

printf("bonjour\n\r");

cligne();

for(;;)

{

if (can_kbhit())

{

cligne();

if(can_getd(rx_id,buffer, rx_len,rx_stat))

// si réception

// rx_id = ID

// buffer[0] = donnee

// rx_len = nb de bytes

// rx_stat =

{

printf("\n\rrx_id = %lx data = %X rx_len = %i ",rx_id, buffer[0], rx_len);

if(rx_id == 0x400) putchar(buffer[0]); // si bonne ID

}

}

}

}

Quelques mots sur le protocole J1939

J1939 définit les paramètres de la couche physique. (par exemple longueur max du message)

J1939 message Big Picture

• Tout comme la CAN est centrée autour de l'ID, J1939 est centré autour de PGN. PGN est défini par l'identifiant de CAN.

• PGN: Nombre de groupe de paramètres

• Par exemple, PGN 65215 est «L'information de vitesse de roue". Les données proviennent du champ de données.

• La plupart des PGN ont 8 octets de long. Variables multi-octets sont envoyées octet le moins significatif en tête.

• En règle générale 0xFF signifie t "données non disponibles ", 0xFE signifie" erreur ". La plage valide est 0-250. Vérifiez MSB pour les variables multi-octets.

[pic]

P : priorité du message, arrive en premier

EDP : page de donnée étendue, les périphériques J1939 doivent être paramètrés à 0

DP : page de donnée. Utilisée pour créer une seconde page de PGN

PF : format PDU

< 240, Ps est l’adresse de destination ( format PDU 1)

>=240, Ps est le groupe d’extension ( format PDU 2)

PS : PDU spécifique.

SA : adresse source du contrôleur d’application (CA)

J1939 Aperçu

SAE J1939 est un protocole de communication de haut niveau, qui fonctionne sur un réseau Controller Area (CAN) bus. J1939 précise exactement comment l'information (par exemple, les régimes du moteur) sont échangées entre les unités de contrôle électronique (ECU) sur un véhicule.

Il définit la priorité des données, la taille, l'échelle et le décalage. Par exemple, J1939 spécifie le régime du moteur pour avoir une priorité par défaut de trois, pour avoir une taille de 16 bits, une résolution de 0,125 rpm / bit, et un décalage de 0.

La norme définit ensuite de nombreux autres aspects, y compris les délais d'attente de messages, comment les grands messages sont fragmentés et remonté, la vitesse du réseau, la couche physique, et comment les applications acquérir des adresses réseau.

J1939 Messages

Au cœur de la J1939 est le Numéro de Paramètre Groupe (PGN), qui est un numéro unique attribué à chaque message J1939. Le PGN sert à identifier le message et ses données. Bien que parfois un message contienne un seul paramètre (par exemple, VIN), typiquement le PGN contient un groupe de paramètres. Dans la norme il ya un total de 8672 PGN.

Pour un exemple de message, prendre PGN 61444. Il identifie le message "contrôleur électronique du moteur 1". Par la description, "CEE1" a sept paramètres différents noyées dans le champ de données du message. Le régime moteur est l'un de ces sept paramètres.

J1939 message Tailles

J1939 a trois tailles de messages autorisé différents, ils sont: 3 octets, 8 octets, et la longueur variable. Il n'y a qu'un seul message qui est de trois octets, et c'est le message de demande (PGN 59904).

La majorité des messages dans J1939 sont huit octets de longueur. Cela permet une utilisation plus efficace de la largeur de bande de réseau en maximisant la quantité de données sur le réseau en diminuant le nombre de messages.

Messages de longueur variable sont des messages d'une longueur de 9 à 1 785 octets. Ces messages sont trop volumineux pour tenir dans une trame de données CAN unique et doivent être fragmentés par l'émetteur et réassemblés par le récepteur. Ce procédé est défini par le protocole de transport de J1939 qui est spécifiée par J1939-21.

J1939 couches physiques

Actuellement, il ya deux 250 Kbps couches physiques définies, J1939-11 et J1939-15, avec une couche de 500 Kbps, J1939-14, en cours de développement.

J1939-11 spécifie une paire torsadée blindée de fils avec une longueur de colonne vertébrale maximale de 40 mètres. Il utilise un connecteur à trois broches et permet jusqu'à 30 nœuds.

J1939-15 spécifie une paire torsadée non blindée de fils avec une longueur de colonne vertébrale maximale de 40 mètres. Il utilise un connecteur à broches et deux permet jusqu'à 10 noeuds.

Exemple de PGN J1939

Information de la vitesse d’une roue J1939

PGN : 65215 (0xFEBF)

Priorité : 6 (défaut)

Longueur : 8

Taux TX 100 ms

[pic]

Voir le document présentation J1939

Logiciel de protocole SAE J1939

Progiciel de développement d'appareils J1939

Le logiciel de protocole SAE J1939 permet de développer simplement et rapidement des appareils SAE J1939. Tous les mécanismes de communication définis dans la spécification SAE J1939 (hormis la fonctionnalité de passerelle) sont disponibles. Le développeur peut donc se consacrer entièrement à son application.

L'interface utilisateur étant conçue comme une interface fonctionnelle universelle reposant sur des messages, le logiciel de protocole est également la base d'extensions telles que NMEA 2000 ou ISO 11783 (ISOBUS).

Le logiciel de protocole J1939 est développé en C ANSI et est indépendant du contrôleur CAN, du microcontrôleur et du système d'exploitation (dans la mesure où ils existent). Il est adapté au processeur cible via un module logiciel complémentaire et indispensable, le driver CAN. La documentation et les exemples d'applications C fournis permettent de commencer rapidement à utiliser le logiciel de protocole SAE J1939.

Fonctionnalité

• Envoi et réception de messages spécifiques à l'application (confirmé ou non)

• Traitement des protocoles de transport J1939 pour blocs de données volumineux (orienté messages et nœuds)

• Communication simultanée vers plusieurs nœuds

• Prise en charge de la procédure « Address Claiming » pour la détermination dynamique de l'adresse des nœuds

• Envoi et réception cycliques de messages avec surveillance à délai d'expiration



Modèles du logiciel de protocole SAE J1939


Le logiciel de protocole SAE J1939 est disponible en trois modèles:

La version Single Channel permet une configuration dynamique du logiciel de protocole SAE J1939 via une interface fonctionnelle, même lorsque le logiciel est en cours d'exécution. Ce modèle prend en charge une instance logicielle (canal CAN) et est conçu pour être mis en place dans un système d'exploitation en temps réel. Cependant, le logiciel peut aussi être mis en place dans une application n'ayant pas de système d'exploitation. La pile de communication SAE J1939 nécessite également un Driver CAN J1939 version 1.01 ou ultérieur.

La version Multi Channel prend en charge plusieurs instances logicielles (canaux CAN) et plusieurs applications sur un même canal CAN. De plus, il peut être étendu via d'autres paquets facultatifs pour les diagnostics NMEA 2000 et ISO 15765 2. Les autres fonctionnalités sont identiques à celles du modèle Single Channel. La pile de communication SAE J1939 nécessite également un Driver CAN J1939 version 1.01 ou ultérieur.

La version Micro est optimisée pour être mise en œuvre dans une unité centrale 8 bit dont les ressources RAM sont fortement restreintes. Dans ce cas, la configuration du logiciel s'effectue de manière entièrement statique dans des fichiers générés via le J1939 Designer compris dans le périmètre de livraison . Tous les paramètres de configuration pouvant être enregistrés dans la mémoire Flash, l'utilisation de la mémoire RAM est considérablement réduite pour le logiciel de protocole SAE J1939. Un pilote CAN adapté à cette version est compris dans la livraison.

Contenu de la livraison

• Logiciel de protocole SAE J1939 sous forme de code source

• Licence d'entreprise (limitée au site de l'entreprise et au domaine d'activité)

• Manuel d'utilisation détaillé

• Exemples d'applications C

• SAE J1939 Designer (licence d'essai de 30 jours)

• Assistance technique

Prestations complémentaires 
(ne font pas partie de la livraison)

• Contrat de maintenance
En complément de son progiciel J1939, IXXAT propose un contrat de maintenance. Celui-ci comprend les prestations suivantes pendant toute sa durée:
- Mises à jour et correction des erreurs gratuites
- Assistance technique


• Introduction au code
Introduction au code logiciel SAE J1939 d'une durée d'un jour. Vous obtenez des explications sur le fonctionnement des interfaces, des scénarios et des flux de données. Nous pouvons alors répondre directement à vos questions concernant l'adaptation à réaliser dans le code et l'effectuer.

Numéro de commande

|1.02.0351.00000 |Logiciel de protocole SAE J1939, modèle Single Channel |

|1.02.0351.00001 |Logiciel de protocole SAE J1939, modèle Multi Channel |

|1.02.0286.TTDDC |Logiciel de protocole SAE J1939, modèle Micro |

| |(options cible sur demande) |

................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download