Vous êtes sur la page 1sur 36

NOTICE TECHNIQUE

Système CAN - V.M.D.


Véhicule Multiplexé Didactique
Ensemble pare brise (option )
Réf: EID053000
comprenant:
- Moto-réducteur, codeur, capteurs
Carte CAN 8 entrées - Carte CAN "Asservissement"
(pour commodo lumière) (pour commande moteur)
Réf: EID050 000 Réf: EID052000
Lots de composants
Carte Processeur
Blocs optiques, commodo
Réf: EID210 000
Réf: EID054 000
+
Carte contrôleur CAN
Réf: EID004 000
+
Carte Ethernet (option)
Carte CAN 4 sorties
Réf: EID003 000
Réf: EID051000

Carte CAN 8 entrées (Option)


(pour commodo essuie-glace )
Support précâblé Réf: EID050000
Réf: EID055 000

Carte Clavier-afficheur
Réf: EID005000

Logiciels associés
Carte CAN 4 sorties
- Environnement de développement intégré
Réf: EID051000
(Editeur, assembleur, linkeur, loadeur)
Réf: EID210
- Compilateur "C" (option) Réf: EID210 100
- Noyau temps réel MTR86 (option) Réf: EID210 200

Manuels de travaux pratiques


- sur la carte processeur EID210 000 seule Réf: EID210 040
- associée au simulateur d'entrées sorties EID001000 Réf: EID211 040
- avec clavier afficheur EID005 000 Réf: EID215 040
- avec bus CAN-VMD Réf: EID050 040
- avec bus CAN-VMD et noyau temps réel MTR86 Réf: EID050 050
- avec carte réseau ethernet Réf: EID213 040

Version du : 14/07/2010 Référence document : EID055010

Z.A. de la Clé St Pierre


5 rue du Groupe Manoukian
78990 Elancourt
Tél: (33-1) 01 30 66 08 88 Télécopie: (33-1) 01 30 66 72 20
e-mail : ge@didalab.fr Web : www.didalab.fr
Notice technique Système CAN - V.M.D. (Véhicule Multiplexé Didactique)

Page: 2/36
Référence document: EID055 010

SOMMAIRE

1 PRESENTATION GENERALE 5

2 INSTALLATION ET CONFIGURATION 7
2.1 INSTALLATION MATERIEL 7
2.2 ELEMENTS DE CONFIGURATION PARTICULIERE DU LOGICIEL EID210 7

3 ELEMENTS DE TYPE "MATERIEL" 8


3.1 SCHEMA ORGANISATIONNEL D'ENSEMBLE 8
3.2 L'UNITE CENTRALE PROGRAMMABLE 8
3.3 LES MODULES D'INTERFACE CAN CONFIGURABLES 9
3.3.1 Les fonctions communes 9
3.3.2 Module 8 entrées logiques 12
3.3.3 Module 4 sorties de puissance 13
3.3.4 Module "Asservissement" 14

4 ELEMENTS DE TYPE "LOGICIEL" 17


4.1 TECHNIQUE DES ECHANGES PAR LA BUS CAN 17
4.1.1 Rappel de la structure d'une "trame" 17
4.1.2 Les différents types de trames 18
4.1.3 Définition des identificateurs 19
4.2 FICHIERS DE DEFINITION FOURNIS 22
4.3 STRUCTURES DE DONNEES SPECIFIQUES A L'APPLICATION VMD 22
4.4 BIBLIOTHEQUE DE FONCTIONS 24

5 ANNEXES 25
5.1 CARTES D'INTERFACE CAN 25
5.1.1 Plans d'implantation des composants 25
5.1.2 Schémas structurels 27
5.2 ELEMENTS SUR PARE BRISE 30
5.2.1 Moto-réducteur-codeur 30
5.2.2 Capteurs de fins de courses 31
5.3 FICHIER DE DEFINITION CAN-VMD.H 32
5.4 FICHIER DE DEFINITION PROPRE A LA CARTE ATON-CAN 35

Page: 3/36
Notice technique Système CAN - V.M.D. (Véhicule Multiplexé Didactique)

Page: 4/36
Référence document: EID055 010

1 PRESENTATION GENERALE
Le VMD (Véhicule Multiplexé Didactique) est un système didactique sur le RLI (Réseau locaux
industriel).
Une séquence d’apprentissage élaborée autour de travaux pratiques sur un système didactique mettant en
œuvre un réseau CAN est très riche d’enseignements :
→ sur la connaissance des concepts généraux utilisés dans les réseaux locaux industriels (RLI),
notamment le modèle O.S.I. (Open Systems Interconnection),
→ sur les normes en vigueur,
→ sur les termes usuels (voire normalisés) employés,
→ sur la caractérisation d’une communication par RLI,
→ sur les interfaces électriques et électroniques nécessaires,
→ sur les protocoles de communication employés,
→ sur la configuration des éléments configurables,
→ sur la structuration des programmes les mettant en œuvre.
Le VMD utilise le bus CAN pour communiquer avec ses différents modules d’entrées et de sorties. Il a été
développé en s’appuyant sur ce qui est développé dans l’automobile.
Dans le bus CAN, il n’y a que 2 couches normalisées dans le modèle OSI :
Couche physique (couche 1 OSI)
Couche liaison de donnée (couche 2 OSI).
Les autres couches ne font pas l’objet de normalisation dans le bus CAN.

Constitution de la version de base Réf: VMD01B


Commodo lumière

Support pré câblé

2 blocs optique avant

Carte processeur
+ Carte 8 entrées
Carte contrôleur CAN (pour commodo lumière)

2 feux pour
2 blocs optique arrière
clignotants

4 cartes de 4 sorties TOR Carte clavier afficheur

Constitution de la version complète Réf: VMD01C


En plus des éléments présents sur la version de base (voir ci-avant), il est proposé les options suivantes:
- Pare-brise équipé (Moto-réducteur, capteur fins de courses, carte CAN "Asservissement" (pour
commande du moteur par réseau CAN) Réf: EID053 000
- Carte CAN 8 entrées pour interfacer commodo essuie-glace Réf: EID051 000
- Carte réseau éthernet. Réf: EID003 000
- Noyau temps réel Réf : EID210 200

Page: 5/36
Notice technique Système CAN - V.M.D. (Véhicule Multiplexé Didactique)

Page: 6/36
Référence document: EID055 010

2 INSTALLATION ET CONFIGURATION
2.1 Installation matériel
Alimenter le VMD en +12 V DC
Alimentation en 12 V
Interrupteur de DC 20A
mis en marche

Raccorder la carte EID210 au


PC par l’intermédiaire du
cordon de liaison série ou USB.

2.2 Eléments de configuration particulière du logiciel EID210


Pour installer l’environnement de développement EID210, exécuter le programme « SETUP.EXE » depuis
le CD. (sous windows 2000 et XP professionnel …, il faut avoir les droit suffisant pour pouvoir installer le
logiciel).
Le logiciel EID210, qui comprend
- l'éditeur de texte (édition des programme source,
- le cross assembleur 68000,
- le cross compilateur c/c++ gnu C/C++

Il faut intégrer le fichier objet contenant les fonctions


disponibles pour la gestion du réseau CAN.
Pour cela, faire "Configurer" puis "GNU C/C++"

Dans la fenêtre qui s'ouvre alors, valider la fenêtre "Linker"


et "Ajouter" le fichier "aton_can.o" se trouvant dans le
répertoire "lib"
Dans la fenêtre "Options", donner éventuellement le chemin
où se trouve le fichier eid210.ld qui se trouve également
dasn le répertoire "lib".
Remarque
Il existe 2 versions de carte contrôleur can ATON
Version 1 Version 2

Aton_can.o Aton_can2.o
Aton_can.h Aton_can2.h

Page: 7/36
Notice technique Système CAN - V.M.D. (Véhicule Multiplexé Didactique)

3 ELEMENTS DE TYPE "MATERIEL"


3.1 Schéma organisationnel d'ensemble
Le système comporte les éléments suivants:
- un ensemble "unité centrale" programmable en liaison avec un ordinateur de type PC,
- une source d'énergie (batterie 12V ou alimentation non autonome générant du 12V 20A,
- un certain nombre d'ensembles, chacun pouvant être constitué
* d'un module d'interface CAN configurable,
* d'un organe de type capteur, pré–actionneur voir actionneur, compatible avec le module
associé,
- câbles de liaison.
Bus "Energie" (1 fils: + et -)

Alimentation
+12V

Liaison série O O
O
RS232 ou USB Module r Module r Module r
d'interface g d'interface g d'interface g
CAN a CAN a CAN a
Carte Carte
1 n 2 n n n
Ordinateur processeur contrôleur
e e e
type PC CAN

Unité centrale programmable Bus "CAN" (paire de fils torsadés: CANH et CANL)

Remarque :
- Des éléments de simulation d'entrées/sorties (LEDS, boutons poussoirs, commutateurs) ont été intégrés
sur les modules d'interface CAN et permettent éventuellement de s'affranchir des organes réels.
- Dans sa version "VMD" (Véhicule Multiplexé Didactique) les organes reliés au module d'interface CAN
peuvent être un commodo, un bloc optique avant, un bloc optique arrière, un moteur d'essuie glace ou de
lève vitre, plafonnier … etc.

3.2 L'unité centrale programmable


Elle comprend un certain nombre de cartes électroniques reliées entre elles par BUS parallèles :
- cartes indispensables
→ carte processeur EID210 conçue autour du microprocesseur 32 bits Motorola 68332 (carte
spécifique Didalab),
→ carte industrielle d'interface parallèle / CAN conçue autour du circuit SJA1000, au format
normalisé "PC104" (carte produite par la société ATON SYSTEMES),
- cartes optionnelles
→ carte clavier 16 touches matricé et afficheur graphique (carte spécifique DIDALAB),
→ carte d'interface réseau "Ethernet" (carte spécifique DIDALAB),
→ toute carte au format PC1014.

Page: 8/36
Référence document: EID055 010

3.3 Les modules d'interface CAN configurables


3.3.1 Les fonctions communes
Tous ces modules comportent les éléments suivants :
→ deux connecteurs de liaison au médium (fils de liaisons bus CAN) permettant de connecter les
modules en série,
→ deux connecteurs d'alimentation (bus "alimentation énergie"),
→ un régulateur de tension générant la tension +5V nécessaire aux circuits intégrés inclus sur le
module ainsi que les protections d'usage et une LED de visualisation de présence tension,
→ un résistance de terminaison de bus connectable ou non par "jumper",
→ un circuit intégré "émetteur récepteur de ligne" (réf:82CA251) réalisant l'interface électrique (mode
différentiel côté bus CAN et mode référencé côté application), c'est à dire la couche 1 du modèle
O.S.I.
Codage électrique → PLS
(Physical Logic Signaling)
Couche physique
Couche 1 du modèle O.S.I. Emetteur/Récepteur → MDI
(Open Systems Interconnection) (Medium Dependent Interface)
Connexion au bus → PMA
(Physical Medium Attachment)

+5V

Emetteur Vdd
CANH TXD Signaux Compatibles
/Récepteur Logiques
C.A.N.
Connecteur
Vdiff (Transceiver) RXD En TTL : 0 → 0V / GND
CANL
(réf: 82CA251) 1 → 5V / GND
GND
Médium
(Paire différentielle)

Couche 1 du modèle O.S.I. Circuit intégré


82C250

→ un circuit intégré d'extension d'entrées sorties (Réf:MPC25050) permettant la communication et


l'interprétation des messages, c'est à dire la couche 2 du modèle O.S.I.

Contrôle logique → LLC


(Logical Link Control)
. Filtrage et acceptation
. Notification des surcharges (Overloading)
Couche liaison de données . Détection des collisions et rétablissement
Couche 2 du modèle O.S.I.
(Recovery
Contrôle management)
d’accès au médium → MAC (Medium
(Open Systems
Interconnection) Access Contrôle)
. Sérialisation / désérialisation
. Stuffing /destuffing
. Encapsulation / décapsulation
. Détection des erreurs de transmission

Page: 9/36
Notice technique Système CAN - V.M.D. (Véhicule Multiplexé Didactique)

Contrôleur Interfaces Actionneurs


TXD C.A.N. d’entrées
(Couche 2 du Liaisons internes sorties
Capteurs
modèle périphériques
RXD O.S.I.)

CAN Expander MCP 25050 (Microchip)


→ jusqu'à 8 entrées/sorties (repérées GP0 à GP7)

→ un oscillateur à quartz nécessaire au circuit MPC25050,


→ une LED de visualisation de communication en réception,
→ une LED de visualisation de communication en émission.

Le composant "CAN Expander" MCP25050


 Généralités
Pour plus de renseignements, se reporter à la "datasheet" du
MCP25050 de Microchip
C’est un circuit intégré 14 broches disponible en version PDIP ou
SOIC.
Côté interface CAN il satisfait la norme CAN V2.0B c’est à dire qu’il
peut communiquer avec une vitesse de transmission qui peut atteindre
1Mbit/s. Certaines versions du circuit permettent une communication
sur 1 fil (One-wire).
Côté application, il possède 8 lignes d’entrées/sorties (GP0 à GP7)
configurables individuellement en entrée ou en sortie. Seule la ligne
GP7 ne peut être utilisée en sortie.

Deux liaisons (GP2 et GP3) peuvent être


configurées en sorties modulées en largeur
d'impulsions (PWM). Ces deux sorties
peuvent être commandées indépendamment
l'une de l'autre, fréquences et rapports
cycliques sur 10 bits.
Quatre liaisons (GP0 à GP3) peuvent être des
entrées analogiques. Les résultats
numériques des conversions sont accessibles
sur 10 bits.

Si on le souhaite, il est capable d'envoyer un message sans qu'il soit interrogé. Le message automatique
peut avoir pour origine:
→ changement d'état d'une entrée logique,
→ dépassement d'un seuil d'une entrées analogique,
→ base de temps périodique (fonction "scheduleur").

Page: 10/36
Référence document: EID055 010

 La configuration de la vitesse de transmission


Cette vitesse dépend de la fréquence du signal d’horloge interne (imposée par le quartz) notée tosc.
Cette fréquence est divisée (passage dans un « perscaler ») pour obtenir la période tQ (Time Quantum) .
Le coefficient de division BRP est choisi grâce à un mot de 6 bits BRP5 … BRP0 (Ces bits font partie du
registre de configuration n°1 CNF1 du circuit).

On obtient la valeur de tQ grâce à l’expression :


tQ = 2* tosc*(BRP+1)

La durée de transmission d’un bit (Bit Time) est fonction de 3 paramètres :


- un paramètre de synchronisation « SYN_Seg »
-> sur deux bits (SJW1 et SJW0) inclus dans le registre de configuration n°1
- un paramètre de propagation « Prop Segment»
-> sur 3 bits PRSEG2, PRSEG1 et PRSEG0 dans le registre de configuration n° 2
- un premier paramètre de phase « Phase Segment 1 »
-> sur 3 bits PHSEG12, PHSEG11 et PHSEG10 dans le registre de configuration n° 2
- un deuxième paramètre de phase « Phase Segment »
-> sur 3 bits PHSEG22, PHSEG21 et PHSEG20 dans le registre de configuration n° 2

Les paramètres de phase permettent de définir l’instant d’échantillonnage (« Sample time), instant où l’on
prend la valeur logique du bus ce qui va donner l’état du bit.

On obtient la valeur de tBIT (durée de transmission


d’un bit) grâce à l’expression :

tBIT = tQ * (S_Seg + P_Seg+PH_Seg1+ PH_Seg2)

La vitesse de transmission est l’inverse de tBIT


Bit Time

La répartition des paramètres dans les registres


est donnée ci-contre.
(Voir « DATA SHEET » du circuit MCP25050 page 8 et 9)

Exemple de calcul de la vitesse de transmission:


La fréquence du quartz sur la carte est 16 Mhz
On a choisit BRP = 4
→ tQ= 2*(4+1) * tosc = 10/16µ µs= 0.625 µs
On a choisit :
SJW = 0 , PRSEG = 0
PHSEG1 = 8 et PHSEG2 = 8
D’après « DATA SHEET »
→ tBIT = 16 * tQ

En définitive :
tbit = 16 * tscl = 16 * 0.625 µs = 10 µs

Soit une vitesse de 1/ tbit = 100 Kbit/s

Page: 11/36
Notice technique Système CAN - V.M.D. (Véhicule Multiplexé Didactique)

3.3.2 Module 8 entrées logiques


Le schéma structurel de cette carte est donné en Annexes.
Dans l'application objet, cette carte permet d'acquérir l'état du commodo "Essuie-glace"

Transils de Régulateur de tension "CAN Epander" Quartz


protection pour générer le +5V MCP25050 16Mhz

8 LEDs pour visualisation


des états des entrées
2 connecteurs pour le bus
"Alimentation" 12V

Connecteurs pour liaison


capteurs (Commodo Essuie-
glace dans notre application)
2 connecteurs pour liaison
avec médium bus "CAN"

" Transceiver " CAN


PCA82C251 4 boutons poussoirs pour
entrées monostables

2 LEDs pour visualisation


Potentiomètre pour 4 miro-commutateurs pour
trafic transferts de données
entrée analogique entrées bistables

Cette carte permet d’interfacer 8 entrées logiques "Tout Ou Rien", dont l'une peut être analogique.

En plus des éléments communs (présentés au chapitre précédent), cette carte comprend:
→ 4 boutons poussoirs pour simuler des entrées de type monostables,
BP1 ↔ GP4 BP1 ↔ GP0 BP2 ↔ GP5 BP4 ↔ GP7
→ 4 micro-commutateurs à 2 positions (fermé ou ouvert) pour simuler des entrées de type bistables,
S1-1 ↔ GP0 S1-2 ↔ GP1 S1-3 ↔ GP2 S1-4 ↔ GP3
→ 1 connecteur 10 points permettant de relier le "commodo essuie-glace" (les 8entrées GP0 àGP7),
→ 8 LEDs de visualisation des états des 8 entrées
→ 1 potentiomètre pour entrée analogique.

Remarques :
- Si un capteur externe de type fin de course est relié au connecteur, le commutateur (ou bouton poussoir)
correspondant doit resté en position "ouvert".
- Une LED s'allume si l'entrée correspondante est forcée à 0 (commutateur en position "fermé" ou bouton
poussoir "appuyé").
- Ce module peut être utilisé comme module comportant des sorties logiques compatible "TTL". En effet le
circuit MPC25050 est configurable. On peut donc, via le bus CAN, lui envoyer une trame qui définira si
telle ou telle liaison est une entrée ou une sortie. On pourra donc envisager toute combinaison pourvu que
la somme des entrées et des sorties ne dépasse pas 8.
Dans le cas d'une liaison configurée en sortie, il est impératif que le commutateur correspondant soit à
l'état ouvert.
- Le potentiomètre n'est actif que si le commutateur "0" est fermé.
L’affectation des entrées sur la carte 8 entrées sur lequel est connecté le commodo Feux est la suivante :
GP7 GP6 GP5 GP4 GP3 GP2 GP1 GP0
Entrée Entrée Entrée Entrée Entrée Entrée Entrée Entrée
klaxon stop Clignotant Clignotant Code Phare Warning Veilleuse
droit gauche
- Pour définir, en phase d'initialisation, une liaison en "entrée", il faut écrire un '1' dans le bit correspondant
du registre "GPDDR" (Data Direction Register).

Page: 12/36
Référence document: EID055 010

3.3.3 Module 4 sorties de puissance


Le schéma structurel de cette carte est donné en Annexes.
Dans l'application objet, cette carte permet la commande de 4 sorties TOR de puissance

Transils de Régulateur de tension Quartz "CAN Epander"


protection pour générer le +5V 16Mhz MCP25050

2 connecteurs pour le bus


4 LEDs pour visualisation
"Alimentation" 12V
des états des sorties

Connecteurs pour liaisons


2 connecteurs pour liaison sorties
avec médium bus "CAN"

" Transceiver " CAN


PCA82C251

2 LEDs pour visualisation miro-commutateur pour


trafic transferts de données simulation coupure sortie 4

Ce module comporte:
→ 4 interfaces de puissance permettant de piloter 4 charges électriques en "tout ou rien", sous 12V
→ 4 Leds de visualisation des états des sorties puissance,
→ 4 entrées de contrôle des charges,
→ 1 entrée de simulation de coupure de charge.

Remarque :
- Le circuit intégré réalisant l'interface de puissance (Réf: VN05) génère un signal logique indiquant si une
charge est connectée (contrôle du courant absorbé). Ces signaux logiques sont considérés comme entrée du
système et permettent, dans le cas du VMD et pour la commande d'une ampoule, de contrôler le bon état de
fonctionnement de celle-ci.
- Les sorties de puissance sont de type source, c'est à dire que les 4 charges auront pour point commun, la
référence de potentiel (dans le cas d'un véhicule, le "-" de la batterie relié à la carcasse).
- Les circuits de puissance "VN05" peuvent accepter des charges électriques consommant jusqu'à 12 A en
continu. Ils sont protégés contre les court-circuits ainsi que contre les dépassements de température.

L’affectation des entrées/sorties sur les cartes 4 sorties de puissance est la suivante :
GP7 GP6 GP5 GP4 GP3 GP2 GP1 GP0
Entrée Entrée Entrée Entrée Sortie Sortie Sortie Sortie
Etat sortie Etat Etat code Etat veilleuse (klaxon) clignotant code Veilleuse
GP3 clignotant

Remarques :
- La commande klaxon est active sur le module feux arrière gauche.
- Pour définir, en phase d'initialisation, une liaison en "entrée", il faut écrire un '1' dans le bit correspondant
du registre "GPDDR" (Data Direction Register) et pour définir, une liaison en "sortie", il faut écrire un '0'
dans le bit correspondant du même registre "GPDDR".
En définitive il faut écrire 11110000b ou F0h dans le "GPDDR".

Page: 13/36
Notice technique Système CAN - V.M.D. (Véhicule Multiplexé Didactique)

3.3.4 Module "Asservissement"


Le schéma structurel de cette carte est donné en annexe.
Dans l'application objet, cette carte permet d'interfacer le moteur d'essuie-glace et d'acquérir les fins de
courses ainsi qu'une image numérique de la vitesse du moteur (d'où la possibilité de commander le moteur
en boucle fermé, d'où l'appellation "asservissement").

Interface de puissance:
Transils de Régulateur de tension Alimentation bipolaire du
protection pour générer le +5V moteur (Circuit L6202)
2 LEDs pour visualisation
commande moteur

2 connecteurs pour le bus Connecteur pour moteur


"Alimentation" 12V
Connecteur pour codeur

2 connecteurs pour liaison Connecteur pour fins de


avec médium bus "CAN" course gauche

Connecteur pour fins de


course droite
" Transceiver " CAN
PCA82C251
Convertisseur
Fréquence -> tension
LM2907
2 LEDs pour visualisation Quartz "CAN Epander" Potentiomètre
trafic transferts de données 16Mhz MCP25050 pour entrée 3 micro-commutateurs (pour
analogique simuler entrées fins de courses)

En plus des éléments communs (présentés au chapitre précédent), cette carte comprend:
→ 1 interface de puissance permettant de piloter une charge électrique en "PWM" et dans les deux
sens, sous 12V (destiné à alimenter un moteur à courant continu en bipolaire),
→ 1 connecteur pour relier le moteur,
→ 2 Leds de visualisation de l'état de la sortie puissance (l'une si commande >0 et l'autre si
commande <0),
→ 1 entrée potentiomètre analogique (générateur de consigne),
→ 3 commutateurs de simulation de fins de courses (gauche, droit et sur-courses),
→ 2 connecteurs pour fins de courses (gauche et droit, et sur-courses),
→ 3 LEDs de visualisation des états des fins de course (droit, gauche et sur-courses)
→ 1 convertisseur fréquence -> tension (destiné par exemple à une mesure vitesse à partir d'un
capteur optique)
→ 1 connecteur pour capteur optique de vitesse (ex: codeur incrémental 1 voie).

L’affectation des entrées/sorties et fonctions associées sur la carte "Asservissement" est la suivante :
GP7 GP6 GP5 GP4 GP3 GP2 GP1 GP0
Entrée Entrée Entrée Entrée Sortie Sortie Entrée Entrée
surcourse Fin de course Fin de course Validation PWM2 PWM1 Mesure Tension
gauche droit Interface de vitesse potentiomètre
puissance interne
- Pour définir, en phase d'initialisation, une liaison en "entrée", il faut écrire un '1' dans le bit correspondant
du registre "GPDDR" (Data Direction Register)et pour définir une liaison en "sortie", il faut écrire un '0'
dans le bit correspondant du même registre "GPDDR".
En définitive il faut écrire 11100011b ou E3h dans le "GPDDR" du "CAN Expander".

Page: 14/36
Référence document: EID055 010

Principe de l'interface d'alimentation moteur


L'élément de base de l'interface est le circuit intégré L6203 qui intègre une structure de puissance en H, ce
qui permet une alimentation bipolaire du moteur à courant continu, en modulation de la largeur
d'impulsions

Connecteur J6
Circuit
PWM1
GP2 in1 L6203 Out1
PWM2 M
GP3 in2
CAN ValidIP
Expander GP3 Enable Out2
MCP25050

- Le circuit intégré réalisant l'interface de puissance (L6202) peut permettre un courant de 4A en continu et
10A en impulsionnel non répétitif.
- Le signal "PW1" (signal GP2 du "CAN expander") permet d'imposer une tension positive aux bornes du
moteur. Le signal "PW2" (signal GP3 du "CAN expander") permet d'imposer une tension négative. Ces
signaux à rapports cycliques variables sont générés par le circuit MCP25050 à partir des ordres reçus via le
BUS CAN.
- Le signal "ValidIP" (comme Validation de l'Interface de Puissance, signal GP4 du "CAN expander")
permet (s'il est positionné à 1) de valider le circuit de puissance.

Remarque:
- Les liaisons GP2, GP3 et GP4 du "CAN Expander" devront être configurées en sorties.

Principe de la mesure de la vitesse du moteur


Un codeur incrémental 1 voie est accouplé à l'arbre moteur. Il délivre un signal repéré "COD" de fréquence
proportionnelle à la vitesse de rotation.
Le circuit LM2907 et les composants associés réalisent la conversion fréquence → tension. Le signal
analogique repéré "AN1" est donc à un potentiel proportionnel à la fréquence, donc proportionnel à la
vitesse de rotation.

M
Circuit
AN1 LM2907 Cod Codeur
GP1
CAN U ← F
Expander Tension ← Fréquence
MCP25050 Connecteur J5

Remarque:
La liaison GP1 du "CAN Expander" devra être configurée en entrée. Il faudra mettre en œuvre le
convertisseur A→N intégré dans le "CAN Expander" pour avoir une image numérique de la vitesse de
rotation du moteur (ou du balai d'essuie-glace).

Page: 15/36
Notice technique Système CAN - V.M.D. (Véhicule Multiplexé Didactique)

Chaîne d'acquisition et de transfert de la vitesse du balai d'essuie-glace

NEG NM F U M
k1 k2 k3 k4

Vitesse Vitesse Fréquence Tension Mesure numérique


Essuie-glace Moteur (en Hz) UAN1 Image vitesse balai essuie-glace
(en tr/min) (en tr/min) (en Volt) (en incréments numériques)

→ k1 est l'inverse du coefficient de réduction du réducteur k1 = N M = 20


N EG
F np
→ k2 est le coefficient de transfert dû au codeur incrémentale k2 = = = 0,2
NM 60
où np =12 la résolution du codeur (nombre de périodes par tour codeur, donc par tour moteur)

→ k3 est le coefficient de transfert du convertisseur fréquence → tension

Commande Période Fréquence Tension Transfert F->U


Moteur T F=1/T U y = 0,0064x + 0,0302
6
0 1 1,00 0
50 0,0075 133,33 0,95 5
100 0,00325 307,69 1,95
150 0,00225 444,44 2,95 4
Tension (en V)

200 0,0016 625,00 4


220 0,00146 684,93 4,4 3

250 0,0013 769,23 5


2

0
0 50 100 150 200 250 300 350 400 450 500 550 600 650 700 750 800

Fréquence (en Hz)

On constate la linéarité de la caractéristique.


U
D'après l'équation de la courbe de tendance on en déduit la valeur du coefficient k3 = = 0,0064 v
F Hz

→ k4 est le coefficient de transfert du convertisseur tension → numérique


La conversion se fait sur 10 bits pour une plage de la tension d'entrée 0/5V
1023
donc: k4 = = 204,6inc / V
5

M
Soit un coefficient de transfert global: k= = k1.k 2 .k 3 .k 4 = 5,24inc / tr / min
N EG

Page: 16/36
Référence document: EID055 010

4 ELEMENTS DE TYPE "LOGICIEL"


4.1 Technique des échanges par la bus CAN
4.1.1 Rappel de la structure d'une "trame"
Une trame est un succession d'informations binaires circulant sous forme série:

Bus Libre S Champ d’Arbitrage Champ de Champ Données Champ ACQ E Entre message
(Bus idle) O (Arbitration field) Contrôle De 0 à 8 octets CRC 2 bits O (Au moins 3 bits)
F 12 ou 32 bits 6 bits 16 bits F

SOF Start Of Frame (Début de trame, sur 1 bit)


D’une durée d’un bit, son état est mis à 0 (état dominant) par la station qui prend l’initiative de débuter une
transmission alors que le bus est libre.

Champ d’Arbitrage (12 bits en standard et ou 32 bits en étendu, cas du système étudié)
Le champ d’arbitrage est composé de l’identificateur et d’un bit permettant d’informer du type de trame
(bit RTR Remote Transmission Request)
Format « standard » (version 2.0A du bus CAN):

RTR IDE RTR = 1 pour une trame de donnée (DATA frame)


11 bits (1 (1bit RTR = 0 pour une trame d’interrogation (Remote frame)
d’identification
12 bits

Format « étendu » (Version 2.0B du bus CAN): C'est le format utilisé dans le système étudié

SRR IDE RTR - Le bit SRR (Substitute


11 bits (1bit (1bit 18 bits (1bit Remote Request) se
substitue en lieu et place du bit
d’identification 32 bits d’identification RTR de format standard. Il est
mis à 1. Ce bit est utile lorsqu’une
- Le bit IDE informe de la taille de l’identificateur : trame au format étendu circule sur
→ est à 0 (dominant) en format standard un bus CAN et rencontre une
→ est à 1 (récessif) en format étendu. trame classique qui possède le
Il est dans la zone de contrôle en mode standard et dans la zone même identificateur (partie
d’identification en mode étendu. haute).

Champ de Contrôle (sur 6 bits)


Ce champ comprend deux bits de réserve et 4 bits définissant la taille en nombre d’octets des données transmises (ce
nombre est entre 0 et 8)
Réserve (sur 2 bits) Longueur données
Champ de données DLC (Data Length Code) (sur 4bits)
Les différentes données utiles transmises. Sa longueur dépend du nombre d’octets transmis défini dans le champ DLC.

Champ CRC (Cyclic Redundancy Code) sur 16 bits


Lors de l’émission, l’émetteur effectue un calcul (normalisé) sur les données à transmettre. Le résultat de ce calcul est
transmis dans le champ CRC. Le récepteur effectue le même calcul et compare le résultat avec celui de l’émetteur
transmis. Si une erreur est détectée, le récepteur renvoie un message d’erreur sous forme d’une trame interrogative.
Champ d’ACQuitement sur 2 bits (1 bit Slot suivi d’1 bit délimiteur)
L’émetteur envoie un bit à 1 (Récessif) et un récepteur ayant reçu correctement le message impose un zéro
(dominant) : il acquitte donc le message.
EOF End Of Trame
Chaque trame est terminée par 7 bits à 1 logique (récessif).

Page: 17/36
Notice technique Système CAN - V.M.D. (Véhicule Multiplexé Didactique)

4.1.2 Les différents types de trames


L'utilistion du "CAN Expander" MCP25050 impose différents types de trames (d'après la page 2 dans la
notice technique du "CAN Expander" MCP25050)
→ Trame "IM" (Input Message)
C'est en fait une trame de commande (ou missive) envoyée par le contrôleur à un nœud destinataire
(ex: écriture d'une valeur dans un registre du "CAN Expander" MCP25050 destinataire)
Contrôleur CAN IM Nœud CAN destinataire
Carte ATON Systèms CAN Expander
Composant SJA1000 Composant MCP25050

→ Trame "Ack" (Acknowledge Message)


C'est une trame de réponse à une IM informant que le nœud destinataire s'est reconnu et a bien pris en
compte la missive IM qui vient de circuler sur le bus.
Contrôleur CAN Ack Nœud CAN destinataire
Carte ATON Systèms CAN Expander
Composant SJA1000 Composant MCP25050

→ Trame "IRM" (Information Request Message)


C'est en fait une trame de type requête (interrogation) envoyée par le contrôleur à un nœud destinataire lui
demandant des informations
(ex: Lecture d'un ou de plusieurs registre(s) du "CAN Expander" MCP25050 destinataire)
Contrôleur CAN IRM Nœud CAN destinataire
Carte ATON Systèms CAN Expander
Composant SJA1000 Composant MCP25050

→ Trame "OM" (Output Message)


C'est une trame de réponse à une IRM, envoyée par le nœud destinataire de l'IRM précédemment envoyée
et contenant dans sa zone "Data" les informations demandées.
Contrôleur CAN OM Nœud CAN destinataire
Carte ATON Systèms CAN Expander
Composant SJA1000 Composant MCP25050
Conséquences:
- Dans un programme, suite à l'envoi d'une IM ou d'une IRM (utilisation de la fonction
Ecrire_Trame( )), il est impératif d'attendre la réponse (utilisation de la fonction Lire_Trame( )),
avant d'envoyer une nouvelle trame:
→ cette réponse sera une "Ack" suite à une "IM"
→ cette réponse sera une "OM" suite à une "IRM"
Lors du premier échange, il conseillé de prévoir un "Time out" et l'affichage d'un message d'alerte dans le
cas où il n'y a pas de réponse, afin d'éviter une situation bloquante.
Remarques:
- L'identificateur d'une "OM" est le même que celui de l'IRM qui est à l'origine.
- L'identificateur d'une "Ack" est différent que celui de l'IM qui est à l'origine.
- Deux particularités distinguent une trame d’interrogation (IRM) d'une trame d'information (IM):
→ le bit RTR est placé à 1 (dominant) alors qu’il est à 0 dans une trame de données,
→ la trame interrogative ne contient pas de données.
Trames particulières:
- A la mise sous tension un "CAN Expander MCP25050" signale sa présence par l'envoi automatique (sans
interrogation) d'une trame de type "OB" (On Bus Massage).
- Il est possible de configurer un "CAN Expander MCP25050" pour qu'il envoi automatiquement une trame
-> lorsqu'une de ses entrées subi un changement d'état prédéfini (Pages 23 et 26 doc MCP25050)
-> lorsqu'une entrée analogique prédéfinie croise un seuil de tension "Threshold detection"
(Pages 23 et 35 doc MCP25050)
-> à intervalle de temps régulier "Scheduled transmissions" (Pages 24 doc MCP25050)

Page: 18/36
Référence document: EID055 010

4.1.3 Définition des identificateurs


 Généralités: La configuration des masques et des filtres "d'acceptance"
Un message circulant sur le bus ne sera pris en considération par le circuit que si l’identificateur associé au
message a passé avec succès les obstacles du filtre et du masque.
Cette technique peut être déduite du schéma logique donné ci-après, ainsi que de la table de vérité.

En résumé, si on donne à un bit de masque l’état 1 logique un message ne sera accepté que si le bit
correspondant de l’identificateur associé est du même état que celui donné au filtre.
Par contre, si on donne à un bit de masque l’état 0 logique, le bit correspondant de l’identificateur est
masqué c’est à dire que son état n’est pas vérifié.
La définition des masques et des filtres s'effectue grâce à un certain nombre de registres destiné à cet effet
(voir tableau ci-après).
Rappel :
Dans la version "standard" du bus CAN (version V2.0A) l'identificateur est sur 11 bits. Dans ce cas les bits de
l'identificateur sont repérés SID10 … SID0.
Dans la version "étendue" du bus CAN (version V2.0B) l'identificateur est sur 29 bits. Dans ce cas les bits de
l'identificateur sont repérés EID17 … EID0 ( ce sont les poids faibles de l'identificateur, les poids forts étant
l'identificateur standard.

Il y a deux séries de registres dans lesquels on charge les valeurs des masques et des filtres :
→ la série d'indice 0 destinée aux trames interrogatives ("Information Request"),
→ la série d'indice 1 destinée aux entrées de données ("Input message").

Les registres définissant les masques Les registres définissant les filtres

Les différents
D'après "DATA SHEET" dumessages
circuit pages 12, 13 et 14

Page: 19/36
Notice technique Système CAN - V.M.D. (Véhicule Multiplexé Didactique)

 Application au CAN-VMD
On utilise le mode d'identification "étendu", car il est indispensable si on souhaite adresser individuellemnt
les différents registres du circuit d'interface MCP25050, circuit de base des modules d'interface CAN (voir
notice technique du circuit MCP25050, page 22).
Rappel:
Dans le mode d'adressage le 0 (dominant) est prioritaire sur le 1 qui est (récessif) (voir documentation
technique sur réseau CAN).
On envisage les champs d'adressage suivants pour les 11 bits de la partie "standard" de l'identificateur:
MSB Priorité sur 3 bits Type nœud sur 3 bits Type message sur 5 bits LSB
La priorité:
000 "Asservissement" (Priorité la plus haute)
001 "Commodo" (lumière ou essuie glace)
010 "Afficheur clavier"
011 "Feux"
Le type de Nœud:
001 Nœud "Asservissement"
010 Nœuds "Comodo lumière"
011 Nœuds "Comodo essuie glace"
100 Nœuds "Feux avant gauche"
101 Nœuds "Feux avant droit"
110 Nœuds "Feux arrière gauche"
111 Nœuds "Feux arrière droit"
Le type de message:
00001 -> repére RXF0 -> Réception d'une IRM (Information Request Message) et réponse OM (Output Message).
00010 -> repère RXF1 -> Pour écrire dans un registre (Input Message)
00100 -> repère TXID0 -> Pour On bus message (au démarrage pour informer présence nœud)
01000 -> repère TXID1 -> Pour acquitement suite à un IM (Input Message)
10000 -> repère TXID2 -> Pour messages automatiques (ex: conversions cyclique Analogique-Numérique)

Détermination des identificateurs, valeurs à charger dans les registres du SJA1000


(d'apès notice technique SJA1000 pages 40 et 41 MPC25050 pages10 à 14)
Le repérage des différents bits dans les registres de configuration différe selon qu'il s'agit du circuit
SJA1000 (sur carte d'interface CAN PC104) ou du circuit MCP25050 qui équipe les différents modules
d'interface CAN.

Repérage "SJA1000": 4 registres de 8 bits permettent de définir l'identificateur sur 29 bits (pour le 4ième
registre, les 3 bits LSB ne sont pas utilisés:
ID28 ID27 ID26 ID25 ID24 ID23 ID22 ID21 ID20 ID19 ID18 ID17 ID16 ID15 ID14 ID13 ID12 ID11 ID10 ID9 ID8 ID7 ID6 ID5 ID4 ID3 ID2 ID1 ID0

Registre "Identifier 1" Registre "Identifier 2" Registre "Identifier 3" Registre "Identifier 4"

Les 11 bits de la partie "Standard" Les 18 bits de la partie "Etendu"

Repérage "MCP25050": de même 4 registre de 8 bits permettent de définir l'identificateur sur 29 bits mais
le repérage et la répartition des bits dans les différents registres est différente:
SID10 SID9 SID8 SID7 SID6 SID5 SID4 SID3 SID2 SID1 SID0 - EXIDE - EID17 EID16
Registre "--SIDH" Registre "--SIDL"
Les 11 bits de la partie "Standard"

EID15 EID14 EID13 EID12 EID11 EID10 EID9 EID8 EID7 EID6 EID5 EID4 EID3 EID2 EID1 EID0
Registre "—EID8" Registre "—EID0"

Les 18 bits de la partie "Etendu"

Remarque: le Bit "EXIDE" est à mettre à 1 pour activer le mode étendu

Page: 20/36
Référence document: EID055 010

Tableau des identificateurs pour nœuds CAN (Véhicule Multiplexé Didactique)


Se référer à la notice technique du circuit MCP25050, pages 10 à 14
Registre MCP25025 - SIDH - SIDL SIDH SIDL Identificateur Labels définis
Et fonction (en bin) (en bin) (Hex) (Hex) (Hex) dans fichier fourni
( ! sur 29 bits) CAN_VMD.h

Nœud "Asservissement"
RXF0 -> IRM et OM 000 0 01 00 001 - 1-xx 04 28 0084 xx xx T_Ident_IRM_Asservissement
RXF1 -> IM 000 0 01 00 010 - 1-xx 04 48 0088 xx xx T_Ident_IM_Asservissement
TXD0 -> On Bus 000 0 01 00 100 - 1-xx 04 88 0090 xx xx
TXD1 -> Acq IM 000 0 01 01 000 - 1-xx 05 08 00A0 xx xx T_Ident_AIM_Asservissement
TXD2 -> Mes. Auto. 000 0 01 10 000 - 1-xx 06 08 00C0 xx xx

Nœud "Commodo feux"


RXF0 -> IRM et OM 001 010 00 001 - 1-xx 28 28 0504 xx xx T_Ident_IRM_Commodo_Feux
RXF1 -> IM 001 010 00 010 - 1-xx 28 48 0508 xx xx T_Ident_IM_ Commodo_Feux
TXD0 -> On Bus 001 010 00 100 - 1-xx 28 88 0510 xx xx
TXD1 -> Acq IM 001 010 01 000 - 1-xx 29 08 0520 xx xx T_Ident_AIM_ Commodo_Feux
TXD2 -> Mes. Auto. 001 010 10 000 - 1-xx 2A 08 0540 xx xx

Nœud "Commodo essuie-glace"


RXF0 -> IRM et OM 001 0 11 00 001 - 1-xx 2C 28 0584 xx xx T_Ident_IRM_Commodo_EG
RXF1 -> IM 001 0 11 00 010 - 1-xx 2C 48 0588 xx xx T_Ident_IM_ Commodo_EG
TXD0 -> On Bus 001 0 11 00 100 - 1-xx 2C 88 0590 xx xx
TXD1 -> Acq IM 001 0 11 01 000 - 1-xx 2D 08 05A0 xx xx T_Ident_AIM_ Commodo_EG
TXD2 -> Mes. Auto. 001 0 11 10 000 - 1-xx 2E 08 05C0 xx xx

Nœud "Feux avant gauche"


RXF0 -> IRM et OM 011 1 00 00 001 - 1-xx 70 28 0E04 xx xx T_Ident_IRM_FVG
RXF1 -> IM 011 1 00 00 010 - 1-xx 70 48 0E08 xx xx T_Ident_IM_ FVG
TXD0 -> On Bus 011 1 00 00 100 - 1-xx 70 88 0E10 xx xx
TXD1 -> Acq IM 011 1 00 01 000 - 1-xx 71 08 0E20 xx xx T_Ident_AIM_ FVG
TXD2 -> Mes. Auto. 011 1 00 10 000 - 1-xx 72 08 0E40 xx xx

Nœud "Feux avant droit"


RXF0 -> IRM et OM 011 1 01 00 001 - 1-xx 74 28 0E84 xx xx T_Ident_IRM_FVD
RXF1 -> IM 011 1 01 00 010 - 1-xx 74 48 0E88 xx xx T_Ident_IM_ FVD
TXD0 -> On Bus 011 1 01 00 100 - 1-xx 74 88 0E90 xx xx
TXD1 -> Acq IM 011 1 01 01 000 - 1-xx 75 08 0EA0 xx xx T_Ident_AIM_ FVD
TXD2 -> Mes. Auto. 011 1 01 10 000 - 1-xx 76 08 0EC0 xx xx

Nœud "Feux arrière gauche"


RXF0 -> IRM et OM 011 110 00 001 - 1-xx 78 28 0F04 xx xx T_Ident_IRM_FRG
RXF1 -> IM 011 1 10 00 010 - 1-xx 78 48 0F08 xx xx T_Ident_IM_ FRG
TXD0 -> On Bus 011 1 10 00 100 - 1-xx 78 88 0F10 xx xx
TXD1 -> Acq IM 011 1 10 01 000 - 1-xx 79 08 0F20 xx xx T_Ident_AIM_ FRG
TXD2 -> Mes. Auto. 011 110 10 000 - 1-xx 7A 08 0F40 xx xx

Nœud "Feux arrière droit"


RXF0 -> IRM et OM 011 1 11 00 001 - 1-xx 7C 28 0F84 xx xx T_Ident_IRM_FRD
RXF1 -> IM 011 1 11 00 010 - 1-xx 7C 48 0F88 xx xx T_Ident_IM_ FRD
TXD0 -> On Bus 011 1 11 00 100 - 1-xx 7C 88 0F90 xx xx
TXD1 -> Acq IM 011 1 11 01 000 - 1-xx 7B 08 0FA0 xx xx T_Ident_AIM_ FRD
TXD2 -> Mes. Auto. 011 1 11 10 000 - 1-xx 7E 08 0FC0 xx xx
3 bits "Priorité"
bits EID16 et EID17 (bits 16 et 17 de la partie "étendu" de l'identificateur)
3 bits "Type nœud"
5 bits "Type message"
Le bit "EXIDE" (Extend Ident) indique que l'on adopte le mode
11 bits
d'identification "étendu"

Les 11 bits de la partie standard de l'identificateur en mode étendu


Remarque:
Pour le circuit MCP25050 (notice technique MCP25050 pages 21), des 18 bits de la partie "étendu" de
l'identificateur jouent un rôle particulier:
- les trois bits de poids faible définissent le type d'action, les EID8 à EID15 définissent dans certains
cas, une adresse (lecture d'un registre).

Page: 21/36
Notice technique Système CAN - V.M.D. (Véhicule Multiplexé Didactique)

4.2 Fichiers de définition fournis


Un certains nombre de fichiers de définition sont fournis:
→ "CPU_Reg.h" définissant les adresses d'accès aux différents registres internes au microcontrôleur 68332
(processeur autour duquel est conçue la carte processeur EID210),
→ "EID210_Reg.h" définissant les adresses d'accès aux différents éléments matériels implantés sur la carte
processeur EID210,
→ "Aton_CAN.h" définissant les adresses d'accès aux différents registres du contrôleur CAN SJA1000
implanté sur la carte industrielle "CAN-PC104" fournie par la société "ATON SYSTEMES",
→ "Structures_Donnees.h " définissant l'ensemble des structures de données utiles à une programmation
structurée,
→ "CAN_VMD.h" définissant les éléments de l'application VMD (Véhicule Multiplexé didactique).

Veiller à ce que tous ces fichiers soient présents, soit dans le répertoire de travail, soit dans le répertoire
! "include" lui-même situé sous le répertoire contenant l'environnement de développement.

4.3 Structures de données spécifiques à l'application VMD


Pour utiliser le bus can, il faut utiliser le fichier de définition « aton_can.h ». Celui-ci définit les structures
de données permettant la gestion des trames CAN.
L'union "ident_standard " permet de définir la partie identification en mode standard
typedef union
{
struct {// Eléments constitutif de l'identificateur dans une trame
unsigned short ident:11; // les 11 bits d'identification en mode standard
unsigned short nul:5; // 5 bits inutilisés
} identificateur;
struct {// Les mêmes éléments mais dans les registres du circuit SJA1000
unsigned char ident1; // premier registre 8 bits de définition de l'identificateur
unsigned char ident2; // deuxième registre 8 bits de définition de l'identificateur
} registre;
unsigned short valeur; // La taille globale est de 16 bits
} ident_standard;

L'union "ident_extend" permet de définir la partie identification en mode étendu


typedef union
{
struct {// Eléments constitutif de l'identificateur dans une trame
unsigned long ident:29; // les 29 bits d'identification en mode étendu
unsigned long x:3; // 3 bits inutilisés
} identificateur;
struct {// Les mêmes éléments mais dans les registres du circuit SJA1000
unsigned char ident1; // premier registre 8 bits de définition de l'identificateur
unsigned char ident2; // deuxième registre 8 bits de définition de l'identificateur
unsigned char ident3; // troisième registre 8 bits de définition de l'identificateur
unsigned char ident4; // quatrième registre 8 bits de définition de l'identificateur
} registre;
unsigned long valeur; // La taille globale est de 32 bits
} ident_extend;

La structure " Trame" permet de définir une trame complète


typedef struct
{
tr_info trame_info; // Taille 8 bits
union {
ident_standard standard; // Identificateur en mode standard (2*8bits LSB)
ident_extend extend; // Identificateur en mode étendu (4*8bits)
} ident;
unsigned char data[8]; // les 8 octets de données (au maximum)
} Trame; // Taille globale: 13 octets

Page: 22/36
Référence document: EID055 010

Exemple: Définir une trame qui permette d'écrire dans un registre du circuit MCP25050
implanté sur le module 8 entrées "Commodo feux"
Dans ce cas, la trame envoyée par le contrôleur CAN (Circuit SJA1000 sur carte CAN_PC104) sera vue
par le récepteur (circuit MCP25050 sur module) comme un "Input Message", avec la fonction "Write
register" (voir documentation technique du MPC25025 pages 22).
Ce tableau indique que la trame comportera une zone de donnée composée de trois octets (donc DLC =3)
- le premier octet (repéré "addr") spécifie l'adresse du registre concerné par l'opération d'écriture
- le deuxième octet (repéré "mask") spécifie les bits concernés par l'opération d'écriture
- le troisième octet (repéré "value") spécifie la valeur des bits.

Remarques:
1- Rôle de l'octet "mask"
- Si on met un '1' dans un bit du masque, le bit correspondant du registre sera concerné par
l'opération d'écriture. Il prendra la valeur spécifiée dans l'octet "value".
- Si on met un '0' dans un bit du masque, le bit correspondant du registre ne sera pas concerné par
l'opération d'écriture. Il conservera sa valeur et la valeur spécifiée dans l'octet "value" est sans influence.
2- Détermination de l'adresse
Les adresses des différents registres sont définies dans la table 3 du chapitre 3, aux pages 15 et 16 de la
notice technique du circuit MCP25050. Il faut prendre connaissance de la "note 1" qui indique qu'il faut
ajouter 1Ch aux adresses indiquées dans le tableau, à l'exception du registre GPDDR (repère 1 en bas de la
page 15)
Ex: pour écrire dans le registre de sortie "GPLAT", l'adresse sera 02h+1Ch = 1Eh
3- Détermination de l'identificateur
Dans l'annexe n°1 de ce document, il est décrit les principes d'identification des différents modules. Des
labels sont également définis dans le registre CAN_VMD.H

→ Définition d'une variable structurée sous le modèle "Trame":


Trame T_IM_Commodo_Feux; // IM -> Input Message
// Trame destinée au module 8 entrées sur lequel est connecté le commodo Essuie-Glace

Remarque: La variable structurée T_IM_ Commodo_Feux comportera 8 octets (1 pour trame_info, 4 pour
l’identificateur, 1 pour l’adresse registre, 1 pour le masque et 1 pour la valeur).

→ Accès et définition des différents éléments de la variable structurée "T_IM_Commodo_Feux"

T_IM_Commodo_Feux.trame_info.registre=0x00;//On initialise tous les bits du registre


à 0
T_IM_Commodo_Feux.trame_info.champ.extend=1; //On travaille en mode étendu
T_IM_Commodo_Feux.trame_info.champ.dlc=0x03; //Il y aura 3 données de 8 bits envoyés
T_IM_Commodo_Feux.trame_info.champ.rtr=0; //on veut une trame de donnée type IM
T_IM_Commodo_Feux.ident.extend.identificateur.ident= Ident_T_IM_Commodo_Feux; // voir
dans CAN_VMD.H
// Pour définir l'adresse du bloc optique arrière droit -> voir chapitre suivant
T_IM_Commodo_Feux.data[0]=0x1F; // "Adresse" -> registre concernée GPDDR
T_IM_Commodo_Feux.data[1]=0x7F; // "Masque" -> seuls les 7 bits de poids faibles seront affectés par
l'écriture
T_IM_Commodo_Feux.data[2]=0x7F; // "Valeur" -> on met à 1 les 7 bits de poids faibles

Page: 23/36
Notice technique Système CAN - V.M.D. (Véhicule Multiplexé Didactique)

4.4 Bibliothèque de fonctions


Des fonctions spécifiques à l'accès au réseau CAN via la carte CAN-PC104 de chez "ATON SYSTEMES".
Les prototypes de ces fonctions sont définis dans le fichier Aton_CAN.h et leurs définitions elle-mêmes
dans le fichier "Aton_CAN.C"
S'il ne l'est déjà, ce fichier doit être compilé et son résultat de compilation Aton_CAN.o doit être inclus en
tant que fichier à "Linker" avec le fichier application.

Veiller à ce que le fichier Aton_CAN.o soit présent dans le répertoire "lib" lui-même situé sous le
! répertoire contenant l'éditeur-assembleur EID210100.

Veiller également à ce que ce fichier Aton_CAN.o soit inclus au "linker".


Pour ce faire:
Dans logiciel EID210 Configuration puis GNU C/C++ puis Linker puis Ajouter
puis retrouver et sélectionner le fichier Aton_CAN.o qui viendra s'ajouter aux fichiers déjà présents
c'est à dire CTR0.o et EID210.o

→ Fonction Init_Aton_CAN()
Cette fonction permet d'initialiser le circuit intégré SJA1000, cœur de la carte CAN-PC104 de chez ATON-
SYSTEMES. Aucun paramètre n'est passé ni retourné.
Cette fonction est à appeler dans la partie "Initialisation" du programme application
→ Fonction Ecrire_Trame(Nom_Trame)
Cette fonction permet d'envoyer une trame sur le réseau CAN.
La variable passée est une variable structurée sous le modèle "Trame" (modèle défini dans le chapitre
précédent).
Cette fonction ne renvoi pas de paramètre.
→ Fonction Lire_Trame(&Nom_Trame_recue)
Cette fonction permet de savoir si une trame a été reçue du réseau CAN et si oui d'accéder à celle-ci. La
variable passée est un pointeur sur variable structurée sous le modèle "Trame" (modèle défini dans le
chapitre précédent).
Le paramètre renvoyé vaut 1 si un message a été reçu et 0 si aucun message n'a été reçu.
→ Fonction Affiche_Trame(Nom_Trame)
Cette fonction permet d'afficher une trame sur l'écran de l'ordinateur connecté à l'unité centrale
programmable.
La variable passée est une variable structurée sous le modèle "Trame" (modèle défini dans le chapitre
précédent).
Cette fonction ne renvoi pas de paramètre.

Page: 24/36
Référence document: EID055 010

5 ANNEXES
5.1 Cartes d'interface CAN
5.1.1 Plans d'implantation des composants
Carte 8 entrées / sorties logiques

Carte 4 sorties de puissance

Page: 25/36
Notice technique Système CAN - V.M.D. (Véhicule Multiplexé Didactique)

Carte "Asservissement"

Page: 26/36
Référence document: EID055 010

5.1.2 Schémas structurels


Véhicule Multiplexé Didactique (V.M.D.) Connecteur pour les 8 Entrées
Module 8 entrées TOR de type "contacts secs" VCC VCC J5

GP0 1
GP1 2
Résistance de terminaison Emetteur/Récepteur de ligne R1 R2 GP2 3
330 330 "Expander" d'entrées sorties GP3 4
GP4 5
JP1
1 2 VCC VCC GP5 6
C1 C2 GP6 7
Connexions D1 D2 GP7 8
JUMPER PT1
au médium R3 9
Point Test LED LED 10
100nF 100nF
120 14
U1 3 U2
J1 S1
7 VC 1 Txd 13 VD 1 GP0 AN0
1 CANH C TXD TXCAN D GP0 2 GP1 1 8
2 6 4 Rxd 12 GP1 3 GP2 2 7
CANL RXD RXCAN GP2 4 GP3 3 6
CON2
MOLEX 2PT GP3 5 GP4 4 5
5 GN 8 9 GP4 6 GP5 4 Switchs
VREF D RS OSC2 GP5 10 GP6
PT2 Y1 GP6
R4 8 VS 11 GP7
PCA82C251 10 Point Test OSC1 GP7 Simulation des entrées
S
J2 2
MCP25050
1 16 MHz 7 BP1 Poussoir
2 C3 C4 GP4
P1 P2
CON2
MOLEX 2PT 33 pF 33 pF
PT3 BP2 Poussoir
Point Test GP5
P1 P2

BP3 Poussoir
J3 +12V D3 Régulateur à sortie Vcc = +5V GP6
2 1 à partir du +12V batterie P1 P2
1
2 BP4 Poussoir
CON2 1N4004 GP7
P1 P2
MTA 2pts U3
LM78L05C/TO220 VCC R5 330
1 3 Visu des états des entrées
VIN VOUT RR1
GN 2
J4 D6 C5 GP0 D7 LED 2 1
D +5V
D4 3
1 P6KE12 1000µF D5 GP1 D8 LED 4
2 C6 1N4004 5
2 100nF LED GP2 D9 LED 6
CON2
MTA 2pts 1 7
GP3 D10 LED 8
9
Connecteur +12V Batterie Générateur consigne GP4 D11 LED C
analogique VCC 1.5K
GP5 D12 LED
3
GP6 D13 LED
R6 100 Pot GP7 D14 LED
AN0 2 10K

C7
100nF Title
1
Véhicule Multiplexé Didactique (V.M.D.)
Size Document Number Rev
A Module 8 entrées TOR (contacts secs) 0

Date: Thursday, January 16, 2003 Sheet 1 of 1

Page: 27
NOTICE TECHNIQUE Réseau CAN - V.M.D. (Véhicule Multiplexé Didactique)

Véhicule Multiplexé Didactique (V.M.D.)


Module 4 sorties de puissance avec contrôle des charges VCC

Ré sist anc e d e
te rmin ais on Em ette ur/ Réc epte ur de l ign e R1 R2
330 330 "E xpan der " d 'ent rée s so rti es
JP1
1 2 VCC VCC
C1 C2
Co nnex ion s JUMPER PT1 D1 D2
au méd ium R3 Point Test
100nF LED LED 100nF
120

14
3
U1 U2
J1
7 1 Txd 13 1 GP0

VCC

VDD
1 CANH TXD TXCAN GP0 2 GP1 4 Sort ies TO R GP 0.. GP3
2 6 4 Rxd 12 GP1 3 GP2
CANL RXD RXCAN GP2 4 GP3
CON2
MOLEX 2PT GP3 5 GP4
5 8 9 GP4 6 GP5 4 Entr ées T OR G P4. .GP7

GND
VREF RS OSC2 GP5 10 GP6 (C ontr ôle de s ch arg es)
PT2 Y1 GP6
R4 8 11 GP7

VSS
PCA82C251 10 Point Test OSC1 GP7
J2

2
MCP25050
1 16 MHz

7
2 C3 C4
CON2
MOLEX 2PT 33 pF 33 pF
PT3
Point Test

In terf ace s d e pu iss ance po ur s ort ies TOR 6 A/12 V


+12V +12V +12V +12V Co nnec teu r c harg es
él ectr iqu es
TAB

TAB

TAB

TAB
U4 U5 U6 U7
J5
GP0 7 1 S0 GP1 7 1 S1 GP2 7 1 S2 GP3 7 1 S31 S0
GND +V

GND +V

GND +V

GND +V
INP O1 2 INP O1 2 INP O1 2 INP O1 2 S1 1
O2 4 O2 4 O2 4 O2 4 S2 2
GP4 8 O3 5 GP5 8 O3 5 GP6 8 O3 5 GP7 8 O3 5 S32 3
STAT O4 STAT O4 STAT O4 STAT O4 4
VN05HSP D7 VN05HSP D8 VN05HSP D9 VN05HSP 5
6
6

6
LED LED LED CON6
MTA 6pts

R6 R7 R8
4.7K 4.7K 4.7K

Po ur s imu ler amp oul e gr ill ée

Co nnec teu r + 12V Bat teri e I1


S31 1 2 S32
F1 +12V D3 Ré gula teu r à sor tie Vcc = +5V c1 c2 D10
J3
2 1 à part ir du +12V ba tter ie Interrupteur
1 No rmal eme nt ferm é LED
2
FUSE
CON2 1N4004
MTA 2pts U3
LM78L05C/TO220 VCC R5 1K
1 3 R9
VIN VOUT 4.7K
2

J4 D6 C5
GND

D4
1 P6KE12 1000µF D5
2 C6 1N4004
100nF LED
CON2
2

MTA 2pts
1

Title
Véhicule Multiplexé Didactique (V.M.D.)
Size Document Number Rev
A4 00
Module 4 sorties TOR
Ja nvie r 2 003 Date: Sheet 1 of 1

Page: 28
Référence document: EID055 010

Véhicule Multiplexé Didactique (V.M.D.)


Module asservissement (En bipolaire PWM sur 12V) VCC

Ré sist anc e d e
te rmin ais on Em ette ur/ Réc epte ur de l ign e R1 R2
330 330
JP1 "E xpan der " d 'ent rée s so rti es
1 2 VCC VCC Gé néra teu r c onsi gne
C1 C2 VCC
JUMPER PT1 D1 D2
Co nnex ion s a u R3 Point Test

3
mé dium 100nF LED LED 100nF
120

14
3
U1 U2 Pot
J1
7 1 Txd 13 1 GP0 AN0 2 10K

VCC

VDD
1 CANH TXD TXCAN GP0 2 GP1 AN1
2 6 4 Rxd 12 GP1 3 GP2 PWM1 C7
CANL RXD RXCAN GP2 4 GP3 PWM2 100nF
CON2
MOLEX 2PT GP3 5 GP4 ValidIP

1
5 8 9 GP4 6 GP5 fcd

GND
VREF RS OSC2 GP5 10 GP6 fcg
PT2 Y1 GP6
R4 8 11 GP7 fsd fsg fs

VSS
PCA82C251 10 Point Test OSC1 GP7
J2

2
MCP25050 Co nnec teu r c odeu r
1 16 MHz VCC

7
2 C3 C4 J5
CON2
MOLEX 2PT 33 pF 33 pF COD 1
PT3 2
Point Test 3
CON3
+12V MOLEX 3PT
+12V
Ci rcui t d e p uiss anc e Co nnec teu r
Co nver tis seu r fr équ ence -> ten sio n ( Imag e V ites se Mot eur) L6202 mo teur

7
3

9
+12V U4 Powerdi p18 J6
R6 PWM1 12 10 1

+Valim
NC2
NC1
15 K U5 C8 PWM2 16 IN1 OUT1 11 C9 2
COD 1 100 nF IN2 BT1 3
11 T+ ValidIP 2 10 nF
C10 10 nF T- ENABLE 8 CON3
R13 2 18 OUT2 17 MTA 3pts

Sens
GND
GND
GND
GND
GND
GND
1.5 K PC 8 VREF BT2 C12 R16 R17
3 SC +12V C11 4.7K 4.7K
F 5 IVM AN1 220 nF 10 nF R9
SE

13
14
15
R14 100 K 4 33 ohms 1/2Watt

1
4
5
6
A+ R15 10 K
9 10 +12V D9 D10
C13 +12V 12 +Va A- C14
1µF GND
LM2907N C15 C16 1 nF
100 nF 10 µF
Fi ltra ge Ali ms L 620 3

VCC +12V
Co nnec teu r + 12V Bat teri e Si mula tio n F ins de
J3 F1 +12V D3 co urse s Co nnec teu r Co nnec teu r
2 1 R7 R11 po ur F ins de R12 po ur F ins de
1 330 BP1 Poussoi r 1K 1K
2 co urse Ga uch e co urse Dr oit
FUSE Ré gula teu r à sor tie Vcc = +5V fcd J7 J8
1N4004 à part ir du +12V ba tter ie P1 P2
CON2
fcg 1 fcd 1
MTA 3pts U3
VCC R5 1K BP2 Poussoi r D7 fsg 2 D8 fsd 2
LM78L05C/TO220
1 3 D11fcg 3 3
VIN VOUT P1 P2 1N4148 4 1N4148 4
2

J4 D6 C5 LED CON4
CON4
GND

D4 BP3 Poussoi r MOLEX 4PT MOLEX 4PT


1 P6KE12 1000µF D5 fs
2 C6 1N4004 P1 P2
100nF LED
CON2
2

MTA 3pts D12 R8 330 Title


1

fcg
D13 VCC Véhicule Multiplexé Didactique (V.M.D.)
fcd Size Document Number Rev
VCC
LED 330 R10 A4 00
Module asservissement
LED Ja nvie r 2 003 Date: Sheet 1 of 1

Page: 29
NOTICE TECHNIQUE Réseau CAN - V.M.D. (Véhicule Multiplexé Didactique)

5.2 Eléments sur pare brise


5.2.1 Moto-réducteur-codeur

Page: 30
Référence document: EID055 010

5.2.2 Capteurs de fins de courses

Page: 31
Manuel de travaux pratiques Réseau CAN - V.M.D. (Véhicule Multiplexé Didactique) Application: Commande
Essuie-Glace

5.3 Fichier de définition CAN-VMD.h


//*****************************************************
// Structures de données pour application CAN VMD
// Nom de fichier: CAN_VMD.h
//*****************************************************

#ifndef _VMD_H
#define _VMD_H

// Format de message
typedef struct {
/* nombre d'octets à envoyer, -1 si c'est une Remote Frame */
int dlc;
unsigned char id1; /* 8 bits de poids forts de l'ID. */
unsigned char id2; /* 3 bits de poids faible de l'ID. */
unsigned char data[8];
} Message;

// Pour l'identificateur en mode standard


typedef union
{
struct {
unsigned short ident:11;
unsigned short rtr:1;
unsigned short nul:4;
} identificateur;
struct {
unsigned char ident1;
unsigned char ident2;
} registre;
unsigned short valeur;
} ident_standard;

// Pour l'identificateur en mode étendu


typedef union
{
struct {
unsigned long ident:29;
unsigned long rtr:1;
unsigned long x:2;
} identificateur;
struct {
unsigned char ident1;
unsigned char ident2;
unsigned char ident3;
unsigned char ident4;
} registre;
unsigned long valeur;
} ident_extend;

// Pour registre d'information Trame SJA1000


typedef union
{
struct {
unsigned char extend:1;
unsigned char rtr:1;
unsigned char nul:2;
unsigned char dlc:4;
} champ;
unsigned char registre;
} tr_info;

// Pour Trame circulant sur réseau CAN


typedef struct
{
tr_info trame_info;
union {
ident_standard standard;
ident_extend extend;
} ident;
unsigned char data[8];
} Trame;

Page: 32/36
Référence document: EID 057 040

typedef union
{
struct
{
unsigned char GP7:1;
unsigned char GP6:1;
unsigned char GP5:1;
unsigned char GP4:1;
unsigned char GP3:1;
unsigned char GP2:1;
unsigned char GP1:1;
unsigned char GP0:1;
}bit;
unsigned char valeur;
}Port_8ES;
Port_8ES Etat_Commodo_Feux;
#define Valeur_Commodo_Feux Etat_Commodo_Feux.valeur
#define Cde_Veilleuse Etat_Commodo_Feux.bit.GP0
#define Cde_Warning Etat_Commodo_Feux.bit.GP1
#define Cde_Phare Etat_Commodo_Feux.bit.GP2
#define Cde_Code Etat_Commodo_Feux.bit.GP3
#define Cde_Clign_Gauche Etat_Commodo_Feux.bit.GP4
#define Cde_Clign_Droit Etat_Commodo_Feux.bit.GP5
#define Cde_Stop Etat_Commodo_Feux.bit.GP6
#define Cde_Klaxon Etat_Commodo_Feux.bit.GP7

// Pour la Commande des feux


#define Cde_Nulle 0x00
#define Cde_FV_V 0x01 // Feux aVant en Veilleuse
#define Cde_FR_V 0x01 // Feux aRrière en Veilleuse
#define Cde_FV_C 0x03 // Feux aVant en Code
#define Cde_FR_C 0x01 // Feux aRrière en Code
#define Cde_FV_P 0x05 // Feux aVant en Phare
#define Cde_FR_P 0x01 // Feux aRrière en Phare
#define Masque_Clign_AV 0x08 // Pour Clignotant AVant
#define Masque_Clign_AR 0x04 // Pour Clignotant ARrière
#define Masque_Klaxon 0x08 // Pour Claxon
#define Masque_Stop 0x02 // Pour Stop

// Variables pour la commande et le control des feux


//----------------------------------------------------
// Pour variables images de la commande effectuée des différents feux
union byte_bits Image_FVG,Image_FVD,Image_FRD,Image_FRG;
// Pour Feux aVant Gauche
#define Valeur_FVG Image_FVG.valeur // Pour un accés port complet
#define Veilleuse_FVG Image_FVG.bit.b0
#define Code_FVG Image_FVG.bit.b1
#define Phare_FVG Image_FVG.bit.b2
#define Clignot_FVG Image_FVG.bit.b3
// Pour Feux aVant Droit
#define Valeur_FVD Image_FVD.valeur // Pour un accés port complet
#define Veilleuse_FVD Image_FVD.bit.b0
#define Code_FVD Image_FVD.bit.b1
#define Phare_FVD Image_FVD.bit.b2
#define Clignot_FVD Image_FVD.bit.b3
// Pour Feux aRrière Droit
#define Valeur_FRD Image_FRD.valeur // Pour un accés port complet
#define Veilleuse_FRD Image_FRD.bit.b0
#define Stop_FRD Image_FRD.bit.b1
#define Clignot_FRD Image_FRD.bit.b2
#define Klaxon_FRD Image_FRD.bit.b3
// Pour Feux aRrière Gauche
#define Valeur_FRG Image_FRG.valeur // Pour un accés port complet
#define Veilleuse_FRG Image_FRG.bit.b0
#define Stop_FRG Image_FRG.bit.b1
#define Clignot_FRG Image_FRG.bit.b2
#define Klaxon_FRG Image_FRG.bit.b3
// Pour les variables images des "Status" des sorties de puissance
union byte_bits Image_Stat_FVG,Image_Stat_FVD,Image_Stat_FRD,Image_Stat_FRG;

Page: 33/36
Manuel de travaux pratiques Réseau CAN - V.M.D. (Véhicule Multiplexé Didactique) Application: Commande
Essuie-Glace

// Pour image "Status" Feux aVant Gauche


#define Valeur_Status_FVG Image_Stat_FVG.valeur // Pour un accés port complet
#define S_Veilleuse_FVG Image_Stat_FVG.bit.b4
#define S_Code_FVG Image_Stat_FVG.bit.b5
#define S_Phare_FVG Image_Stat_FVG.bit.b6
#define S_Clignot_FVG Image_Stat_FVG.bit.b7
// Pour image "Status" Feux aVant Droit
#define Valeur_Status_FVD Image_Stat_FVD.valeur // Pour un accés port complet
#define S_Veilleuse_FVD Image_Stat_FVD.bit.b4
#define S_Code_FVD Image_Stat_FVD.bit.b5
#define S_Phare_FVD Image_Stat_FVD.bit.b6
#define S_Clignot_FVD Image_Stat_FVD.bit.b7
// Pour image "Status" Feux aRrière Droit
#define Valeur_Status_FRD Image_Stat_FRD.valeur // Pour un accés port complet
#define S_Veilleuse_FRD Image_Stat_FRD.bit.b4
#define S_Stop_FRD Image_Stat_FRD.bit.b5
#define S_Clignot_FRD Image_Stat_FRD.bit.b6
#define S_Klaxon_FRD Image_Stat_FRD.bit.b7
// Pour image "Status" Feux aRrière Gauche
#define Valeur_Status_FRG Image_Stat_FRG.valeur // Pour un accés port complet
#define S_Veilleuse_FRG Image_Stat_FRG.bit.b4
#define S_Stop_FRG Image_Stat_FRG.bit.b5
#define S_Clignot_FRG Image_Stat_FRG.bit.b6
#define S_Klaxon_FRG Image_Stat_FRG.bit.b7

// Déclaration des identificateurs, pour les différents modules sur le bus VMD
//--------------------------------------------------------------------------------
// Pour Feux aVant Gauche
#define Ident_T_IRM_FVG 0x0E041E07 // Feux aVant Gauche en interrogation (Information Request Message)
#define Ident_T_IM_FVG 0x0E080000 // Feux aVant Gauche en commande (Input Message)
#define Ident_T_AIM_FVG 0x0E200000 // Feux aVant Gauche en Acquittement commande
// Pour Feux aVant Droit
#define Ident_T_IRM_FVD 0x0E841E07 // Feux aVant Droit en interrogation (Information Request Message)
#define Ident_T_IM_FVD 0x0E880000 // Feux aVant Droit en commande (Input Message)
#define Ident_T_AIM_FVD 0x0EA00000 // Feux aVant Droit en Acquittement commande
// Pour Feux aRierre Gauche
#define Ident_T_IRM_FRG 0x0F041E07 // Feux aRrière Gauche en interrogation (Information Request Message)
#define Ident_T_IM_FRG 0x0F080000 // Feux aRrière Gauche en commande (Input Message)
#define Ident_T_AIM_FRG 0x0F200000 // Feux aRrière Gauche en Acquittement commande
// Pour Feux aRierre Droit
#define Ident_T_IRM_FRD 0x0F841E07 // Feux aRrière Droit en interrogation (Information Request Message)
#define Ident_T_IM_FRD 0x0F880000 // Feux aRrière Droit en commande (Input Message)
#define Ident_T_AIM_FRD 0x0FA00000 // Feux aRrière Droit en Acquittement commande
// Pour Commodo Feux
#define Ident_T_IM_Commodo_Feux 0x05080000 // Commodo feux en commande (Information Message)
#define Ident_T_AIM_Commodo_Feux 0x05200000 // Commodo feux : Acquittement suite à une IM
#define Ident_T_IRM_Commodo_Feux 0x05041E07 // Commodo feux en interrogation (Information Request Message)
// Pour Essuie Glace
#define Ident_T_IM_Commodo_EG 0x05880000 // Commodo EG en commande (Information Message)
#define Ident_T_AIM_Commodo_EG 0x05A00000 // Commodo EG en commande (Information Message)
#define Ident_T_IRM1_Commodo_EG 0x05841E07 // Commodo EG en interrogation: 1 octet demandé
#define Ident_T_IRM8_Commodo_EG 0x05840000 // Commodo EG en interrogation: 8 octets demandés
#define Ident_T_OB_Commodo_EG 0x05900000 // Commodo EG "On Bus" (Par scéduleur)
// Pour module Asservissement
#define Ident_T_IM_Asservissement 0x00880000 // "Asservissement" en commande (Input Message)
#define Ident_T_IRM1_Asservissement 0x00841E07 // "Asservissement" en interrogation: 1 octet en réponse
#define Ident_T_IRM8_Asservissement 0x00840000 // "Asservissement" en interrogation: 8 octets en réponse
#define Ident_T_AIM_Asservissement 0x00A00000 // "Asservissement" en Acquittement commande
#define Ident_T_OB_Asservissement 0x00900000 // "Asservissement" en On Bus (par scéduleur)
// Pour le "Commodo Essuie Glace"
Port_8ES Commodo_EG;
#define Etat_Commodo_EG Commodo_EG.valeur
#define Valeur_Commodo_EG Commodo_EG.valeur
#define Cde_EG_Av_Int Commodo_EG.bit.GP0 // Commande Essuie Glace Avant en Intermittant
#define Entree1 Commodo_EG.bit.GP1
#define Entree2 Commodo_EG.bit.GP2
#define Cde_EG_Av_Pos1 Commodo_EG.bit.GP3 // Commande Essuie Glace Avant en Position1
#define Cde_EG_Av_Pos2 Commodo_EG.bit.GP4 // Commande Essuie Glace Avant en Position2
#define Cde_EG_Ar Commodo_EG.bit.GP5 // Commande Essuie Glace Arrière
#define Cde_Lave_Glace_Ar Commodo_EG.bit.GP6
#define Cde_Lave_Glace_Av Commodo_EG.bit.GP7
#endif

Page: 34/36
Référence document: EID 057 040

5.4 Fichier de définition propre à la carte ATON-CAN


// *************************************************************
// Fichier de définition pour carte controleur CAN "ATON_CAN"
// Nom de fichier: Aton_CAN.h
//**************************************************************
#ifndef _PELICAN_H
#define _PELICAN_H
#define SJA 0xB30280 /* Adresse de la carte SJA */
#define MODE *(unsigned char *) (SJA) /* Registre de controle */
#define COMMAND *(unsigned char *) (SJA+0x01) /* Registre de commande */
#define STATUS *(unsigned char *) (SJA+0x02) /* Registre status */
#define INTERRUPT *(unsigned char *) (SJA+0x03) /* Registre d'interruption */
#define INTERRUPT_ENABLE *(unsigned char *) (SJA+0x04)
#define BUS_TIMING_0 *(unsigned char *) (SJA+0x06) /* Registre bus timing 0 */
#define BUS_TIMING_1 *(unsigned char *) (SJA+0x07) /* Registre bus timing 1 */
#define OUTPUT_CONTROL *(unsigned char *) (SJA+0x08) /* Registre output control */
#define ARBITRATION_LOST_CAPTURE *(unsigned char *) (SJA+0x0B)
#define ERROR_CODE_CAPTURE *(unsigned char *) (SJA+0x0C)
#define ERROR_WARNING_LIMIT *(unsigned char *) (SJA+0x0D)
#define RX_ERROR_COUNTER *(unsigned char *) (SJA+0x0E)
#define TX_ERROR_COUNTER *(unsigned char *) (SJA+0x0F)
#define RX_FRAME_INFO *(unsigned char *) (SJA+0x10)
#define TX_FRAME_INFO *(unsigned char *) (SJA+0x10)

/* Mode SIMPLE FRAME */


#define RX_ID_1_S *(unsigned char *) (SJA+0x11)
#define RX_ID_2_S *(unsigned char *) (SJA+0x12)
#define RX_DATA_S (unsigned char *) (SJA+0x13) /* Adresse debut message */
#define TX_ID_1_S *(unsigned char *) (SJA+0x11)
#define TX_ID_2_S *(unsigned char *) (SJA+0x12)
#define TX_DATA_S (unsigned char *) (SJA+0x13) /* Adresse debut message */

/* Mode EXTENDED */
#define RX_ID_1_E *(unsigned char *) (SJA+0x11)
#define RX_ID_2_E *(unsigned char *) (SJA+0x12)
#define RX_ID_3_E *(unsigned char *) (SJA+0x13)
#define RX_ID_4_E *(unsigned char *) (SJA+0x14)
#define RX_DATA_E (unsigned char *) (SJA+0x15) /* Adresse debut message */

#define TX_ID_1_E *(unsigned char *) (SJA+0x11)


#define TX_ID_2_E *(unsigned char *) (SJA+0x12)
#define TX_ID_3_E *(unsigned char *) (SJA+0x13)
#define TX_ID_4_E *(unsigned char *) (SJA+0x14)
#define TX_DATA_E (unsigned char *) (SJA+0x15) /* Adresse debut message */

/* Les 2 modes */
#define RX_MESSAGE_COUNTER *(unsigned char *) (SJA+0x1D)
#define RX_BUFFER_START_ADDRESS *(unsigned char *) (SJA+0x1E)
#define CLOCK_DIVIDER *(unsigned char *) (SJA+0x1F)

/* acceptance code et mask en mode reset uniquement */


#define ACCEPT_CODE0 *(unsigned char *) (SJA+0x10)
#define ACCEPT_CODE1 *(unsigned char *) (SJA+0x11)
#define ACCEPT_CODE2 *(unsigned char *) (SJA+0x12)
#define ACCEPT_CODE3 *(unsigned char *) (SJA+0x13)

#define ACCEPT_MASK0 *(unsigned char *) (SJA+0x14)


#define ACCEPT_MASK1 *(unsigned char *) (SJA+0x15)
#define ACCEPT_MASK2 *(unsigned char *) (SJA+0x16)
#define ACCEPT_MASK3 *(unsigned char *) (SJA+0x17)

/*** Configurations des bits des registres ***/


/* Registre STATUS */
#define BUS_STATUS 0x80
#define ERROR_STATUS 0x40
#define TRANSMIT_STATUS 0x20
#define RECEIVE_STATUS 0x10
#define TRANSMISSION_COMPLETE 0x08
#define TRANSMIT_BUFFER_STATUS 0x04
#define DATA_OVERRUN_STATUS 0x02
#define RECEIVE_BUFFER_STATUS 0x01

Page: 35/36
Manuel de travaux pratiques Réseau CAN - V.M.D. (Véhicule Multiplexé Didactique) Application: Commande
Essuie-Glace

// *************** TYPES ********************


// ***************************************************************
// * DECLARATIONS
// * des prototypes des fonctions spécifiques CAN - SJA1000
// *****************************************************************
/** Initialisation du SJA1000 en mode PeliCAN. */
void init_sja1000_peli_acc (char acc_code0, char acc_code1, char acc_code2, char acc_code3,
char acc_mask0, char acc_mask1, char acc_mask2, char acc_mask3);
/** Initialisation du SJA1000 en mode PeliCAN. */
void init_sja1000_peli ();
Trame Receive_Trame();
/** Envoi d'une trame */
void send_trame_peli (Message mes);
/** Reception d'un message. */
Message receive_trame_peli ();
/** Affichage des regsitres en PeliCAN */
void print_reg_peli ();
/* Affiche l'etat du STATUS REGISTER */
void show_status ();
/* Affiche le message passe en parametres sur une ligne */
void print_little (Message mes);
// initialisation de la carte CAN ATON
void Init_Aton_CAN();
char Ecrire_Trame(Trame message);
char Lire_Trame(Trame *message_recu);
void Affiche_Trame(Trame trame);

Page: 36/36

Vous aimerez peut-être aussi