Exemple de mise en oeuvre

Slides:



Advertisements
Présentations similaires
Réseaux locaux industriels Le BUS CAN
Advertisements

Le bus de terrain AS-i Bus AS-i (Actuator Sensor interface ) Fichiers
TRAITEMENT PROGRAMME DE L’INFORMATION
ARCHITECTURE INTERNE d’un MICROPROCESSEUR
Grandeurs physiques à acquérir
GEF 435 Principes des systèmes dexploitation Communication Interprocessus (CIP) III (Tanenbaum 2.3)
Protocole PPP* *Point-to-Point Protocol.
- ACL * Access Control List. Sommaire 1)Théorie 1)ACL standard 1)ACL étendue 1)ACL nommée 1)Mise en place et vérification des ACLs.
Séminaire Technologies sans-fil Exemple pratique : communication radio entre 2 kits PSoC Modules XBee & PSoC.
Module 7 : Résolution de noms NetBIOS à l'aide du service WINS
LES TRANSMISSIONS DE DONNEES DANS LE SECTEUR INDUSTRIEL. ZOBRIST Julien TS1 ETA.
Le Bus CAN CAN est un véritable réseau qui respecte le modèle OSI
Les systèmes à microprocesseur
Conception d’une carte à microcontrôleur ARM pour le robot Amphibot II
BUS de TERRAIN CANOPEN.
LA TRANSMISSION DE DONNEES
Gestion des Périphériques
NOTE : Pour faire évoluer le diaporama, si le clic de souris ne fait rien utilisez les touches du clavier : Pg up Pg down.
Le bus CAN BTS IRIS Lycée Turgot Limoges
TRANSMISSION DES DONNEES.
Projet d’électronique numérique
TRANSMISSION SÉRIE ASYNCHRONE Février 2008 JF VIENNE.
Fonction COMMUNIQUER les liaisons série
NOTE : Pour faire évoluer le diaporama, si le clic de souris ne fait rien utilisez les touches du clavier : Pg up Pg down.
Communications séries synchrones
Architecture introduction.
Acquisition de mesures à variations lentes
LES SYSTEMES AUTOMATISES
Module 3 : Analyse des performances du serveur
MIDI Sans Frontières Analyse des problèmes relatifs à la communication musicale sur IP Mémoire présenté en vue de lobtention du grade de Licencié en informatique.
LES RESEAUX INDUSTRIELS
Conversion analogique numérique et numérique analogique
Communication Juillet 2014.
Informatique 1. Les applications de l’informatique
Bus Universel en Série (USB – Universal Serial Bus)
Module 8 : Surveillance des performances de SQL Server
Microcontrôleurs et Langage C Les Timers diapo 1
OSI et TCP/IP CNAM
Etude de cas: carte 80C552++ ‘APPALACHES’
SURVEILLANCE VIDEO SUR RESEAU ETHERNET
Les microcontrôleurs PIC
Advisor Advanced IP Présentation Télémaintenance Télésurveillance.
Produire des signaux Communiquer
05 – Couche 3 - Couche réseau Terme anglais = The Network Layer.
Fonctionnement d’une mémoire.
GPA770: Microélectronique appliquée
Système slow-control au LAPP
Les Réseaux Informatiques
PERI Master ACSI cours Gestion des Périphériques Année (Transparents de F. Dromard)
Un programme Algorithme permettant au processeur de s'alimenter:

Sommaire Fonctionnel Le composant Définitions Linéarité C.A.N. Flash
Réseaux Informatiques
Architecture du AT91SAM9G45 Janvier Pulse Width Modulation Modulation par largeur d’impulsion 2.
Protocole DMX P.G D’après un travail d’élèves de 1ère SIN 2012
UE3-1 RESEAU Introduction
Les bases du protocole Modbus
Représentation digitale des données Trois formats de base: 1) Décimale: base 10 (Une constante i.e dimension d ’1 vecteur) 2) Binaire: base 2 ( Mask, set/reset.
Afnog 2009 Liste de contrôle d’accès Jean Robert HOUNTOMEY
Description d’une liaison série
CHAPITRE 4 La couche réseau
CHAPITRE 2 La couche physique.
Architecture d’un ordinateur
Les bascules et registres
CONDITIONNEMENT DE L’INFORMATION
Multiplexeurs A.Lebrun.
Initiation à l’Arduino
Chapitre 12 Surveillance des ressources et des performances Module S41.
Les disques durs et systèmes de fichiers distribué Mikaël Bailleul Romain Doiteau TSSI 2013 / 2014
Intervention sur un système technique Afficheur industriel « AIW »
Transcription de la présentation:

Exemple de mise en oeuvre Le bus CAN Exemple de mise en oeuvre

Implantation L’implantation du bus CAN nécessite certains équipements: CAN controller CAN transceiver

Adaptation des signaux Adapte les signaux pour les rendre conforme au standard CAN haute vitesse.

Signal électrique pour CAN basse vitesse Tensions électriques dans un réseau CAN à basse vitesse.

Signal électrique pour CAN basse vitesse Tensions électriques dans un réseau CAN à haute vitesse.

Contrôleur CAN

Exemple de montage CAN transceiver CAN controller

Application Le microprocesseur PIC12C672 reçoit deux signaux analogiques qui sont convertis en des valeurs numériques de 8 bits (ADC de 8 bits). Une des entrées analogiques est échantillonnée à chaque appel d’une interruption programmée dans le PIC12C672. Cette valeur est envoyée directement au bus CAN. Interruption à chaque x secondes. L’autre entrée analogique sera échantillonnée lors d’appels provenant du bus CAN.

Application Trois entrées logiques sont connectées au MPC2510. L’état de ces trois entrées sera envoyée au bus CAN lors d’appels provenant du bus CAN. Chaque entrée est commandée par un bouton poussoir connectant la broche correspondante à la masse. Deux sorties logiques sont exploitées directement du MPC2510. Leur état est conditionné par des appels provenant du bus CAN. Ces sorties peuvent commander des DEL qui seront alumées ou éteintes selon l’état de la sortie qui les commandent.

Application Dans une application qui implique de communiquer avec le bus CAN, il faut sélectionner la plage d’adresses que l’on désire utiliser dans notre noeud CAN. Idéalement, on essaye d’utiliser des plages d’identificateurs contigus car il faudra générer et filtrer ces identificateurs lors des échanges avec le réseau CAN. Notez que l’identification du message est sur 11 bits.

Application - identificateurs Signaux analogiques: La valeur du canal analogique 1 est envoyé au bus CAN à intervalle régulier. ID du message: 3FEh ou 0x0011 1111 1110b. La valeur du canal analogique 2 est envoyé au bus CAN sur demande. ID du message de la demande: 3F0h ou 0x0011 1111 0000b. ID du message de la réponse: 3F8h ou 0x0011 1111 1000b.

Application - identificateurs Entrées logiques: Les états des entrées logiques sont envoyés au bus CAN sur demande. ID du message de la demande: 3F1h ou 0x0011 1111 0001b. ID du message de la réponse: 3F8h ou 0x0011 1111 1000b.

Registres des identifiants en transmission 0 pour une trame standard (11 bits)

Longueur des trames

Application - identificateurs Sorties logiques: Les états des sorties logiques sont reçues du bus CAN. ID du message – sortie logique 1: 3F2h ou 0x0011 1111 0010b. ID du message de confirmation: 3FAh ou 0x0011 1111 1010b. ID du message – sortie logique 2: 3F3h ou 0x0011 1111 0011b. ID du message de confirmation: 3FBh ou 0x0011 1111 1011b.

Application - identificateurs Erreurs : En cas d’erreur on envoie un message sur le bus CAN. ID du message d’erreur : 3FFh ou 0x0011 1111 1111b.

Tableau résumant les identifiants des messages

Masques et filtres pour détecter les messages à accepter

Acceptation/blocage des messages Un système de masquage et de filtrage est prévu pour l’acceptation des messages transitant sur le réseau. Au plus haut niveau on trouve un masque qui fonctionne comme suit: Si le masque du bit bn est à 0, le bit est accepté; Sinon, la décision aura lieu au niveau du filtrage des messages.

Acceptation/blocage des messages Si le bit du masquage du bit bn est à 1: Si le filtre du bit bn est identique au bit correspondant du message, il est accepté et le message est pris en compte si tous les autres bits confirment l’acceptation; Sinon, le message est rejeté et n’est pas pris en compte.

Acceptation/blocage des messages La configuration des bits doit être faite pour configurer l’acceptation/blocage des messages.

Le filtre d’acceptation de messages reçus 0 pour une trame standard (11 bits)

Le masque pour l’acceptation de messages reçus

Valeurs des masques et filtres 0x011 1111 0000 0x011 1111 0000 0x111 1111 1111 0x011 1111 0001 0x111 1111 1111 0x011 1111 0010 0x111 1111 1111 0x011 1111 0011

Il faut filtrer les messages reçus Registres RXF2SIDH = 7Eh et RXF2SIDL = 00h. Correspond à 0x0111 1110 0000b = 3F0h Registres RXF2EID8 = FFh et RFX2EID0 = FFh. Pour adressage étendu. Registres RXF3SIDH = 7Eh et RXF3SIDL = 20h. Correspond à 0x0111 1110 0010b = 3F1h Registres RXF3EID8 = FFh et RFX3EID0 = FFh.

Il faut filtrer les messages reçus Registres RXF4SIDH = 7Eh et RXF4SIDL = 40h. Correspond à 0x0111 1110 0100b = 3F2h Registres RXF4EID8 = FFh et RFX4EID0 = FFh. Pour adressage étendu. Registres RXF5SIDH = 7Eh et RXF5SIDL = 60h. Correspond à 0x0111 1110 0110b = 3F3h Registres RXF5EID8 = FFh et RFX5EID0 = FFh.

États des entrées logiques Autres registres États des entrées logiques 0 = entrée logique 0 = entrée logique 0 = entrée logique 0 ou 1 selon état désiré 1 = broche activée 0 = sortie logique 0 = sortie logique

Transmission de données Buffer: Profondeur de 8 octets (maximum transmissible dans une trame)

Transmission de données Contrôle, canal N: Message annulé Message à perdu lors de l’arbritration Erreur de trans. Buffer en trans. Priorité du message

Réception de données

Vitesse du bus CAN Oscillateur de 8 MHz. Diviseur de fréquence ajusté à 4. Chaque bit à 8 Time Quantum. Donc la durée d’un bit sur le bus CAN est: 4 x 8 / (8 Mhz) = 4 microsecondes. Fréquence de : 250000 bits/seconde

Registre de contrôle global

Registre d’état global

Les interruptions

Les interruptions

Registres du contrôleur du bus CAN

Registres du contrôleur du bus CAN

Du point de vue du SPI

Commandes envoyées via SPI Premier bloc de 8 bits envoyé au MCP2510 contient une commande:

Demande de lecture d’un registre Instruction 0x03; Adresse sur 8 bits; Reçoit le contenu du registre sur 8 bits.

Écriture dans un registre Instruction 0x02; Adresse sur 8 bits; Envoyer le contenu désiré du registre sur 8 bits.

Requête de transmission (Request to send) Instruction 0x8…; Si plusieurs transmissions simultanées, MCP2510 commence par le plus prioritaire.

Modification de bits de registres Instruction 0x05; Adresse sur 8 bits; Envoyer le masque et contenu désiré sur 8 bits (chacun).

Lecture de l’état des transmissions/réceptions Instruction 0xA0.

Remise à zéro du MPC2510 Instruction 0xC0.

Exemple (AT91SAM9G45) Supposons que nous utilisions un bus CAN avec le port SP1, et qu’il soit branché sur la broche NCPS#1 pour le « chip select ».

Initialisation du SPI pour CS#1 config = 0; config = (AT91C_SPI_DLYBCT & (0x01 << 24)) | // Délais entre deux transferts (AT91C_SPI_DLYBS & (0xF << 16)) | // Délais avant le SPCK (AT91C_SPI_SCBR & (0x43 << 8)) | // Baud rate (AT91C_SPI_BITS & (AT91C_SPI_BITS_8)) | // Transferts par blocs de 8 bits. (AT91C_SPI_CSAAT & (0x1 << 3)) | // maintient CS actif (AT91C_SPI_NCPHA & (0x0 << 1)) | (AT91C_SPI_CPOL & (0x1 << 0))); SPI_ConfigureNCPS(AT91C_BASE_SP1, 1, config);

Broche du CS#1 du SPI1 Déclaration de variables: Routine initSPI(): static Pin pinsSPI1[] = {PINS_SPI1, PIN_SPI1_NPCS1 , PIN_SPI1_NPCS2, PIN_SPI1_NPCS3}; static Pin pinsCAN[] = PINS_CAN; // Devrait être définit dans board.h Routine initSPI(): PIO_Configure(pinsSPI1, PIO_LISTSIZE(pinsSPI1));

Configuration du bus CAN. static void setupCANbus(void){ spi_write(AT91C_BASE_SP1, 1, 0xC0); // RESET du chip spi_read(AT91C_BASE_SP1); wait(1); // 1 msec > 128 périodes de SCK // Initialiser la puce MCP2510 RÉPÉTER SPI_Write(AT91C_BASE_SPI1, 1, 0x02); SPI_Read(AT91C_BASE_SPI1); SPI_Write(AT91C_BASE_SPI1, 1, regaddrCAN[i]); SPI_Write(AT91C_BASE_SPI1, 1, conbusCAN[i]); i++; TANT QUE CONFIGURATION NON COMPLÉTÉE } Note: Premier message – entrer dans le mode de configuration Dernier message – sortir du mode de configuration

Transfert de données LECTURE D’UNE DONNÉE spi_write(AT91C_BASE_SP1, 1, 0x03); // Lect. donnée spi_read(AT91C_BASE_SP1); spi_write(AT91C_BASE_SP1, 1, regaddrCAN[x]); ValCAN = spi_read(AT91C_BASE_SP1); ÉCRITURE D’UNE DONNÉE de 8 bits spi_write(AT91C_BASE_SP1, 1, 0x02); // Écr. donnée spi_write(AT91C_BASE_SP1, 1, donnee);

Request to send (demande de transfert) spi_write(AT91C_BASE_SP1, 1, 0x8y); // RTS spi_read(AT91C_BASE_SP1); En binaire y = 0b0abc Si a = 1: vider buffer #2 Si b = 1: vider buffer #1 Si c = 1: vider buffer #0

Interruptions Déclaration de variables: Routine ConfigurePins(): static Pin pinsCAN[] = PINS_CAN; // Devrait être définit dans board.h Routine ConfigurePins(): PIO_Configure(pinsCAN, PIO_LISTSIZE(pinsCAN)); PIO_ConfigureIt(&pinsCAN,(void (*)(const Pin *)) ISR_CAN); PIO_EnableIt(&pinsCAN);

Interruptions Routine : static void ISR_CAN(void) { if (!PIO_Get(&pinsCAN)) { // Identifier la source de l’interruption spi_write(AT91C_BASE_SP1, 1, 0x03); // Lect. donnée spi_read(AT91C_BASE_SP1); spi_write(AT91C_BASE_SP1, 1, 0x2C); inter = spi_read(AT91C_BASE_SP1); // SELON bits actifs, faire les actions correspondantes. … … … … }

Exemple : échange de donnée avec des MPPT Régulateur MPPT (Maximum Power Point Tracking). Énergie solaire.

Terminal du MPPT

Identificateur du MPPT

Suite dans le fichier .pdf

Source: MISE EN OEUVRE D’UNE COMMUNICATION PAR BUS CAN REALISE PAR CHARLES LERY

Bateau solaire « Furia Two MKII 2011 »