FR 2771193 A1 19990521 FR 9812482 A 19981006 Etat de la technique La présente invention concerne un appareil de commande d'un système, notamment un véhicule automobile, un moteur ou une boîte de vitesses comportant plusieurs modules susceptibles d'être activés, des modules activés générant des informations par l'observation des états du système, un ges- tionnaire de programmes étant prévu pour activer les modules, le gestionnaire tenant compte d'une priorité attribuée aux modules pour les activer. L'invention concerne également un procédé de mise en oeuvre d'un appareil de commande d'un système, notamment de véhicule automobile, de moteur ou boîte de vitesses com- portant plusieurs modules susceptibles d'être activés, les modules activés générant des informations par l'observation des états du système et pour l'activation on tient compte d'une priorité attribuée aux modules. Selon le document WO 97/13064, on connaît déjà un appareil de commande d'un système ou un procédé de mise en oeuvre d'un tel appareil de commande selon lequel on a un grand nombre de modules susceptibles d'être activés. Ces mo- dules sont activés par un gestionnaire de tâches qui tient compte des priorités attribuées aux différents modules. Tou- tefois, les priorités sont associées de manière fixe aux mo- dules et ne peuvent être modifiées. Avantages de l'invention La présente invention concerne un appareil de commande du type défini ci-dessus, caractérisé par un ges- tionnaire de priorités qui modifie la priorité des modules. L'invention concerne également un procédé de mise en oeuvre d'un tel appareil, caractérisé en ce que les prio- rités des modules peuvent être modifiées. L'appareil de commande et le procédé selon l'invention offrent l'avantage de permettre de modifier les priorités modifiées pour la commande des modules. En particu- lier, on peut tenir compte d'un grand nombre d'éléments va- riables pour la commande de déroulement des opérations, c'est-à-dire pour la mise en activité et l'exécution des mo- dules. Suivant d'autres caractéristiques avantageuses de l'invention: - le gestionnaire de priorités modifie la priorité des modu- les en fonction d'une durée dans laquelle le module est ac- tivé ou désactivé, - le gestionnaire de priorités modifie la priorité des modu- les en fonction des états du système, - le gestionnaire de priorités modifie la priorité des modu- les en fonction d'une durée pendant laquelle le module res- pectif est activé ou désactivé et en même temps en fonction des états du système, - le gestionnaire de priorités modifie la priorité des modu- les en plus en fonction d'une information d'activation in- diquant que le module concerné a été activé et le cas échéant également en fonction d'une information correspon- dante de désactivation, - le gestionnaire de priorités modifie la priorité des modu- les en outre en fonction des signaux de temps absolu, - le gestionnaire de programmes sélectionne à partir d'une quantité de modules disponibles pour l'activation, tout d'abord le module de priorité la plus élevée pour l'activation, puis le gestionnaire de programmes forme une quantité résiduelle qui ne contient plus le module de prio- rité la plus élevée et d'autres modules qui peuvent être activés avec le module de priorité la plus élevée et en ce que le gestionnaire de programmes sélectionne alors d'autres modules dans la quantité résiduelle pour désacti- ver, - le gestionnaire de programmes sélectionne pour désactiver, dans des étapes répétées, des modules de priorité maximale suivante, puis il forme des quantités résiduelles qui ne contiennent plus les modules qui viennent d'être sélection- nés pour être activés ainsi que d'autres modules qui ne peuvent tourner en même temps que les modules qui viennent d'être sélectionnés, jusqu'à ce que la quantité résiduelle ne contienne plus aucun module, - le gestionnaire de programmes, après la sélection des modu- les garantit que les modules sélectionnés soient activés et que les modules non sélectionnés ne soient pas actives. La prise en compte de la durée d'activation ou de repos du module respectif garantit que des modules qui n'ont pas été exécutés longtemps ou ne l'ont été que récemment, soient pris en compte de manière correspondante. La prise en compte des états du système permet de faire dépendre les priorités des modules de circonstances externes. Il est particulièrement avantageux de combiner entre eux les deux procédés pour avoir la plus grande sou- plesse possible pour l'activation des modules. En augmentant les priorités pour l'activation on garantit que les modules disposent d'une durée de fonctionnement minimale. La prise en S15 compte du temps absolu permet de réaliser les conditions de fonctionnement forcé dépendant d'un signal de temps absolu. Le gestionnaire de tâches suit avantageusement un procédé de sélection des modules permettant de tenir compte de manière préférentielle des modules de plus grande priorité. Dessins Des exemples de réalisation de l'invention sont représentés dans les dessins et seront décrits ci-après de manière plus détaillée. Ainsi: la figure 1 montre un appareil de commande et un système, - les figures 2 à 4 montrent différents procédés d'attri- bution de priorités à des modules, - les figures 5 à 8 montrent un procédé de sélection par le gestionnaire de tâche. Description des exemples de réalisation La figure 1 montre un appareil de commande 1 re- lié par des lignes de liaison 4 à un système à commander 2. L'appareil de commande 1 comprend un microcalculateur 3 des- tiné à traiter les modules 10,11, 12. Le module 10 représente un grand nombre de modules qui sont des modules fonctionnels. De tels modules fonctionnels 10 sont par exemple destinés à commander ou à diagnostiquer le système 2. Le module 11 est un gestionnaire de tâches et le module 12 est un module de gestion de priorités. Le système 2 peut être n'importe quel système technique commandé par un appareil de commande 1. A titre d'exemple, le système 2 est un véhicule automobile, un moteur à combustion interne ou une boite de vitesses. Un tel système 2 est équipé d'un grand nombre de capteurs et d'actionneurs. Des lignes de liaison 4 permettent de transmettre des infor- mations de réglage de l'appareil de commande 1 aux actionneur du système 2 (flèche tournée vers le système 2). En outre, on peut transmettre des valeurs de mesure des capteurs du sys- tème 2 par les lignes de liaison 4 vers l'appareil de com- mande 1. (Flèche dirigée vers l'appareil de commande 1). L'appareil de commande 1 reçoit ainsi des informations rela- tives à l'état du système 2. Ces informations sont traitées par l'appareil de commande 1 et sont transformées en des in- formations de commande pour le système 2 en fonction des états souhaités (par exemple selon la pédale d'accélérateur du véhicule). L'appareil de commande 1 ne présente ici que de manière schématique quelques modules 10, 11, 12 et le micro- calculateur 3. Les appareils de commande 1 utilisés générale- ment comportent des circuits non représentés pour des raisons de simplification. Les modules 10, 11, 12 sont en général des modules de programme mais qu'il peut également s'agir de com- posants câblés assurant des fonctions appropriées. Un module fonctionnel 10 réalisé comme module de programme correspond à une suite d'ordre de programme qui active ou met au repos les éléments par le gestionnaire de programmes 11. Les fonctions qui apparaissent à l'utilisateur comme une unité ou qui ser- vent à commander une fonction unitaire peuvent être réparties en plusieurs modules gérés séparément par le gestionnaire de programmes 11. Les modules fonctionnels 10 ne sont nécessai- res que pour le traitement des tâches de commande directe ou les opérations de diagnostic. Ces modules exploitent les in- formations de commande du système et en fonction des valeurs de consigne il génère des informations de commande correspon- dantes pour le système 2. Un signal d'entrée d'un tel module fonctionnel peut être par exemple dans le cas d'un véhicule automobile, le régime (vitesse de rotation du moteur) et l'information de consigne correspondant à la pédale d'accélérateur donnant une information de commande correspon- dante pour le moteur. En outre, on peut prévoir des modules fonctionnels 10 surveillant le fonctionnement correct du sys- tème 2. Par exemple, dans un véhicule automobile, la régle- mentation prévoit le contrôle du fonctionnement du catalyseur pendant le fonctionnement en charge. Pour cela, de temps à autre on active un module fonctionnel correspondant 10 qui contrôle l'aptitude au fonctionnement du catalyseur en véri- fiant les signaux de la sonde Lambda. Les modules fonctionnels 10 peuvent être à l'état actif ou à l'état inactif. A l'état inactif, on n'exécute pas des diagnostics ou la commande de partie du système. Cela si- gnifie notamment que le module inactif enregistre les données du système uniquement pour contrôler l'aptitude au fonction- nement et ne fournit aucune information vers le système 2. A l'état inactif, les modules peuvent néanmoins échanger par exemple des informations avec le microcalculateur 3 et notam- ment il faut échanger des informations entre les modules fonctionnels 10 et le gestionnaire de programmes 11 qui con- cerne la mise en oeuvre d'un module (par exemple la possibi- lité ou le souhait d'une mise en oeuvre). Comme tous les modules fonctionnels 10 ne sont pas nécessaires dans chaque état de fonctionnement du système 2, on peut au moins inactiver une partie de ces modules. L'activation des différents modules fonctionnels 10 se fait par une commande de déroulement qui décide des modules fonc- tionnels qui seront exécutés. Le gestionnaire de programmes 11 et le gestionnaire de priorités 12 font partie de cette commande de déroulement. La commande de déroulement peut faire dépendre l'activation de différents modules fonction- nels de certaines conditions externes. Les modules fonction- nels 10 concernés par exemple par l'allumage ou l'injection d'un moteur à essence sont activés par exemple en fonction de la position du vilebrequin du moteur. De même, les modules fonctionnels 10 concernés par le diagnostic du système 2 sont activés en relation avec les états de fonctionnement du système 2. Il est important dans ces conditions que plusieurs modules fonctionnels 10 puissent travailler en parallèle en ce qu'il n'est pas néces- saire que le traitement d'un module soit terminé pendant qu'un autre module soit traité. Un microcalculateur 3 ne peut toujours exécuter qu'un seul ordre associé à un certain mo- dule. Le traitement simultané signifie ainsi dans le présent contexte que des modules qui sont traités simultanément sont prévus pour l'attribution du temps de calcul de façon à exé- cuter les fonctions liées aux différents modules. Le gestionnaire de programmes 11 et le gestion- naire de priorités 12 font partie de la commande de déroule- ment qui décide de l'activation et de la non activation des modules. Le gestionnaire de priorités 12 a pour fonction d'attribuer des priorités aux modules fonctionnels 10 ou de modifier ces priorités pour la commande de déroulement. Ce gestionnaire de tâches 11 consiste alors, en fonction des priorités, à décider des modules fonctionnels 12 qui seront à l'état actif et les modules fonctionnels 10 qui seront à l'état inactif. Le mode de fonctionnement du gestionnaire de priorités 10 sera décrit ci-après en liaison avec les figures 2 à 4. La figure 2 montre un diagramme de la priorité (P) en fonction du temps (T). Le temps (T) est celui qui cor- respond à un certain état du module, c'est-à-dire le fait qu'il soit actif ou inactif. Le diagramme de la figure 2 mon- tre à titre d'exemple les priorités des modules A et B. Pour le module A on a représenté une alternative A'. Le module B ne sert ici que comme module de comparaison et c'est pour- quoi, il est représenté avec une priorité constante en fonc- tion de l'espace de temps. Le module A est à la priorité O à l'instant tO. Cet instant tO peut être donné par exemple en ce qu'à cet instant le module A de la commande de déroule- ment, c'est-à-dire le gestionnaire de programmes 11 ou le gestionnaire de priorités 12 a indiqué qu'il était prêt à fonctionner. Le temps t représente ainsi le temps d'attente au cours duquel le gestionnaire de priorités 12 augmente en continu la priorité du module A. A l'instant tl, la priorité du module A dépasse la priorité constante du module B de sorte que le gestionnaire de programmes 11 active à cet ins- tant tl le module A et met le module B à l'état inactif. Cela s'applique évidemment à la condition que les modules A et B soient prêts à fonctionner mais qu'ils peuvent être mis en oeuvre simultanément. Le gestionnaire de priorités 12 attri- bue ainsi au module A une priorité en fonction d'une durée. Une autre possibilité d'attribuer une priorité à un module consiste à comparer le module A et le module A'. Les courbes de priorités représentées à la figure 2 pour les modules A et A' se distinguent par la pente de la priorité en fonction du temps. Le module A' est activé seulement à un instant t2 beaucoup plus tard car l'augmentation de priorité de ce module A' est inférieure à celle du module A. Les pen- tes différentes proviennent du fait que le temps d'attente t est en outre combiné à l'intensité d'un état du système 2 (par exemple par multiplication). Comme état du système 2 on considère notamment l'intensité d'un signal de capteur du système 2. Plus la valeur de mesure du capteur du système 2 est de forte amplitude et plus forte sera la priorité du mo- dule A ou A'. Dans ce cas, on peut également avoir un tracé non linéaire pour les priorités A et A'. Une autre possibilité d'attribuer une priorité aux modules consiste à attribuer une priorité exclusivement en fonction d'un signal de capteur. A titre d'exemple, on peut prévoir pour un moteur, de combiner la priorité d'un mo- dule directement au régime du moteur, c'est-à-dire que la priorité d'un certain module sera d'autant plus élevée que sa vitesse de rotation le sera. La figure 3 montre un autre procédé d'attribuer une priorité à un module A avec le gestionnaire de priorités 12. A titre de comparaison, la figure 3 montre un module B de priorité constante. Le module A représenté à la figure 3 voit sa priorité augmenter entre l'instant tO et l'instant t3, de manière linéaire en fonction du temps d'attente t. A l'instant t3, le module A est activé par le gestionnaire de programmes 11. Le gestionnaire de priorités attribue alors au module A, de manière brutale une priorité plus élevée. Cela est nécessaire pour garantir que le module A ne soit traité que pendant une durée déterminée. Cela est notamment néces- saire si le module concurrent B ne présente pas une priorité constante contrairement à ce qui est représenté ici, mais que lui-même a une priorité légèrement croissante en fonction du temps ou encore si comme représenté à la figure 3, après ac- tivation du module A, la priorité de ce module A diminue lé- gèrement (l'espace de temps après l'instant t3). Dans ces deux cas, on aurait au cas contraire une commutation perma- nente entre le module A et le module B, c'est-à-dire qu'à de courts intervalles de temps, le module A serait activé puis inactive. Le gestionnaire de priorités 12 est de ce fait con- çu pour qu'en cas d'activation d'un module, on arrive à aug- menter brusquement la priorité pour établir une certaine hystérésis à la commutation alternée entre les modules de priorité analogues. Une autre façon de procéder pour attribuer une priorité au module A par le gestionnaire de priorités sera décrite ci-après à l'aide de la figure 4. A la figure 4, l'axe des temps t représente le temps absolu par exemple le temps absolu après le démarrage d'un véhicule. Les instants en temps absolu t4, t5 définissent une fenêtre de temps et à l'intérieur de cette fenêtre de temps, le module A possède une priorité très grande. Une telle attribution de priorité résulte du fait qu'en fonction d'un temps absolu, on exécute de manière préférentielle un module. A l'extérieur de cette fenêtre de temps, on peut gérer la priorité du module A de manière connue, par exemple en augmentant en continu la prio- rité avec le temps du module A comme cela est également re- présenté à la figure 4. Une telle fenêtre de temps absolu est par exemple souhaitable si certains modules fonctionnels doi- vent nécessairement être exécutés dans des fenêtres de temps déterminées. Cela est par exemple le cas pour certaines fonc- tions de diagnostic comme celles utilisées pour des véhicules automobiles. C'est pourquoi, avec des tests normalisés, qui ne contiennent souvent qu'une seule fenêtre de temps appro- priée pour un certain test fonctionnel, il faut s'assurer alors de l'exécution des modules fonctionnels correspondants. En dehors de cette fenêtre de temps, une attribution normale de priorité en fonction du temps d'attente ou analogue sera également garantie de sorte que le module fonctionnel corres- pondant sera appelé au moins de temps à autre. En fonction d'une priorité attribuée par le ges- tionnaire de priorités 12 aux différents modules fonctionnels , le gestionnaire de programmes 11 détermine alors les mo- dules qui sont activés et ceux qui sont à inactiver. Pour ce- la, par exemple, à des intervalles de temps réguliers, on active le module de gestionnaire de programmes 11 puis en fonction des priorités on active ou on désactive des modules fonctionnels 10. Une autre possibilité peut consister à acti- ver toujours le module de gestionnaire de programmes 11 lors- qu'un module fonctionnel 10 a terminé sa tâche, car on peut alors décider de nouveau des modules qui peuvent fonctionner et de ceux qui sont arrêtés. Une autre possibilité d'appeler le module de gestionnaire de programmes 11 consiste à faire dépendre l'appel du module 11 de signaux externes par exemple de signaux de capteur du système 2. A l'aide des figures 5 à 8 on décrira la sélec- tion du module de gestionnaire de programmes 11 en fonction des priorités des modules fonctionnels A, B, C, D, E, F, G, H des modules à activer. A partir de la quantité de modules A- H, prêts à fonctionner, c'est-à-dire disponibles pour être activés, on sélectionne tout d'abord le module de priorité la plus élevée. Dans le cas présent, il s'agit du module A mis en évidence à la figure 5 par un cercle. Puis, le module 11 détermine s'il existe d'autres modules qui ne peuvent tourner en même temps que le module A. Cela peut provenir par exemple du fait que le module A accède à certains organes de réglage et qu'en même temps aucun autre module ne doit influencer ces organes de réglage. Il peut également arriver que le module A influence des capteurs nécessaires à d'autres modules. De telles relations transversales entre les modules peuvent par exemple être enregistrées dans une liste à laquelle peut ac- céder le gestionnaire de programmes 11. Dans le cas présent, la situation est telle, que les modules C et E ne peuvent être activés en même temps que le module A. Ces modules sont ainsi représentés comme barrés O10 dans l'ensemble comme l'indique la figure 6. Il subsiste une quantité résiduelle dans laquelle le module A déjà sélection- né et les modules C et E déjà barrés, qui ne doivent être ac- tivés avec le module A, n'existent plus. Dans le présent exemple, cette quantité est formée par les éléments B, D, F, G, H. Dans cette quantité résiduelle on sélectionne de nou- veau le module de plus grande priorité; dans le cas présent, il s'agit du module D. Comme cela apparaît à la figure 7, il n'est pas possible qu'en même temps que le module D, les mo- dules B et H soient activés de sorte que ceux-ci sont égale- ment à rayer (figure 7). La quantité résiduelle correspondant aux modules D et F ne contient plus les modules barrés et les modules déjà sélectionnés. Parmi cette quantité résiduelle, le module D a une priorité plus élevée que le module F de sorte que le module D sera sélectionné dans l'étape suivante. La quantité résiduelle ne comprend plus que le module F qui peut être activé en même temps que le module D de sorte que dans la dernière étape (figure 8), on sélectionne également le module F pour l'activation. Le gestionnaire de programmes 11 a ainsi déterminé que du fait des priorités et les rela- tions transversales, les modules A, D, G et F doivent être activés. Si avant cette constatation, l'un des modules main- tenant barré était activé, le gestionnaire de programmes 11 mettrait ce module à l'état non activé. Si l'un des modules sélectionnés était préalablement non activé, ce module serait mis à l'état activé par le gestionnaire de programmes 11. Si dans l'état évoqué, dans lesquels le gestion- naire de programmes 11 doit sélectionner un module de priori- té la plus élevée, et que plus d'un module aurait la priorité la plus élevée, le gestionnaire de programmes peut former une fuite des modules de même priorité en fonction d'autres cri- tères quelconques. Par exemple, aux figures 5 à 8, on peut utiliser l'ordre alphabétique (pour une même priorité) pour décider. R E V E N D I C A T I ON S 1 ) Appareil de commande (1) d'un système (2), notamment un véhicule automobile, un moteur ou une boîte de vitesses com- portant plusieurs modules (10) susceptibles d'être activés, des modules activés (10) générant des informations par l'observation des états du système (2), un gestionnaire de programmes (11) étant prévu pour activer les modules (10), le gestionnaire (11) tenant compte d'une priorité attribuée aux modules (10) pour les activer, caractérisé par un gestionnaire de priorités (12) qui modifie la priorité des modules (10). 2 ) Appareil de commande selon la revendication 1, caractérisé en ce que le gestionnaire de priorités (12) modifie la priorité des mo- dules (10) en fonction d'une durée dans laquelle le module (10) est activé ou désactivé. 30 ) Appareil de commande selon la revendication 1, caractérisé en ce que le gestionnaire de priorités (12) modifie la priorité des mo- dules (10) en fonction des états du système (2). 4 ) Appareil de commande selon la revendication 1, caractérisé en ce que le gestionnaire de priorités (12) modifie la priorité des mo- dules (10) en fonction d'une durée pendant laquelle le module (10) respectif est activé ou désactivé et en même temps en fonction des états du système (2). ) Appareil de commande selon l'une quelconque des revendi- cations précédentes, caractérisé en ce que le gestionnaire de priorités (12) modifie la priorité des mo- dules (10) en plus en fonction d'une information d'activation indiquant que le module concerné (10) a été activé et le cas échéant également en fonction d'une information correspon- dante de désactivation. 6 ) Appareil de commande selon l'une des revendications pré- cédentes, caractérisé en ce que le gestionnaire de priorités (12) modifie la priorité des mo- dules (10) en outre en fonction des signaux de temps absolu. 7 ) Appareil de commande selon l'une quelconque des revendi- cations précédentes, caractérisé en ce que le gestionnaire de programmes (11) sélectionne à partir d'une quantité de modules (10) disponibles pour l'activation, tout d'abord le module (10) de priorité la plus élevée pour l'activation, puis le gestionnaire de programmes (11) forme une quantité résiduelle qui ne contient plus le module de priorité la plus élevée et d'autres modules qui peuvent être activés avec le module de priorité la plus élevée et en ce que le gestionnaire de programmes (11) sélectionne alors d'autres modules (10) dans la quantité résiduelle pour désac- tiver. 8 ) Appareil de commande selon la revendication 7, caractérisé en ce que le gestionnaire de programmes (11) sélectionne pour désacti- ver, dans des étapes répétées, des modules de priorité maxi- male suivante, puis il forme des quantités résiduelles qui ne contiennent plus les modules qui viennent d'être sélectionnés pour être activés ainsi que d'autres modules qui ne peuvent tourner en même temps que les modules qui viennent d'être sé- lectionnés, jusqu'à ce que la quantité résiduelle ne con- tienne plus aucun module. 9 ) Appareil de commande selon les revendications 7 ou 8, caractérisé en ce que le gestionnaire de programmes (11), après la sélection des modules garantit que les modules sélectionnés soient activés et que les modules non sélectionnés ne soient pas activés. 10 ) Procédé de mise en oeuvre d'un appareil de commande (1) d'un système (2), notamment de véhicule automobile, de moteur ou boîte de vitesses comportant plusieurs modules (10) sus- ceptibles d'être activés, les modules activés (10) générant des informations par l'observation des états du système (2) et pour l'activation on tient compte d'une priorité attribuée aux modules (10), caractérisé en ce que les priorités des modules peuvent être modifiées. 11 ) Procédé selon la revendication 10, caractérisé en ce qu' à chaque modification des priorités, on tient compte d'une durée pendant laquelle le module (10) respectif a été activé ou inactive. 12 ) Procédé selon la revendication 10, caractérisé en ce qu' à chaque variation des priorités, on tient compte des états du système (2). 13 ) Procédé selon la revendication 10, caractérisé en ce qu' à chaque variation des priorités, on tient compte d'une durée pendant laquelle le module (10) a été activé ou désactivé et en même temps des états du système (2). 14 ) Procédé selon l'une quelconque des revendications à 13, caractérisé en ce qu' en modifiant la priorité on tient compte en outre d'un signal de temps absolu. ) Procédé selon l'une quelconque des revendications à 14, caractérisé en ce que pour activer des modules on sélectionne dans un ensemble de modules, tout d'abord le module de priorité la plus élevée pour l'activer, puis on forme une quantité résiduelle qui ne contient plus le module de priorité la plus élevée ainsi que d'autres modules qui ne peuvent être activés simultanément avec le module de priorité la plus élevée, et à partir de la quantité résiduelle on sélectionne d'autres modules pour les activer. 16 ) Procédé selon la revendication 15 caractérisé en ce que par des étapes répétées on sélectionne des modules ayant cha- que fois la priorité la plus élevée pour être activée et en formant des quantités résiduelles ne contenant plus les modu- les déjà sélectionnés pour être activés et d'autres modules qui ne peuvent fonctionner en même temps que les modules déjà sélectionnés, on poursuit jusqu'à ce que la quantité rési- duelle ne contient plus de modules. 17 ) Procédé selon l'une quelconque des revendications 14 ou 15, caractérisé en ce que le gestionnaire de programmes (11) garantit après sélection des modules, que les modules sélectionnés sont activés et que les modules non sélectionnés ne sont pas activés et en ce que parmi les modules sélectionnés, le cas échéant, les modules ne sont activés que si d'autres modules restent encore à ac- tiver, qui ne doivent pas fonctionner en même temps que les premiers et sont ainsi désactivés.