FR 2579339 A1 19860926 FR 8604061 A 19860321 La présente invention concerne des procédés permet- tant de répondre h des erreurs d'un loqiciel. en particulier dans des systèmes à vie critique tels qu'une commande d'un aéronef. Le fonctionnement correct continu d'un système num4- rique à la suite d'un défaut d'un logiciel est très désira- bie dans les ordinateurs modernes et devient absolument impératif dans un systbme numérique à vie critique tels que ceux utilisés dans les systèmes de commande de voi prin- cipale pour un aéronef. Une erreur de logiciel peut se ma- nifester d'eile-même du fait que le processeur se trouve être perdu dans le programme et n'exécute pas ses tâches ou bien que le processeur achève ses tâches trop rapidement. sans exécuter la totalité de son programme. Des schémas du matériel doubles ou redondants assurent une protection à l'égard d'un défaut du matériel mais ils ne fournissent pas des sécurités contre des défauts du loqiciel lorsque les ordinateurs redondants sont programmés avec des logiciels identiques. Ainsi chacun des canaux redondants peut souffrir du même défaut du logiciel, pratiquement au même instant. L'état actuei de la technique, en ce qui concerne la véri- fication et la validation du logiciel, ne fournit pas un outil ou une technique garantissant l'absence de défaut du logiciel. Au contraire l'expérience a montré que des erreurs de logiciels continuent à exister même dans ie cas d'un logiciel v4rifié et validé complètement. Des systèmes de secours ont été fournis par de sim- ples systèmes analogiques, par des systèmes numériques ad- ditionnels qui sont programmés d'une manière dissemblable, ou bien encore par des moyens mécaniques. Le recours à ces systèmes de secours a lieu généralement à la suite d'un désaccord entre les canaux redondants du système numérique principal. Ces systèmes de secours exigent un matériel ad- ditionnei appréciable avec les inconvénients qui en résui- tent en ce qui concerne le coût, le poids, ila puissance nécessaire et la dissipation de chaieur.En outre les syst- mes de secours analogiques et mécaniques sont forcés d'être de simples dérivés de l'équipement habituellement très com- plexe et non linéaire du système numérique principal. Uin but de ia présente invention est de fournir un moyen permettant de poursuivre ie fonctionnement correct d'un systbme d'ordinateur numérique en présence d'une erreur du ioqiciel et ce avec un matériel additionnel minimai. Suivant l'invention un programme de ioqiciel de secours est installé dans une portion isolée prévue dans ia mémoire d'au moins un ordinateur parmi plusieurs ordinateurs redondants. Le second programme assume essentiellement ies mêmes fonctions que le premier programme mais il est pro- grammé d'une manière dissemblable afin d'éviter une erreur de ioqiciei commune. La commutation vers le second programme a lieu soit automatiquement soit manuellement par l'opéra- teur (c'est-à-dire le pilote) lorsqu'il détecte une anoma- lie. La commutation automatique est amorcée lorsqu'au moins n - i appareils de surveillance de l'ordinateur (dans un système ayant n niveaux de redondance) indiquent une condi- tion de défaut du logiciel. Les appareils de surveillance de l'ordinateur peuvent être des temporisateurs de facteur de cycle qui détectent un cycle d'ordinateur impropre (trop long ou trop court), des testeurs de raisonnabiiité, des modèles de comparaison analogiques ou une combinaison de ceux-ci. La complexité et la sosphistication des appareils de surveillance varient pour des applications particulières mais en général ces appareils de surveillance doivent être incorporés dans ie matériel pour éviter de les rendre inef- ficace vis à vis des défauts de logiciel communs qu'ils sont destinés à découvrir. L'assembleur ou le compiieur utilisé pour assembler/ compiler le programme de mode "secours" est également programmé d'une manière dissemblable afin d'élimi- ner des défauts possibles de i'assembleur/compiieur en tant que source de défaut de logiciel de mode commun. On décrira ci-après, à titre d'exemple non iimita- tif, une forme d'exécution de la présente invention, en référence au dessin annexé sur lequel: La figure 1 est un schéma synoptique d'un système de commande suivant l'invention. La figure 2 est un schéma d'un appareil de surveii- lance pour l'inventions La fiqure 3 est un schéma synoptique détaiiid'une partie de l'invention. Sur la fiqure 1 est représenté un système de comman- de ln basé sur un ordinateur, lequel comporte quatre canaux d'ordinateurs A,R,C et D. Chacun de ces canaux comporte une section de processeur 12, une unité associée d'entrée/sortie 14 et une m4moire 16. Cette mémoire 16 est divisée en deux parties. Une partie 18 contient un logiciel principal qui est accessible pendant le fonctionnement normai du système. Une partie 20 contient un loniciei de secours dissemblable qui est accessible uniquement dans le cas d'une défaillance du logiciel principal. Uin appareil de surveillance 22 inter- vient pour déterminer la défaillance du logiciel principal. Cet appareil de surveillance 22 est, par exemple, un temporisateur de facteur de cycle, un testeur de raisonna- -bilité ou un modèle de comparaison analogique. Les quatre canaux A-D sont redondants c'est-à-dire que chacun d'eux contient des copies du logiciel principal et du logiciel de secours dans leurs mémoires respectives 16. Le système d'ordinateur 10 contient un schéma de "vote" dans le matériel ou dans ie logiciel, ainsi qu'il est bien connu, pour émettre le siqnal sélectionné le plus approprié vers un dispositif commandé 24, tel que les servomoteurs de commande des gouvernes d'un aéronef, en réponse à des si- qnaux d'entrée 26 tels que des signaux provenant d'un pilote ou de captqurs. nn comprendra que l'invention peut être appliquée è un nombre quelconque de canaux et que ie iogi- ciei de secours peut être uniquement installé dans un seul canal. La figure 2 représente un schéma détaililé d'un appareil de surveillance typique 22 utilisé dans chaque canai du système d'ordinateurs 10, par exemple dans ie canal A, lequei représente les appareils de surveillance 22 dans les autres canaux B,C,D. IUne porte OU 3fA (le suffixe "A" indique l'association au canal A) répond à des siqnaux provenant d'un temporisateur de "chien de garde"sur une liqne 3?A, d'un temporisateur de facteur de cycle court sur une Liqne 34A et h un signal sur une fiane 36A indiquant d'autres condit I-3 de protection. L'un queiconque de ces signaux amnre porte nul 3OA à délivrer un siqnai sur une liqne 40A qui coupe alors i'alimentation du canal A. Un relais 42A pour le canai A bascule en réponse au siqnai sur ia iigne A afin de couper le canai A. D'autres portes nu OB-3flD et d'autres relais 42B-42D similaires sont prévus pour ies autres canaux R-D. La ioqique de commutation pour les appareils de surveillance doit être incorporée dans ie matériel de telLe façon qu'ellie soit indépendante des défauts du logiciel. Uine section de commutation 44A comporte deux ensem- bles de contact 46A-46D et 48A-4-BD associés à chacun des relais 42A-42D, ces contacts étant disposés ainsi qu'il est représenté de telle façon que n'importe quel groupe de trois canaux défaillants entraîne la production d'un signal sur une ligne 49A, signal qui est appliqué à un circuit ET 50A. Une autre section de commutation 52A comporte un troisième ensemble de contacts 54A-54D appartenant respecti- vement à chacun des relais 42A-42D, ces contacts étant dis- posés en parallèle de telile façon que la défaillance d'un canal quelconque entraîne ie démarrage d'un temporisateur, tel qu'un intégrateur 56A excitant un comparateur 58A. Ainsi après il'écouiement d'un intervalle de temps prédéterminé Tref, représentant la période de temps-durant iaquelle un défaut de logiciei de mode commun est rencontré dans tous les canaux, un signal est fourni au circuit ET 50A (ie tem- porisateur 56A peut être remis à zéro dans des conditions telLes que celle correspondant au frein du rotor se trouvant " en service "). S'il est jugé qu'un défaut de mode commun n'est pas un événement pratiquement simultané, alors i'in- tervaiie de temps Tref peut être réglé à il'infini. Ceci permet au ioqiciel de secours d'être mis en oeuvre chaque fois qu' il se produit n 1 pannes dans l'ensembie de n pannes. Le circuit ET 50A répond uniquement aux signaux provenant de ia section de commutation 44A et du comparateur 58A pour fournir un signal sur une iigne 60A lorsque le sytme critique de commande de vol est actif (comme cela peut être détecté par ie signal de desserrage du frein du rotor dans un hélicoptère) , ce qui est indique par un signai sur une ligne 61 (commune à tous les canaux A-D). line section de commutation 64A comporte un ensemble de contacts 66A-66D associés à chacun des relais 42A-42D, ces contacts étant connectes en série de teiie manière qu'un signal soit émis sur une ligne 68A en réponse b un défaut de logiciel dans la totalité des quatres canaux A-D. Une porte nil 70A répond à la sortie de la porte ET A et à la sortie de la section de commutation 64A, de manière h fournir un signal sur une iiane 72A qui amorce le mode de fonctionnement de secours basé sur L'une ou L'autre contingence. Le signal sur la ligne 72A est également fourni en réponse à un signal de surpassement manuel sur une ligne 73 reliée à la porte nlJ 70A. Le signai présent sur la ligne 72A intervient, dans le canal A, en tant que signal d'interruption du matériel non masquable sur une ligne 73A si un circuit ET 74A est armé par un signal d'armement sur une ligne 76A reliée à son entrée. La requête d'interruption du matériel non masquable est délivrée vers chaque canal A-D si bien que le processeur 12 achève l'instruction qu'il est en train d'exécuter avant de reconnaître l'interruption non masquabie. La logique de transfert du matériel répond à l'interruption non masquable en basculant vers le banc de mémoire contenant le logiciel de secours. Le processeur commence ensuite un "service de l'interruption" l'emplacement de mémoire prescrit dans la mémoire de secours. Le sous-programme de service d'inter- ruption est effectivement dans ce cas le logiciel de se- cours. Cette logique de commutation réalise une commutation unifiée du processeur dans un état de processeur connu et vers un emplacement connu dans la mémoire de secours. Ti est nécessaire que le système de secours réinitiaiise le systè- me, par exemple par une réinitialisation. Des conditions de défauts suspectes peuvent être également remises à zéro puisqu'il pourrait s'agir de fausses indications d'un mauvais fonctionnement du logiciel. Il est éqaiement désira- ble de synchroniser les ordres calcuiés vers ies positions des actionneurs (dans un aéronef) afin de réduire au minimum ies transitoires et de passer ensuite, après une période de temps, aux ordres de mémoire de secours. Dans un système tel qu'un système de commande d'un aéronef, le ioqiciel de secours peut être une loi de com- mande simplifiée. Généraiement plus ia loi de commande est simple plus ii est facile de vérifier et de valider. Le logiciel de secours peut être installé dans tous les ordina- teurs mais ii peutit être préférable de l'installer dans un seui d'entre eux, ce qui évite des schémas de "vote" et d'autres complications dans le cas d'une commutation vers le logiciel de secours. Le système de secours exige des interfaces en- trée/sortie additionnelles en nombre limité, un circuit logique numérique et un nouveau logiciel, pour chaque canai installé dans le système. Lorsque le pilote arme le "mode secours" 76A, ie svstème de commande du vol continue à fonctionner dans le mode normal jusqu'à ce qu'une ou plusieurs des conditions suivantes apparaissent: 1. Le pilote amorce un transfert en "mode secours". 2. n-l canaux du système de commande délivrent des coupures après i'intervalle de temps prescrit Tref. 3. n canaux du système de commande délivrent des coupures. La ioqique de transfert au "mode secours" sélection- ne, à partir de la liste des conditions précitées, n'importe quel signal de condition de requête actif, pour appliquer une requête d'interruption non masquable au ou aux proces- seurs dans le canal. La réaction à l'interruption non mas- quable peut être considérée comme provoquant un transfert de "bourrage" vers la mémoire de secours pour les instructions. Le même processus de transfert a lieu séparément dans les autres canaux. Si on se réfère à la figure 3, on voit que chaque canal répond à l'interruption non masquabie par i'intermé- diaire d'une interruption de matériel 80 qui provoque le déroulement de ia suc' -ion des actions suivantes: 1. 3e banc de mn sire est commute du banc de mfmoire principal 82 au banc de,émoire de secours 84; 2. l'adresse de départ correcte du logiciel de secours (se trouvant dans le banc de mémoire de secours) est transférée dans ie compteur de programme 86; et 3. le processeur 89 exécute son instruction suivante à partir de l'adresse de départ du programme de secours qui se trouve maintenant stocké dans le compteur de programme. R PEVENnICATTnNS 1.- Procédé pour fournir une commande de secours pour un système,- commande basé sur un iogiciei, dans le cas d'un défaut du logiciel, caractérisé en ce qu'on instal- ie un logiciel principal dans une mémoire (16), on installe un logiciel de secours, conçu d'une manière dissemblable, dans une portion isolée (2n) de ia mémoire, on exécute ie logiciel principal dans un mode normal de fonctionnement, on détecte un défaut dans le logiciel principal et on exécute le ioqiciei de secours en réponse au défaut détecté. 2.- Procédé suivant la revendication i caractérisé en ce qu'on délivre une requête d'interruption non masquable en réponse au défaut détecté, on -achève l'instruction qui est en cours d'exécution dans ie logiciel principal lorsque la requête d'interruption non masquabie est délivrée, et on accuse ensuite réception de la requête d'interruption non masquabie, et on exécute le logiciel de secours en réponse à la requête d'interruption non masquable. 3.- Procédé suivant la revendication 1 caractérisé en ce qu'on effectue un transfert de "bourrage" en direction de la portion isolée (20) de la mémoire en réponse au défaut détecté. 4.- Procédé suivant la revendication 1 caractérisé en ce qu'on utilise un logiciel de secours plus simple que le logiciel principal. 5.- Procédé suivant ia revendication 1, pour un système d'ordinateurs redondants comportant n canaux, carac- térisé en ce qu'on installe des copies identiques du logi- ciel principal dans chaque canal (A-D) de mémoire (16), on installe un logiciel de secours dissemblable dans une partie isolée (20) d'au moins une mémoire (16) d'un canal, on exé- cute ie logiciel principal dans un mode normal de fonction- nement, on détecte un défaut dans le logiciel principal et on exécute ie logiciel de secours en réponse au défaut déte- ct4.