# ARINC 429

ARINC 429 est une norme pour l'aéronautique qui décrit à la fois une architecture, une interface électrique et un protocole pour véhiculer des données numériques : soit des parametres de vol individuel, soit des blocks de données (tel que des fichiers). Son titre est "Mark 33 Digital Information Transfer System (DITS)".
Au début du XXIe siècle, ARINC 429 est le bus informatique le plus répandu sur les systèmes avioniques complexes.

## Historique
### Ecriture de la norme

La norme ARINC 429 a été développée et est maintenue par l'Airlines Electronic Engineering Committee (AEEC), comité de la société ARINC.
ARINC 429 est issue de la norme ARINC 419 qui fut la première à décrire quatre topologies de bus numériques pour l'aviation commerciale, dont la première version a été publiée en 1966, et la dernière mise à jour faite en 1983$^,$.
La première norme ARINC 429 (ARINC 429, équivalente à ARINC 429-0) a été publiée en avril 1978, et la version actuelle (en 2025) est la version Arinc 429-19 adoptée par l'AEEC en 2019.
Elle est composée de trois parties :
* partie 1 : Description fonctionnelle, interface électrique, étiquettes, formats des mots (Mise à jour n$^o$ 19 du 22 Janvier 2019) ;
* partie 2 : Standard pour les mots discrets (Mise à jour n$^o$ 16 du 01 Aout 2019) ;
* partie 3 : Techniques de transfert de fichiers (Mise à jour n$^o$ 19 du 25 juin 2009).
Cet article traite principalement de la 1re partie de la norme.

### Descriptif des documents

Le standard intitulé "Mark 33 Digital Information Transfer System (DITS) - Part 1 - Functional description, Electrical interface, Label assignments and Word formats", (sous titre: "ARINC Specification 429P1-19, Digital information transfer system set") est un document en anglais, dont la partie principale couvre 20 pages. Elle est compété par environ 200 pages d' "Attachments" et d' "Appendices". Le but de cette seconde partie serait de définir, pour chaque calculateur de l’aéronef, pour chaque Label, le nom du paramètre et le format de ce paramètre qui est supporté. Cette description inclut des exemples et des déviations aux règles précédemment décrites.
Le standard intitulé "Mark 33 Digital Information Transfer System (DITS) - Part 2 - Discrete word Format standards", (sous-titre: "ARINC Specification 429P2-15") est un document en anglais. Il est constitué de deux chapitres : une introduction d'une page suivie par une section de 137 pages, intitulé "Data standard". Ces "data standards" correspondent à la définition de "mots ARINC 429" issus des différents calculateurs avioniques, donnant la définition d'un ensemble d'indicateurs discrets associés à chaque calculateur.
Le standard intitulé "Mark 33 Digital Information Transfer System (DITS) - Part 3 - File data transfer technique", (sous-titre: "ARINC Specification 429P3-19") est un document de 122 pages, en anglais aussi, qui est constitué de 3 chapitres : une introduction, un second chapitre qui décrit la première version du protocole, et le dernier chapitre qui décrit la version 3 du protocole. Ces 3 chapitres sont suivis par 14 « Attachments » (non vide) et 11 « Appendices ».

## Couche physique
### Topologie

La norme ARINC 429 décrit un bus de données série unidirectionnel standard (simplex).
Cette norme impose qu'il n'y ait qu'un seul émetteur par bus et que le nombre de récepteurs soit inférieur 20.
Il en résulte que les calculateurs avionique courant (appelés LRU pour "Line Remplacable Unit"), qui utilise ce média de communication, ont peu d'interfaces de sortie, mais beaucoup d'interfaces d'entée.

### Support

La connexion est réalisée par l'intermédiaire d'une paire torsadée blindée composée de deux brins (ou lignes) « A » et « B ».
Le transfert des données est réalisé en différentiel entre les deux lignes de la paire.
L'impédance de l'émetteur doit être maintenue en permanence à 75 ± 5 Ω quel que soit le niveau HIGH, LOW ou NULL, divisée de manière égale entre les deux lignes de la paire. Cette valeur a été choisie pour être approximativement égale à l'impédance caractéristique de la paire blindée.
La résistance de chaque récepteur, entre les deux lignes (« A » et « B ») mais aussi entre chacune des lignes et la masse, doit être maintenue supérieure à 12 kΩ. Idem pour la capacitance, qui doit être inférieure à 50 pF entre les deux lignes, mais aussi entre chacune des lignes et la masse.
La résistance totale des récepteurs (jusqu'à 20) mis en parallèle doit rester supérieure à 8 kΩ.

### Encodage des bits

L'encodage utilisé est de type bipolaire avec retour à 0 répondant à la forme suivante :

### Niveaux

Les trois niveaux utilisés pour l'encodage entre les deux brins (A et B) de la paire blindée sont$^,$ :
| Niveau | Ligne A <> Ligne B Côté émetteur | Ligne A <> Ligne B Côté récepteur |
| HIGH | +10.0 V ± 1.0 V | de +6.5 à +13 V |
| NULL | 0 V ± 0.5V | de +2.5 à -2.5 V |
| LOW | -10.0 V ± 1.0 V | de -6.5 à -13 V |
Côté émetteur, les niveaux entre chaque brin et la masse doivent aussi être maintenus :
| Niveau | Ligne A <> Masse Côté émetteur | Ligne B <> Masse Côté émetteur |
| HIGH | +5.0 V ± 0.5 V | -5.0 V ± 0.5 V |
| NULL | 0 V ± 0.25V | 0 V ± 0.25V |
| LOW | -5.0 V ± 0.5 V | +5.0 V ± 0.5 V |
Lorsque l'émetteur ne transmet rien, il place le bus à l'état NULL.

### Temps et vitesse

Il existe deux vitesses de transmission 12,5 kbit/s et 100 kbit/s. Pour chacune de ces vitesses, la norme impose des temps caractéristiques$^,$ :
* le taux de transfert ("Bit rate"),
* la durée d'un bit ("1bit time"),
* la durée d'un demi-bit ("1/2bit time"),
* le temps de montée ("Rise time"),
* le temps de descente ("Fall time").
| Bit rate | 1bit time | 1/2bit time | Rise time | Fall time |
| 100kbits/s ± 1 % | 10µs ± 0,25µs | 5µs ± 0,25µs | 1,5µs ± 0,5µs | 1,5µs ± 0,5µs |
| 12,5kbits/s ± 1 % | 80µs ± 2µs | 40µs ± 2µs | 10µs ± 5µs | 10µs ± 5µs |

### Séparation des mots ARINC 429 : Le "Gap".

Sur un bus ARINC 429, les données sont transmisent par mots de 32 bits (voir le chapitre suivant). Les mots s'enchainent les uns à la suite des autres. Pour que le récepteur détect le début d'un mots, le début de chaque mot est précédé d'un temps, pendant lequel le bus est à l'état de repos. C'est à dire que la ligne A et la Ligne B sont à l'état NULL. Ce temps est connue sous le terme "Gap". La norme ARINC 429 prévoie que ce temps correspond au minimum au temps de transmission des 4 bits$^,$.
La durée de transmission d'un mot ARINC 429 correspont donc à la durée de transmission des 36 bits (4 bits de "gap" plus 32 bits de data), soit 0.36 ms en "High speed", ou 2.88 ms en "Low speed". Le débit maximal de ce bus est donc de 2 778 mots ARINC 429 par seconde en "High speed", et de 347 mots ARINC 429 par seconde en "Low speed".

## Couche liaison de données
### Description d'un Mots Arinc 429 qui supporte un paramètre de l'Aéronef

Cette section traite de la définition de paramètre des aéronefs, que ce soit des paramètres numériques (tel que l'altitude, la vitesse, la puissance des réacteurs, ...) ou discrets (tel que la condition sol/vol, portes ouvertes/fermées, l'état des réacteurs marche/arrêt, ...)
Les données sont codées sous forme de mots de 32 bits. Historiquement, ces bits sont numérotés de 1 à 32 (et pas de 0 à 31). Ils peuvent être découpés en cinq champs distincts :
* Le bit 32 est un bit de parité,
* Les bits 30 et 31 constituent le Sign/Status Matrix (SSM) et peut avoir plusieurs significations en fonction du type de la donnée,
* Les bits 11 à 29 contiennent la donnée,
* Les bits 9 et 10 constituent le Source Destination Identifier (SDI) et peut avoir plusieurs utilisations,
* Les bits 1 à 8 contiennent le label.

#### Ordre de transmission des bits

L'ordre de transmission des bits est « particulier ».
En effet, l'octet correspondant au label est le premier à être transmis, en commençant par le bit de poids fort. Les autres données sont ensuite envoyées telles quelles, en commençant par le bit de poids faible.
Ce qui donne concrètement : 8, 7, 6, 5, 4, 3, 2, 1, 9, 10, 11, 12, 13, etc., 29, 30, 31, 32
Un des intérêts de cet ordre est que l'on peut lire facilement le label (huit premiers bits) avec un oscilloscope.

#### Bit de Parité

Le bit de parité est utilisé pour vérifier que le mot n'a pas été altéré pendant la transmission$^,$$^,$.
La parité peut être définie comme paire (even) ou impaire (odd).
Dans la plupart des cas, elle est impaire, ce qui signifie que le bit est positionné, lors de l'émission, de telle manière que le nombre des bits à « 1 » dans le mot est impair. Dans ce cas précis, si le nombre de bits à « 1 » est pair, à la réception, c'est qu'un des bits du mot a été altéré pendant la transmission.
Ce mécanisme simple ne permet pas de se prémunir contre l'altération de deux bits puisque dans ce cas on retombe sur la parité d'origine.

#### Donnée

Il existe plusieurs formats d'encodage de la donnée$^,$ : le décimal codé binaire (BCD), le binaire (BNR, encodé en complément à deux), l'agrégation de discrets (DSC) et les chaines de caractères (dit "ISO 5").
L'encodage utilisé dans un même mot peut mélanger les trois types d'encodage.

##### Type BNR

Dans le cas particulier du BNR, le bit 29 est utilisé pour exprimer le « signe » (car le SSM n'est utilisé que pour la validité$^,$) :
| Bit 29 | Signification |
| 1 | Moins (Minus), Sud (South), Ouest (West), Gauche (Left), Depuis (From), Au-dessous (Below) |
| 0 | Plus, Nord (North), Est (East), Droite (Right), Vers (To), Au-dessus (Above) |
Les autres bits codent la donnée : le bit 28 est le bit de poids fort, le bit de poids faible est déterminé par le nombre de bits utilisés.
Par exemple, si la donnée est encodée sur 16 bits, le bit de poids faible est le bit 14, et les bits 13, 12 et 11 sont inutilisés.
La donnée binaire est encodée en complément à deux, le bit de signe est alors le bit 29.
Si n est le nombre de bits utilisés (sans compter le bit de signe), une fois décodée, on obtient une valeur comprise entre -2$^n$ et 2$^n$-1 avec une résolution de 1.
Une résolution différente de 1 (parfois égale à une puissance de 2) est souvent fournie dans la documentation.
Si k = 2$^m$ est la résolution utilisée, on peut coder une valeur comprise entre k × -2$^n$ = -2$^{n+m}$ et k × (2$^n$-1) = 2$^{n+m}$-2$^m$.
Dit autrement, il faut multiplier la valeur binaire pure décodée comprise entre (-2$^n$ et 2$^n$-1) par k = 2$^m$ pour obtenir la valeur codée.

##### Type BCD

Les bits sont regroupés par quatre (bits 11/14, 15/18, 19/22, 23/26) ou par trois pour les derniers (27/29).
Chaque groupe représente alors un chiffre décimal compris entre 0 et 9 (et 0 à 7 pour le dernier groupe qui est sur trois bits).
Chaque chiffre possède un poids croissant différent selon une numération de position en base 10 pour former un nombre, les bits 11/14 représentant le poids faible.
| Bits | Poids |
| 11/14 | 10$^{n-4}$ |
| 15/18 | 10$^{n-3}$ |
| 19/22 | 10$^{n-2}$ |
| 23/26 | 10$^{n-1}$ |
| 27/29 | 10$^n$ |
On peut ainsi représenter des nombres dans les plages suivantes :
* entre 0,0000 et 7,9999 → pour n = 0 ;
* entre 00,000 et 79,999 → pour n = 1 ;
* entre 000,00 et 799,99 → pour n = 2 ;
* entre 0000,0 et 7999,9 → pour n = 3 ;
* entre 00000 et 79999 → pour n = 4.
Certains groupes de bits (les plus faibles ou les plus forts) peuvent aussi ne pas être utilisés, s'ils ne sont pas nécessaires. Il faut se référer à la documentation de l'équipement.

##### Type DSC

Dans le cas des discrets, chaque bit du champ de données représente une information de type tout ou rien.
Il arrive que les bits soient regroupés par petits groupes afin de former une information plus détaillée.
En particulier, la partie 2 du standard ARINC 429 décrit certain de ces mots.

##### Type chaine de caractères

Il existe différents formats de transmission de chaine de caractères : Caractère sur 7 ou 8 bits, avec ou sans champs SSM.
Le standard fournie, page 130, l'encodage des paramètres "origine / destination" (encore connue sous l'abréviation "From/To") correspondant aux labels 061, 062 et 063 du calculateur "Fligh Management System". Cet encodage inclut un SSM, mais pas de SDI. Le format est le suivant:
* Bit 1 à 8 : Label (en octal),
* Bit 9 à 15 : Caractère 1,
* Bits 16 à 22 : Caractère 2,
* Bits 23 à 29 : Caractère 3,
* Bits 30 et 31 : SSM,
* Bit 32 : Parité.
Ayant 3 caractères par mot Arinc, la chaine de caractères qui correspond aux paramètres origine/destination est donc constituer de 9 caractères :
* Les 3 premiers caractères du paramètre "origine" sur le label 061,
* Le dernier caractère du paramètre "origine", suivi par un caractère séparateur (un espace), suivi par le premier caractère du paramètre destination, sur le Label 062,
* Les 3 derniers caractères du paramètre destination, sur le label 063.
Le standard fournie, page 132, l'encodage du numéro de vol (encore connue sous le nom "Fligh number"), correspondant aux labels 233, 234, 235 et 236 du calculateur "Fligh Management System". Cet encodage inclut un SSM et un SDI, et donc ne permet que de transférer que 2 caractères. Le format est le suivant:
* Bit 1 à 8 : Label (en octal),
* Bit 9 et 10: SDI,
* Bit 11 à 17 : Caractère 1,
* Bit 18 : libre, mis à "0",
* Bits 19 à 25 : Caractère 2,
* Bits 26 à 29 : Libre, mis à "0000",
* Bits 30 et 31 : SSM,
* Bit 32 : Parité.

#### Champ Sign/Status Matrix SSM

Ce champ indique la plupart du temps la validité de la donnée, mais il peut avoir des significations différentes, comme le signe ou l'orientation, en fonction du type de la donnée$^,$$^,$$^,$.
Le SSM est généralement exprimé en binaire ("00", "01", "10" ou "11").

##### Valeur du SSM pour les paramètres BNR

| Bit 31 | Bit 30 | Signification |
| 0 | 0 | Failure warning |
| 0 | 1 | No computed data |
| 1 | 0 | Functional test |
| 1 | 1 | Normal operation |

##### Valeur du SSM pour les paramètres BCD

| Bit 31 | Bit 30 | Signification |
| 0 | 0 | Plus, Nord (North), Est (East), Droite (Right), Vers (To), Au-dessus (Above) |
| 0 | 1 | No computed data |
| 1 | 0 | Functional test |
| 1 | 1 | Moins (Minus), Sud (South), Ouest (West), Gauche (Left), Depuis (From), Au-dessous (Below) |

##### Valeur du SSM pour les paramètres DSC

| Bit 31 | Bit 30 | Signification |
| 0 | 0 | Verified data / Normal operation |
| 0 | 1 | No computed data |
| 1 | 0 | Functional test |
| 1 | 1 | Failure warning |

#### Le champ Source Destination Identifier SDI

Ce champ peut être utilisé de deux manières$^,$$^,$$^,$ :
* pour définir le récepteur de la donnée sur un bus ayant plusieurs récepteurs. Par exemple : si sur un même bus, on connecte deux équipements identiques mais sur lesquels on veut envoyer des informations différentes, il suffit de configurer le premier équipement pour qu'il ne lise que les données avec le champ SDI placé à « 01 » et de la même manière le deuxième équipement avec le champ SDI « 10 ». L'émetteur n'a plus qu'à modifier le champ SDI en fonction de l'équipement auquel il désire envoyer la donnée ;
* pour définir depuis quel sous-système, l'émetteur a reçu la donnée. Par exemple : si on dispose d'un équipement émetteur hybride « centrale inertielle / GPS », lorsque l'on veut envoyer la position (label 010), on place le champ SDI à « 01 » lorsqu'il s'agit de la position inertielle, et à « 10 » lorsqu'il s'agit de la position GPS. Les récepteurs peuvent ainsi choisir parmi les deux positions en fonction du champ SDI. Dans les cas d'éléments redondants dans un système (par exemple, plusieurs capteurs en entrée d'un calculateur d’acquisition et de mise en forme d'un paramètre physique), le SDI en sortie de ce calculateur pourra permettre d'identifier la source de ce paramètre (c'est-à-dire, dans ce cas, le capteur).
Le SDI est généralement exprimé en binaire ("00", "01", "10" ou "11"). La règle générale est que la valeur "00" est réservée pour identifier tous les systèmes, alors que les valeurs "01", "10" et "11" sont réservées pour identifier respectivement le premier système, le second système et le troisième système. Cependant cette règle générale n'est pas toujours respectée.
Le SDI est optionnel. Dans le cas ou la donnée est codée sur plus de 19 bits, les bit 10 et 9 sont utilisé par la donnée.

#### Champ Label

Le label est l'identifiant de la donnée. Il est codé sur huit bits. Le label peut prendre 255 valeurs différentes. Le bit 1 représente le bit de poids fort, le bit 8 le bit de poids faible$^,$$^,$.
Dans la documentation, il est exprimé en octal sur trois digits.
La spécification ARINC A429 comprend des directives et attribution des labels pour les rendre standards : tous les calculateurs de différents fournisseurs, qui assurent la même fonction dans l'aéronef, devraient fournir chacun de leurs paramètres dans des mots ARINC 429 qui auraient un label identique. Chaque aéronef contient de nombreux systèmes, tels que les calculateurs de vol, les centrales inertielles, le GPS. Pour chacun de ces équipements, un ensemble de paramètres standard est défini et largement partagé par tous les fournisseurs d'équipements. Cela permet un certain degré d'interchangeabilité des équipements.
Par exemple, tout « Air Data Computer » donnera l'altitude barométrique de l'avion sur le label 204.
Cependant, étant donné le nombre limité de labels, ce label 204 peut avoir une signification totalement différente s'il est émis par un autre calculateur que l'ADC (le GPS, par exemple).
La General Aviation Manufacturers Association (GAMA) a également publié un ajout à la norme pour fixer ou modifier un certain nombre de ces directives.
La documentation technique de l'équipement fournit la liste et les caractéristiques de chaque mot Arinc 429, associé à chaque label.

### Exemple d'un mot

L'image ci-dessous montre un mot ARINC 429, produit par exemple par un générateur NAV429, et capturé à l'aide d'un oscilloscope.
Dans ce cas particulier, les bits 11 à 29 (données) contiennent des jours, des mois et des millisecondes.
Un oscilloscope restitue un signal dans l'ordre chronologique d'apparition de l'information. Ceci explique pourquoi le label est au début de la transmission. (Voir Ordre de transmission des bits.)

### Transmission de paramètres.

Chaque paramètre est transmis dans un mots Arinc. La valeur du label et le nom du calculateur sont suffisant pour identifier le paramètre et son format. Les paramètres sont transmis les uns à la suite des autres dans des trames, cycliquement. L'ordre des mots n'est pas imposé.

## Avantages/Inconvénients
### Avantages

* La normalisation de ce bus, utilisé depuis de nombreuse années, le rend compatible des différents calculateurs et autres éléments de l'avionique constituant les aéronefs.
* Sa fiabilité, est reconue, que ce soit en ce qui concerne le taux d'erreur de transmission, ou son taux de panne (robustesse aux agressions exterrieures).
* La topologie et l'utilisation sont simples (facile d'approche, facile d'implémentation, facile d'utilisation, etc.).
* Il est déterministe puisque n'ayant qu'un seul émetteur par bus, il n'y a aucun risque de collision.

### Inconvénients

* Le nombre et donc le poids des nombreuses paires de fils de cuivre à installer est important.
* Les possibilités d'adressage (labels), limitées à 255 valeurs, sont une limite importante.
* Il n'y a pas de somme de contrôle (hormis la parité) permettant de vérifier l'intégrité de données.
* le débit de donnée en transmission (100 kilo bit seconde au maximum) peut ne pas être suffisant pour certaines applications , notamment les équipements avioniques qui nécessitent beaucoup de données ou les systèmes de capteurs sophistiqués.
Ces inconvénients sont résolue avec l'utilisation de l'ARINC 664 part 7, encore appeler AFDX™.

## Développement de systèmes basés sur le bus ARINC 429

Quelques firmes proposent des circuits intégrés dédiés, ou ASIC, permettant d'interfacer des bus ARINC 429 à un microprocesseur. Certains de ces ASICs intègrent y compris les récepteurs et les émetteurs de ligne, et ne requièrent qu'une alimentation de 3,3 volts. Leur interface avec le microprocesseur peut être de type parallèle, mais elle prend de plus en plus la forme d'un bus série, par exemple de type SPI, ce qui réduit le nombre de fils d'interconnexion et simplifie le circuit imprimé.
Dans les calculateurs embarqués complexes, il est souvent nécessaire de mettre en œuvre plusieurs microprocesseurs et FPGAs. Il est alors fréquent de réaliser la gestion du protocole des lignes ARINC 429 sous forme de logique câblée à l'intérieur de l'un des FPGA. Il existe pour cela des blocs d'IP (Semiconductor intellectual property core (en)) disponibles sur le marché. Avec cette approche, les circuits intégrés dédiés se limitent aux récepteurs et émetteurs de ligne.
Dans les phases de mise au point, il peut être utile d'observer directement la forme des signaux sur les lignes ARINC. C'est notamment nécessaire pour s'assurer que les temps de montée et de descente, ainsi que les niveaux de tension imposés par la norme sont respectés. Un oscilloscope capable de réaliser l'acquisition et l'analyse des signaux est alors privilégié. Un tel instrument est capable de se synchroniser sur un mot ARINC 429 particulier et de présenter une coloration spécifique de chacun des champs du mot. La photo illustrant le chapitre "Exemple d'un mot" ci-dessus est un oscillogramme affiché par ce type d'instrument.
Quand il s'agit de faire des essais sur le terrain (par exemple les essais sol d'un avion), un oscilloscope est trop encombrant. On privilégie alors les analyseurs de bus portatifs. Certaines réalisations modernes sont extrêmement compactes et mettent en œuvre une liaison Bluetooth et l'écran d'un smartphone pour leur interface utilisateur.