Brevet FR3019337A1 — publié le 20151002

Synchronisation des liaisons de données en entrée d'un calculateur DOMAINE TECHNIQUE GENERAL L'invention a pour objet la synchronisation de trames de données 5 transmises sur plusieurs liaisons numériques à un algorithme exécuté par un calculateur. Cette synchronisation s'applique tout particulièrement aux trames de données traitées par un algorithme de maintenance d'un calculateur de maintenance d'un aéronef. 10 ETAT DE LA TECHNIQUE Les systèmes embarqués équipant les aéronefs tels que les avions ou les hélicoptères existants comprennent généralement une unité de calcul nommée EMU (« Engine Monitoring Unit ») en charge de la surveillance du moteur pour 15 assurer les fonctions de maintenance et prévoir les futures pannes. Comme représenté en Figure 1, L'EMU est constitué de deux calculateurs : l'EMFU 3 (« Engine Monitoring Functional Unit ») dont les fonctions permettent de surveiller l'état du moteur, et le HMFU 1 (« Health Monitoring Functional Unit ») dont les fonctions permettent d'anticiper les pannes et de 20 faciliter la maintenance. Le H FMU exécute des algorithmes de maintenance du moteur ayant pour objectif d'évaluer l'état de santé du moteur en temps réel à partir des différentes données issues des capteurs et de l'avionique de l'aéronef. Lesdites données proviennent des deux voies d'un calculateur de régulation moteur EEC 4 25 (« Electronic Engine Controller ») pour les données de l'avionique et de certains capteurs, d'un composant DIVIO 2 (« Dlgitized Versatile Input Output ») qui traite les données des capteurs des accéléromètres ainsi que de l'EMFU 3 pour les données des autres capteurs. Ces données sont transmises à l'HMFU sous forme de trames par l'intermédiaire de deux liaisons 6,7 de type RS422 en 2 3019337 provenance des deux voies de l'EEC, d'une liaison 8 de type RS422 en provenance de l'EM FU et d'une liaison 5 de type SPI en provenance du DIVIO. Comme représenté en Figure 2, le HFMU 1 exécute un système d'exploitation (HMOS) 9 qui réceptionne les données transmises sur ces liaisons et les met à disposition d'un logiciel applicatif (HMAS) 10 exécuté par le HFMU. Le HMAS lit en mémoire RAM les trames transmises par le HMOS, les décode et les envoie à intervalle régulier aux algorithmes de maintenance exécutés par le HFMU. Afin de garantir la bonne exécution et la fiabilité des résultats des algorithmes de maintenance, il est nécessaire que ceux-ci reçoivent des données d'entrée cohérentes temporellement, c'est-à-dire acquises aux mêmes instants. Si les données d'entrées fournies à un instant donné aux algorithmes de maintenance correspondent à des acquisitions décalées dans le temps les unes par rapport aux autres, les résultats des algorithmes peuvent être faussés. Garantir la cohérence de ces données d'entrée requiert notamment de pouvoir libérer la même quantité de données à chaque envoi de données aux algorithmes de maintenance et donc de remplir la mémoire RAM de manière la plus régulière possible sur chacune des liaisons. Plus précisément, les trames émises contiennent un numéro d'identification. Les numéros d'identification des trames émises par l'EEC sont appelés labels. Les deux voies de l'EEC envoient des trames dont les labels sont incrémentés de manière cyclique et continue. Les numéros d'identification des trames émises par les autres liaisons sont des horodatages dont la valeur limite est suffisamment grande pour les durées de vol considérées. Les informations contenues dans une trame émise par l'EEC dépendent du label de la trame. Ainsi, chaque trame émise par l'EEC contient des données différentes des autres mais deux trames EEC de même label contiennent les mêmes types d'informations. La conception des algorithmes de maintenance implique une répétabilité des données reçues en entrée. Ainsi les données stockées en mémoire RAM non encore lues par le HMAS doivent toujours commencer par une trame de même label sur les deux voies de l'EEC afin que ces deux trames de données contiennent toujours le même type d'informations. 3 3019337 Or les différentes liaisons ont chacune leur propre horloge interne et celles-ci ne sont pas synchronisées entre elles. Elles n'émettent pas forcément toutes au même moment, ni exactement à leur cadence d'envoi. Comme représenté en Figure 3, le nombre de trames transmises sur deux liaisons ayant 5 la même cadence d'envoi pendant une même durée peut ainsi être différent. Dans l'exemple représenté, la liaison EMFU transmet ainsi une trame de moins que la liaison EEC représentée sur un même intervalle de temps de 120 ms. De plus, comme représenté en Figure 2, les trames émises par les différentes liaisons ne sont pas directement mises à disposition du logiciel 10 applicatif HMAS par le HMOS; les données transmises sur chaque liaison sont traitées au préalable par un composant DMA (« Direct Memory Access »). Les DMAs sont des processeurs avec des petites mémoires internes qui bénéficient d'un accès direct à la mémoire RAM sans interrompre les calculs. Chaque DMA ne transfère dans la mémoire RAM les trames reçues pour les mettre à 15 disposition du HMAS que lorsque sa mémoire interne est remplie. Comme les trames reçues n'ont pas toutes la même taille, le temps nécessaire au remplissage des mémoires internes des DMAs des différentes voies peut être différent et le nombre de trames mises à disposition du HMAS pendant une période de temps donnée par les DMAs des différentes voies peut être ne pas 20 être le même. Enfin une liaison peut tomber et ne plus émettre de trames de manière temporaire ou définitive notamment lors d'un redémarrage de l'EEC ou de l'EM FU. Ces mécanismes introduisent des désynchronisations entre les liaisons et 25 provoquent un remplissage non reproductible de la mémoire RAM comme représenté en Figure 4. Ainsi, les algorithmes de maintenance risquent de ne plus être alimentés correctement et la présence de toutes les informations nécessaires à leur bon déroulement parmi les données transmises par le HMAS à un instant donné n'est plus garantie. 30 Ainsi il existe un besoin d'un processus de synchronisation des trames de données transmises à un algorithme de maintenance exécuté par un calculateur de maintenance d'un aéronef, permettant d'envoyer la même quantité de 4 3019337 données à chaque envoi de données aux algorithmes de maintenance et de garantir une répétabilité des données reçues en entrée, même en cas d'interruption de la transmission de données sur un liaison. 5 PRESENTATION DE L'INVENTION La présente invention se rapporte ainsi selon un premier aspect à un procédé de synchronisation de trames de données transmises, à au moins un algorithme de maintenance exécuté par un calculateur de maintenance d'un aéronef, sur une première liaison de données numérique et au moins une 10 deuxième et une troisième liaisons de données numériques secondaires, lesdites trames comprenant un numéro d'identification, les numéros d'identification des trames transmises sur les deuxième et troisième liaisons étant compris dans une suite finie et cyclique de numéros, les numéros d'identification des trames transmises sur une des deuxième et troisième liaisons 15 étant incrémentés à chaque transmission d'une nouvelle trame sur cette liaison, ledit procédé étant mis en oeuvre par ledit calculateur et comprenant : - une phase d'initialisation stockant les trames reçues sur chacune desdites liaisons dans une mémoire tampon dédiée à ladite liaison, les trames stockées à une première position d'une deuxième mémoire tampon dédiée à la deuxième 20 liaison et à une première position d'une troisième mémoire tampon dédiée à la troisième liaison comprenant un même numéro d'identification prédéterminé, et une première mémoire tampon dédiée à la première liaison stockant un nombre de trames égal au plus petit multiple d'un premier nombre prédéterminé supérieur ou égal au double du nombre de trames reçues sur une des deuxième 25 ou troisième liaisons, - une phase de fonctionnement stockant les trames reçues sur chacune desdites liaisons dans les mémoires tampons qui leur sont dédiées, chaque trame stockée à une position de la deuxième mémoire tampon comportant le même numéro d'identification que la trame stockée à la même position de la troisième mémoire 30 tampon. 5 3019337 Un tel procédé permet de fournir à l'au moins un algorithme de maintenance des paquets de trames toujours synchronisées et commençant toujours par le même type de données, assurant ainsi une bonne exécution dudit au moins un algorithme. 5 La phase de fonctionnement du procédé selon le premier aspect peut comprendre des étapes de : - stockage des trames reçues successivement sur la première liaison à des positions successives de la première mémoire tampon, - pour chaque liaison secondaire, stockage des trames reçues successivement 10 sur ladite liaison secondaire et d'une trame de bourrage pour chaque trame transmise sur ladite liaison secondaire et non reçue, à des positions successives d'une mémoire tampon dédiée à ladite liaison secondaire, - lorsque des trames sont stockées dans la première mémoire tampon et dans chaque mémoire tampon dédiée à une liaison secondaire, à au moins un second 15 nombre prédéterminé de positions, transmission audit au moins un algorithme de maintenance des trames stockées audit second nombre prédéterminé de positions desdites mémoires tampons. Ceci permet de maintenir la synchronisation des trames transmises malgré des perturbations de transmission pouvant empêcher aléatoirement la 20 réception de certaines trames sur certaines liaisons. La phase d'initialisation du procédé selon le premier aspect peut comprendre les étapes suivantes : - stockage à des positions successives de la première mémoire tampon d'un troisième nombre prédéterminé de trames reçues successivement sur la 25 première liaison pendant un premier intervalle de temps, - pour chaque liaison secondaire, stockage à des positions successives de la mémoire tampon dédiée à ladite liaison secondaire des trames reçues successivement sur ladite liaison secondaire pendant ledit premier intervalle de temps et d'une trame de bourrage pour chaque trame transmise sur ladite liaison 30 secondaire pendant ledit premier intervalle de temps et non reçue, 6 3019337 - suppression des trames stockées avant la première trame comprenant le numéro d'identification prédéterminé au moins dans les deuxième et troisième mémoires tampons, - suppression des trames les plus anciennes parmi celles stockées dans la 5 première mémoire tampon de sorte que la première mémoire tampon stocke un nombre de trames égal au plus petit multiple du premier nombre prédéterminé supérieur ou égal au double du nombre de trames reçues sur une des deuxième ou troisième liaisons. Ceci permet de synchroniser les trames reçues sur les différentes liaisons 10 au cours de cette phase initiale malgré l'absence d'une horloge synchronisée commune à ces liaisons et de stocker à la première position des deuxième et troisième mémoires tampon des données de même type. Lesdites liaisons secondaires pouvant comprendre au moins une liaison secondaire supplémentaire telle que le numéro d'identification des trames reçues 15 par le calculateur sur ladite au moins une liaison secondaire supplémentaire comprend un horodatage, la phase d'initialisation du procédé selon le premier aspect peut comprendre, pour chaque liaison secondaire supplémentaire, une étape de suppression des trames les plus anciennes parmi les trames stockées dans la mémoire tampon dédiée à cette liaison ou d'insertion de trames de 20 bourrage, de sorte que ladite mémoire tampon dédiée à ladite liaison secondaire supplémentaire stocke un nombre de trames égal au nombre de trames le plus proche, parmi les nombres de trames stockées dans la deuxième et la troisième mémoire tampon, du nombre de trames reçues sur ladite liaison secondaire supplémentaire. 25 Ceci permet de synchroniser lors de la phase d'initialisation les trames de données contenant un numéro d'identification de type horodatage avec les trames de données stockées dans les deuxième et troisième mémoires tampon. Le procédé selon le premier aspect peut également comprendre une étape de détection des trames transmises sur une liaison et non reçues en 30 comparant les numéros d'identification des trames reçues. 7 3019337 Ceci permet au calculateur de détecter les trames transmises mais non reçues sur une liaison sans avoir connaissance a priori des trames transmises et sans nécessiter un traitement complexe de la part du calculateur. De plus, le procédé selon le premier aspect peut comprendre : 5 - une étape de détection de l'absence de réception de trames sur une liaison secondaire, dite tombée, durant un intervalle de temps nécessaire pour la réception du premier nombre prédéterminé de trames sur la première liaison, - une étape de détection de la réception sur ladite liaison secondaire tombée d'un ensemble de trames reçues successivement, ledit ensemble de trames 10 comprenant un quatrième nombre prédéterminé de trames et une trame comprenant le numéro d'identification prédéterminé, - une étape de stockage de la trame comprenant le numéro d'identification prédéterminé et des trames reçues ultérieurement sur ladite liaison secondaire à des positions successives de la mémoire tampon dédiée à ladite liaison 15 secondaire, de sorte que les trames stockées à une seconde position de la mémoire tampon dédiée à ladite liaison secondaire et à une seconde position de la deuxième ou troisième mémoire tampon comprennent le numéro d'identification prédéterminé. Ceci permet de détecter une liaison sur laquelle plus aucune trame n'est 20 reçue, de détecter ensuite à quel moment une telle liaison transmet à nouveau des trames de manière exploitable et enfin de resynchroniser cette liaison sur les autres liaisons de façon à exploiter à nouveau et sans désynchronisation les trames transmises sur cette liaison. La présente invention se rapporte ainsi selon un deuxième aspect à un 25 programme d'ordinateur comprenant des instructions de code pour l'exécution d'un procédé de synchronisation de trames selon le premier aspect lorsque ce programme est exécuté par un processeur. La présente invention se rapporte ainsi selon un troisième aspect à un système comprenant : 8 3019337 un calculateur de maintenance d'un aéronef relié à au moins une unité de calcul par au moins une première liaison de données numérique et au moins une deuxième et une troisième liaison de données numériques secondaires, 5 - une première mémoire tampon dédiée à la première liaison et, - pour chaque liaison de données secondaire, une mémoire tampon dédiée à ladite liaison de données secondaire, ledit calculateur de maintenance étant configuré pour la mise en oeuvre du procédé selon le premier aspect. 10 De tels produit programme d'ordinateur et système présentent les mêmes avantages que ceux évoqués pour le procédé selon le premier aspect. Selon une variante de réalisation, les mémoires tampons peuvent être des mémoires tampon circulaires. L'emploi de mémoires tampon circulaires permet de traiter les trames 15 reçues en temps réel sans pertes de données. La rotation rapide des mémoires tampons circulaire assure la cadence d'alimentation en données d'entrées de l'au moins un algorithme de maintenance sans perturber la réception de nouvelles trames. De plus, chaque mémoire tampon dédiée à une liaison secondaire peut 20 constituer une voie d'une unique unité de mémoire tampon dudit système afin de minimiser le nombre d'unités matérielles de mémoire tampon dans le système. Par ailleurs, la première liaison peut être une liaison SPI et les liaisons numériques secondaires peuvent être des liaisons RS422. Le choix d'une liaison SPI fiable comme première liaison jouant le rôle de 25 référence d'horloge permet de s'affranchir des décalages d'horloge entre les liaisons et d'assurer la synchronisation des liaisons sans complexifier le système en employant une horloge supplémentaire. 9 3019337 Enfin, le calculateur de maintenance peut comprendre une unité fonctionnelle de maintenance HMFU pour anticiper les pannes et faciliter la maintenance, la première liaison peut être une liaison SPI reliant le calculateur de maintenance à une unité d'entrée-sortie numérique DIVIO, et les liaisons 5 secondaires peuvent comprendre trois liaisons RS422 reliant le calculateur de maintenance à une unité fonctionnelle de surveillance de moteur EMFU et aux deux voies d'un contrôleur électronique de moteur EEC. PRESENTATION DES FIGURES 10 D'autres caractéristiques et avantages apparaîtront à la lecture de la description qui va suivre d'un mode de réalisation. Cette description sera donnée en référence aux dessins annexés dans lesquels : - la figure 1 illustre schématiquement un système de surveillance selon un mode de réalisation de l'invention; 15 - la figure 2 illustre schématiquement un calculateur de maintenance d'un aéronef selon l'état de la technique; - la figure 3 illustre un exemple de désynchronisation de liaisons; - la figure 4 illustre un exemple de remplissage des mémoires tampons provoqué par la désynchronisation des liaisons lorsqu'aucun traitement 20 n'est réalisé; - la figure 5 illustre schématiquement un calculateur de maintenance d'un aéronef selon un mode de réalisation de l'invention; - la figure 6 représente un diagramme schématisant un exemple de mise en oeuvre d'un procédé de synchronisation selon une mise en oeuvre de 25 l'invention; - les figures 7a, 7b et 7c illustrent des exemples du contenu des deuxième et troisième mémoires tampon lors la phase d'initialisation; 10 3019337 - -les figures 8a et 8b illustrent un exemple de mise en oeuvre de la remontée de voie EEC. DESCRIPTION DETAILLEE 5 Un mode de mise en oeuvre de l'invention, concerne un procédé de synchronisation de trames de données transmises à au moins un algorithme de maintenance exécuté par un calculateur de maintenance 1 d'un aéronef. Le calculateur de maintenance 1 est relié à au moins une unité de calcul par au moins une première liaison de données numérique 5 et au moins une 10 deuxième et une troisième liaisons de données numériques secondaires 6 et 7. A titre d'exemple, comme représenté en Figure 1, le calculateur de maintenance 1 comprend une unité fonctionnelle de maintenance HMFU et la première liaison 5 est une liaison SPI reliant le calculateur de maintenance 1 à une unité d'entrée-sortie numérique DIVIO 2, et les liaisons secondaires 15 comprennent trois liaisons RS422 6, 7 et 8 reliant respectivement le calculateur de maintenance 1 aux deux voies d'un contrôleur électronique de moteur EEC 4 et à une unité fonctionnelle de surveillance de moteur EMFU 3. Les liaisons peuvent envoyer des trames de données selon les horloges internes des unités qui leurs sont associées aux cadences suivantes: 1 trame 20 toutes les 15 ms pour chacune des liaisons RS422 et une trame toutes les 7,5 ms pour la liaison SPI. Comme représenté en Figure 5, le calculateur de maintenance 1 peut exécuter un système d'exploitation (HMOS) 9 qui réceptionne les données transmises sur la première liaison 5 et les liaisons secondaires 6, 7 et 8 pour les 25 mettre à disposition d'un logiciel applicatif (HMAS) 10 exécuté par le calculateur de maintenance 1. Les trames reçues sur les différentes liaisons peuvent être reçues par des composants DMA 11 qui gèrent leur écriture dans la mémoire RAM 12 du calculateur de maintenance 1. Les trames reçues sont ensuite lues en mémoire 11 3019337 par le HMAS qui les décode afin de les envoyer à l'au moins un algorithme de maintenance exécuté par le calculateur de maintenance 1. Le HMAS peut lire les données disponibles dans la mémoire RAM toutes les 120 ms. Une telle cadence est compatible avec les contraintes liées à la taille 5 des espaces mémoire disponibles dans le système d'exploitation ne permettant de récupérer que 480 ms de données au maximum à chaque lecture. Avec les cadences d'émission de trames proposées ci-dessus, le HMAS peut récupérer en moyenne à chaque lecture en mémoire RAM 8 trames sur chacune des liaisons secondaires et 16 trames sur la première liaison, mais des écarts 10 importants sont possibles par rapport à cette valeur moyenne, jusqu'à plus ou moins 50%. Le HMAS peut ensuite envoyer les trames lues et décodées à l'au moins un algorithme de maintenance toutes les 960 ms. Le HMAS récupère alors en moyenne 8 trames sur chaque liaison secondaire toutes les 120 ms, soit en moyenne 64 trames toutes les 960 ms, et le double sur la première liaison. De 15 telles cadences permettent d'alimenter correctement en données d'entrée les algorithmes de maintenance dont les périodes d'exécution typiques peuvent être au maximum de 125 ms, 250 ms ou 1 seconde et peuvent être fixées à 120 ms, 240 ms et 960 ms de façon à être multiple de la période d'envoi des trames sur les liaisons. 20 Le procédé selon une mise en oeuvre de l'invention propose, afin de synchroniser les données transmises à l'au moins un algorithme de maintenance, de stocker les trames reçues sur la première liaison 5, par exemple à l'issue de leur lecture en mémoire RAM par le HMAS, dans une première mémoire tampon 13, et de stocker pour chaque liaison de données secondaire les trames reçues 25 sur cette liaison de données secondaire, par exemple à l'issue de leur lecture en mémoire RAM par le HMAS, dans une mémoire tampon dédiée à cette liaison. Ainsi les trames reçues sur la deuxième liaison sont stockées dans une deuxième mémoire tampon 14 et les trames reçues sur la troisième liaison sont stockées dans une troisième mémoire tampon 15. Les trames reçues sur la 30 liaison secondaire 8 avec l'EMFU peuvent être stockées dans une quatrième mémoire tampon 16. 12 3019337 L'écriture des trames dans les mémoires tampons et leur synchronisation peuvent être réalisées par le calculateur de maintenance 1, par exemple par le HMAS. Lesdites mémoires tampon peuvent être des mémoires tampons 5 circulaires. Chaque mémoire tampon peut notamment comprendre trois zones : - une zone d'acquisition pour récupérer les trames lues en mémoire RAM, - une zone de débordement pour ne pas perdre les trames reçues lorsque la zone d'acquisition est pleine, - une zone de décodage pour décoder les données avant de les envoyer à 10 l'au moins un algorithme de maintenance. Chaque zone peut permettre le stockage de 960 ms de données découpées en 4 zones de 240 ms appelées major frames. Chaque major frame est divisée en 16 petits espaces de mémoire appelés minor frames et correspondant à 1 trame RS422 ou à 2 trames SPI, c'est-à-dire aux données 15 transmises toutes les 15 ms. On notera première position d'une mémoire tampon, la première position de sa zone d'acquisition. La libération des trames contenues dans les zones de décodage à destination de l'au moins un algorithme de maintenance est déclenchée par le 20 remplissage de toutes les zones d'acquisition de toutes les mémoires tampons, quand l'équivalent de 960ms de données a été reçu sur toutes les liaisons. Les trames n'étant pas reçues au même rythme sur les différentes liaisons, il est possible que la zone d'acquisition d'une mémoire tampon soit pleine alors que la zone d'acquisition d'une autre mémoire tampon ne l'est pas encore. Un tel 25 remplissage peut donc prendre plus ou moins de 960 ms selon les aléas de réception. La zone de débordement est alors utilisée pour stocker les trames reçues une fois la zone d'acquisition d'une mémoire tampon remplie en attendant le remplissage des zones d'acquisition de toutes les autres mémoires tampon. Lorsque toutes les zones d'acquisition ont été remplies, une rotation est 30 effectuée : les données des trames contenues dans les zones de décodage sont 13 3019337 libérées à destination de l'au moins un algorithme de maintenance, les trames contenues dans la zone d'acquisition deviennent celles de la zone de décodage pour être décodées et celles se trouvant dans la zone de débordement deviennent celles de la zone d'acquisition. Les zones de décodage ainsi vidées 5 sont ensuite utilisées comme zones de débordement. Chaque mémoire tampon dédiée à une liaison secondaire peut constituer une voie d'une unique unité de mémoire tampon. Une telle unité de mémoire tampon est alors conçue pour stocker dans ses différentes voies les trames lues en mémoire RAM et reçues des différentes liaisons secondaires. 10 Afin de synchroniser les données reçues en entrée par l'au moins un algorithme de maintenance, les différentes liaisons de données transmettant des trames de données au calculateur de maintenance 1 sur la première liaison et sur les liaisons secondaires sont synchronisées entre elles. Pour cela, une des liaisons est choisie comme référence d'horloge pour 15 l'ensemble des trames reçues par le calculateur de maintenance. La liaison choisie comme référence d'horloge est la première liaison de données 5. Il s'agit de préférence de la plus fiable des liaisons de données. A titre d'exemple, la liaison choisie comme référence d'horloge peut être la liaison SPI car elle apparaît comme la liaison la plus fiable. En effet, les liaisons 6 et 7 avec l'EEC 4 20 peuvent être perturbées par l'environnement moteur entre les boitiers EEC et EMU. De plus, parmi les liaisons internes à l'EMU, la liaison SPI est plus courte que la liaison RS422 8. Ceci permet de ne pas utiliser comme horloge de référence une horloge supplémentaire telle qu'une horloge interne HMFU qui aurait rendu la solution plus complexe. Par la suite, on considère que la première 25 liaison utilisée comme référence n'est jamais perdue et que l'écart du nombre de trames entre la première liaison, telle que la liaison SPI, et les liaisons secondaires est négligeable sur une durée de vol, ce qui permet d'éviter de recaler les trames reçues sur la première liaison par rapport aux trames reçues sur les autres liaisons. 30 De plus, les trames transmises sur certaines liaisons secondaires dont la deuxième et la troisième liaison contiennent un numéro d'identification appelé label, les labels des trames successives émises sur une même liaison de 14 3019337 données étant incrémentés de manière cyclique et continue. Cela peut notamment être le cas pour les trames émises par les deux voies de l'EEC. Les numéros d'identification des trames émises par la première liaison et les autres liaisons secondaires sont des horodatages dont la valeur limite est 5 suffisamment grande pour les durées de vol considérées. La synchronisation des trames peut comprendre une phase d'initialisation et une phase de fonctionnement normal. La phase d'initialisation est indispensable pour satisfaire la contrainte de répétabilité de l'au moins un algorithme de maintenance. Elle assure le début du 10 remplissage des mémoires tampon de sorte que la première trame stockée dans la deuxième mémoire tampon 14 et dans la troisième mémoire tampon 15 comporte un même numéro d'identification prédéterminé. Par exemple, dans le cas où les trames transmises sur les liaisons avec les deux voies de l'EEC comportent un label variant cycliquement de 1 à 16, la phase d'initialisation peut 15 garantir que la première trame stockée transmise sur chacune de ces liaisons comporte le label « 1 ». N'importe quelle autre valeur de « label » comprise entre 1 et 16 pourrait convenir pourvu que la répétabilité des données envoyées soit bien respectée. Elle assure également que la première mémoire tampon dédiée à la première liaison stocke un nombre de trames égal au plus petit multiple d'un 20 premier nombre prédéterminé supérieur ou égal au double du nombre de trames reçues sur une des deuxième ou troisième liaisons. Comme illustré sur la Figure 6, la phase d'initialisation peut comprendre les étapes décrites ci-dessous. Lors d'une première étape de stockage El, un nombre prédéterminé de 25 trames reçues successivement et ordonnancées en fonction de leur numéro d'identification sur la première liaison pendant un premier intervalle de temps sont stockées à des positions successives de la première mémoire tampon à partir de sa première position. A titre d'exemple, le premier intervalle de temps peut être égal à 3*120 ms, ce qui correspond au stockage de 3*16 trames reçues 30 sur la liaison SPI. On entend par position successives des emplacements mémoires successifs parmi une liste ordonnée d'emplacements mémoires. Ces 15 3019337 emplacements mémoires successifs ne correspondent pas nécessairement à des adresses mémoires adjacentes, croissantes ou décroissantes. Lors d'une deuxième étape de stockage E2, pour chaque liaison secondaire, les trames reçues successivement sur ladite liaison secondaire 5 pendant ledit premier intervalle de temps et une trame de bourrage pour chaque trame transmise sur ladite liaison secondaire pendant ledit premier intervalle de temps et non reçue sont stockées à des positions successives de la mémoire tampon dédiée à ladite liaison secondaire à partir de sa première position. La détection de la non réception d'une trame transmise sur une liaison peut être 10 réalisée en comparant les numéros d'identification des trames reçues, notamment de deux trames reçues successivement, et en détectant que ces numéros ne se suivent pas s'il s'agit de labels ou bien, dans le cas d'horodatages, que l'intervalle de temps entre deux numéros reçus successivement est, par exemple, environ égal au double de la période 15 habituelle d'envoi de trames sur cette liaison. En cas de détection d'une trame transmise sur une liaison et non reçue, une trame de bourrage est stockée dans la mémoire tampon dédiée à cette liaison à la position qu'aurait dû occuper la trame transmise si elle avait été reçue, avant de stocker la trame reçue ultérieure dans la mémoire tampon. Un tel stockage sur un premier intervalle de temps 20 égal à 3*120 ms permet de stocker de manière certaine parmi lesdites trames, pour chaque liaison secondaire dont le numéro d'identification est de type label, au moins une trame de chaque label, dont notamment une trame du label choisi pour assurer la répétabilité des données envoyées à l'au moins un algorithme de maintenance, par exemple le label « 1 ». Un exemple du contenu des deuxième 25 et troisième mémoires tampon à l'issue de cette étape est représenté en Figure 7a. Si aucune trame n'est reçue sur la deuxième et la troisième liaison, l'ensemble des mémoires tampons peuvent être vidées et la première étape de stockage El peut être mise en oeuvre à nouveau. 30 Lors d'une première étape de suppression E3, les trames stockées avant la première trame comprenant le numéro d'identification prédéterminé sont supprimées au moins dans les mémoires tampons dédiées à la deuxième et la 16 3019337 troisième liaisons. Une telle suppression peut être appliquée aux mémoires tampons dédiées à toutes les liaisons sur lesquelles sont transmises des trames comprenant un numéro d'identification de type label. A titre d'exemple, toutes les trames acquises sur les liaisons 6 et 7 avec les deux voies de l'EEC 4 et 5 stockées avant la première trame comprenant le label « 1 » sont supprimées dans les deuxième et troisième mémoires tampon. Le résultat d'une telle suppression est représenté en Figure 7b. Si l'ensemble des trames stockées dans la deuxième ou la troisième mémoire tampon, ou plus généralement dans une mémoire tampon dédiée à une 10 liaison sur laquelle sont transmises des trames comprenant un numéro d'identification de type label, n'inclut aucune trame comprenant le label choisi pour assurer la répétabilité des données envoyées à l'au moins un algorithme de maintenance, par exemple le label « 1 », toutes les trames stockées sont supprimées et la voie est déclarée tombée. Si toutes les liaisons sur lesquelles 15 sont transmises des trames comprenant un numéro d'identification de type label sont déclarées tombées, la phase d'initialisation peut être redémarrée à la première étape de stockage E1. Lors d'une première étape de recalage E4, le stockage des trames restantes dans les mémoires tampons est modifié de façon à ce que la première 20 position des deuxième et troisième mémoires tampon, et plus généralement de toutes les mémoires tampons dédiées à une liaison sur laquelle sont transmises des trames comprenant un numéro d'identification de type label, corresponde à la position de la première trame comprenant le numéro d'identification prédéterminé, par exemple le label « 1 ». Selon une première variante, les 25 trames stockées dans une telle mémoire tampon à l'issue de la première étape de suppression E3 sont déplacées en conservant leur ordre de sorte que la trame comprenant le numéro d'identification prédéterminée soit stockée à la première position de la mémoire tampon. Selon une deuxième variante, les trames stockées restent stockées au même emplacement mémoire mais la 30 première position de la mémoire tampon est déplacée au niveau de la position de la mémoire tampon stockant la trame comprenant le numéro d'identification prédéterminé, entrainant un déplacement en conséquence des zones de la 17 3019337 mémoire tampon. Le résultat d'un tel recalage sur les deuxième et troisième mémoires tampon est représenté en Figure 7c. Lors d'une deuxième étape de suppression E5 les trames les plus anciennes parmi celles stockées dans la première mémoire tampon sont 5 supprimées de sorte que la première mémoire tampon stocke un nombre de trames égal au plus petit multiple d'un nombre prédéterminé supérieur ou égal au double du nombre de trames reçues sur une des deuxième ou troisième liaisons. A titre d'exemple, ce nombre prédéterminé peut être égal à 16 et correspondre alors au nombre de trames transmises sur la liaison SPI durant un intervalle de 10 120 ms. Les trames restantes dans la première mémoire tampon sont ensuite recalées comme lors de l'étape de recalage E4 de sorte que la position de la trame la plus ancienne stockée dans la première mémoire tampon corresponde à la première position de la première mémoire tampon. Lors d'une deuxième étape de calage E6, pour chaque liaison secondaire 15 telle que le numéro d'identification des trames reçues par le calculateur de maintenance sur ladite liaison secondaire comprend un horodatage, les trames les plus anciennes parmi celles stockées dans la mémoire tampon dédiée à cette liaison sont supprimées ou des trames de bourrage sont insérées, de sorte que la mémoire tampon dédiée à cette liaison secondaire stocke un nombre de 20 trames égal au nombre de trames le plus proche, parmi les nombres de trames stockées dans la deuxième et la troisième mémoire tampon, du nombres de trames stockées dans la mémoire tampon dédiée à cette liaison secondaire au début de la deuxième étape de calage E6. Plus précisément, si davantage de trames ont été reçues sur cette liaison qu'il ne reste de trames stockées dans la 25 deuxième ou la troisième mémoire tampon, les trames les plus anciennes parmi celles stockées dans la mémoire tampon dédiée à cette liaison sont supprimées et les trames restantes sont recalées de la même façon qu'à la deuxième étape de suppression E5. A l'inverse, si moins de trames ont été reçues sur cette liaison qu'il ne reste de trames stockées dans la deuxième ou la troisième 30 mémoire tampon, des trames de bourrage sont insérées, par exemple après la dernière trame stockée. 18 3019337 Une fois cette phase d'initialisation effectuée, les mémoires tampons dédiées à une liaison sur laquelle sont transmises des trames comprenant un numéro d'identification de type label, telles que les mémoires tampon des liaisons des voies de l'EEC, stockent à leur première position des trames 5 comprenant le numéro d'identification prédéterminé, par exemple le « label » 1, et l'écart de nombre de trames entre ces mémoires est minime. Dès que la phase d'initialisation est terminée, on effectue la phase de fonctionnement normal dont le but est de remplir les mémoires tampons au fur et à mesure avec des données synchronisées et continues, quels que soient les 10 aléas de réception. La phase de fonctionnement normal est appliquée de manière répétée aux trames reçues pendant un second intervalle de temps, par exemple toutes les 120 ms en moyenne. Le principe général de la phase de fonctionnement normal est de jouer 15 sur le nombre de trames reçues afin que les trames stockées à la même position dans les différentes mémoires tampons contiennent des trames correspondant bien au même instant d'acquisition des données, autrement dit que chaque trame stockée à une position de la deuxième mémoire tampon comporte le même numéro d'identification que la trame stockée à la même position de la 20 troisième mémoire tampon Lors d'une troisième étape de stockage E7, les trames reçues successivement sur la première liaison pendant le second intervalle de temps sont stockées à des positions successives de la première mémoire tampon, à la suite de la dernière position de la zone d'acquisition occupée ou de la dernière 25 position de la zone de débordement occupée si la zone d'acquisition est pleine. Dans le cas où une telle étape est appliquée à 120 ms de données comme indiqué ci-dessus, 16 trames transmises sur la liaison SPI sont stockées dans la première mémoire tampon à chaque mise en oeuvre de cette étape. Lors d'une quatrième étape de stockage E8, pour chaque liaison 30 secondaire, les trames reçues successivement sur ladite liaison secondaire pendant le second intervalle de temps et une trame de bourrage pour chaque 19 3019337 trame transmise sur ladite liaison secondaire et non reçue, sont stockées à des positions successives d'une mémoire tampon dédiée à ladite liaison secondaire, à la suite de la dernière position de la zone d'acquisition occupée ou de la dernière position de la zone de débordement occupée si la zone d'acquisition est 5 pleine. Ainsi chaque trame stockée à une position de la deuxième mémoire tampon comporte le même numéro d'identification que la trame stockée à la même position de la troisième mémoire tampon et toutes les liaisons secondaires restent synchronisées. Dans le cas où une telle étape est appliquée à 120 ms de données comme indiqué ci-dessus, 8 trames sont stockées en moyenne dans 10 chaque mémoire tampon à chaque mise en oeuvre de cette étape. Au cours de cette étape, en l'absence de réception de trames sur une liaison secondaire sur laquelle sont transmises des trames comprenant un numéro d'identification de type label, durant le second intervalle de temps, nécessaire pour la réception du premier nombre prédéterminé de trames sur la 15 première liaison, par exemple pendant 120 ms, la liaison est déclarée tombée. Si la deuxième ou la troisième liaison, ou plus généralement une liaison sur laquelle sont transmises des trames comprenant un numéro d'identification de type label, est déclarée tombée, les trames reçues sur cette liaison pendant le second intervalle de temps sont supprimées et autant de trames de bourrages 20 sont insérées dans la mémoire tampon dédiée à la liaison tombée que le nombre de trames reçues sur la deuxième ou troisième liaison non tombée. Si toutes les liaisons sur lesquelles sont transmises des trames comprenant un numéro d'identification de type label sont déclarées tombées, les trames reçues sur ces liaisons pendant le second intervalle de temps sont supprimées et 8 trames de 25 bourrages sont insérées dans les mémoires tampons qui leurs sont dédiées. Par ailleurs, si aucune trame n'est reçue pendant le second intervalle de temps sur une liaison secondaire sur laquelle sont transmises des trames comprenant un numéro d'identification de type horodatage, par exemple la liaison EMFU, 8 trames de bourrages sont insérées dans la mémoire tampon qui lui est dédiée. 30 On évite ainsi d'introduire une dérive du nombre de trames entre les liaisons. 20 3019337 Si une liaison était déclarée tombée et qu'elle ne l'est plus, alors une logique permet de resynchroniser la voie et de ne plus la considérer comme tombée, c'est-à-dire de remonter la liaison. Pour cela le calculateur 1 détecte la réception sur ladite liaison secondaire 5 d'un ensemble de trames reçues successivement, ledit ensemble de trames comprenant un quatrième nombre prédéterminé de trames et une trame comprenant le numéro d'identification prédéterminé, par exemple le label « 1 ». En cas de détection positive, le calculateur stocke la trame comprenant le numéro d'identification prédéterminé et les trames reçues ultérieurement sur 10 ladite liaison secondaire à des positions successives de la mémoire tampon dédiée à ladite liaison secondaire, de sorte que les trames stockées à une seconde position de la mémoire tampon dédiée à ladite liaison secondaire et à une seconde position de la deuxième ou troisième mémoire tampon comprennent le numéro d'identification prédéterminé. Plus précisément, les 15 trames reçues pendant le second intervalle de temps sur ladite liaison avant la trame comprenant le numéro d'identification prédéterminé sont supprimées et le calculateur cherche si la première position non remplie de la mémoire tampon dédiée à la liaison en cours de remontage est plus proche de la position, dite position A, d'une autre mémoire tampon dédiée à une voie non tombée stockant 20 la trame la plus récente comprenant le numéro d'identification prédéterminé reçue sur cette voie non tombée, par exemple le label « 1 », ou bien de la position, dite position B, de cette mémoire tampon à laquelle sera stockée la prochaine trame comprenant le numéro d'identification prédéterminé qui sera reçue sur cette voie non tombée, c'est-à-dire par exemple 16 positions plus loin. 25 Dans le premier cas, les trames stockées dans la mémoire tampon à partir de la position A sont supprimées et la trame comprenant le numéro d'identification prédéterminé et les trames reçues ultérieurement sont stockées à partir de la position A. Dans le deuxième cas, des trames de bourrages sont stockées dans la mémoire tampon dédiée à la voie en cours de remontage jusqu'à la position 30 précédent la position B et la trame comprenant le numéro d'identification prédéterminé et les trames reçues ultérieurement sont stockées à partir de la position B. La voie est alors déclarée comme non tombée. Les différentes étapes correspondant au premier cas sont représentées en Figure 8a et Figure 8b. 21 3019337 La libération des trames à destination de l'au moins un algorithme de maintenance est alors déclenchée par le remplissage de toutes les zones d'acquisition de toutes les mémoires tampons, par exemple quand l'équivalent de 960 ms de données, c'est-à-dire 64 trames pour chaque liaison secondaire ont 5 été stockées dans chaque mémoire tampon. Lors d'une étape de libération E9, si les zones d'acquisition de toutes les mémoires tampons ne sont pas remplies, la troisième étape de stockage E7 est mise en oeuvre à nouveau. A l'inverse, lorsque des trames sont stockées dans la première mémoire tampon et dans chaque mémoire tampon dédiée à une liaison 10 secondaire, à au moins un second nombre prédéterminé de positions, les trames stockées audit premier nombre prédéterminé de positions desdites mémoires tampons sont transmises audit au moins un algorithme de maintenance. Plus précisément, lorsque toutes les zones d'acquisition ont été remplies, une rotation est effectuée : les données des trames contenues dans les zones de décodage 15 sont libérées à destination de l'au moins un algorithme de maintenance, les trames contenues dans la zone d'acquisition deviennent celles de la zone de décodage pour être décodées et celles se trouvant dans la zone de débordement deviennent celles de la zone d'acquisition. La première position de chaque mémoire tampon est alors modifiée et correspond dorénavant à la première 20 position de la nouvelle zone d'acquisition de la mémoire tampon. Puis le calculateur met en oeuvre à nouveau la première étape de la phase de fonctionnement, c'est-à-dire la troisième étape de stockage E7. Avant la rotation des zones des mémoires tampons, le calculateur peut vérifier la synchronisation entre les liaisons secondaires sur lesquelles sont 25 transmises des trames comprenant un numéro d'identification de type label, par exemple les liaisons des voies de l'EEC. Si la mémoire tampon dédiée à une telle liaison de données stocke moins de trames qu'une autre mémoire tampon de ce type et que l'écart est supérieur à une première valeur seuil, cette liaison est déclarée comme tombée et des trames de bourrage sont ajoutées dans la 30 mémoire tampon qui lui est dédiée de façon à ce que les deux mémoires tampons comportent autant de trames. 22 3019337 De même, le calculateur peut vérifier la synchronisation entre une liaison secondaire sur laquelle sont transmises des trames comprenant un numéro d'identification de type horodatage, comme la liaison EMFU, et les liaisons secondaires sur lesquelles sont transmises des trames comprenant un numéro 5 d'identification de type label. Si l'écart minimum entre le nombre de trames stockées dans la mémoire tampon dédiée à cette liaison et le nombre de trames stockées dans les mémoires tampon dédiées aux liaisons sur lesquelles sont transmises des trames comprenant un numéro d'identification de type label est supérieur à une deuxième valeur seuil, des trames sont supprimées ou des 10 trames de bourrage sont ajoutées dans la mémoire tampon dédiée à cette liaison de manière à ce que cette mémoire tampon comporte autant de trames que la mémoire tampon présentant initialement cet écart minimum. Il est en effet préférable de supprimer des trames provenant de la liaison reliant le calculateur à I'EMFU plutôt que des trames provenant des liaisons reliant le calculateur à 15 I'EEC. Celles-ci étant séquencées, on ne peut que les supprimer par groupe de 16 ce qui correspond à une désynchronisation de 240 ms. En jouant sur les trames EMFU, on peut avoir plus de modularité sur la resynchronisation et donc corriger au plus tôt. 23 REVENDICATIONS1. Procédé de synchronisation de trames de données transmises, à au moins un algorithme de maintenance exécuté par un calculateur de maintenance (1) d'un aéronef, sur une première liaison (5) de données numérique et au moins une deuxième et une troisième liaisons (6,7) de données numériques secondaires, lesdites trames comprenant un numéro d'identification, les numéros d'identification des trames transmises sur les deuxième et troisième liaisons étant compris dans une suite finie et cyclique de numéros, les numéros 10 d'identification des trames transmises sur une des deuxième et troisième liaisons étant incrémentés à chaque transmission d'une nouvelle trame sur cette liaison, ledit procédé étant mis en oeuvre par ledit calculateur et comprenant : - une phase d'initialisation stockant les trames reçues sur chacune desdites liaisons dans une mémoire tampon dédiée à ladite liaison, les trames stockées à 15 une première position d'une deuxième mémoire tampon dédiée à la deuxième liaison et à une première position d'une troisième mémoire tampon dédiée à la troisième liaison comprenant un même numéro d'identification prédéterminé, et une première mémoire tampon dédiée à la première liaison stockant un nombre de trames égal au plus petit multiple d'un premier nombre prédéterminé 20 supérieur ou égal au double du nombre de trames reçues sur une des deuxième ou troisième liaisons, - une phase de fonctionnement stockant les trames reçues sur chacune desdites liaisons dans les mémoires tampons qui leur sont dédiées, chaque trame stockée à une position de la deuxième mémoire tampon comportant le même numéro 25 d'identification que la trame stockée à la même position de la troisième mémoire tampon. 2. Procédé selon la revendication 1, dans lequel la phase de fonctionnement comprend des étapes de : - stockage (E7) des trames reçues successivement sur la première liaison à des 30 positions successives de la première mémoire tampon, 24 3019337 - pour chaque liaison secondaire, stockage (E8) des trames reçues successivement sur ladite liaison secondaire et d'une trame de bourrage pour chaque trame transmise sur ladite liaison secondaire et non reçue, à des positions successives d'une mémoire tampon dédiée à ladite liaison secondaire, 5 - lorsque des trames sont stockées dans la première mémoire tampon et dans chaque mémoire tampon dédiée à une liaison secondaire, à au moins un second nombre prédéterminé de positions, transmission (E9) audit au moins un algorithme de maintenance des trames stockées audit second nombre prédéterminé de positions desdites mémoires tampons. 3. Procédé selon l'une des revendications précédentes, dans lequel la phase d'initialisation comprend les étapes de : - stockage (El) à des positions successives de la première mémoire tampon d'un troisième nombre prédéterminé de trames reçues successivement sur la première liaison pendant un premier intervalle de temps, - pour chaque liaison secondaire, stockage (E2) à des positions successives de la mémoire tampon dédiée à ladite liaison secondaire des trames reçues successivement sur ladite liaison secondaire pendant ledit premier intervalle de temps et d'une trame de bourrage pour chaque trame transmise sur ladite liaison secondaire pendant ledit premier intervalle de temps et non reçue, - suppression (E3) des trames stockées avant la première trame comprenant le numéro d'identification prédéterminé au moins dans les deuxième et troisième mémoires tampons, - suppression (E5) des trames les plus anciennes parmi celles stockées dans la première mémoire tampon de sorte que la première mémoire tampon stocke un nombre de trames égal au plus petit multiple du premier nombre prédéterminé supérieur ou égal au double du nombre de trames reçues sur une des deuxième ou troisième liaisons. 4. Procédé selon l'une des revendication précédentes, dans lequel lesdites liaisons secondaires comprennent au moins une liaison secondaire 30 supplémentaire telle que le numéro d'identification des trames reçues par le 25 3019337 calculateur sur ladite au moins une liaison secondaire supplémentaire comprend un horodatage, et dans lequel la phase d'initialisation comprend, pour chaque liaison secondaire supplémentaire, une étape de suppression (E6) des trames les plus anciennes parmi les trames stockées dans la mémoire tampon dédiée à 5 cette liaison ou d'insertion de trames de bourrage, de sorte que ladite mémoire tampon dédiée à ladite liaison secondaire supplémentaire stocke un nombre de trames égal au nombre de trames le plus proche, parmi les nombres de trames stockées dans la deuxième et la troisième mémoire tampon, du nombre de trames reçues sur ladite liaison secondaire supplémentaire. 10 5. Procédé selon l'une des revendications précédentes comprenant une étape de détection (E8) des trames transmises sur une liaison et non reçues en comparant les numéros d'identification des trames reçues. 6. Procédé selon l'une des revendications précédentes comprenant des étapes de: 15 - détection (E8) de l'absence de réception de trames sur une liaison secondaire, dite tombée, durant un intervalle de temps nécessaire pour la réception du premier nombre prédéterminé de trames sur la première liaison, - détection (E8) de la réception sur ladite liaison secondaire tombée d'un ensemble de trames reçues successivement, ledit ensemble de trames 20 comprenant un quatrième nombre prédéterminé de trames et une trame comprenant le numéro d'identification prédéterminé, - stockage (E8) de la trame comprenant le numéro d'identification prédéterminé et des trames reçues ultérieurement sur ladite liaison secondaire à des positions successives de la mémoire tampon dédiée à ladite liaison secondaire, de sorte 25 que les trames stockées à une seconde position de la mémoire tampon dédiée à ladite liaison secondaire et à une seconde position de la deuxième ou troisième mémoire tampon comprennent le numéro d'identification prédéterminé. 7. Programme d'ordinateur comprenant des instructions de code pour l'exécution d'un procédé de synchronisation de trames selon l'une quelconque 30 des revendications précédentes lorsque ce programme est exécuté par un processeur. 26 3019337 8. Système comprenant : - un calculateur de maintenance (1) d'un aéronef relié à au moins une unité de calcul par au moins une première liaison (5) de données numérique et au moins une deuxième et une troisième liaisons (6,7) de données numériques 5 secondaires, - une première mémoire tampon (13) dédiée à la première liaison et, - pour chaque liaison de données secondaire, une mémoire tampon (14, 15, 16) dédiée à ladite liaison de données secondaire, ledit calculateur de maintenance étant configuré pour la mise en oeuvre du 10 procédé selon l'une quelconque des revendications 1 à 6. 9. Système selon la revendication 8, dans lequel les mémoires tampons (13, 14, 15, 16) sont des mémoires tampons circulaires. 10. Système selon l'une des revendications 8 ou 9, dans lequel chaque mémoire tampon dédiée à une liaison secondaire constitue une voie d'une 15 unique unité de mémoire tampon dudit système. 11. Système selon l'une des revendications 8 à 10, dans lequel la première liaison (5) est une liaison SPI et les liaisons numériques secondaires (6, 7, 8) sont des liaisons RS422. 12. Système selon l'une des revendications 8 à 11, dans lequel le calculateur 20 de maintenance comprend une unité fonctionnelle de maintenance HMFU (1) pour anticiper les pannes et faciliter la maintenance, et dans lequel la première liaison (5) est une liaison SPI reliant le calculateur de maintenance (1) à une unité d'entrée-sortie numérique DIVIO (2), et les liaisons secondaires (6,7,8) comprennent trois liaisons RS422 reliant le calculateur de maintenance à une 25 unité fonctionnelle de surveillance de moteur EMFU et aux deux voies d'un contrôleur électronique de moteur EEC.