Projet Stage Erasmus

Transcription

Projet Stage Erasmus
PROJET STAGE ERASMUS
Diplôme : Enginyeria Tècnica Aeronàutica, especialitat Aeronavegació
AUTEUR : Iván Prados Camargo
DIRECTEUR : Denis Michaud
SUPERVISEUR : Jordi Berengeur i Sau
DATE : 7 mai 2012
Titre : Projet Stage Erasmus
Auteur: Iván Prados Camargo
Directeur: Denis Michaud
Superviseur: Jordi Berengeur i Sau
Date: 7 mai 2012
Résumé
Le déroulement de ce projet a été réalisé dans le cadre Erasmus entre l’Ecole d’Ingénierie
de Télécommunication et Aérospatial de Castelldefels et le Centre de Ressources
d’Ingénierie et Maintenance Aéronautique.
On a participé dans le Projet DR-400 dont objectif est de construire une reproduction d’un
cockpit de l’avion de tourisme Robin DR400 afin d’être utilisé pour les Travaux Pratiques
des étudiants.
Le projet est constitué par deux parties coordonnées :
• La transmission d’une trame ARINC 429 de données d’altitude acquises de la maquette, au travers d’un microcontrôleur et son affichage sur l’oscilloscope.
• La création d’un système générateur de pressions anémo-barométriques, à partir de l’adaptation d’une pousse-seringue, qui sont normalement utilisées dans les
hôpitaux, afin de substituer la valise de test anémo-barométrique employée actuellement.
Mots clés : maquette cockpit DR-400, spécification ARINC 429, microcontrôleur,
pressions anémo-barométriques, pousse seringue, rapport cyclique, logiciels LabVIEW et C.
Title : Projet Stage Erasmus
Author: Iván Prados Camargo
Director: Denis Michaud
Supervisor: Jordi Berengeur i Sau
Date: May 7, 2012
Overview
This project has been fulfilled within the Erasmus program in collaboration with the School
of Telecommunications and Spatial Engineering in Castelldefels and the Center of Resources and Aeronautical Maintenance.
We have participated in the Project DR-400 whose objective is to build a replica of the
cockpit of the recreational plane Robin DR400. Once it should be completed, its mission
would be to serve as training material for the students.
The project consists of two interconnected parts:
• Transmission of the altitude data as registered from the model using the ARINC 429
syntax through a micro-controller and an oscilloscope.
• Creation of a system for generating anemo-barometric pressures from a common
syringe in order to replace the current test pack.
Keywords: scale model cockpit DR-400, ARINC 429 specification, microcontroller,
anemo-barometric pressure, pushed syringe, duty cycle, programming LabVIEW &
C.
Nous tenons à remercier dans un premier temps toute l’équipe du CR-IMA, pour avoir
assuré la réalisation de notre stage ; en bref Mr. Michaud et Renaud pour sa confiance et
ses conseils.
Nous remercions également Alain et Babeth pour sa patience et bon humeur.
Finalement nous n’oublions pas nos familles et amis de Barcelone à qui nous remercions
pour son soutien.
TABLE DES MATIÈRES
INTRODUCTION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PARTIE I
1
Transmission d’une trame Arinc 429 de données d’altitude . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
1. Spécification ARINC 429 . . . . . . . . . . . . . . . . . . . . . . . . . .
5
1.1. Caractéristiques
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
1.1.1. Physiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
1.1.2. Électriques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
1.1.3. Trasmission . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
1.2. Composition d’un mot ARINC 429 . . . . . . . . . . . . . . . . . . . . . . .
11
1.3. Encodage des données
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
1.3.1. Binaire - BNR . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
1.3.2. Binary Coded Decimal - BCD . . . . . . . . . . . . . . . . . . . . .
14
1.3.3. Données discrètes . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
1.3.4. AIM (Acknowledgement, ISO Alphabet No 5 and Maintenance Data)
15
1.3.5. Williamsburg/Buckhorn Protocol . . . . . . . . . . . . . . . . . . . .
15
1.4. Mot ARINC 429 d’altitude . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
1.4.1. Décodage du mot . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
2. Description du système . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.1. Description des blocs
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
2.1.1. Bloc 1 : Maquette . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
2.1.2. Blocs 2 et 3 : LabVIEW et NI USB-6008
. . . . . . . . . . . . . . .
20
. . . . . . . . . . . . . . . . . .
22
2.1.3. Bloc 4 : Starter Kit PK-HCS12C32
2.1.4. Bloc 5 : Oscilloscope LeCroy WaveSurfer 44Xs-A
2.2. Résultats
PARTIE II
. . . . . . . . . .
30
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
35
Planning et diagramme de Gantt . . . . . . . . . . . . . . 39
3. Conclusions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
PARTIE III
La suite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Bibliographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
ANNEXE A. Logiciels LabVIEW . . . . . . . . . . . . . . . . . . . . . . . 53
ANNEXE B. Analyse du programme C . . . . . . . . . . . . . . . . . . . 55
TABLE DES ACRONYMES
ARINC Aeronautical Radio Incorporated . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
AEEC Airlines Electronic Engineering Committee . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
AMC
Avionics Maintenance Conference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
FSEMC Flight Simulator Engineering & Maintenance Conference . . . . . . . . . . . . . . . . . . . . . . 5
LRU
Line Replaceable Unit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
MSB
Most Significant Bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
PWM Pulse-Width Modulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
RZ
Retour à Zéro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
ULDF User Label Description File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
TABLE DES FIGURES
1
2
Image de la maquette avec la valise anémo-barométrique. . . . . . . . . . . .
Parties du Projet DR400. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.1 Topologies ; étoile et bus-cascade . . . . . . . . . . .
1.2 Plusieurs communications entre LRU’s . . . . . . . . .
1.3 Paire de câbles torsadés et blindés. . . . . . . . . . .
1.4 Encodage Bipolaire RZ . . . . . . . . . . . . . . . . .
1.5 Paramètres de l’encodage . . . . . . . . . . . . . . .
1.6 Circuit standard Tx et Rx . . . . . . . . . . . . . . . .
1.7 Composition d’un mot ARINC 429 . . . . . . . . . . .
1.8 Label en détail . . . . . . . . . . . . . . . . . . . . .
1.9 Ordre de transmission . . . . . . . . . . . . . . . . .
1.10Exemple des différents formats de données ARINC 429
1.11Label d’altitude . . . . . . . . . . . . . . . . . . . . .
1.12Exemple d’un mot d’altitude . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2
2
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
7
7
8
9
10
10
11
13
13
15
16
17
2.1 Blocs du système. . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2 Mot de 32 bits divisé en 4 octets. . . . . . . . . . . . . . . . . . . . .
2.3 Interaction entre le altitude sub dm2.vi et Tx 11 bits.vi et Conv8bits.vi.
2.4 Bits - strobes de synchronisation. . . . . . . . . . . . . . . . . . . .
2.5 Connecteur 1 du Starter Kit PK-HSC12C32. . . . . . . . . . . . . . .
2.6 Branchement USB6008-Microcontrôleur. . . . . . . . . . . . . . . . .
2.7 Organigramme de syncrhonisation et le codage C associé. . . . . . .
2.8 Signaux des deux vitesses ARINC 429. . . . . . . . . . . . . . . . .
2.9 Signal d’horloge et des clocks de buses. . . . . . . . . . . . . . . . .
2.10Signaux ARINC 429 traduites en cycles d’horloge. . . . . . . . . . . .
2.11Cycles de CPU entre les deux instructions qui écrivent sur le Port B. .
2.12Affichage sur LabVIEW. . . . . . . . . . . . . . . . . . . . . . . . .
2.13Première capture sur l’oscilloscope avec le label inversé. . . . . . . .
2.14Label sans inverser. . . . . . . . . . . . . . . . . . . . . . . . . . .
2.15Maquette avec une indication de 700ft. . . . . . . . . . . . . . . . . .
2.16Indication LabVIEW. . . . . . . . . . . . . . . . . . . . . . . . . . .
2.17Mot émis à 13,5 kbps. . . . . . . . . . . . . . . . . . . . . . . . . .
2.18Mot émis à 100 kbps. . . . . . . . . . . . . . . . . . . . . . . . . . .
2.19Diagramme de Gantt. . . . . . . . . . . . . . . . . . . . . . . . . . .
2.20Exemple d’un test réalisé avec des LED’s. . . . . . . . . . . . . . . .
2.21Measure de la fréquence pour bien déterminer la vitesse de 12,5 kbps
2.22Images de la maquette des instruments gyroscopiques. . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
19
21
21
22
24
24
26
27
28
28
30
31
32
34
35
36
37
38
40
41
42
43
A.1 Bloc Diagram Tx 11bits.vi . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
A.2 Bloc Diagram Conv8bits.vi . . . . . . . . . . . . . . . . . . . . . . . . . . . .
A.3 Front panel altitude sub dm2.vi, indication en rouge sur le bouton qu’on a ajouté
et qui permet de choisir la vitesse . . . . . . . . . . . . . . . . . . . . . . . .
53
53
54
B.1 Exemple grapique du placement du bit 4 de l’octet #2 . . . . . . . . . . . . . .
B.2 Représentation d’un exemple graphique des tableaux motA, motB et motEmis .
56
58
LISTE DES TABLEAUX
1.1
1.2
1.3
1.4
1.5
1.6
ARINC Standards . . . . . . . . . . . . . . . . . .
Niveaux de tension . . . . . . . . . . . . . . . . .
Tolérances. Tb = Temps de bit et rb = vitesse de bit.
Signification du bit 29 en données BNR . . . . . .
Signification des bits SSM en données BNR . . . .
Interprétation du label d’un mot ARINC 429 . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
6
9
9
14
14
17
1
INTRODUCTION
En Catalogne, pour finir les études d’Enginyeria Tècnica Aeronàutica Especialitat en Aeronavegació, équivalents à une licence 3 en France, on demande le développement d’un
projet pendant au moins quatre mois mis en relation avec les études. Afin d’obtenir une
expérience différente et découvrir plusieurs façons de faire, nous avons envisagé de réaliser
notre projet à l’étranger.
Cette opportunité nous a été donnée par l’Institut de Maintenance Aéronautique à travers l’Université Bordeaux 1, et le projet a été développé dans un cadre Erasmus avec
un accord bilatéral entre l’Université Bordeaux 1 et l’Universitat Politècnica de Catalunya
en bref notre école EETAC (Escola d’Enginyeria de Telecomunicacions i Aeroespacial de
Castelldefels).
Le Centre de Ressources en Ingénierie et Maintenance Aéronautique (CR-IMA) appartient
au département Mécanique, Aéronautique et Ingénierie (MAI) de l’UFR de physique dédié
à l’Aéronautique de l’Université Bordeaux 1. Cet Institut crée en 1992 est situé à Mérignac,
dans une zone proche de l’aéroport et offre aux étudiants les diplômes de :
• Licence Professionnelle en Maintenance Aéronautique (Bac+3) ;
• Licence 3 en Maintenance Aéronautique qui à son tour donne accès au Master
Génie des Systèmes Aéronautiques et des Transports (GSAT) (Bac+5) avec trois
spécialités d’ingénierie :
– Maintenance Aéronautique (IMA) ;
– Systèmes Electroniques Embarqués (ISEE) ;
– Structures Composites (ISC).
La durée totale du stage à l’IMA a été d’environ cinq mois. Nous avons commencé vers
la mi-novembre 2011 et nous allons finir le 11 avril 2012, mais dans cette période là il
faut considérer les vacances de Noël et de Février ainsi que la rédaction du rapport en
français.
Nous avons travaillé sur le développement d’une maquette didactique qui représente le
cockpit d’un avion de tourisme Robin DR400. Cette maquette est utilisée par les élèves de
l’IMA dans ses Travaux Pratiques pour comprendre les variations des paramètres de vol
en fonction de l’altitude et leur permet aussi de visualiser le codage des données d’altitude
transmises à l’station sol.
Le déroulement de cette maquette est réalisé en différentes étapes par plusieurs étudiants
en License 3, Master 1 et 2.
2
Projet Stage Erasmus
F IGURE 1 – Image de la maquette avec la valise anémo-barométrique.
Le projet a été divisé en deux parties (indiquées sur la figure 2) :
1. La transmission d’une trame Arinc 429 contenant les données d’altitude issues de la
maquette DR400 qui sont récupérées et décodées par l’oscilloscope LeCroy WaveSurfer 44Xs-A, et qui offre la possibilité d’acquérir la trame sous le logiciel LabVIEW
et sur Internet au travers d’une adresse IP.
2. Le développement d’un système capable de générer des pressions anémo-barométriques
avec une pousse seringue, afin de substituer la valise de Test Pitot-Statique.
F IGURE 2 – Parties du Projet DR400.
Première partie
Transmission d’une trame Arinc 429 de
données d’altitude
4
Projet Stage Erasmus
Aujourd’hui l’avionique est devenue une composante essentielle des aéronefs. Les ARINC
Standards décrivent l’avionique, les systèmes du cockpit et les protocoles de communications à employer, entre autres. Ils sont utilisés par la majorité des fabricants, des lignes
aériennes et d’autres entreprises vinculées à l’aviation du monde. Il y a trois types d’ARINC
Standards :
• ARINC Caracteristics
• ARINC Specifications
• ARINC Reports
Chaque type est mise en relation avec unes séries ARINC. Concrètement, ARINC 429
correspond à une Spécification pour les bus avioniques, et est utilisée en avions come
le A-320 ou le B-767, en autres. On a développé un système pour émettre une trame
en respectant cette spécification pour les données d’altitude qu’on obtien de décoder le
codage Gillham, que l’alticodeur transmit au transpondeur de la maquette DR400.
Spécification ARINC 429
5
CHAPITRE 1. SPÉCIFICATION ARINC 429
Aeronautical Radio Incorporated (ARINC) est une société mondiale fondé en 1929 par la
Federal Radio Commission 1 , et dirigée par les quatre plus grandes lignes aériennes du
moment. Le but était créer, coordonner et regrouper les spécifications et standards des
systèmes électroniques et de télécommunications dans la industrie de l’aviation, hors le
cadre légal des gouvernements. Actuellement ARINC appartient à Carlyle Group et est
intégrée par différentes associations des lignes aériennes ainsi que des sociétés unies à
l’aviation. Aujourd’hui est le plus grand fournisseur de solutions, standards et spécifications
de systèmes de télécommunications aéronautiques et de systèmes embarqués.
• Airlines Electronic Engineering Committee (AEEC), créé en 1949. Sa fonction
est faire des standards et des solutions techniques pour l’équipement du cockpit et
l’avionique. Il est intégré par représentants des lignes aériennes, comme KLM, et
par fabricants d’aéronefs comme Airbus ou Boeing.
• Avionics Maintenance Conference (AMC), créé en 1949, contribue à incrémenter
la fiabilité et améliorer la maintenance pour réduire les coûts d’opération des systèmes
embarqués. Elle est intégrée par plus de 750 experts de la maintenance d’avionique
du monde.
• Flight Simulator Engineering & Maintenance Conference (FSEMC), créé en
1994, est l’entité responsable de fournir des solutions pour l’opération et la maintenance des simulateurs de vol. En plus, ils font des standards techniques pour
incrémenter la qualité des simulateurs de vol et réduire son coût opérationnel. Il est
intégrée par plus de 300 experts des simulateurs de vol du monde.
Les standards techniques adoptés par les trois comités sont publiés comme ARINC Standards par la société ARINC. Par conséquent, ils décrivent l’avionique, les systèmes du
cockpit et les protocoles de communications, entre d’autres. Ils sont utilisés par la majorité
des fabricants, des lignes aériennes et des entreprises vinculées à l’aviation du monde.
Il y a trois types d’ARINC Standards :
• ARINC Characteristics, qui définissent la forme, le branchement, la fonction et la
interface de l’avionique, systèmes du cockpit et bus de communication aéronautique.
Sont documents spécifiques et définissent chaque équipement individuellement.
• ARINC Specifications, qui déterminent les paramètres physiques et d’assemblage
de l’équipement avionique et du cockpit, les standards de communications des
données et de sécurité ainsi que les langages de programmation d’haut niveau.
• ARINC Reports, qui servent comme guide et information sur les bonnes practices
dans l’industrie de l’aviation. Normalement ils mettent en relation avec la maintenance et l’ingénierie des équipements avioniques ainsi que des simulateurs de vol.
Chaque type d’ARINC Standards est mis en relation avec une série ARINC :
1
Aujourd’hui conue comme Federal Communications Commission
6
Projet Stage Erasmus
ARINC Standards by Aircraft Generation
Networked Aircraft
Digital Aircraft &
Flight Simulators
Analog Aircraft &
Flight Simulators
Characteristics
ARINC 700-Series
ARINC 700-Series
ARINC 500-Series
Specifications
ARINC 800-Series
ARINC 600-Series
ARINC 400-Series
ARINC 400-Series
Reports
ARINC 800-Series
ARINC 600-Series
ARINC 400-Series
ARINC 400-Series
TABLE 1.1 – ARINC Standards
D’un côté, on peut voir dans le tableau 1.1 que la série ARINC 400 a Rapports et Spécifications
qui donnent les directives de développement pour l’équipement spécifié par les séries
ARINC 500 et 700. En plus, ces spécifications ont les guides pour l’installation, le câblage,
les bus et bases de données, et information générale.
D’un autre côté, on peut voir aussi dans le tableau 1.1 que les séries 500 et 700 définissent
caractéristiques. Dans le cas de la série 500 on trouve des références à l’équipement de
l’avionique analogique utilisé aux anciennes aéronefs comme le B-747, le DC-9 ou l’A-300,
entre d’autres. Dans le cas de la série 700 on trouve le même mais dirigé à l’avionique
digitale, qui est incluse dans les aéronefs plus modernes.
En résumé, la spécification ARINC 429 définit un standard pour le transfert de données
digitales qui a été créé par ARINC en 1978, et développé par rapport la spécification
ARINC 419 créé en 1966 dont la dernière révision a été en 1983.
L’ARINC 429 a trois parties :
• ARINC Specification, Part 1 : A les paramètres physiques ainsi que les électriques,
l’attribution du label et les formats du mot.
• ARINC Specification, Part 2 : A les standards pour des données discrètes.
• ARINC Specification, Part 3 : A les techniques pour le transfert des données.
À chaqu’une lui corresponde un document différent. On peut les obtenir au travers de la
page web de l’AEEC en format papier ou pdf. Aujourd’hui, les révisions de chaque partie
en vigueur sont la 17, la 16 et la 19 respectivement.
Ensuite on montre un résumé de la Spécification ARINC 429 avec des paramètres les plus
importants.
Spécification ARINC 429
1.1.
7
Caractéristiques
Un bus de communications selon la spécification ARINC 429 doit être bifilaire, torsadé
et blindé. En plus, la communication est basé sur le Mark 33 Digital Information Transfer
System, qui établit une transmission des données série et unidirectionelle. Il y a deux types
de débit, 12-14,5 kbps et 100 kbps. Les données sont transférées sur mots de 32 bits.
1.1.1.
Physiques
Chaque émetteur peut être connecté au plusieurs récepteurs (20 au maximum). La topologie peut être en étoile ou en bus cascade, voir la figure 1.1. Pour avoir une communication
bidirectionnelle entre Line Replaceable Unit (LRU)2 on doit utiliser deux bus ARINC 429
distincts, voir la figure 1.2.
F IGURE 1.1 – Topologies ; étoile et bus-cascade
F IGURE 1.2 – Plusieurs communications entre LRU’s
1.1.2. Électriques
Le moyen de transmission spécifié par l’ARINC 429 doit être un paire de câbles torsadés
et blindés, avec une impédance de 78 Ω, voir la figure 1.3. Le blindé doit être connecté à la
2
Un LRU est un composante modulaire d’un système qu’on peut le remplacé facilement et rapidement
sens avoir besoin de démonter d’autres composantes du système.
8
Projet Stage Erasmus
masse des dispositifs aussi que les connecteurs pendant la largueur du bus. La longueur
maximale établi est de 100m par raisons d’atténuation, mais selon le dessin l’on la peut
allonger tant comme sait opportun. En plus, il faut éviter que les terminassions des lignes
soit en curt circuit ou circuit ouvert , puisque on peut affaiblir la immunité au bruit et l’on
peut susciter à un fonctionnement discontinu de la communication entre les LRU.
F IGURE 1.3 – Paire de câbles torsadés et blindés.
1.1.3.
Trasmission
L’émetteur transfert un signal différentiel entre les lignes A et B. Il y a deux débits spécifiés :
12-14,5 kbps et 100 kbps ±1%. La vitesse la plus utilisée est la lente. Sur le bus ne peut
pas avoir qu’un émetteur, la reste doit être récepteurs. La communication entre l’émetteur
et les récepteurs est unidirectionnelle, par conséquent est open loop, les dernières n’ont
pas besoin d’informer aux fonts que la information est bien arrivé. Dans le cas que l’on
veut un dialogue entre deux LRU on doit utiliser deux bus ARINC 429 distincts.
1.1.3.1.
Encodage
On fait servir un encodage Bipolaire Retour à Zéro (RZ). Comme ça, on a trois états :
HIGH, NULL et LOW. Dans le tableau 1.2 l’on peut voir les différents niveaux de tension
sait pour l’émission ou la réception. Les valeurs d’émission sont nominaux, sens charge
sur l’émetteur. D’un autre côté, les valeurs de réception ont dépendance de la longueur du
câblage, le nombre de LRU branchés à la ligne et la qualité du blindé, entre d’autres. Dans
le tableau 1.2 on spécifique les niveaux idéales (sens bruit), et les obtenus normalement
aux récepteurs réels (avec bruit).
Dans un codage Bipolaire RZ, la transmission d’un 1 logique on le fait en changer l’état
NULL au HIGH dans la première moitié de la période, dans la deuxième moitié on retour
à l’état NULL. Pour la transmission d’un 0 logique, on le fait comme l’on a expliqué avant,
mais à la place de l’état HIGH on met un état LOW. On peut observer qu’on a un signal
d’horloge implicit sur la transmission. Les mots de 32 bits doivent être séparés par 4 bitstime NULL au minimum, et que le récepteur les utilise comme synchronisation entre les
différentes mots.
Spécification ARINC 429
9
F IGURE 1.4 – Encodage Bipolaire RZ
Voie
HIGH
NULL
LOW
Sortie de l’émetteur
A↔B
+10V ± 1
0V ± 0, 5
−10V ± 1
A ↔ GND
+5V ± 0.5
0V ± 0, 25
−5V ± 0.5
B ↔ GND
−5V ± 0.5
0V ± 0, 25
+5V ± 0.5
Entrée au récepteur sens bruit
A↔B
+7, 25V → +11V
+0, 5 → −0, 5
−7, 25V → −11V
Entrée au récepteur avec bruit
A↔B
+6V → +13V
+2, 5 → −2, 5
−6V → −13V
TABLE 1.2 – Niveaux de tension
Paramètres de l’encodage
Dans la figure 1.5 et le tableau 1.3 on montre les définitions, paramètres et tolérances de
temps du signal. On peu contrôler ces temps avec des dessins des circuits RC, selon le
fabricant.
Paramètre
Rapide (100 kbps ±1%)
Lente (12 - 14,5 kbps ±1%)
Tb
10µsec ± 2, 5%
1
2 Tb
5µsec ± 5%
1
rb µsec ± 2, 5%
Tb
2 ± 5%
Flanco de subida
1, 5µsec ± 0, 5µsec
10µsec ± 5µsec
Flanco de bajada
1, 5µsec ± 0, 5µsec
10µsec ± 5µsec
TABLE 1.3 – Tolérances. Tb = Temps de bit et rb = vitesse de bit.
10
Projet Stage Erasmus
F IGURE 1.5 – Paramètres de l’encodage
1.1.3.2. Équipement émetteur et récepteur
L’impédance de l’émetteur doit être de 75 ± 5 Ω divisée de manière égale entre les deux
lignes, voir la figure 1.6. On aura l’émetteur adapté en impédance avec la ligne qui permet
éviter pertes de puissance dans la transmission.
Le récepteur doit avoir une impédance d’entrée mesuré entre les deux lignes et chaque
ligne et masse de 12 kΩ au minimum pour éviter des effets de charge, Rin >> Rbus .
En plus, la résistance totale d’entrée de chaque récepteur, avec RI, RH et RG, doit être
supérieur à 8 kΩ, qui deviens 400 Ω quand les 20 récepteurs maximales spécifiés par
ARINC 429 sont branchés en parallèle au bus . Cette charge serait la minimale du bus et
par conséquent la maximale que doit avoir l’émetteur.
On peut voir les schèmes de base d’un émetteur et d’un récepteur et les valeurs des
composants.
F IGURE 1.6 – Circuit standard Tx et Rx
• Résistance d’entrée différentielle, RI ≥ 12kΩ
• Capacitance d’entrée différentielle, CI ≤ 50pF
• Résistance de la ligne par rapport à la masse, RH y RG ≥ 12kΩ
• Capacitance de la ligne par rapport à la masse , CG et CH ≤ 50pF
Spécification ARINC 429
11
• Resistance totale, RI k RH k RG ≥ 8kΩ
1.2.
Composition d’un mot ARINC 429
Chaque émetteur est en transmission continue, soit mots ou états NULL. Normalement
chaque mot correspond à une donnée, mais il y a de fois que l’on a besoin de plus d’un
mot pour transmettre le donnée. Dans la section 1.3. l’on explique les formats d’encodage
de données les plus utilisées et qui sont définis par la spécification.
Le mot ARINC 429 est codé en 32 bits. Chaque mot est composé par cinq champs primaires :
F IGURE 1.7 – Composition d’un mot ARINC 429
• Parité impaire (1 bit).
• Sign/Status Matrix (SSM) (2 bits).
• Données (19 bits).
• Source/Destination Identifier (SDI) (2 bits).
• Label (8 bits).
Les champs les plus indispensables sont le label et la parité. Par conséquent, dans certains cases, l’on peut faire servir les champs SSM et SDI pour augmenter les champ des
données.
Partié
On peut détecter un nombre impair de bits erronés de la transmission, mais l’on peut
pas les corriger. Le bits le plus fort toujours est le bit de parité dans un mot ARINC 429.
Normalement, on fixe la parité impair excepte pour des cases concrets. Parité impaire veut
à dire qu’il doit avoir un nombre impair de bits avec la valeur 1 dans le mot. Pour y arriver,
l’émetteur fixe soit un 0, soit un 1 sur le champ de parité. Comme ça, le récepteur sait le
nombre de 1 que doit avoir dans le mot. Par exemple, si les bits 1-31 ont un nombre paire
de 1, le bit de parité on le fixe à 1, pour avoir un nombre de 1 impaire. Au contraire, si les
bits 1-31 ont un nombre impaire de 1, le bit de parité on le met à 0.
12
Projet Stage Erasmus
SSM
Assignée au bits 31 et 30 du mot ARINC 429. Ce champ définit l’état du hardware et
des équipements, le mode opératif ou la validité des données. En résumé, indiquer des
problèmes dans la partie de l’émetteur. Selon le format des données, la valeur du SSM
ont une signification différente.
Donées
Des 32 bits du mot au moins 19 sont destinés aux données, du bit 29 jusqu’a le bit 11. Ils
peuvent être codées en différents formats. Il y a aussi formats qui ne sont pas normalisées
implémentées par des fabricants. Les bits non utilisées dans le champs des données on
les met à 0, et l’on les appelle PAD bits.
SDI
Assigné au bits 9 et 10. Ce champ est utilisé quand il y a plusieurs récepteurs branchés à
l’émetteur. Il indique la source ou la destination du mot. Le récepteur sait son identifiant et
il le compare avec le mot et savoir ainsi qu’il est destiné à lui. Si les deux bits sont à zéro
le mot est destiné à tous les récepteurs du bus.
On ne peut avoir que quatre combinaisons, trois si on reste la ’00’, et identifier 20 récepteur
n’est pas possible. Mais normalement il n’y a pas de branchement entre les systèmes qui
traitent différents types de données. On peut faire servir ce champ comme une extension
du champ des données ou du label.
Label
Est un des champs le plus importants du mot car il s’utilise pour indiquer le format du
champs des données ainsi que pour identifier des paramètres associés. Selon le label, le
récepteur sait le décodage à appliquer sur les données. Tous les LRU ont une mémoire
ROM avec le label correspondante à ses opérations, et les instructions pour traiter les
données.
Il est codé en trois chiffres octaux. Il y a 28-1 labels différents, mais la ”000” ne se fait pas
servir. Le bit le plus faible du mot est le bit le plus fort du label, mais on transmis
le label en sens inverse, le bit le plus faible en premier, par conséquent le sens de
lecture doit être inverse aussi, voir figure la 1.8. Le LRU récepteur est le responsable de
lire le label dans le bon sens, et par rapport au label il est responsable aussi de faire un
bon décodage des données.
Spécification ARINC 429
13
F IGURE 1.8 – Label en détail
Ordre de transmission
Le bit de poids faible du mot (Least Significant Bit en Anglais) est transmis en premier
temps , voir la figure 1.9.
F IGURE 1.9 – Ordre de transmission
1.3.
Encodage des données
Les données peuvent être codées en différents formats :
• Binaire - BNR
• Binary Coded Décimal - BCD
• Données discrètes
• AIM (Acknowledgement, ISO Alphabet No 5 and Maintenance Data)
• Williamsburg/Buckhorn Protocol
Ensuit on explique chaque format mais l’on ne détaille que le format BNR, qui est le
spécifié pour les données d’altitude.
1.3.1.
Binaire - BNR
Ce format est un des plus utilisés. La donnée est écrite comme un nombre binaire, c’est le
même format que sur les ordinateurs modernes. Le bit 29 indique le signe de la donnée,
voir table 1.4. La interprétation est associée au label. Par exemple, si le label indique une
donnée de latitude, le récepteur interprétera le bit 29 comme Nord ou Sur, selon si il y a
un 0 ou un 1.
Le bit 28 est le plus fort des données et représente la moitié du facteur d’échelle. Le bit 27
représente 1/4 du facteur d’échelle, etc. C facteur d’échelle est associé au label et on le
14
Projet Stage Erasmus
Bit 29
Signification
0
Positif : Plus, Nord, Est, Droite, Vers, au-Dessus
1
Négatif : Moins, Sud, Ouest, Gauche, De o Sous
TABLE 1.4 – Signification du bit 29 en données BNR
peut trouver dans l’Attachment 2 : Data Standards du Partie 1 de la Spécification ARINC
429.
Dans la figure 1.10 on peut voir un exemple qui correspond à un mot de vitesse.
Le système d’altitude est un des plusieurs qui utilise ce type d’encodage. Alors, les données
d’altitude sont codées en BNR. Plus bas, on explique un exemple de décodage d’une
donnée d’altitude comme les traités dans ce projet.
Dans ce cas, le champ SSM on l’utilise pour informer de l’état de fonctionnement du
récepteur, voire table 1.5.
Bit
Signification
30
31
0
0
Failure Warning
0
1
No Computed Data
1
0
Functional Test
1
1
Normal Operation
TABLE 1.5 – Signification des bits SSM en données BNR
1.3.2.
Binary Coded Decimal - BCD
Ce format est très commun aussi. La donnée est écrite en groups de 4 bits et que l’on
interprète comme une chiffre décimale. Il y a jusqu’à cinq niveaux qu’on peut utiliser en
fonction du label associé. Le sub-champ 29-27 représente la chiffre la plus forte, mais la
valeur décimale ne peut pas être plus que 7. Si la valeur es plus grande que 7, la chiffre la
plus forte serait le sub-champ 26-23 et on remplit les trois bits du digit 1 avec des 0 (PAD).
On peut faire servir dans ce cas les bits du SDI, comme par exemple pour l’indication
du cap qu’on a besoin de 6 chiffres (000°00,0’). La place de la virgule pour indiquer les
décimaux et le facteur d’échelle sont associés au label. Dans la figure 1.10 on peir voir un
exemple qui correspond à un mot de de distance au DME.
Spécification ARINC 429
1.3.3.
15
Données discrètes
Dans ce format chaque bit du mot es relié à un paramètre d’un système concrète, et selon
si il y a un 1 ou un 0 le significat sera différent. Par exemple, dans un mot avec label
005 (Donnés du moteur) peut avoir un bit associé à un paramètre qui indique si il y a un
erreur sur le microprocesseur, si on envoie un 0, il y a un erreur (fail), si on envoie un 1 est
correcte (pass). Dans la figure 1.10 on peir voir un exemple.
Ce format est détaille dans la Partie 2 de la Spécification ARINC 429.
En plus, dans le mot de 32 bits on peut envoyer aussi données discrètes mélangées soit
en format BNR ou BCD. On utilise les bits de remplissage (PAD) en débutant du bit 11
jusqu’à le data pour envoyer ces données discrètes. Si non, on envoie ces bits fixés à 0
(PAD).
F IGURE 1.10 – Exemple des différents formats de données ARINC 429
1.3.4.
AIM (Acknowledgement, ISO Alphabet No 5 and Maintenance
Data)
Dans l’ARINC 429 il y a aussi la possibilité de traite des données reliées à la maintenance
et au messages alphanumériques. Dans ce type de données on un échange une séquence
de messages entre l’émetteur et le récepteur. Les messages alphanumériques sont codés
en ISO Alphabet No 5 (ASCII). Actuellement, ce format est en train d’être substitué par le
Williambsburg/Buckhorn protocol.
1.3.5.
Williamsburg/Buckhorn Protocol
C’est un système pour transférer fichiers entre deux équipements ARINC 429. Est un bit
oriented Protocol et a besoin d’accuses de reçoit et, par conséquent, d’une communication
bidirectionnelle entre les deux sources. On l’utilise surtout pour des communications entre
16
Projet Stage Erasmus
une source de la ligne aérienne et son aéronef. Dans la Partie 3 de la Spécification ARINC
429 il y a une explication plus détaillé du bit oriented Protocol Williamsburg/Buckhorn.
1.4.
Mot ARINC 429 d’altitude
Les données d’altitude sont encodées en BNR. Le label qui corresponds à l’altitude, selon la Spécification ARINC 429 Partie 1, Attachment 1-1, est la 203, voir figure 1.11. On
peut observer qu’il y a d’autres systèmes associés à ce label, comme la température du
réservoir de combustible ou la pression statique, entre d’autres. Cela est parce que dans
un aéronef il y a plus de 255 paramètres à échanger entre plus de 255 systèmes, et avec
8 bits de label n’est pas possible couvrir cette demande. La solution est ajouter un identificateur d’équipement et que chaqu’un sait le sien. Mais, normalement, ces identificateurs
ne sont pas exploités par les fabricants car ils ne branchent que les équipes qui traitent
les mêmes types de données entre eux. Il n’y aura pas une connexion entre un émetteur
du système de combustible et un récepteur du système d’altitude.
F IGURE 1.11 – Label d’altitude
Spécification ARINC 429
1.4.1.
17
Décodage du mot
On va décoder à mode d’exemple un mot d’altitude extrait de la Spécification ARINC 429
Partie 1, Attachment 6 :
F IGURE 1.12 – Exemple d’un mot d’altitude
Décodage
• Label : 8 premiers bits. L’ordre de réception est : 8, 7, 6,. . ., 1. On les regroupe de
trois en trois en ordre de réception et on fait la conversion en format octal, voir la
table 1.6.
Bit
1
2
3
4
5
6
7
8
1
1
Valeur binaire
1
0
0
0
0
0
Binaire =⇒ Octal
2
0
3
TABLE 1.6 – Interprétation du label d’un mot ARINC 429
18
Projet Stage Erasmus
• Bits 9 et 10 : Normalement correspondent au champ SDI. Dans cette exemple ils
l’ont mis comme bits de remplissage (PAD en Anglais).
• Bit 11 : On l’utilise pour définir la résolution d’altitude (ratio indiqué par chaque bit
successif). Un 1 indique une résolution de 100ft et un 0 de 1 f t . Dans ce cas, on a
une résolution de 1 f t .
• Bits 12-28 : Dans ces bits il y a les données (encodage BNR). Pour les décoder il
fout suivi le processus suivant :
1. Dans un premier temps il faut obtenir le facteur d’échelle, qui est déterminé par
le type de donnée associée au label. Dans ce cas serait 217 = 131072 f t .
2. Le bit 28 est le MSB et est la moitié du facteur d’échelle et les bits successifs
décrémentent son poids en puissance de 2 jusqu’a le bit 12 qui est le LSB. On
peut faire la conversion comme suivi :
Altitude = F.échellemax.
1
1
1
1
Bit28
+
Bit27
+
Bit26
+
·
·
·
+
Bit12
21
22
23
217
(1.1)
Si on substitue les valeurs :
1
1
1
1
1
1 Altitude = 131072 3 + 5 + 8 + 11 + 16 + 17 = 21059 f t
2
2
2
2
2
2
On obtiens une altitude décode de 21059 f t .
• Bit 29 : Bit de signe. Dans ce cas indique une valeur positif.
• Bits 30 et 31 : SSM. Dans ce cas (11) il indique une opération normale.
• Bit 32 : Le bit de parité. Dans ce cas est rempli avec un 0, puisque le nombre de 1
dans le mot es déjà impair, concrètement il y a 11 bits fixés à 1.
Le récepteur doit être préparé pour mener à bien tout ce processus et décoder les données
du mot ARINC 429. En plus, il est le responsable de décoder dans le bon sens le label.
Description du système
19
CHAPITRE 2. DESCRIPTION DU SYSTÈME
Le système conçu pour faire une transmission et une acquisition d’une trame de données
ARINC 429 est composé par les cinq blocs que l’on peut voir ci-dessous :
F IGURE 2.1 – Blocs du système.
1. Maquette d’un tableau de bord d’une Robin DR400 qu’est le point de départ de ce
projet. Il y avait beaucoup de projets déjà faits sur celle-ci.
2. Logiciel développé sous LabVIEW.
3. NI USB-6008.
4. Starter Kit PK-HCS12C32 de Softec Microsystems pour le microcontrôleur Motorola
MC9S12C32.
5. Oscilloscope LeCroy WaveSurfer 44Xs-A.
2.1.
Description des blocs
2.1.1.
Bloc 1 : Maquette
Le bloc maquette est le point de départ de ce projet. Celle-là est composé par :
• Un altimètre modèle ALT20IMF-3 du fabricant Falcon Gauge.
• Un anémomètre modèle ASI 220N-3 du même fabricant.
• Un transpondeur modèle GARMIN GTX330.
• Un alticodeur modèle ACK A-30 Digitizer.
• Un ensemble de tuyaux qui interconnectent les instruments qui ont besoin de pression statique comme l’altimètre, l’anémomètre et l’alticodeur.
• Un NI USB-6008, différent de celui que l’on a nommé dans le diagramme de blocs.
On utilise cet interface USB pour l’acquisition par LabVIEW des données que l’alticodeur envoie au transpondeur.
• Une prise de pression statique.
20
Projet Stage Erasmus
• Une prise de pression totale.
D’autre côté, il y a un logiciel LabVIEW associé qui s’appelle ProjetDR400.vi que l’on
utilise pour visualiser les données que l’alticodeur envoie au transpondeur en temps réel.
Ces données sont acquises par le logiciel ProjetDR400.vi au travers du NI USB-6008 situé
dans la maquette. On peut décoder ces données (codage Gillham), et connaitre l’altitude
du porteur par rapport au niveau de la mer (niveau de vol). Une fois que l’on a acquis
l’altitude, ce programme fait la conversion en binaire et on construit le champ des données
ARINC 429 (bits 13-28) dans un tableau de 32 éléments. Cette dernière opération est faite
par un subvi intégré au programme principal appelé altitude sub dm2.vi. En plus, dans le
logiciel de ce subvi on peut choisir la valeur des champs restants : le label, le SDI, le signe,
la résolution et le SSM, voir la figure A.3 de le Chapitre 1 (Spécification ARINC 429). Si
l’on veut avoir un vrai mot ARINC 429 de données d’altitude, il faut que le label reste tout le
temps fixe à 203, comme défini dans la spécification ARINC 429 pour ce type de données.
Pour finir, ce tableau de 32 éléments est divisé en 4 octets prêts a être émis.
2.1.2.
Blocs 2 et 3 : LabVIEW et NI USB-6008
Le but de ces deux blocs est de traiter ces données d’altitude acquises par la maquette
dans le logiciel ProjetDR400.vi pour les transmettre au travers de l’interface NI USB-6008
(Bloc 3).
LabVIEW est un logiciel de programmation graphique qui à été publié par National Instruments en 1986 et aujourd’hui, grâce à sa programmation rapide et intuitive, c’est un
des software les plus utilisés dans l’ingénierie pour le développement de mesures, test et
contrôle de systèmes sophistiqués.
D’un autre côté, dans cette section on inclut aussi l’interface NI USB-6008 (Bloc 3) puisque
on commande ce dispositif avec LabVIEW. Celui-ci est un dispositif qui permet une acquisition Entrées/Sorties fonctionnelle de données. On peut le commander moyennant LabVIEW ou avec d’autres programmes codés en langage C, .NET, Visual Studio, etc. Le NI
USB-6008 est très utilisé dans les cadres académiques et universitaires. C’est idéal pour
les projets low cost, mais on peut l’utiliser aussi pour des applications plus sophistiquées.
La famille NI USB-6000 a dispositifs supérieurs comme le NI USB-6010 ou le NI USB6011, entre d’autres. Pour ce projet, les performances du NI USB-6008 sont suffisantes.
Le contrôle du NI USB-6008 est fait au travers du driver NI-DAQmx. Dans l’Annexe C on
peut voir ses spécifications.
2.1.2.1.
Logiciel développé
Comme on a déjà dit dans la section (bloc 1), le tableau de 32 éléments est créé et
divisé en 4 octets par le subvi altitude sub dm2.vi contenu dans le logiciel principal ProjetDR400.vi. On le divise pour utiliser la capacité du NI USB-6008, qui a douze Entrées/Sorties
digitales partagées en deux ports, le Port 0 (P0.0 à P0.7) et le Port 1 (P1.0 à P1.3).
Etant donné qu’on ne peut transmettre les 32 bits d’une trame ARINC simultanément, on
a décidé de faire 4 chargements successifs de mots de 8 bits sur le port P0. La mise
Description du système
21
en forme de ces 4 paquets (4 submots) sera réalisée par le microcontrôleur (Bloc 4) de
manière à générer une trame qui respecte la spécification ARINC 429.
Selon la spécification du NI USB-6008, les Entrées sont de type TTL (0-5V) et les sorties
sont de type collecteur ouvert (0-5V) avec un courant nominal sur chaque sortie de 8.5mA
et un courant maximale sur toutes les sorties de 102mA. Il n’y a pas de limitation dans la
vitesse d’émission ou de réception numérique.
LabVIEW est basé sur une exécution par flots de données qui avance de gauche à droite
et de l’extérieur à l’intérieur des structures de contrôle. Pour commencer à exécuter un
subvi ou une structure de contrôle il faudrait avoir tous les données d’entrée disponibles.
Si ces données ont une dépendance à d’autres subvi et/ou structures de contrôle, le flux
attend que toutes les données soient disponibles avant d’exécuter la structure ou le subvi.
Cette exécution par flots de données implique que les traitements qui n’échangent pas de
données sont libres de s’exécuter en parallèle.
Alors, on peut considérer que la limitation de vitesse est associée au système : l’ordinateur,
l’opérating système, le langage de programmation utilisé, etc. Dans ce projet on a utilisé la
version 2011 de LabVIEW et Microsoft Windows 7 comme système opératif sur l’ordinateur
avec un processeur Intel core i5 avec 4 Gb de RAM appartenant à l’IMA.
Donc, on démarre avec un mot de 32 bits divisé en 4 octets, voir la figure 2.2.
F IGURE 2.2 – Mot de 32 bits divisé en 4 octets.
Pour en arriver à ce résultat, on a développé deux subvi’s. Un pour convertir un octet
entrant en format booléen et l’autre pour transmettre les 4 octets :
F IGURE 2.3 – Interaction entre le altitude sub dm2.vi et Tx 11 bits.vi et Conv8bits.vi.
22
Projet Stage Erasmus
• Le Conv8bits.vi, qui est situé dans le Tx 11bits.vi. Celui-ci a pour rôle de convertir un tableau entrant de huit éléments de type entier en un autre sortant de type
booléen. Comme cela on a un tableau de huit bits.
• Le Tx 11bits.vi, qui se trouve dans le programme principal ProjetDR400.vi et est
relié avec le altitude sub dm2.vi. Ses fonctions sont dans l’ordre suivant :
– Prendre les octets sortants de altitude sub dm2.vi. Les données de ces octets
sont des tableaux à huit positions de type entier.
– Transmettre deux bits de synchronisation sur le port P1 du NI USB-6008, voir
la figure 2.4. Un des bits pour indiquer le début ou la fin d’un mot complet
(jaune), et l’autre pour indiquer qu’il y a un octet prêt a être lu (rouge). On les
appelle strobes de synchronisation. On transmet aussi un bit au début de la
transmission qui permet indiquer au prochain bloc (4) à quelle vitesse doit se
faire l’émission du mot.
F IGURE 2.4 – Bits - strobes de synchronisation.
– Envoyer l’octet qui doit être transmis au subvi Conv8bits.vi pour faire la conversion en booléen.
– Transmettre les huit bits de l’octet qui sont envoyés sur le Port P0 du NI USB6008.
– Retransmettre le strobe rouge pour indiquer au prochain bloc qu’on a envoyé
un octet.
– A la fin du quatrième octet, retransmettre les deux bits de synchronisation
forcés à 0 pour indiquer la fin du mot de 32 bits.
On peut voir le diagramme de blocs complète de chaque .vi dans l’Annexe A.
2.1.3.
Bloc 4 : Starter Kit PK-HCS12C32
Le but de ce bloc est de générer les deux lignes A et B, de la trame ARINC 429. Ces
lignes sont en opposition de phase et contiennent l’information à émettre. Plus tard il y
aura la possibilité de connecter ces 2 lignes vers un émetteur pour générer un signal
différentiel de ±10 V . Cet émetteur pourrait être composé normalement par des amplificateurs opérationnels ou par des commutateurs digitaux intégrés, comme un DG403DJ
qui est déjà utilisé dans un autre projet de l’IMA.
Description du système
23
Pour générer les deux lignes on utilise le Starter Kit PK-HSC12C32 de SofTec Microsystems qui intègre le microcontrôleur MC9S12C32 appartenant à la famille 68HC12 du
fabricant Motorola, voir l’Annexe C (numèrique). C’est un kit destiné aux débutants dans la
programmation de microcontrôleurs. Il est très utilisé dans le domaine académique, avec
de bonnes performances qui sont très utiles pour beaucoup d’applications. On peut voir
les principales performances et une description dans l’Annexe C (numèrique).
2.1.3.1.
Ports Utilisés
Le microcontrôleur a 80 pins avec plusieurs ports. voir l’Annexe C (numèrique). Chaque
port peut être programmé soit en entrée ou sortie.
Pour réaliser la réception des données issues de LabVIEW on utilise le Port A :
• Celui-ci dispose de 8 broches, PA0, . . . , PA7. Dans notre cas on le programme en
entrée.
Pour réaliser l’émission du mot ARINC on utilise le Port B :
• Celui-ci dispose de 8 broches, PB0, . . . , PB7. Dans notre cas on le programme en
sortie. PB0 pour la ligne A et PB1 pour la ligne B. De plus, on utilise PB7 vers
une LED pour représenter le signal Strobe rouge. Dans la configuration de base du
kit, ce port B est relié physiquement vers des LED pour visualisation de la section
DEMO, mais seul PB0, PB1 et PB7 sont utilisés.
Pour la synchronisation avec la couple bloc 2 & 3 et la détermination de la vitesse d’émission
de la trame ARINC 429 on utilise le Port T :
• Celui-ci dispose de 8 broches, PT 0, . . . , PT 7. Ce port donne accès au Timer Module, et on peut ainsi réaliser différentes fonctions avec le registre de temporisation
du MC9S12C32, aussi bien sur les entrées que sur les sorties. Les cinq premières
broches on peut les utiliser comme sortie Pulse-Width Modulation (PWM), ceci est
très utile pour le contrôle des moteurs à DC1 . Dans notre cas on le programme en
entrée pour la réception des deux bits de synchronisation (strobe jaune PT0, strobe
rouge PT2), et le bit de vitesse (PT1).
On peut voir que les ports utilisés ne sont pas groupés sur le même connecteur, mais on
aurait pu tout regrouper sur un seul connecteur. On pourrait avoir utilisé le Port T pour la
réception des données issues de LabVIEW au lieu du Port A et le Port P pour la synchronisation au lieu du Port T, voir figure 2.5. Mais l’on veut qu’un seul kit pour gérer toutes les
requêtes du projet DR400.
Ce projet est coordonné à celui que l’on explique dans la deuxième partie du rapport, et
qui a besoin de quatre sorties PWM. Le PWM intégré au microcontrôleur est accessible
1
Courant Continu
24
Projet Stage Erasmus
F IGURE 2.5 – Connecteur 1 du Starter Kit PK-HSC12C32.
sur le Port P. Alors, on a substitué le Port P par le Port T pour la synchronisation avec
la couple bloc 2 & 3 et la détermination de la vitesse d’émission, et le Port T par le Port
A pour la réception des données issues de LabVIEW. Par conséquent, on a du fabriqué
deux bus indépendants. Chaque bus a un connecteur femelle de 20 broches d’un côté, et
de l’autre côté on a connecté les fils de notre intérêt au NI USB-6008, voir la figure 2.6.
F IGURE 2.6 – Branchement USB6008-Microcontrôleur.
Description du système
2.1.3.2.
25
Synchronisation avec LabVIEW
En ce qui concerne la synchronisation entre les blocs 2 et 3 (LabVIEW-NI USB-6008) et le
bloc 4 (microcontrôleur) on a utilisé une communication unidirectionnelle c’est-à-dire sans
accusé de réception (acknowledge). Le but est que le bloc microcontrôleur doit savoir à
quel moment il y a des données sur le port A prêtes a être lues. Dans la figure 2.7 on peut
voir l’algorithme désigné pour réaliser cette synchronisation et les instructions en langage
C associées pour son implémentation sur le microcontrôleur. La structure de contrôle la
plus commune est do ; while, qui correspond aux attentes des différentes combinaisons
des bits de synchronisation. Cette instruction veut dire répéter ”quelque chose” tant que.
Dans ce cas on répète l’exécution de la boucle while tant que la condition est fausse. De
cette façon on attend que les bits de synchronisation du Port T (PT0 et PT2) indiquent
dans l’ordre :
1. qu’il n’y a pas des mots en cours de transmission : Jaune & Rouge = 0 ;
2. qu’il y a un mot qui commence à se transmettre : Jaune = 1 & Rouge = 0 ; et,
3. qu’il y a un octet prêt à être lu sur le Port A : Jaune = 1 & Rouge = 1.
On lit l’octet, on le met dans un tableau pour le traiter. Ensuite on attend que les bits de
synchronisation du Port T (PT0 et PT2) indiquent par ordre :
4. qu’il y a un changement d’octet : Jaune = 1 & Rouge = 0 ; et,
5. qu’il y a un nouveau octet prêt à être lu sur le Port A : Jaune & Rouge = 1.
Ces deux dernières opérations sont réalisées quatre fois, jusqu’à compléter les 32 bits du
mot ARINC 429. Le microcontrôleur est suffisamment rapide pour ne perdre aucun octet
pendant le traitement et arriver à lire le prochain octet sans problème. Il est plus rapide
que le couple LabVIEW - NI USB-6008 (blocs 2 & 3). Ensuite il faut attendre que les bits
de synchronisation indiquent la fin du mot de 32 bits :
6. Jaune & Rouge = 0.
26
Projet Stage Erasmus
do ; w h i l e ( ! ( PTT PTT0==FALSE && PTT PTT2==FALSE ) ) ;
do ; w h i l e ( ! ( PTT PTT0==TRUE && PTT PTT2==FALSE ) ) ;
do ; w h i l e ( ! ( PTT PTT0==TRUE && PTT PTT2==TRUE ) ) ;
f o r ( c o m p t e u r o c t e t =0 ; c o m p t e u r o c t e t < 4 ; c o m p t e u r o c t e t ++ )
{
submotarinc [ c o m p t e u r o c t e t ] =PORTA;
do ; w h i l e ( ! ( PTT PTT0==TRUE && PTT PTT2==FALSE ) ) ;
do ; w h i l e ( ! ( PTT PTT0==TRUE && PTT PTT2==TRUE ) ) ;
}
do ; w h i l e ( ! ( PTT PTT0==FALSE && PTT PTT2==FALSE ) ) ;
Nmotarinc ++;
F IGURE 2.7 – Organigramme de syncrhonisation et le codage C associé.
2.1.3.3.
Analyse du programme
Pour générer les deux lignes de la trame ARINC on a développé plusieurs fonctions et
un programme principal. On considère que le programme doit couvrir les cinq exigences
suivantes :
1. Faire une synchronisation correcte avec le bloc antérieur (Blocs 2 & 3), couple LabVIEW - NI USB-6008.
2. Lire l’octet quand il est disponible sur le Port A.
3. Mettre en place les quatre octets lus et créer un mot de 32 bits.
4. Générer les deux lignes, A et B, et vérifier la parité.
Description du système
27
5. Émettre sur le Port B le mot ARINC 429 à la vitesse demandé par l’utilisateur.
Dans l’Annexe B il y a la traduction à langage C de ces cinq exigences avec une explication
plus détaillé.
2.1.3.4.
Détermination de la vitesse
Dans la spécification ARINC 429 il y a deux débits permis : 100 kbps (rapide) ou 12 - 14,5
kbps (lente), voir le Chapitre 1 (Spécification ARINC 429). Afin de pouvoir choisir la vitesse,
on a ajouté un interrupteur dans le logiciel Tx 11 bits.vi que l’utilisateur peut actionner, voir
figure A.3 de l’Annexe A. Cet interrupteur actionne un bit que l’on transmet sur le Port
P1.2 du NI USB-6008 à la broche PT1 du microcontrôleur. Si le microcontrôleur reçoit un
1 (interrupteur actionné) il fera l’émission du mot ARINC 429 en vitesse rapide. D’un autre
côté, si le microcontrôleur reçoit un 0 (interrupteur non actionné), il fera l’émission du mot
ARINC 429 à vitesse lente.
On a choisi une valeur de 13,5 kbps pour la vitesse lente car il est plus simple d’obtenir
cette vitesse avec le microcontrôleur par rapport à 12.5 kbps. On peut voir dans la figure
2.8 les signaux des deux vitesses ainsi que les périodes :
F IGURE 2.8 – Signaux des deux vitesses ARINC 429.
Pour réaliser l’émission à ces vitesses avec le microcontrôleur en respectant l’encodage
bipolaire RZ on a utilisé la technique qui est expliquée à l’Annexe B (fonction EmettreARINC). On maintiens un temps déterminé la valeur, NULL et après la valeur HIGH/LOW,
sur le Port B. Ce temps dépend de la vitesse sélectionnée par l’utilisateur. Mais, celui ci
n’est pas choisi par hasard. On sait que l’oscillateur du kit travaille à 16 MHz, mais par
défaut, le microcontrôleur divise cette fréquence par deux. Comme celà, on a deux horloges de 8 MHz chaqu’une (une interne dont on n’a pas d’accès et une autre que l’on peut
contrôler). De cette façon, le microcontrôleur utilise deux clocks, chaqu’un à 8 MHz, pour
gérer le temps d’exécution des instructions, voir la figure 2.9.
Donc, on a accès à un signal carré de 8 MHz, avec une période (T) de 125 ns, qui en
même temps est la durée d’un cycle. Avec cette donnée et une simple opération on peut
28
Projet Stage Erasmus
F IGURE 2.9 – Signal d’horloge et des clocks de buses.
calculer combien de cycles d’horloge il faut maintenir la valeur sur le Port B pour émettre
le mot ARINC 429 à la vitesse désirée :
cycles nécessaires =
Td ésirée
Tclock
(2.1)
Pour la vitesse rapide :
cycles nécessaires =
10µs
= 80 cycles
125 ns
cycles nécessaires =
74µs
= 592 cycles
125 ns
Pour la vitesse lente :
Dans la figure 2.10 on peut voir un échantillon du signal ARINC 429 transmis aux deux
vitesses stipulées et ses périodes traduites en cycles. Comme on fait l’émission avec un
encodage bipolaire RZ, on a deux pauses à faire pendant une période. Une pour le retour
à zéro et l’autre pour la valeur du bit, HIGH ou LOW. Est évident qu’à chaque pause lui
correspond la moitié des cycles d’une période. Dans le cas de la vitesse rapide, chaque
pause doit être de 40 cycles, et dans la vitesse lente doit être de 296 cycles.
F IGURE 2.10 – Signaux ARINC 429 traduites en cycles d’horloge.
Description du système
29
Pour mener à bien le nombre de cycles associé à ces pauses on a utilisé le debugger du
Freescale Codewarrior, compris dans le kit HCS12C32.
On fixe un breakpoint à l’instruction PORT B = 0 (NULL) et un autre à l’instruction PORT B =
port &255 (HIGH/LOW). Comme cela, avec l’aide du debugger, on peut compter le nombre
de cycles entre chaque instruction. Grâce aux délais crées à partir des boucles for, quelques
fois complétées par des instructions asm nop, on a ajusté le nombre de cycles nécessaires
entre les deux instructions d’écriture sur le Port B afin de maintenir la valeur et faire les
pauses correspondantes à l’encodage bipolaire RZ selon la vitesse choisie.
Mais, le nombre d’instructions qu’il y a entre PORT B = 0 et PORT B = port &255 n’est
pas le même qu’il y a entre PORT B = port &255 et PORT B = 0. Par conséquent, le
nombre de cycles n’est pas identique, voire la figure 2.11. Par cette raison on a crée
différents délais pour attendre les mêmes cycles entre ces deux instructions.
Pour ajuster les cycles des délais, on a utilisé le debugger en mode Full Chip Simulation.
Ce programme C complet on le peut consulter dans l’Annexe B.
30
Projet Stage Erasmus
F IGURE 2.11 – Cycles de CPU entre les deux instructions qui écrivent sur le Port B.
2.1.4.
Bloc 5 : Oscilloscope LeCroy WaveSurfer 44Xs-A
Le but de ce dernier bloc est l’affichage de la trame ARINC 429 que l’on a généré. Pour
cela, on utilise un oscilloscope LeCroy WaveSurfer 44Xs-A.
Cet oscilloscope a un décodeur série qui permet d’analyser les données de plusieurs
standards de communication comme le bus CAN ou la spécification ARINC 429, entre
autres. Dans ce projet on n’utilise que l’option de décodage ARINC.
LeCroy WaveSurfer 44Xs-A présente l’avantage d’être basé en Windows XP et on peut
lui fixer une adresse IP pour y accéder au travers d’Internet et visualiser l’écran sur un
ordinateur, par exemple.
En plus, le fabricant LeCroy a prévu l’acquisition des données sur le logiciel LabVIEW
moyennant son adresse IP. On est arrivé à afficher sur LabVIEW les deux lignes, A et B,
Description du système
31
de la trame ARINC 429 émise par le microcontrôleur (Bloc 4), figure 2.12, mais on n’est
pas arrivé à acquérir le signal différentiel (fonction math de l’oscilloscope) ni à le traiter.
F IGURE 2.12 – Affichage sur LabVIEW.
Dans la partie III, entre d’autres propositions pour la suite du projet, on propose le développement
d’un logiciel LabVIEW capable d’acquérir la trame ARINC 429 de l’oscilloscope et de la
décoder.
Les drivers qu’on a installés dans l’ordinateur pour acquérir le signal de l’oscilloscope sur
LabVIEW via TCP/IP sont :
• Drivers de LeCroy qu’on a pu trouver dans la page web :
– LeCroy VICP Passport.
– IVI Shared Components 2.2.1. ce serait recommandable avant, installer et
exécuter le IVI Clean Up Utility qui est dans le même endroit ;
– X-Stream DSOs qui est un driver de type IVI-C and IVI-COM. Le fichier s’appelle IVI Driver 3.2.2.0-x86.
• Drivers de LabVIEW qu’on les peut trouver dans la page web de National Instruments :
– LeCroy Wave Series Oscilloscope,Analyzer qui appartiens au Certified LabVIEW Plug and Play Instrument driver. En plus, ce driver a des exemples pour
l’acquisition et le traitement des signales.
32
Projet Stage Erasmus
En ce qui concerne le décodeur série ARINC 429, on peut lui indiquer comme faire le
décodage. Dans la configuration de base il a trois options :
• 8 + 24 : Il interprète les 8 bits du label et les 24 restants comme champ de données ;
• 8 + 2 + 19 + 2 + 1 : Il fait l’interprétation générale de la Spécification ARINC
429, dont il y a 8 bits qui appartiennent au label, 2 bits du SDI, 19 pour le champ
des données, 2 bits du SSM et 1 bit de parité, et ;
• User Defined : où l’on peut charger un fichier de type Comma Separated Values
(CSV) et que LeCroy appelle User Label Description File (ULDF). On peut l’édité et
personnalisé pour décoder les différents champs du mot. Ce fichier doit être composé de 12 à 14 ULDF Tokens (objets). Ces objets sont ; Label 1 , EquipmentID2 ,
Name3 ,Units1 , Min5 , Max6 , SigBits7 , PosSense8 , Resolution9 , MinTransit 10 ,
MaxTransit 11 , LabelType112 , O f f set 13 , DetailsList 14 .
Par exemple, on peut éditer ce fichier pour décoder un mot d’altitude (BNR), avec
label 2032 :
/ / Label , EqptID , Name, U n i t , Min , Max , S i g B i t s , PosSense , Resol , MinTr , MaxTr , LabelType , O f f s e t , D e t a i l L i s t
203 ,6 , A l t i t u d e , f e e t s ,0 ,131072 ,17 , PosSen , 1 , 1 1 1 , 2 2 2 , L a b e l B i n a r y , 1 1
Avec cette configuration on est arrivé à décoder le mot ARINC 429 comme ci-dessous :
F IGURE 2.13 – Première capture sur l’oscilloscope avec le label inversé.
Dans l’image, on voie comme le décodeur ne reconnait pas le champ des données,
puisque le label qui a été décodé est le 301 et dans le ULDF on n’a spécifié que le
décodage pour le 203.
Pourtant, on peut ajouter au User Label Description File tous les labels qu’on veut et ils
auront les paramètres associés qu’on lui spécifique.
Comme on a émis le mot avec un label 203, et l’oscilloscope a interprété le 301, il a fallu
faire plus d’attention au décodage du label réalisé par le décodeur série ARINC 429 de
l’oscilloscope.
2
On a demandé support technique à LeCroy pour éditer le fichier puisque il n’y avait pas d’exemples
dans l’aide de l’oscilloscope ni dans sa page web. Ils nous ont envoyé un fichier d’exemple et documentation
associée qui nous a permit de l’éditer à notre convenance et qu’on la peut consulter dans l’Annexe C (version
numérique associé au projet)
Description du système
33
Pour essayer de comprendre l’origine de l’ambigüité, on a consulté la spécification ARINC
429 selon laquelle la transmission du label est réalisée en tête du mot et en ordre inverse :
bits 8, 7, 6, 5, 4, 3, 2, 1. Dont le bit le plus fort est le bit 1, et le bit le plus faible est le bit 8.
En plus, il faut que le décodeur du récepteur les regroupe de trois en trois, selon l’ordre de
réception et fasse la conversion en octal en considérant que le bit le plus fort est le bit 1.
D’un autre coté, on a parlé avec le support technique de LeCroy pour savoir comment
l’oscilloscope interprète le champ du label mais ils sont en train de réfléchir pour nous
donner une réponse.
En attendant une réponse de LeCroy, on a pensé trois hypothèses qui peuvent aider à
comprendre l’origine de cette ambigüité selon le problème :
• Problème 1 : L’interprétation de la position du bit le plus fort (Most Significant Bit
(MSB)).
– Hypothèses :
* Le LSB est le bit 8 et le MSB est le bit 1. Option que l’on croit correcte et
qu’on a verifié avec la Spécification ARINC 429 Part 1 qu’on peut trouver
à l’Annexe numèrique.
* Le LSB est le bit 1 et le MSB est le bit 8. Cela qui interprète l’oscilloscope
et quelques fabricants comme AIM ou CONDOR Engineering dans sa
documentation 3 .
• Problème 2 : Ordre de transmission du label. Dans ce cas toutes les spécifications
son d’accord et il présente moins d’ambigüités :
– Hypothèse :
* Le décodeur de l’oscilloscope LeCroy WaveSurfer 44Xs-A ne prends pas
en compte que le label est transmit en sens inverse, mais il considère, au
contraire que dans le cas antérieur, que le MSB corresponds au bit 1.
3
Cette documentation on la peut consulter sur l’Annexe C(support numérique), et dans AIM il y a aussi
des ambigüitées avec le label
34
Projet Stage Erasmus
On pense que cette dernière hypothèse est la plus correcte, puisque si on suppose vers
la figure 2.13 qu’on fait l’émission sans invertir le label et en considérant que le MSB est
le bit 1, le décodage devient 203, voir figure 2.144 .
F IGURE 2.14 – Label sans inverser.
En résumé, le décodeur série de l’oscilloscope attends le label sans inverser : 1, 2, 3, 4,
5, 6, 7, 8, et il ne serve que pour tester que la trame qu’on envoie est correcte (label pas
inversé). Une fois on vérifie cette procède on inverse le label et on émit le mot.
De cette façon, comment le récepteur va bien décoder la trame (il est programmé pour
lire le label dans le bon sens), on saura que les données qu’il va recevoir sont les qu’on a
envoyé.
Pour l’instant, pour résoudre cette situation, on a édité le fichier ULDF avec un label 301
pour pouvoir décoder les données du mot ARINC 429 qu’on émit. En plus, pour améliorer
l’adaptation du décodeur série de l’oscilloscope on a choisi un label type pour données
binaires discrètes et on a ajusté les champs des données aux bits 12 à 28.
Bien que le label 203 est associé à un encodage BNR, on a pris l’antérieur puisque on
a considéré que le label type pour données binaires n’était pas le plus adapté. Ce label type(binaire) prend les bits 11 à 29 comme champ de données, mais le bit 11 correspond à la resolution et le bit 29 au signe qu’on spécifique dans le fichier ULDF, avec les
objets PosSense et Resol.
Fichier ULDF édité avec label 301 et le label type configuré pour décoder données binaires
discrètes :
/ / Label , EqptID , Name, U n i t , Min , Max , S i g B i t s , PosSense , Resol , MinTr , MaxTr , LabelType , O f f s e t , D e t a i l L i s t
203 ,6 , A l t i t u d e , f e e t s ,0 ,131072 ,17 , PosSen , 1 , 1 1 1 , 2 2 2 , L a b e l D i s c r e t e , 1 1
4
Cette capture n’est pas réel, c’est un montage graphique pour démontrer que l’oscilloscope ne prends
pas en compte le label transmis en sens inverse.
Description du système
2.2.
35
Résultats
L’implémentation des cinq blocs donne comme résultat une communication complète ARINC
429. Dans un premier temps, on fait monter l’altimètre, et le transpondeur reçoit de l’alticodeur l’altitude par rapport au niveau de la mer, voir la figure 2.15.
Ensuite, on acquit cette altitude au travers du logiciel LabVIEW ProjetDR400.vi qui fait le
décodage du code Ghillam en altitude et construit le mot ARINC 429, figure 2.16.
De plus, avec les subvi’s que l’on a développés (Conv8bits.vi et Tx 11bits.vi du bloc 2)
et au travers du NI USB-6008 (bloc 3), on transmit le mot de 32 bits qui est divisé en
4 submots, de 8 bits chaq’un, au microcontrôleur (bloc 4). Ce bloc, regroupe ces quatre
submots et reconstruit le mot de 32 bits. Il génère les deux lignes, A et B, et fait l’émission
du mot à la vitesse choisie par l’utilisateur sur LabVIEW, en respectant la spécification
ARINC 429, figure 2.17 (13.5 kbps) et figure 2.18 (100kbps).
Finalement, le bloc 5 (Oscilloscope LeCroy WaveSurfer Xs-A), avec son décodeur série
ARINC 429, devient le récepteur.
F IGURE 2.15 – Maquette avec une indication de 700ft.
36
Projet Stage Erasmus
F IGURE 2.16 – Indication LabVIEW.
Description du système
37
F IGURE 2.17 – Mot émis à 13,5 kbps.
38
Projet Stage Erasmus
F IGURE 2.18 – Mot émis à 100 kbps.
Deuxième partie
Planning et diagramme de Gantt
40
Projet Stage Erasmus
Pendant la période du stage on a développé plusieurs activités. Le but principal dans ce
chapitre c’est d’expliquer les différentes étapes et difficultés que l’on a rencontrées.
L’image suivante montre la distribution du temps destiné à chaque tâche qu’on a réalisée :
F IGURE 2.19 – Diagramme de Gantt.
41
Dans un premier temps, on a fait une mise à jour pour connaı̂tre tout le développement du
projet réalisé antérieurement et se familiariser avec les boı̂tes de contrôle à utiliser. (Id.1)
Ensuite, on a commencé à travailler dans l’application des logiciels en LabVIEW pour
tester le fonctionnement du NI-6008. Les différents essais avaient comme but principal
d’allumer et d’éteindre plusieurs LED’s au travers de leur sélection dans le logiciel. (Id.2)
F IGURE 2.20 – Exemple d’un test réalisé avec des LED’s.
L’étape suivante a été le dessin de l’organigramme et le développement du logiciel en C
pour l’ARINC 429. (Id.3)
Après cette partie initiale on a commencé la réalisation des deux parties du projet en
parallèle :
• Phases principales de déroulement du système ARINC 429.
Dans une première phase, on a debuggé la fonction CalcParite, déjà faite, car il y avait une
erreur. Dans cette étape on est arrivé aussi à afficher sur l’oscilloscope la trame ARINC
429 envoyée à vitesse lente. (Id. 5)
Ensuite, on a travaillé pour déterminé les deux vitesses de transmission de l’ARINC 429
en deux programmes différents que l’on a ajusté aidés par l’oscilloscope YOKOGAWA
DLM2024, figure 2.21. (Id. 8)
Après, on a testé le fonctionnement d’une carte électronique avec des commutateurs
DG403DJ qui a été réalisé par d’autres étudiants Erasmus. Cette carte génère une signale
différentielle +/- 10V de la trame ARINC 429 avec deux lignes, A et B, comme entrées. Il
a fallu réviser la documentation que les élèves avait fait, mais on n’a pas trouvé le chemin
électrique de la carte ni la spécification de fonctionnement. Finalement le résultat obtenu
n’a pas été satisfaisant et on la pas utilisée. (Id. 9)
La prochaine phase que l’on a fait, c’est l’implémentation des deux vitesses de transmission sur le même programme en ajoutant un bit qui permet de choisir une des vitesses.
(Id.10)
Finalement on a traité d’ajuster l’oscilloscope LeCroy qui permet décoder une trame ARINC
429. (Id.14)
42
Projet Stage Erasmus
F IGURE 2.21 – Measure de la fréquence pour bien déterminer la vitesse de 12,5 kbps
• Phases principales de déroulement du système Pousse Seringue.
Les phases principales de déroulement du système Pousse Seringue sont expliquées
dans le projet Système de génération de pressions anémobarométriques qui est coordonné avec celui.
Mais, pendant cette partie on a développé ensemble aussi une Maquette d’instruments
gyroscopiques.
La durée du développement de cette maquette (Id.7) a été d’une semaine et la tâche principale que l’on a réalisée est l’installation et la connexion des éléments qui la composent :
• Un magnétomètre SP-6 de la marque MGL Avionics.
• Un capteur d’attitude SP-7 de MGL Avionics.
• Deux instruments passifs AV-1 et AV-2 de MGL Avionics - Stratomaster Infinity qui
peuvent afficher selon le choix du pilote :
– Horizon artificiel ;
– Bille ;
– Indicateur de virage ;
– Compas ;
– Conservateur de cap.
43
• Une sortie pour l’oscilloscope.
• Un interrupteur qui permet d’allumer et d’éteindre le système sans avoir besoin de
débrancher.
On a réalisé aussi un support en carton et PVC pour tenir les instruments et pouvoir les
manipuler.
F IGURE 2.22 – Images de la maquette des instruments gyroscopiques.
Finalement, le personnel de l’IMA a obtenu un avion Playmobil® et un trépied pour les
ajouter au système et améliorer sa manipulation.
En ce qui concerne la durée finale du stage, elle a été allongée puisque il a fallu refaire
toute la rédaction du rapport en français alors qu’on l’avait faite en espagnol/catalan dans
un premier temps. Au début, la soutenance devait être effectuée à Barcelone mais avec
Mr. Michaud et Mr. Jordi Berenguer on a décidé que ce serait mieux de la présenter à
l’IMA.
D’autre part, pendant toute l’évolution du projet on a eu besoin de faire des recherches
d’information pour rédiger le rapport.
44
Projet Stage Erasmus
Conclusions
45
CHAPITRE 3. CONCLUSIONS
Les principaux buts de notre stage à l’IMA ont été la transmission d’une trame ARINC 429
de données d’altitude et la fabrication d’un système générateur de pressions.
Dans le premier cas, on est bien arrivés à transmettre une trame en respectant la spécification
ARINC 429 vers le microcontrôleur. De plus, on a synchronisé une communication LabVIEW - Microcontrôleur. Ainsi on a pu ajuster les deux débits d’émission permis par
l’ARINC 429 en contrôlant les cycles d’horloge du microcontrôleur.
On a configuré aussi l’oscilloscope LeCroy WaveSurfer 44Xs et édité un fichier qui nous a
permit de décoder la trame ARINC correctement sauf pour le label. Mais on a fait des hypothèses qui peuvent aider à comprendre le fonctionnement du décodeur série ARINC429
de l’oscilloscope surtout pour le champ ”label” pendant qu’on attend une réponse des
ingénieurs de LeCroy. Par contre, on n’est pas arrivé à acquérir et décoder les données
des mots sur LabVIEW au travers de l’adresse IP de l’oscilloscope mais on est arrivé a
recopier l’image de l’écran sur une page web en temps réel.
Pendant cette formation, nous avons acquis et amélioré nos connaissances dans plusieurs
domaines théoriques comme la spécification ARINC 429, le code Gillham (SSR Mode C),
le code SQUAWK du transpondeur (SSR Mode A), le système Pitot-Static des avions, le
fonctionnement interne des instruments du cockpit mais aussi dans le langage de programmation C orienté aux microcontrôleurs et du logiciel LabVIEW.
Avis personnel
Nous apprécions bien l’opportunité qui nous a été donnée, et qui nous a permit d’acquerir
des connaissances à partir du projet DR-400, ainsi que dans le cadre du travail et de la
vie en France.
Enfin, nous tenons à exprimer notre satisfaction d’avoir travaillé dans un environnement
agréable et un matériel aussi spécifique lié à l’aéronautique.
46
Projet Stage Erasmus
Troisième partie
La suite
48
Projet Stage Erasmus
Enfin dans cette dernière partie, on présente quelques propositions pour la suite du projet.
En effet, nous finissons notre stage mais il est possible que d’autres étudiants suivent ce
projet.
On pense que ce serait intéressant de faire l’acquisition sous LabVIEW de la trame ARINC
429 qu’on affiche sur l’oscilloscope avec son adresse IP. Par exemple, on pourrait développer
un logiciel LabVIEW pour décoder la trame ARINC 429, comme le ferait un récepteur. De
cette façon, on fermerait une connexion émetteur-récepteur d’une trame ARINC 429. Dans
la section 2.1.4. de la Partie I, on a déterminé les drivers à utiliser pour l’acquisition d’un
signal de l’oscilloscope sous LabVIEW à partir de son adresse IP.
Finalement on propose aussi l’intégration du logiciel du système générateur de pressions
dans le ProjetDR400.vi, et de faire alterner les mots de 8 bits de la transmission ARINC
429 avec le mot de 8 bits du Système de génération de pressions anémobarométriques et
tout gérer à partir du même logiciel.
Bibliographie
[1] Way Huang, Han. HCS12/9S12 An Introduction to Software and Hardware Interfacing.
(Delmar. Minnesota, USA. 2010)
[2] Condor Engineering. ARINC Protocol Tutorial. (Condor Engineering, Inc. Santa Barbara, USA. 2004)
[3] AIM GmbH. ARINC 429 Specification Tutorial. (AIM GmbH. Freiburg, Germany. 2001)
[4] AIRLINES ELECTRONIC ENGINEERING COMMITTEE. ARINC Specification Part 1 17. (AERONAUTICAL RADIO, INC.. Maryland, USA. 2004)
[5] Federal Aviation Administration. Instrument Flying Handbook. (US Department of
Transportation. Washinton DC, USA. 2008)
49
ANNEXES
Logiciels LabVIEW
53
ANNEXE A. LOGICIELS LABVIEW
On montre les deux .vi qu’on a développé pour la transmission des bits au microcontrôleur.
On les peut trouver dans le support numérique associé au projet.
• Tx 11bits.vi
F IGURE A.1 – Bloc Diagram Tx 11bits.vi
• Conv8bits.vi
F IGURE A.2 – Bloc Diagram Conv8bits.vi
• altitude sub dm2.vi
F IGURE A.3 – Front panel altitude sub dm2.vi, indication en rouge sur le bouton qu’on a
ajouté et qui permet de choisir la vitesse
Analyse du programme C
55
ANNEXE B. ANALYSE DU PROGRAMME C
Traduction à langage C des cinq exigences du programme C qu’on a établi dans la section
2.1.3.3. de la première partie :
1. Expliqué dans la subsection 2.1.3.2. de la première partie.
2. Pour lire l’octet on a crée un tableau de quatre éléments qui s’appelle submotarinc.
Pour mettre chaque octet dans sa place correspondante du tableau on a utilisé le
compteur compreuroctet qui s’incrémente avec les itérations de la boucle for.
submotarinc [ c o m p t e u r o c t e t ] =PORTA;
//
lire
l ’ o c t e t sur Port A
3. Pour mettre en place les 4 octets et créer un mot de 32 bits on a utilisé une boucle
for pour remplir le tableau motA de 32 éléments que l’on a créé pour celà.
for
( i =1 ; i < 9 ; i ++)
/ / Metre l ’ o c t e t s u r l a p l a c e q u i l e correspond
{
}
motA [ i −1 + c o m p t e u r o c t e t * 8]= ( submotarinc [ c o m p t e u r o c t e t ] & p u i s s 2 ( i −1) ) >> ( i − 1);
Le premier problème rencontré est d’isoler chaque bit des octets reçusen bits afin
de le diriger vers un tableau de 32 éléments. On le fait avec l’instruction :
( submotarinc [ c o m p t e u r o c t e t ] & p u i s s 2 ( i −1) ) >> ( i −1)
On explique ci dessous cette instruction avec un exemple :
• On suppose qu’on veut issoler le quatrième bit de l’octet #2, voir la figure B.11 .
Pour isoler le bit de l’octet, on a utilisé les opérateurs de traitements de bits
AND (&) et décalage à droite (valeur à d écaler >> nombre de d écalages).
De plus, la fonction puiss2 fait la puissance de 2 reçu par valeur. Alors, si
l’octet #2 = 10010001 et i=4, car on veut le bit 4 :
bit4 = 10010001 & 23 >> 3 = 10010001 & 00001000 >> 3
3 bits au droite
*
bit4 = 00000000 >> 3 = 00000
000
= 0
Si on change la valeur de l’octet #2 à 10011001 :
bit4 = 10011001 & 23 >> 3 = 10011001 & 00001000 >> 3
3 bits au droite
*
bit4 = 00001000 >> 3 = 00001
000
= 1
Le deuxième problème rencontré est de mettre le bit déjà isolé à sa place correspondante dans le motA de 32 éléments, mais c’est plus facile à résoudre. On le fait
avec la instruction :
( submotarinc [ c o m p t e u r o c t e t ] & p u i s s 2 ( i −1) ) >> ( i −1)
Si on continue l’exemple précédent, et on considère l’expression suivante :
Pos = i − 1 + compteuroctet × 8
1
Les bits de l’octet reçu sont séparés par lignes plus fines pour remarquer que l’octet est un nombre
entier
Pos = 4 − 1 + 1 × 8 = 11
On peut voir que au bit 4 de l’octet #2 lui correspond la position 11 du motA, qui
commence à 0.
F IGURE B.1 – Exemple grapique du placement du bit 4 de l’octet #2
4. On génère les deux lignes, A et B, et on vérifie la parité avec la fonction CalcParite,
qui reçoit en référence les tableaux de 32 éléments MotArincA et MotArincB.
v o i d C a l c P a r i t e ( s h o r t MotArincA [ s i z e A r i n c 4 2 9 ] , s h o r t MotArincB [ s i z e A r i n c 4 2 9 ] )
{
unsigned s h o r t j ;
unsigned s h o r t p a r i t e l u e ;
/ / MotArincA gere l e s 1 −−− MotArincB gere l e s 0
MotArincA [32 − 1]=1;
/ / i n i t p a r i t é i m p a i r e a 1
f o r ( j =0; j <32−1; j ++)
{
/ / CALCULER l a p a r i t é i m p a i r e en comptant des b i t s a 1 parmis l e s 31 p r e m i e r s
i f ( MotArincA [ j ] = = 1 )
{
MotArincA [ s i z e A r i n c 4 2 9 − 1]=˜ MotArincA [ s i z e A r i n c 4 2 9 − 1]&1;
}
MotArincB [ j ] = ˜ MotArincA [ j ] & 1 ; / / f a b r i q u e r l e s i g n a l i n v e r s é B
}
//
i f ( p a r i t e l u e == MotArincA [32 − 1]) ;
/ / A f f e c t a t i o n b i t p a r i t é s u r bus B
MotArincB [ s i z e A r i n c 4 2 9 − 1]=˜ MotArincA [ s i z e A r i n c 4 2 9 − 1]&1;
}
Le concept est que la ligne A soit à l’état HIGH quand la ligne B soit à l’état LOW.
En plus, on recalcule la parité impaire comme redondance du système. Ensuite, on
fait une description du conjoint d’instructions qui font le calcule de la parité impaire
et qui construisent le tableau MotArincB :
• Fixer à 1 le bit 31 du MotArincA, parité impaire au début.
• Parcourir le tableau MotArincA, qui correspond au motA du programme principal. Si dans une position on trouve un 1, on fait l’inversion du bit 31 avec
l’opérateur de traitement de bit complément à 1 (∼). Ensuite, avec l’opérateur
AND (&) on sélectionne le premier bit de la valeur qui va être mise dans le
champ de la parité (bit 31). Par exemple, si les premières cinq positions du
tableau MotArincA ont 1 | 0 | 1 | 0 | 1 , et on fixe la parité impaire au début :
bit31 =∼ bit31 &1
(B.1)
– Iteracion #1 ⇒ bit31 =∼ 1&1 = 0&1 = 0 ⇒ le nombre de 1’s est déjà
impair, la parité change à 0.
– Iteracion #2 ⇒ N’accomplit pas la condition du if ⇒ le nombre de 1’s
continue impair, la parité est maintenue à 0.
– Iteracion #3 ⇒ bit31 =∼ 0&1 = 1&1 = 1 ⇒ le nombre de 1’s est pair, la
parité change à 1.
– Iteracion #4 ⇒ N’accomplit pas la condition du if ⇒ le nombre de 1’s
continue pair, la parité est maintenue à 1.
– Iteracion #5 → bit31 =∼ 1&1 = 0&1 = 0 ⇒ le nombre de 1’s est déjà
impair, la parité change à 0.
La parité résultant après ces instructions est 0. Rappeler la spécification ARINC
429 : il faut fixer la parité pour avoir un nombre de 1 impair.
• Créer la signal LOW dans le tableau MotArincB, qui est l’inverse du tableau
MotArincA. On complète chaque élément indiqué par le compteur j avec le
résultat d’inverser l’élément équivalent du MotArincA. En plus, il y a l’operateur AND (&) que l’on l’utilise pour sélectionner le premier bit de la valeur du
résultat. On fait 31 itérations comme celle-là. Pour finir, quand on sort de la for,
on fixe la parité du MotArincB inverse à cela qu’il y a au tableau MotArincA.
5. Pour finaliser, on émet les deux lignes, A et B, sur le Port B avec la fonction EmettreARINC :
v o i d EmettreARINC ( )
{ unsigned s h o r t i ;
unsigned s h o r t p o r t ;
/ / s e r i e de mots ARINC a t r a n s m e t t r e v i t e s s e l e n t e
f o r ( i =0; i <s i z e A r i n c 4 2 9 ; i ++)
{
PORTB=0;
delay ( 1 ) ;
p o r t = ( motB [ i ]<<1) | motA [ i ] ;
motEmis [ i ] = p o r t
;
/ / delay ( 1 ) ;
PORTB= p o r t &255;
delay ( 1 ) ;
//
//
//
//
p r e m i e r mot pour 4 bus s u r p o r t B
ETAT NULL
Tx à 12 ,5 kbps ;
envoyer l e code s u r l e s LED 0 & 1
/ / B i t a 0 ou 1 pour codage RZ
/ / Tx à 12 ,5 kbps ;
}
PORTB=0;
/ / ETAT NULL du codage RZ
}
On parcourt les tableaux motA et motB et on génère un troisième tableau. Ce tableau, appelé motEmis, a les 1 du motA comme un 1 (01) et les 1 du motB comme
un 2 (10), voir figure B.22 . De cette façon, si on a un HIGH, on émet un 1 sur le PB0
et un 0 sur le PB1 et vice versa.
Selon la spécification ARINC 429, l’émission doit être avec un encodage bipolaire
RZ, qu’on réalise en maintenant un 0 sur le Port B (état NULL) la même quantité
de temps qu’on maintient les états HIGH/LOW. Ensuite on détaille la séquence appliquée pour émettre un bit :
• Port B à zéro, pour assurer l’état NULL au début de l’émission.
• On soutient le Port B à zéro le temps nécessaire pour accomplir avec la vitesse de transmission désirée par l’utilisateur et faire l’émission en respectant
l’encodage Bipolaire RZ. Le procédé pour obtenir la vitesse on l’explique plus
bas.
2
Les champs des tableaux ne sont pas d’accord avec la spécification ARINC 429, sont seulement des
exemples
• On met dans la variable locale port le résultat de l’opération OR OR(|) entre
l’élément du motB indiqué par le compteur i décalé à gauche, et l’élément
équivalent du motA.
• On remplit l’élément du motEmis indiqué par le compteur i avec la valeur du
port , voire la figure B.2.
• On écrit le bit correspondante sur le Port B.
• On soutient le bit sur le Port B autant de temps comme il faut pour accomplir avec la vitesse de transmission désirée par l’utilisateur et faire l’émission
en respectant l’encodage Bipolaire RZ. Le procédé pour obtenir la vitesse on
l’explique plus bas.
Ce procédé on le répète jusqu’à 32 fois, comme indiqué dans la spécification ARINC
429 (mot de 32 bits). Pour finir on écrit un zéro sur le Port B et on s’assure qu’il ne
reste plus de données.
F IGURE B.2 – Représentation d’un exemple graphique des tableaux motA, motB et motEmis
Programme développé
1
2
3
# i n c l u d e < s t d i o . h>
# i n c l u d e < h i d e f . h>
# i n c l u d e <mc9s12e128 . h>
/ * common d e f i n e s and macros * /
/* derivative information */
4
5
# d e f i n e s i z e A r i n c 4 2 9 32
6
7
8
9
10
11
12
i n t compteuroctet , Nmotarinc =0;
s h o r t submotarinc [ 4 ] = { 1 , 2 , 3 , 4 } ;
s h o r t motA [ s i z e A r i n c 4 2 9 ] ;
s h o r t motB [ s i z e A r i n c 4 2 9 ] ;
s h o r t motEmis [ s i z e A r i n c 4 2 9 ] ;
unsigned s h o r t p a r i t e l u e =255;
13
14
15
/* ************************************** Attente **************************************** */
/ * * * Delay pour a j u s t e r l a v i t e s s e d ’ emision e t l e s d i f f é r e n t e s etapes d ’ execucion (ms) * * * /
16
17
18
19
20
21
22
23
v o i d a t t e n t e ( i n t duree ms )
/ / a t t e n t e ( q u a r t z 16 MHz e t F c l o c k = 16/2 )
{
unsigned l o n g i , j ;
f o r ( j = 0 ; j < duree ms ; j ++)
{
f o r ( i = 0 ; i < 200; i ++)
;
/ / Ne r i e n f a i r e
/ / Software d e l a y
24
25
26
27
}
}
/ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Delay1 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
/ * Delay pour a j u s t e r l a v i t e s s e d ’ emision e t l e s d i f f é r e n t e s etapes d ’ execucion ( c y c l e s ) * * /
28
29
30
v o i d delay1 ( i n t duree us )
PK−HCS12E128 : K i t SofTec
/ / ( q u a r t z 16 MHz e t F c l o c k = 16/2 )
31
unsigned l o n g j , i ;
asm nop ;
f o r ( j = 0 ; j < duree us ; j ++)
;
32
33
34
35
{ f o r ( i =0; i <4; i ++) {
}
36
}
37
38
/ / Temporisation
{
}
39
40
41
42
/ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Delay2 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
/ * * Delay pour a j u s t e r l a v i t e s s e d ’ emision e t l e s d i f f é r e n t e s etapes d ’ execucion ( c y c l e s ) * /
43
44
45
v o i d delay2 ( i n t duree us )
{
/ / T e m p o r i s a t i o n PK−HCS12E128 : K i t SofTec
/ / ( q u a r t z 16 MHz e t F c l o c k = 16/2 )
unsigned l o n g j , i ;
46
47
48
f o r ( j = 0 ; j < duree us ; j ++)
49
{
f o r ( i =0; i <5; i ++)
50
{
51
52
}
53
54
}
55
56
}
57
58
59
/ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Delay4 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
/ * Delay pour a j u s t e r l a v i t e s s e d ’ emision e t l e s d i f f é r e n t e s etapes d ’ execucion ( c y c l e s ) * * /
60
61
62
v o i d delay4 ( )
{
/ / T e m p o r i s a t i o n PK−HCS12E128 : K i t SofTec
/ / ( q u a r t z 16 MHz e t F c l o c k = 16/2 )
65
unsigned l o n g j ;
asm nop ; asm nop ; asm nop ; asm nop ; asm nop ; asm nop ; asm nop ; asm nop ; asm nop ;
f o r ( j = 0 ; j < 0 ; j ++)
66
{
63
64
;
67
}
68
69
}
70
71
72
73
74
/* *********************************** CalcParite ** *** *** *** **** *** *** *** *** *** *** **** *** */
v o i d C a l c P a r i t e ( s h o r t MotArincA [ s i z e A r i n c 4 2 9 ] , s h o r t MotArincB [ s i z e A r i n c 4 2 9 ] )
{ unsigned s h o r t j ;
/ / MotArincA gere l e s 1
−−− MotArincB gere l e s 0
unsigned s h o r t p a r i t e l u e ;
75
MotArincA [ s i z e A r i n c 4 2 9 − 1]=1;
/ / i n i t p a r i t é i m p a i r e a 1
f o r ( j =0; j <s i z e A r i n c 4 2 9 −1; j ++)
{ / / CALCULER l a p a r i t é i m p a i r e en comptant des b i t s a 1 parmis l e s 31 p r e m i e r s
i f ( MotArincA [ j ] = = 1 ) MotArincA [ s i z e A r i n c 4 2 9 − 1]=˜ MotArincA [ s i z e A r i n c 4 2 9 − 1]&1;
MotArincB [ j ] = ˜ MotArincA [ j ] & 1 ; / / f a b r i q u e r l e s i g n a l i n v e r s é B
76
77
78
79
80
}
81
82
/ / A f f e c t a t i o n b i t p a r i t é s u r bus B
MotArincB [ s i z e A r i n c 4 2 9 − 1]=˜ MotArincA [ s i z e A r i n c 4 2 9 − 1]&1;
83
84
85
}
86
87
88
89
90
91
92
/ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Emetre ARINC * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
/ * Emetre l e mot complet ARINC 429 (32 b i t s ) s u r l e s LED 0 & 1 du PORT B . L ’ emission e s t en
codage RZ * /
/ / PTT PTT1== TURE −−> v i t e s s e r a p i d e .
v o i d EmettreARINC ( )
/ / s e r i e de mots ARINC a t r a n s m e t t r e
{ unsigned s h o r t i ;
unsigned s h o r t p o r t ;
93
94
95
96
i f ( PTT PTT1==TRUE)
{
f o r ( i =0; i <s i z e A r i n c 4 2 9 ; i ++)
/ / Demande de Tx à haute v i t e s s e ?
{
97
PORTB=0; / / ETAT NULL
asm nop ; asm nop ; asm nop ;
p o r t = ( motB [ i ]<<1) | motA [ i ] ;
motEmis [ i ] = p o r t ;
PORTB= p o r t &255;
delay4 ( ) ;
98
99
100
101
102
103
/ / delay3 , Tx à 100 kbps ;
/ / envoyer l e code s u r l e s LED 0 & 1
/ / B i t a 0 ou 1 pour codage RZ
/ / Tx à 100 kbps ;
}
104
105
PORTB=0;
106
/ / ETAT NULL du codage RZ
}
107
108
109
else
110
{
/ / Demande de Tx à v i t e s s e l e n t e
111
f o r ( i =0; i <s i z e A r i n c 4 2 9 ; i ++)
112
{
PORTB=0;
delay1 ( 1 ) ;
p o r t = ( motB [ i ]<<1) | motA [ i ] ;
motEmis [ i ] = p o r t ;
PORTB= p o r t &255;
delay2 ( 1 ) ;
113
114
115
116
117
118
/ / ETAT NULL
/ / Tx à 13 ,5 kbps ;
/ / envoyer l e code s u r l e s LED 0 & 1
/ / B i t a 0 ou 1 pour codage RZ
/ / Tx à 13 ,5 kbps ;
}
119
120
PORTB=0;
121
/ / ETAT NULL du codage RZ
}
122
123
124
}
125
126
128
/* ********************************** I n i c i a l i z e ports ************************************ */
void P e r i p h I n i t ( void )
129
{
127
PORTB = 0x00 ;
PTT= 0xFF ;
PORTA = 0x00 ;
DDRB= 0xFF ;
DDRT = 0x00 ;
DDRA= 0x00 ;
130
131
132
133
134
135
136
//
//
//
//
//
//
Port B i n i t i a l i z a t i o n
Port T i n i t i a l i z a t i o n
Port A i n i t i a l i z a t i o n
Configure Port B f o r
Configure Port T f o r
Configure Port A f o r
( LEDs connected t o PB [ 7 . . 0 ] )
output
input
input
}
137
138
139
140
/ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Strobe * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
/ * * * * * * * * * * * * * * * * * I n d i c a t i o n s u r l e p o r t B en t r a i n de l i r e un o c t e t * * * * * * * * * * * * * * * * * * * * * /
void strobe ( void ) {
141
i f ( PTT PTT2 )
PORTB BIT7=0xFF ;
else
PORTB BIT7=0x00 ;
142
143
144
145
146
/ / Mot
/ / LED
/ / Fin
/ / PTM
8 b i t s p r ê t s u r PORTA.
Rouge , PORTB BIT7 LED on
de Tx sub−mot 8 b i t s .
LED o f f
}
147
150
/ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Puissance * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
/ * * * * * * * * * * * * * * * * * * * * * * F a i r e l a puissance de 2 i n d i q u é par j * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
i n t p u i s s 2 ( i n t exposant )
151
{
148
149
i n t j , tmp =1;
f o r ( j =0 ; j <exposant ; j ++) tmp=tmp * 2
r e t u r n tmp ;
152
153
154
155
;
}
156
158
/ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Main program * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
v o i d main ( v o i d )
159
{
157
160
161
162
163
164
int i ;
i n t tmp2 [ s i z e A r i n c 4 2 9 ] ;
PeriphInit ( ) ;
DisableInterrupts ;
165
166
167
/ / s t r o b e rouge=PTT PTT2 ;
/ / s t r o b e jaune=PTT PTT0 ;
168
169
for ( ; ; ) / * wait forever * /
170
{
171
172
do ; w h i l e ( ! ( ( PTT PTT0==FALSE ) && ( PTT PTT2==FALSE ) ) ) ; / / 0 0 ; A t t e n d r e f r o n t montant
173
174
do ; w h i l e ( ! ( PTT PTT0==TRUE && PTT PTT2==FALSE ) ) ;
do ; w h i l e ( ! ( PTT PTT0==TRUE && PTT PTT2==TRUE ) ) ;
175
176
/ / 1 0 ; D ébut du mot ARINC 429
/ / 1 1 ; I l y a un o c t e t s u r PORTA
177
f o r ( c o m p t e u r o c t e t =0 ; c o m p t e u r o c t e t < 4 ; c o m p t e u r o c t e t ++ )
{
strobe ( ) ;
submotarinc [ c o m p t e u r o c t e t ] =PORTA;
// lire
178
179
180
l ’ octet
181
182
for
183
{
184
( i =1 ; i < 9 ; i ++)
motA [ i −1 + c o m p t e u r o c t e t * 8]= ( submotarinc [ c o m p t e u r o c t e t ] & p u i s s 2 ( i −1) ) >> ( i − 1);
185
}
186
do ; w h i l e ( ! ( PTT PTT0==TRUE && PTT PTT2==FALSE ) ) ;
strobe ( ) ; / / f i n strobe
do ; w h i l e ( ! ( PTT PTT0==TRUE && PTT PTT2==TRUE ) ) ;
187
188
/ / 1 0 ; I l n ’ y a pas d ’ o c t e t s u r PORTA
/ / 1 1 ; I l y a un o c t e t s u r PORTA
}
189
do ; w h i l e ( ! ( PTT PTT0==FALSE && PTT PTT2==FALSE ) ) ;
/ / c a l c u l bus B e t b i t 32 l a p a r i t é iMPAIRE
p a r i t e l u e = motA [ s i z e A r i n c 4 2 9 − 1];
C a l c P a r i t e (&motA [ 0 ] , & motB [ 0 ] ) ;
EmettreARINC ( ) ;
Nmotarinc ++;
attente (100);
190
191
192
193
194
195
196
/ / 0 0 ; F i n du mot ARINC 429
/ / Emettre l e mot ARINC 429
/ / I n c r e m e n t e r l e nombre de mots emis
/ / A t t e n d r e 100ms avant l e p r o c h a i n mot
}
197
198
199
}
200
/ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * FIN main * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /