Brevet FR2817686A1 — publié le 20020607

La présente invention se rapporte à un dispositif de gestion d'énergie pour appareils électroniques reliés en réseau. Les réseaux de mesure de données environnementales (surveillance de l'eau, de l'air, du sol...) constituent un exemple d'appareils électroniques reliés en réseau. Un critère important à satisfaire pour de tels réseaux est une autonomie la plus élevée possible, ce qui revient à minimiser leur consommation en énergie électrique. En effet, les dispositifs de mesure et de contrôle de pollution sont souvent disposés dans des lieux dépourvus de réseau ou de source d'alimentation électrique. En outre, ils peuvent être installés dans des endroits difficiles d'accès, chaque appareil (que l'on appelle également"borne") pouvant être séparé de ses voisins de plusieurs centaines de mètres. Ces appareils comportent leur propre source d'alimentation électrique (piles ou batteries). Les interventions sur ces appareils, en particulier pour changer leur source d'alimentation sont chères, et ne peuvent être limitées qu'en minimisant leur consommation en énergie. De plus, ces appareils permettent généralement de surveiller des phénomènes à évolution lente, ce qui fait que les opérations réalisées avec ces appareils (expérimentations, diagnostics,...) peuvent durer plusieurs mois, nécessitant plusieurs changements de leurs sources d'alimentation. Pour économiser l'énergie consommée par les bornes précitées, on peut mettre en oeuvre différents dispositifs de veille, matériels ou logiciels, qui sont déclenchés sur la base de la prévision des périodes d'inactivité des organes de ces bornes, en fonction de leur configuration. Il faut, bien entendu, mettre également en oeuvre des dispositifs correspondants de réveil des organes mis en veille au moment opportun. La mise en veille des bornes peut être réalisée de deux façons principales. La première consiste à mettre en veille la borne complète en réduisant au strict minimum sa consommation. Ce mode est activé et désactivé par une horloge temps réel sauvegardée. La seconde comprend un ensemble de modes de veille de composants individuels permettant l'activation des seuls composants impliqués dans une chaîne fonctionnelle active. On connaît de nombreux dispositifs de mise en veille de systèmes électroniques de type monoprocesseur. Ils sont généralement basés sur la coupure de l'alimentation quand il n'y a plus de tâche à réaliser. Cette mise en veille est commandée par l'organe de calcul qui, après un certain temps d'activité, est programmé pour se mettre en veille. Il est réveillé par exemple par une demande extérieure, telle qu'une action sur un clavier pour un PC par exemple. En ce qui concerne les systèmes temps réel connectés en réseau, on ne connaît qu'une seule réalisation. Il s'agit des nouvelles architectures pour l'électronique automobile dans lesquelles divers organes d'une automobile communiquent entre eux via un réseau local (de type CAN par exemple). Cette architecture a l'avantage principal de réduire la longueur, et donc le coût, des câblages de la voiture. Chaque organe qui en a les moyens se met en veille dès qu'il n'y a plus de tâche à réaliser. Il est réveillé par une demande qui lui est adressée via le réseau. Ce fonctionnement décentralisé n'est possible que quand les différents éléments connectés au réseau ont un fonctionnement indépendant. Dans le cas contraire, il est nécessaire d'utiliser une gestion centralisée qui permette de tenir compte globalement de l'influence de la mise en veille de certains éléments sur le fonctionnement des autres. Or, actuellement, on ne sait pas assurer une telle gestion centralisée de façon simple et optimisée. La présente invention a pour objet un procédé de gestion centralisée d'énergie pour appareils électroniques reliés en réseau, du type multiprocesseurs et multitâches, permettant, de façon simple et peu onéreuse, d'optimiser la consommation d'énergie des éléments de ce réseau, de façon transparente par rapport aux autres fonctions assurées par ces éléments, la mise en veile et le réveil des divers éléments étant assurés au moment opportun. La présente invention a également pour objet un dispositif de mise en oeuvre de ce procédé. Le procédé de l'invention, mis en oeuvre sur un système électronique multiprocesseurs synchrones fonctionnant en temps réel et comportant plusieurs organes de calcul et/ou de contrôle reliés en réseau, ainsi qu'un calculateur central de gestion, est caractérisé en ce qu'il consiste, en phase de fonctionnement du système, à faire déterminer par le calculateur central les futures périodes d'inactivité des différents organes du système dont il a mémorisé les modes de veille, à faire régulièrement tester par ce calculateur central l'existence de tâches actives exécutées par ces organes, et lorsqu'il n'y a plus de tâches actives, à lui faire calculer le laps de temps restant avant le début des prochains traitements à réaliser par ces organes, et, en fonction de la valeur de ce laps de temps par rapport à différents seuils prédéterminés correspondant chacun à un mode particulier de gestion d'énergie de l'organe considéré, à activer le mode veille correspondant, puis, pour chaque mode veille, à commander le réveil correspondant à la fin du temps de veille. La présente invention sera mieux comprise à la lecture de la description détaillée d'un mode de réalisation, pris à titre d'exemple non limitatif et illustré par le dessin annexé sur lequel : la figure 1 est un bloc-diagramme d'une borne mettant en oeuvre le procédé de l'invention, et la figure 2 est un exemple schématisé d'une application distribuée sur trois processeurs, conformément à l'invention. L'invention est décrite ci-dessous en référence à un réseau de surveillance de paramètres d'environnement, mais il est bien entendu qu'elle n'est pas limitée à cette seule application, et qu'elle peut être mise en oeuvre dans tout système multiprocesseur fonctionnant en temps réel pendant de longs laps de temps et dont les divers sous-ensembles peuvent être mis en veille afin d'économiser leurs sources d'alimentation électrique, ce qui est surtout nécessaire lorsque ces sources sont autonomes (piles, batteries...), difficiles à changer (par exemple lorsqu'elles sont disposées dans des endroits peu accessibles) et onéreuses. Sur le bloc-diagramme de la figure 1, on a représenté les trois modules principaux d'une"borne"l faisant partie d'un système de bornes similaires à celle-ci. Les bornes de ce réseau sont reliées chacune à un ou plusieurs capteurs de paramètres environnementaux à surveiller (teneur de l'air en gaz nocifs, polluants de rivières,...). Généralement, ces paramètres évoluent lentement, ce qui autorise la prise de mesures successives de ces paramètres avec une périodicité assez longue (plusieurs minutes ou même plusieurs heures). Ainsi, entre deux mesures successives, au moins une partie des bornes peut être mise en veille, ce qui permet d'allonger sensiblement la durée de vie de leur alimentation autonome. La borne 1 comporte essentiellement trois modules électroniques 2,3 et 4 dénommés respectivement module CPU (module de processeur central), module de communication et de servitude (COM) et module d'acquisition (ACQ). Le module CPU assure des fonctions de calcul et de stockage de données. Le module COM assure en particulier les fonctions de gestion d'énergie consommée par l'ensemble de la borne 1, de routeur de communication (par radio ou par courants porteurs, en général) et fournit l'horloge temps réel de ! a borne. Le module ACQ assure la liaison avec le (les) capteur (s) relié (s) à la borne et non représenté (s), et le traitement local de leurs données (numérisation, mémorisation momentanée, mises à l'échelle...). Ces trois modules 2 à 4 sont reliés entre eux par un réseau de terrain 5, par exemple du type à paire torsadée, auquel sont reliées les autres bornes du système. Le module 2 comprend par exemple : un calculateur 6 (marqué "CPU"), avec son horloge temps réel 7 (HTP-CPU). Le calculateur 6 est relié par un microcontrôleur spécialisé 8 (par exemple du type"neuron chip"ou "N. C"), un transmetteur 9 (du type FTT10 c'est à dire"Free topology twisted pair transceiver", par exemple) et un convertisseur continu/continu 10 relié au réseau 5. Ce réseau 5 est relié par un commutateur 11 à une source d'alimentation électrique V, par exemple une batterie. Le module 3 comprend, par exemple, deux calculateurs tels que des microcontrôleurs 12 et 13, qui peuvent être du même type que celui référencé 8 dans le module 2. Le microcontrôleur 12 est chargé de la gestion d'énergie de la borne 1 et coopère avec une horloge temps réel 14 qui fournit les signaux d'horloge de tous les éléments de la borne 1. Lorsque le commutateur 11 est ouvert, seule cette horloge 14 fonctionne grâce à son alimentation en énergie indépendante 14 A. Le calculateur 13, relié au calculateur 12, est relié d'autre part à un émetteur-récepteur 15 communiquant avec d'autres bornes et/ou avec un centre de gestion distant. Le calculateur 12 est relié par ailleurs via un transmetteur 16 et un convertisseur continu-continu 17 au réseau 5. Le module 4 comporte, par exemple, un calculateur 18 (similaire aux calculateurs 8 et 12) relié, d'une part, à un module 19 d'interface et d'acquisition de données provenant des différents capteurs (non représentés) qui lui sont reliés, et d'autre part au réseau 5 via un transmetteur 20 (similaire aux transmetteurs 9 et 16) et un convertisseur continu/continu 21. Dans la borne 1, en particulier les composants suivants peuvent être mis en veille : le CPU 6, les microcalculateurs 8,12, 13, et 18, les transmetteurs 9,16, 20, les convertisseurs 10,17, 21. On coupe ainsi l'alimentation de tous les éléments du module correspondant, à moins que l'un au moins de ces éléments ne soit relié à sa propre source d'alimentation autonome, comme par exemple la source 14A pour l'horloge 14. Le calculateur central 6 de la borne 1 est chargé d'exécuter un programme multitâches en recevant ses signaux d'horloge de l'horloge 7. L'une des tâches de ce programme multitâches référencée TGE consiste à gérer la consommation en énergie des divers éléments de la borne qui peuvent être mis en veille (en particulier ceux qui consomment une énergie non négligeable). Cette tâche TGE évalue d'abord, à une périodicité qui est fonction des périodes d'activité de chacun des éléments en question, leur charge de travail et leur durée de mise en veille, les modes de veille des différents éléments étant connus de la tâche TGE. A chaque mode de gestion d'énergie correspondant des éléments actifs, des éléments en veille selon leur mode de veille propre, et des éléments"hors tension". De façon générale, les éléments de la borne 1 présentent globalement, n modes de veille référencés V1 à Vn correspondent chacun à mode particulier de gestion d'énergie. On appelle S1 à Sn les durées correspondantes de ces modes de veille. A chaque période de calcul, le calculateur 6 détermine s'il y a ou non des tâches actives. Suivant la valeur relative de T1, le calculateur 6 décide du choix du mode veille de la façon suivante : - si T1 .............. - si SiT1 La mise en veille peut être réalisée de deux manières : soit la tâche TGE active le dispositif de mise en veille proposé par le constructeur du composant ou du module considéré, soit elle coupe l'alimentation électirque d'un élément du module, par exemple l'un des convertisseurs 10, 17, ou 21 et ce, à l'aide d'un interrupteur commandé approprié. Le choix des dispositifs de mise en veille à activer dépend de la configuration matérielle de la borne. Par exemple, s'il s'agit d'une carte d'entrée/sortie, on ne peut pas couper l'alimentation de cette carte si une de ses sorties (commande d'un relais, d'un actionneur...) doit être maintenue sous tension. Cependant, il est possible, dans le cas d'une sortie discrète (à deux états : 1 ou 0, ou bien ON ou OFF ) d'utiliser un relais bistable externe pour alimenter les dispositifs reliés à cette sortie directement à partir d'une source d'alimentation (ne passant pas par la carte), ce qui permet de mettre en veille la carte sans couper l'alimentation de ces dispositifs commandés par sa sortie. Par contre, si cette carte réalise uniquement des acquisitions de données fournies par des capteurs reliés à sa (ses) sortie (s), on peut couper son alimentation en dehors des laps de temps nécessaires à ces acquisitions. Le réveil des circuits mis en veille est géré par l'horloge temps réel 14 programmée par le CPU 6 avant qu'il se mette en veille. Cette horloge comporte deux sorties : la première qui est une ligne d'interruption (au sens de la programmation), et la deuxième sert à commander un commutateur. L'horloge génère des signaux sur chacune de ces deux sorties à l'heure de réveil choisie par la tâche TGE. L'interruption permet de réactiver soit le CPU 6, soit le microcalculateur 12 du module de communication 3, selon le type de veille considéré. L'autre sortie agit sur la commande du commutateur général 11. Le réveil peut également être provoqué par un événement externe qui peut si nécessaire être retardé d'un laps de temps compatible avec le type de veille considéré Dans le détail, on peut considérer par exemple trois types principaux de veille : veille 1 : le CPU 6 calcule son heure de réveil et l'envoie via le réseau 5A du module de servitude 3 qui la charge dans son horloge 14. Le CPU 6 se met alors en veille, ainsi que le microcalculateur 12. Par contre, les microcalculateurs 8 et 18 restent actifs. Le mode correspondant de réveil,"réveil 1" consiste à faire envoyer par l'horloge 14 à l'heure de réveil calculée une interruption qui réveille le CPU 6 et le calculateur 12. Veille 2 : le CPU 6 calcule son heure de réveil et l'envoie via le réseau 5A au module 3 qui le charge dans l'horloge 14. Sur ordre du CPU 6, le calculateur 12 coupe l'alimentation du module 2, puis passe en veille. Le calculateur 18 du module 4 reste actif. Le réveil correspondant,"réveil 2", consiste à faire envoyer par l'horloge 14 à l'heure de réveil une interruption qui provoque le réveil du calculateur 12, ce dernier commandant à son tour le rétablissement de l'alimentation du module 2. Veille 3 : le CPU 6 calcule son heure de réveil et l'envoie via le réseau 5A au module 3, qui, sur ordre du CPU 6, coupe l'alimentation générale (commutateur 11). Seule fonctionne alors l'horloge 14. Pour le réveil correspondant,"réveil 3", l'horloge 14 commande, à l'heure dite, la ré-alimentation du module 3, qui, à son tour ré-alimente les autres modules. On notera que, pour chacun des trois modes de veille décrits cidessus la mise en veille du calculateur 13 (gérant les communications radio) est à chaque fois la même : il se met en veille dès qu'il n'a plus de tâche à effectuer. Il est réveillé par un message en provenance du réseau (par voie radio) ou par le calculateur 12. On notera également que dans les différents aspects du procédé de mise en veille décrits ci-dessus, le calculateur 8 reste actif en veille 1, de même que le calculateur 18 en veille 1 et veille 2. Ceci est dû au fait que l'on ne sait pas, avec l'architecture standard des modules de la borne, réveiller ces calculateurs via le réseau 5 une fois qu'ils sont mis en veille. En effet, l'adaptation entre chacun des calculateurs 8,12, 18 (de type NC) et le réseau filaire est réalisée à l'aide d'un adaptateur de type FTT 10. Cet adaptateur fait appel à des signaux d'horloge produits par le calculateur NC correspondant à l'aide d'un quartz externe. Quand ce calculateur est en veille, l'horloge est désactivée, et par conséquent l'adaptateur correspondant ne peut pas transmettre les messages en provenance du réseau pour réveiller le calculateur. Selon une caractéristique avantageuse de l'invention, que l'on peut mettre en oeuvre dans toutes les architectures bâties autour d'un réseau de terrain (de type Lonworks, par exemple) utilisant un support filaire, et mettant en oeuvre une mise en veille et un reveil par le réseau, on minimise les consommations en veille 1 et veille 2 de la façon suivante. On remplace le quartz du calculateur NC par un oscillateur indépendant qui est toujours alimenté, et qui, par conséquent, doit être choisi d'un type ayant la plus basse consommation possible. Dans un exemple de réalisation, cet oscillateur consomme environ 4mA. Dans la borne 1 telle que décrite ci-dessus, le système distribué d'acquisition, de calcul et de commande doit pouvoir mémoriser son état global, et ce, surtout en vue d'être capable de le restaurer lorsque le processus d'économie d'énergie se déclenche. Ce problème se complique lorsque le système comporte plusieurs processeurs coopérant en réseau et que chacun de ces processeurs exécute plusieurs tâches concurrentes. Le processus d'économie d'énergie met en oeuvre trois niveaux fonctionnels : -le niveau matériel (dispositifs électroniques déjà décrits ci- dessus), -le niveau système , c'est-à-dire les processeurs (assurant la programmation du matériel consommateur d'énergie, comme décrit ci-dessus), -le niveau applicatif (capacités logicielles de sauvegarde et de restauration des états de l'ensemble du réseau, comme décrit ci- dessous, en référence à la figure 2). Le niveau applicatif est nécessaire à la poursuite des acquisitions, et surtout des calculs en cours, après la mise en oeuvre du procédé d'économie d'énergie sur tout ou partie du réseau. On décrit ici les capacités de l'application qui assurent au système à la fois sa mémoire dans le temps et la continuité de ses calculs, lorsque le processus d'économie d'énergie d'un, de plusieurs, ou de la totalité des calculateurs qui le constituent est mis en oeuvre. L'application est définie comme un ensemble de processus s'exécutant chacun sur un module processeur (CPU), et comportant chacun plusieurs tâches (acquisition, calcul, commande) reliées entre elles ou avec d'autres tâches appartenant à d'autres CPU (les échanges de messages consistent à communiquer des résultats de calculs). Sur le schéma de la figure 2, on a représenté trois processus de supervision PS1 à PS3 s'exécutant chacun sur un processeur, respectivement CPU1 à CPU3. Chacun de ces processus se compose de plusieurs tâches subordonnées. Appelons"Supervision i"le processus s'exécutant sur chaque CPU i, et C, j les tâches subordonnées s'exécutant sur le module CPU i. Chaque tâche C, j est un automate effectuant des calculs Y = F, j (X), où Y est un vecteur de sortie, et X un vecteur ou une matrice d'entrée alimentée par les messages en provenance des tâches amont, et Fij (), la fonction de transfert de l'automate. On notera que les tâches de type S,, et Aij sont des cas particuliers de C, j, tes premières étant reliées à des capteurs physiques, les secondes à des actionneurs. Le calcul est cadencé par l'arrivée de données en entrée, ou périodiquement dans le cas des tâches Sij. Chaque donnée entrante enrichit un vecteur ou une matrice d'entrée, et lorsque l'entrée est totalement constituée, le calcul s'effectue et produit un vecteur résultat, qui est posté, sous forme de messages, aux tâches C,, amont (message interne à la CPU i), ou aux superviseurs k des CPU k qui les redistribuent aux tâches Ckj concernées (messages inter-CPU). Dans le cadre d'un mécanisme d'économie d'énergie, s'endormir (se mettre en veille), pour une CPU i, consiste à : - évaluer (comme décrit ci-dessus) la date de réveil, et la communiquer à l'horloge temps réel HTR, - demander la suspension et la sauvegarde de l'état de tous les automates (tâches Cij) sur disque, - sauvegarder l'état du superviseur i (son propre état), sur disque, - et se terminer. Dans le même cadre, se réveiller, pour une CPU, est une action qui s'effectue sur signal de l'horloge temps réel ou sur réception d'un message réseau (message ou résultat d'un calcul en provenance d'une autre CPU), et a qui consiste à : - recréer tous ses automates (tâches CI !), - leur faire restaurer leur état sauvegardé précédemment, - recharger l'état du superviseur i sauvegardé précédemment, - poursuivre l'exécution de toutes les tâches. Le processus de sauvegarde/restauration de chaque automate s'effectue entre deux étapes atomiques (insécables) de calcul et concerne la totalité des variables, données et états appartenant à cet automate. Ainsi, ce processus de sérialisation des tâches, à la fois hiérarchisé par chaque processus superviseur i (dans chaque CPU i), et distribué sur le réseau au sein de chaque CPU, assure-t-il la persistance des données et des états du système physique complet, même lors de la mise en oeuvre du mécanisme d'économie d'énergie sur tout ou partie de ses éléments. REVENDICATIONS 1. Procédé de gestion centralisée d'énergie, mis en oeuvre sur un système électronique multiprocesseurs synchrones fonctionnant en temps réel et comportant plusieurs organes de calcul et/ou de contrôle (8,12, 13,18) reliés en réseau (5A), ainsi qu'un calculateur central de gestion (6), caractérisé en ce qu'il consiste, en phase de fonctionnement du système, à faire déterminer par le calculateur central les futures périodes d'inactivité des différents organes du système dont il a mémorisé les modes de veille, à faire régulièrement tester par ce calculateur central l'existence de tâches actives exécutées par ces organes, et lorsqu'il n'y a plus de tâches actives, à lui faire calculer le laps de temps restant avant le début des prochains traitements à réaliser par ces organes, et, en fonction de la valeur de ce laps de temps par rapport à différents seuils prédéterminés correspondant chacun à un mode particulier de gestion d'énergie de l'organe considéré, à activer le mode veille correspondant, puis, pour chaque mode veille, à commander le réveil correspondant à la fin du temps de veille. 2. Procédé selon la revendication 1 caractérisé en ce que la mise en veille d'un composant du système est réalisée par activation du dispositif de mise en veille fourni par le fabricant du composant. 3. Procédé selon la revendication 1, caractérisé en ce que la mise en veille d'un composant du système est réalisée par coupure de l'alimentation électrique de ce composant. 4. Procédé selon l'une des revendications précédentes, caractérisé en ce que le réveil est géré par une horloge temps réel (14) programmée par le calculateur central (6) avant qu'il ne se mette en veille, cette horloge étant constamment alimentée en énergie (14A). 5. Procédé selon l'une des revendications précédentes, caractérisé en ce que se mettre en veille, pour une CPU, consiste à évaluer la date de réveil, et la communiquer à l'horloge temps réel HTR, à demander la suspension et la sauvegarde de l'état de tous les automates (tâches C, j) sur disque, à sauvegarder l'état du superviseur (son propre état), sur disque, et à se terminer. 6. Procédé selon la revendication 5, caractérisé en ce que se réveiller, pour une CPU, est une action qui s'effectue sur signal de l'horloge temps réel ou sur réception d'un message réseau et qui consiste à recréer tous ses automates (tâches C,,), leur faire restaurer leur état sauvegardé précédemment, recharger l'état du superviseur sauvegardé précédemment, poursuivre l'exécution de toutes les tâches 7. Système électronique multiprocesseurs synchrones fonctionnant en temps réel et comportant plusieurs organes de calcul et/ou de contrôle (8,12, 13,18) reliés en réseau (5A), ainsi qu'un calculateur central de gestion (6) ayant sa propre alimentation sauvegardée, caractérisé en ce qu'il met en oeuvre le procédé selon l'une des revendications 1 à 4.