FR 2793912 A1 20001124 FR 9906511 A 19990521 OUTIL UNIVERSEL DE COMPILATION DE GRAPHES La présente invention se rapporte à un outil universel de compilation de graphe, De plus en plus souvent, la conception et la programmation de logiciels se traduisent directement par une présentation sous forme d'un graphe reliant des fonctions. Par exemple, le langage "SAO" utilisé par les constructeurs aéronautiques européens, permet de représenter tout algorithme de commande sous l'aspect d'un réseau orienté de blocs-diagrammes, La norme IEC 1131-3 définit trois langages graphiques de même nature:"SFC" (Sequential Flow Chart ), 11D" ( Ladder Diagram ) et "FBD" ( Function Block Diagram ) qui permettent de représenter graphiquement tout programme d'automatisme, Toutes ces représentations graphiques connues doivent être saisies informatiquement, analysées syntaxiquement et sémantiquement, traduites dans un langage informatique (C, ADA, Assembleur, Basic, Fortran, ...) qui, lui-même, est compilé et édité pour fournir un programme binaire exécutable par un processeur ou directement traduit dans un programme binaire directement exécutable dans un processeur. L'exécution de ce programme binaire permet de mettre en #uvre les algorithmes décrits dans la représentation graphique initiale, Les outils qui assurent la saisie, l'analyse et la traduction des représentations graphiques seront dénommés par la suite compilateurs de graphes. Les compilateurs de graphes connus présentent cependant les inconvénients suivants: - la saisie des graphes nécessite la programmation d'une interface homme-machine graphique souvent coûteuse, complexe, difficilement portable d'une version de système informatique à l'autre, et parfois peu ergonomique car demandant un doigté très précis pour relier entre eux les divers composants du graphe. l'analyse syntaxique et sémantique des graphes est propre à chaque type de représentation graphique et à chaque sémantique associée, la génération ou la traduction des représentations graphiques en langage informatique est très spécifique du langage et des optimisations de génération. La présente invention a pour objet un compilateur de graphes qui soit universel, paramétrable, dont les processus d'analyse, de génération et d'optimisation soient indépendants de la syntaxe du graphe initial, de sa sémantique et du langage final dans lequel le graphe est traduit. En outre, ce compilateur doit présenter une phase de saisie de graphes qui soit simple et rapide. Le compilateur de graphes conforme à l'invention comporte une interface homme-machine implémentée sur un micro-ordinateur où elle est reliée à un compilateur lui-même relié via le système d'exploitation du micro-ordinateur à des moyens d'inscription sur au moins une mémoire d'au moins un composant sur lequel doit être mise en oeuvre la commande correspondant au graphe, l'interface homme-machine comportant un tableur associé à une bibliothèque de deux types de symboles graphiques correspondant chacun, pour le premier type, à une fonction élémentaire de composant, et pour le second type, à une liaison relative aux symboles du premier type, les symboles sélectionnés dans la bibliothèque étant placés dans le tableur à raison d'un symbole par cellule ou par groupe de cellules et assemblés de façon à constituer un graphe. De façon avantageuse, les symboles graphiques sont contenus chacun dans un ou plusieurs carrés, et leurs entrées et sorties aboutissent toutes aux milieux des côtés correspondants de ces carrés. La présente invention sera mieux comprise à la lecture de la description détaillée d'un mode de réalisation, puis à titre d'exemple non limitatif et illustré par les dessins annexé, sur lequel : - la figure 1 est un exemple de composant pouvant être utilisé par l'invention, et constitué de trois carrés élémentaires la figure 2 est un ensemble d'exemples de symboles de liaisons telles qu'utilisées par l'invention, la figure 3 est un exemple simplifié de graphe conforme à l'invention, et la figure 4 est un bloc-diagramme d'un compilateur de graphes conforme à l'invention. Les composants auxquels s'adresse l'invention sont, en particulier, des automates. Sous ce terme d'automates on désigne ici des composants d'automatisme "intelligents", c'est-à-dire munis au moins de moyens leur permettant de communiquer avec un micro-ordinateur via une ligne de communication, au moins dans un sens, pour en recevoir des ordres et/ou des données et /ou pour lui transmettre des données (telles que des grandeurs physiques mesurées s'il s'agit de capteurs, ou des positions s'il s'agit de composants mobiles, ou des états s'il s'agit de commutateurs, par exemple). De façon avantageuse, ces composants comportent une mémoire dans laquelle peuvent être mémorisées des données concernant leurs caractéristiques ou leur fonctionnement et élaborées par le compilateur de l'invention. Des exemples de tels composants sont des actionneurs, des senseurs, des servo-valves, des relais, des automates programmables, ... ou bien des ensembles d'entrées/sorties déportées, c'est-à-dire des ensembles distincts du micro-ordinateur et des composants d'automatisme, comportant au moins un convertisseur analogique-numérique et/ou un convertisseur numérique-analogique, ainsi qu'un multiplexeur et/ou un démultiplexeur, ou bien encore des automates programmables qui comportent les mêmes fonctions que les ensembles d'entré es/so dies déportées, avec en sus la capacité d'exécuter par eux-mêmes des séquences d'automatismes. On a représenté en figure 1 un exemple de composant 1 (un compteur dans le cas présent) réalisé à partir de trois carrés élémentaires, respectivement référencés 2 à 4, alignés verticalement, de façon à obtenir un graphisme similaire à celui généralement utilisé pour les graphes. Pour pouvoir établir facilement des liaisons entre ce composant et d'autres composants, l'invention prévoit que les entrées et sorties (au maximum quatre au total) des composants soient toutes situées au milieu des côtés des carrés élémentaires qui les composent, comme c'est le cas pour l'exemple de la figure 1. On a représenté en figure 2 quelques exemples de portions de connexion, chacune disposée dans un carré élémentaire. De même que pour les composants, les extrémités des portions de connexions aboutissent à chaque fois au milieu du côté correspondant du carré élémentaire. A la première ligne de la figure 2, on a représenté des connexions droites à savoir une portion de connexion horizontale, et une de connexion verticale. A la deuxième ligne de la figure 2, on a représenté quatre connexions en coin faisant face chacune à un coin différent du carré élémentaire. A la troisième ligne de la figure 2, on a représenté quatre connexions en dérivation (en 'T5 selon quatre orientations différentes, Enfin, à la quatrième ligne, on a représenté une intersection orthogonale de deux portions de conducteurs, en contact mutuel, et une autre intersection orthogonale, mais sans contact entre les conducteurs, En figure 3, on a représenté une partie 5 de tableur telle que vue sur l'écran d'un micro-ordinateur. Sur cette partie 5, on a représenté une grille 6 dont chaque carré (ou rectangle) élémentaire correspond à une cellule du tableur, Sur cette grille, on a disposé les composants d'une partie de circuit 7 dont le graphisme est conforme à la norme utilisée dans le domaine technique se rapportant au circuit en question. Ces composants sont constitués à chacun d'un ou de plusieurs symboles élémentaires, chacun de ces symboles étant contenu dans un carré élémentaire, comme représenté en figures 1 et 2. Ces symboles sont mémorisés dans une bibliothèque (voir figure 4) dont ils sont extraits au fur et à mesure de leur placement sur la grille 6, et ce, de façon connue en soi. La partie de circuit 7 comporte, pour l'exemple représenté, de gauche à droite sur le dessin, un premier symbole 8 d'un relais 9 aboutissant à une barre de potentiel 10. Ce relais 9 est, par exemple numéroté "000l", car on suppose que le circuit complet comporte un grand nombre de tels relais. A droite du symbole 8, on dispose, sur la même ligne de la grille, deux symboles 11, 1 2 de jonction horizontale aboutissant à l'entrée R d'une bascule 13 de type RS. Cette bascule 13 se compose de deux carrés élémentaires 14,15, le carré 15 (entrée S) étant disposé sous le carré 14 (entrée R). L'entrée S de la bascule 13 est reliée à la sortie d'un dispositif, référencé ` K0001` forçant cette entrée à une voleur déterminée C'O" ou "] " logique), ce dispositif étant constitué d'un seul carré élémentaire 16, disposé juste à gauche du carré 15. La sortie de la bascule 13, située en face de son entrée R est reliée par une liaison horizontale, composée de trois symboles identiques à ceux des carrés 11 et 12, et occupant les carrés 17,18 et 19. Cette liaison aboutit à un composant 20 (qui est par exemple une source de tension référencée "000025, représenté dans un carré 21, à l'intérieur duquel il est relié à une barre de potentiel 22, Bien entendu, l'exemple de la figure 3 n'a qu'un but didactique et n'est que partiel. On notera que les éléments du graphisme de la figure 3 suivent les mêmes règles de déplacement que tous les éléments (en particulier graphiques) que l'on met généralement dans les cellules d'un tableur, c'est à dire qu'ils peuvent être translatés horizontalement et verticalement, mais ne peuvent en aucun cas pivoter. On a représenté en figure 4 le bloc-diagramme fonctionnel de l'outil compilateur de graphes de l'invention. Ce compilateur comporte, dans un micro-ordinateur 23, un tableur 24. Ce tableur est relié à une bibliothèque 25 dans laquelle sont mémorisés tous les symboles nécessaires à la réalisation de tous les graphes que l'on veut pouvoir tracer, On y mémorise non seulement les symboles graphiques, mais aussi les codes générés correspondants avec des parties paramétrables (codes qui permettent d'effectuer tous les traitements envisageables à partir des graphes). Ces symboles sont affectés de références qui apparaissent, par exemple dans une fenêtre de l'écran du micro-ordinateur dès que l'utilisateur désire utiliser des symboles en cliquant sur l'icône de la bibliothèque. Il fait défiler la liste de ces références, et dès qu'il trouve celle recherchée, il clique dessus, et le symbole correspondant est affiché dans la fenêtre du tableur. Il n'y a plus qu'à déplacer (par exemple à l'aide d'une souris, selon la technique bien connue du "glisser-lâcher" ou "drag- and-drop" en anglais) le symbole ainsi affiché vers la cellule désirée du tableur. Lorsque le graphe du circuit ainsi constitué (on au moins une partie de ce circuit) est réalisé, un vérificateur topologique de réseau 26 vérifie que les règles topologiques des graphes ont été respectées par le graphe affiché dans le tableur 24. Cette première vérification de consistance du graphique saisi pa r l'utilisateur permet de lui signaler pour correction : -tout carré élémentaire occupé par un composant ou une connexion qui ne fait pas partie du dictionnaire des composants et connexions correspondant au type de graphe saisi ; -tout carré élémentaire dans lequel se superposent deux ou plusieurs composants ou portions de connexion : -tout raccordement d'un carré élémentaire qui ne serait pas aligné avec un raccord du carré élémentaire adjacent. Cette vérification et cette représentation sont universels pour tout graphe ou réseau dessiné dans un plan. Pour un réseau ou un graphe dessiné dans l'espace, cette représentation et toutes les procédures de traitement subséquentes sont extensibles à une construction des composants à l'aide de cubes élémentaires ou de tout volume élémentaire régulier permettant de remplir par adjacence tout l'espace (par exemple des trièdres à faces équilatérales_). Les raccords sont alors placés au centre des faces du volume. Après cette première vérification, un vérificateur 27 vérifie, à l'aide des codes provenant de la bibliothèque 25 et correspondant aux différents composants du graphe réalisé, que les règles syntaxiques et sémantiques des graphes ont été respectées par le graphe affiché dans le tableur 24. Ces codes se rapportent: à des paramètres spécifiques des composants, par exemple leur rang et leur nom dans le graphe saisi, la voleur de certaines constantes (par exemple, la durée d'une temporisation), ... à la liste paramétrable des instructions de langage informatique à générer lors de la phase ultime de traduction, Ces instructions possèdent les chaînes alphanumériques modifiables en fonction des parcmètres cités ci-dessus et des informations transitant par les point de raccordement du composant, La caractérisation sémantique des données de chaque point de raccordement du composant: entrée ou sortie pour un graphe orienté, ou neutre pour un graphe non orienté; type de l'information qui transite par le raccordement (booléenne, numérique à précision absolue, numérique à précision relative, chaîne de caractères, tableau,état d'automate, ... Lorsque ces vérifications sont terminées, les éventuelles erreurs ayant été corrigées, un générateur 28 génère un code optimisé. Les étapes 26 à 28 constituent l'équivalent de l'outil propriétaire connu de programmation. Elles sont mises à l'oeuvre à l'aide de programmes faciles à réaliser par l'homme de l'art à la lecture de la présente description. Le code, optimisé en 28, est envoyé à un compilateur et éditeur de liens 29. Le code compilé est chargé en 30 pour produire' un programme de pilotage exécutable. Selon une variante, comme représenté par une flèche 31 en trait interrompu, le code optimisé en 28 est directement chargé en 30. Le programme de pilotage est transmis par l'intermédiaire du système d'exploitation 32 du micro- ordinateur 23 à son port de sortie 33 (série, parallèle, bus ... ). On peut directement relier au port 33 du micro-ordinateur 23 une mémoire 34 programmable (par exemple du type EEPROM) fixée sur un support approprié, et lui transmettre le programme exécutable correspondant disponible en 30, Lorsque la programmation de la mémoire 34 est effectuée, cette dernière est enlevée de son support est insérée dans le composant d'automatisme correspondant (35A) faisant partie de l'ensemble des composants à programmer (35). Cette opération est répétée pour les mémoires programmables de tous les autres composants d'automatisme. Bien entendu, le micro-ordinateur 23 peut avantageusement piloter et superviser les composants de l'ensemble 35, comme indiqué par les flèches 36 en traits interrompus, Selon une variante de l'invention, représentée en traits interrompus, les mémoires programmables (34) sont fixées sur les composants d'automatismes (35') qui sont reliés au port 33 par une liaison 37 (qui peut être semblable à la liaison 36), et la programmation de ces mémoires se fait via cette liaison 37 REVENDICATIONS 1 - Système universel de compilation de graphes comportant un micro-ordinateur (23) relié à au moins un composant (35) sur lequel doit être mise en ceuvre la commande correspondant à un graphe, caractérisé en ce que pour simplifier la saisie des graphes, ce système comporte une interface homme- machine (24) implémentée sur le micro-ordinateur (23) où elle est reliée à un compilateur (29) lui-même relié via le système d'exploitation du micro- ordinateur (32) à des moyens d'inscription sur au moins une mémoire (34) du composant (35), l'interface homme-machine comportant un tableur (24) associé à une bibliothèque (25) de deux types de symboles graphiques correspondant chacun, pour le premier type , à une fonction élémentaire de composant, et pour le second type, à une liaison relative aux symboles du premier type, les symboles sélectionnés dans la bibliothèque étant placés dans le tableur à raison d'un symbole par cellule ou par groupe de cellules et assemblés de façon à constituer un graphe, les symboles graphiques étant représentés chacun dans un groupe de carrés élémentaires adjacents, et leurs connexions aboutissant au milieu des côtés correspondants de chaque carré élémentaire. 2 - Système selon la revendication 1, caractérisé en ce que les mémoires dans lesquelles sont inscrites les commandes sont directement reliées au micro-ordinateur (33-34). 3 - Système selon l'une des revendications précédentes, caractérisé en ce que les mémoires (M) dans lesquelles doivent être inscrites les commandes sont fixées sur les composants correspondants (35') et que ces commandes sont téléchargées (37). 4 - Système selon l'une des revendications précédentes, caractérisé en ce que l'interface homme-machine comporte un vérificateur topologique (26) et un vérificateur syntaxique ei sémantique (27).