FR 2770915 A1 19990514 FR 9714342 A 19971113 La présente invention se rapporte à un système de programmation d'un automate programmable en logique floue. Un automate programmable traite, des entrées qui sont des paramètres mesurables (température, pression, courant, etc.) et des sorties qui sont des actions sur le procédé (ouverture de vannes, chauffage, vitesse de moteur, etc.). La mémoire de l'automate programmable contient un programme utilisateur qui est souvent écrit, en fonction de l'application d'automatisme à résoudre, dans un langage graphique dit ladder (ou encore langage à contacts) et est apte à traiter les images des entrées et sorties également stockées en mémoire. On a introduit dans les automates programmables la logique floue, dont on rappelle ci-après quelques notions. La logique floue se base sur l'utilisation des ensembles flous qui autorisent l'utilisation par des algorithmes déterministes de données linguistiques approximatives, telles que grand, petit, moyen... Dans la théorie des ensembles flous, on définit le degré d'appartenance , valeur comprise entre 0 et 1, comme étant la quantification de l'appartenance d'un élément à un ensemble. Par exemple, en se référant à la figure la, étudions l'ensemble d'une population suivant le critère taille . En logique binaire, I'appartenance à l'ensemble de grande taille nécessiterait la définition d'un seuil de taille (par exemple 1,70 m) à partir duquel on considère que les individus sont de grande taille. En logique floue, I'appartenance à cet ensemble est graduelle et continue; les individus ayant une taille de 1,70 m appartiennent à l'ensemble grande taille avec un degré de 0.5, si l'on se réfère à cette figure la. Un élément appartenant à un ensemble flou s'appelle variable floue . Les variables linguistiques sont les entrées et les sorties traitées par la logique floue, par exemple, taille, température, vanne, etc. Chaque variable linguistique est associée à des termes linguistiques la qualifiant, par exemple, élevée , basse , etc. Une fonction d'appartenance représente le codage d'un terme linguistique sur l'espace d'utilisation de la variable linguistique à laquelle il est associé. Elle donne donc pour chaque valeur de la variable linguistique, le degré d'appartenance à l'ensemble défini par le terme linguistique. On peut voir sur la figure lb, un exemple de fonction d'appartenance. La figure lc donne à titre d'exemple, les fonctions d'appartenance (Basse, Moyenne et Elevée) d'une même variable linguistique (la Température). Un contrôleur flou, illustré par la figure Id, repose sur un ensemble de règles linguistiques que l'on appelle base de connaissance et qui peut être écrit en s'appuyant sur l'expertise d'un opérateur. Par exemple, une règle peut s'exprimer de la manière suivante: SI Température Elevée ALORS Ventilation forte . A partir de ces règles, le contrôleur flou calcule les actions à appliquer au procédé; c'est l'étape de calcul des inférences floues dont le principe est illustré par les figures le, if, lg et 1h, pour les règles suivantes Règle 1: SI Température Elevée ALORS Ventilation Forte Règle 2: SI Humidité Faible ALORS Ventilation Douce En se référant à la figure le et à la règle 1, le degré par rapport au terme Elevée étant de 0.9, on en déduit une troncature à cette valeur de l'ensemble flou correspondant à l'action préconisée par la règle, c'est à dire Ventilation Forte. En se référant à la figure If et à la règle 2, le degré par rapport au terme Faible étant de 0.6, on en déduit une troncature à cette valeur de l'ensemble flou correspondant à l'action préconisée par la règle, c'est à dire Ventilation Douce. Les conditions de la règle (1 ou 2) n'étant que partiellement satisfaites, I'action correspondante ne sera que partiellement effectuée. L'action à appliquer au procédé doit faire intervenir toutes les règles; nous devons donc superposer tous les ensembles flous retenus pour chaque règle et faire une défuzzification. Cette dernière étape s'effectue en calculant l'abscisse du centre de gravité de l'ensemble flou obtenu. Dans notre exemple de la figure 1 g, la ventilation à appliquer est de 60. Une autre méthode de défuuification, illustrée à la figure 1h, consiste à utiliser pour les sorties des fonctions d'appartenance sous forme de singletons. Au moment du calcul des inférences, suivant le degré d'activation des différentes règles, les amplitudes des fonctions d'appartenance des sorties sont tronquées comme dans le cas général. La défuaification consiste alors pour chaque sortie à prendre le centre de gravité de l'ensemble des segments obtenus. Dans notre exemple de la figure 1 h, la ventilation à appliquer est maintenant de 80. Le brevet US 5 285 376 décrit un langage à contacts (ou ladder en anglais) à logique floue pour automates programmables. Des fonctions d'appartenance qui définissent des notions pouvant être plus ou moins vraies sont associées aux entrées et aux sorties. Les entrées et sorties sont liées par des règles. Le traitement de ces fonctions d'appartenance et règles est réalisé par un contrôleur flou. Ce brevet divulgue un éditeur servant à représenter et à saisir sous forme de ladder les règles floues d'un contrôleur flou, incluant les étapes de fuuification des entrées de l'automate et de défuzzification des sorties. L'implantation de la logique floue dans l'automate se restreint à l'architecture du contrôleur flou, alors que le domaine d'utilisation de cette théorie est beaucoup plus vaste. En outre, cet éditeur de règles, ne correspond absolument pas au ladder classique ou schéma à contacts, langage d'automatisme tout-ou-rien décrivant les expressions combinatoires, à base de fonctions logiques comme ET, OU, NON dans une application sur automate programmable. La présente invention a pour but de fournir un langage de programmation à contact dit ladder flou permettant de représenter des équations logiques floues, c'est à dire des expressions combinatoires dans le domaine des ensembles flous, un classifieur flou, ainsi qu'un groupe de blocs fonctionnels de logique floue permettant d'aller bien au-delà du simple contrôleur flou. Ces blocs fonctionnels procurent une grande modularité et sont susceptibles d'être adaptés à une grande variété d'applications exécutées par des automates programmables. Ils permettent de créer des applications basées sur l'expertise humaine (telles que la régulation de la qualité d'un produit) dans des procédés exigeant des interventions humaines dans des secteurs aussi variés que l'agro-alimentaire, la cosmétique et la pharmacie. Le système de programmation selon l'invention est caractérisé par le fait que ce programme d'application comporte des blocs fonctionnels logiciels réalisant des fonctions logique floues de type ET (ANDF), de type OU (ORF), et de type NON (NOF) servant à écrire des équations logiques floues sous forme de ladder flou, un bloc fonctionnel logiciel réalisant une fuaification, un bloc fonctionnel logiciel réalisant une classification floue et un bloc fonctionnel logiciel réalisant des inférences et la défuzzification, ces blocs fonctionnels étant associés à des écrans de mise en ceuvre permettant de les configurer. Un mode de réalisation préférentiel de l'invention va maintenant être décrit en référence aux dessins annexés sur lesquels - la figure 1 illustre des diagrammes relatifs à des notions de logique floue; - la figure 2 présente un bloc fonctionnel de classification - la figure 3 présente un bloc fonctionnel de fuaification; - la figure 4 présente un exemple de diagramme en ladder flou ainsi que les blocs fonctionnels permettant de réaliser les combinaisons logiques floues décrites par le ladder flou, c'est-à-dire des opérations logiques sur des degrés d'appartenance - la figure 5 présente un bloc fonctionnel permettant de traiter des règles floues et de faire une défuzification; - la figure 6 est un exemple d'application utilisant les blocs fonctionnels schématisés aux figures 2, 3, 4 et 5. La programmation en logique floue de l'automate programmable fait appel à des blocs fonctionnels logiciels, implantés dans l'automate, pouvant décrire une application d'automatisme et à un logiciel de mise en oeuvre sur console ou ordinateur servant à l'écriture des différentes parties de la base de connaissance dans ces blocs fonctionnels, à l'aide d'écrans de mise en ceuvre pour chaque bloc fonctionnel. Deux blocs fonctionnels référencés CF et EVF servent à la fuzzification des entrées, un groupe de blocs référencés ANDF, ORF, NOF sert à construire le ladder flou et enfin un bloc référencé MTF sert à la défuaification des sorties. Un classifieur générique reçoit un point d'un espace à plusieurs dimensions et l'affecte à l'une des classes d'un groupe de classes pré-définies, selon certains critères. Les classes pré-définies, sont des regroupements de points de référence que l'on connaît a priori. Le bloc fonctionnel classifieur flou référencé CF et illustré à la figure 2a, est un classifieur qui reçoit en entrée des mesures représentant un point et qui affecte ce point à des classes de référence de façon graduelle. II calcule le degré d'appartenance d'un point à différentes classes d'un espace à plusieurs dimensions. Par exemple il peut recevoir sur ses entrées numériques des mesures A, B et C et donner, après calcul, sur ses sorties le degré d'appartenance de ce point à des classes 1, 2, 3, 4 et 5. Il travaille avec une base de points de référence, définissant les classes de référence 1, 2, 3, 4 et 5 entrés par l'utilisateur. Par exemple, les mesures A, B, C peuvent être des mesures de couleur et les sorties des degrés d'appartenance à des classes telles que Trop foncé , Foncé , Trop clair , Clair , etc.. Le bloc fonctionnel utilise un algorithme de classification floue dit des k plus proches voisins flous , illustré à la figure 2b. Sur cette figure, le point P à classer se situe dans une zone où il y a des points de référence de la classe 1 et des points de la classe 2. Les trois plus proches voisins sont les points 1, 2 et 3 séparés du point à classer par les distances respectives dl, d2 et d3. Les degrés d'appartenance aux différentes classes se calculent de la façon suivante. i i Le degré d'appartenance à la classe 1 est 1 di d3 i i dl + d2 + d3 1 Le degré d'appartenance à la classe 2 est 1 1 d2 i i dl d2 d3 II est bien entendu que l'on peut, sans sortir du cadre de l'invention, imaginer d'autres algorithmes de classification effectuant la même chose que les k plus proches voisins flous . Le bloc fonctionnel d'évaluation référencé EVF et illustré à la figure 3, reçoit sur son entrée une valeur numérique (mesure) et fournit sur chacune de ses sorties, après calcul, le degré d'appartenance à un ensemble correspondant à un terme linguistique. A titre d'exemple , il donne le degré d'appartenance d'une mesure d'humidité à des termes linguistiques tels que faible , bonne , forte . Ce bloc assure la fonction de fuaification classiquement utilisée en logique floue. La figure 3 nous donne également un aperçu de l'écran de configuration de ce bloc, qui permet principalement de définir tous les points caractéristiques des fonctions d'appartenance. Dans l'exemple illustré à la figure 3, cet éditeur permet d'enregistrer les points A, B, C, D de la fonction d'appartenance Bonne . Une extension du ladder à la logique floue permet d'introduire la notion de ladder flou permettant de décrire des combinaisons logiques floues. Une expertise peut souvent se décomposer sous la forme d'expressions linguistiques. Par exemple le confort bon, c'est la température basse et l'humidité forte ou la température élevée et l'humidité faible . La figure 4a donne un exemple de ladder flou qui décrit graphiquement la combinaison logique floue suivante: confort bon = (température basse et humidité forte) ou (température élevée et humidité faible). Les valeurs prises par les contacts et les bobines ne sont pas 0 ou 1 comme pour le ladder classique tout-ou-rien mais des degrés d'appartenance pouvant prendre toute valeur comprise entre 0 et 1. Le ladder est construit à partir de blocs fonctionnels logiques, qui sont indépendants les uns des autres et réalisent les opérations logiques floues élémentaires. Le bloc fonctionnel logique de type ET, référencé ANDF et illustré à la figure 4b, reçoit sur ses entrées a, b, c et d, des degrés d'appartenance et fournit sur sa sortie, s, un degré d'appartenance représentant un ET logique flou entre les entrées, c'est-à-dire le minimum des degrés d'appartenance en entrées. Par exemple si on a sur les entrées les degrés d'appartenance a=0.1, b=0.2, c=0.5, d=0.4, on aura sur la sortie, s, un degré d'appartenance de 0.1. Le bloc fonctionnel logique de type OU, référencé ORF et illustré à la figure 4c, reçoit sur ses entrées a, b, c et d, des degrés d'appartenance et fournit sur sa sortie, s, un degré d'appartenance représentant un OU flou entre les entrées, c'est-à-dire le maximum des degrés d'appartenance en entrées. Par exemple si on a sur les entrées les degrés d'appartenance a=0.1, b=0.2, c=0.5, d=0.4, on aura sur la sortie, s, un degré d'appartenance de 0.5. Le bloc fonctionnel logique de type NON, référencé NOF et illustré à la figure 4d, reçoit sur son entrée, e, un degré d'appartenance et fournit sur sa sortie, s, un degré d'appartenance inverse de l'entrée, c'est-à-dire la différence entre 1 et le degré d'appartenance reçu en entrée. Par exemple si on a, en entrée un degré d'appartenance e=0. 1, on aura sur la sortie, s, un degré d'appartenance de 0.9. La figure 4e présente un exemple de mise en oeuvre des blocs fonctionnels ANDF, ORF et NOF et la figure 4f donne sa correspondance sous forme de ladder flou. II a été utilisé dans les exemples précédents les opérateurs classiquement utilisés en logique floue, mais il est envisageable de choisir d'autres opérateurs que le minimum, le maximum, la différence entre 1 et le degré d'appartenance, pour les opérations floues ET, OU et NON sans sortir du cadre de l'invention. Le bloc fonctionnel, référencé MTF et illustré à la figure 5, se charge du calcul des inférences et de la défuzzification. II reçoit sur ses entrées des degrés d'appartenance qui sont utilisés pour le mécanisme d'inférences floues à l'aide d'une base de règles floues. La deuxième étape réalisée par ce bloc est la défuzzification des variables floues selon des fonctions d'appartenance de type singleton pour fournir des sorties numériques, 1, 2, 3, 4, 5 et 6, directement utilisables par un actionneur. Un écran de mise en oeuvre de ce bloc permet de saisir les règles de la base et de saisir les paramètres des fonctions d'appartenance de défuzzification. Exemple de base de règles Si (Humidité faible) alors Augmentation Température Nulle Si (Humidité forte) alors Augmentation Température Positive Si (Humidité bonne) alors Augmentation Température Négative Dans l'écriture du programme applicatif, tous les blocs décrits ci-dessus, constituent des éléments du programme que l'on gère comme des boîtes noires, c'est à dire dont le fonctionnement n'est pas écrit dans ce programme. Tous ces blocs s'interfacent dans le programme applicatif via les mots de l'automate. Par exemple, le mot référencé W1000 pointe sur l'entrée d'un bloc NOF et le mot référence W1001 pointe sur sa sortie. II est ainsi aisé de manipuler ces blocs et de les interconnecter. Tous les blocs logiciels que nous avons décrits peuvent être utilisés dans une application de régulation de la qualité d'un produit pour laquelle des interventions humaines sont nécessaires. Trois fonctions peuvent être réalisées à partir de ces blocs. La premiére fonction dite d'évaluation subjective, qui associe des blocs de type CF et EVF, peut être exécutée par un automate programmable. L'évaluation subjective sert à chaque fois qu'il y a une phase d'évaluation d'un produit manufacturé, souvent en fonction de plusieurs critères provenant d'un panel d'experts, d'opérateurs ou de consommateurs, ce qui la rend dans une certaine mesure arbitraire. L'évaluation subjective est notamment utilisée quand on veut juger de la qualité d'un produit. Par exemple, pour la cuisson de biscuits, les opérateurs de four, évaluent la qualité de cuisson des biscuits en les comparant à la volée à des biscuits de référence, qualifiés de bien cuits , un peu trop cuits , trop cuits , etc.. La seconde fonction est une fonction de diagnostic des causes d'une dérive de qualité du produit qui est souvent disponible sous une forme combinatoire. Pour l'application de cuisson des biscuits, I'opérateur intervient quand il est devant une certaine combinaison de facteurs simultanés. Par exemple, il interviendra sur les consignes de son four si le biscuit est trop épais et trop humide. En associant des blocs de type ANDF, ORF et NOF, on peut constituer un ladder qui permet de construire graduellement ces indicateurs de diagnostic, qui témoignent de l'état du procédé. La troisième fonction est une prise de décision qui est formalisée à partir de l'expertise humaine sous forme d'actions à appliquer au procédé. La formalisation de cette expertise peut se faire sous la forme d'une base de règles floues. Cette expertise, en fonction des indicateurs de diagnostic peut être codée dans un bloc MTF. La figure 6 présente un exemple d'application complète en logique floue suivant ce découpage en trois fonctions: l'évaluation (fuzzification simple et classification floue), le diagnostic (combinaisons logiques floues sous forme de ladder flou) et la prise de décision (inférences sur base de règles floues et défuaification). L'application pourrait n'utiliser qu'une partie des blocs fonctionnels définis ci-dessus. II est bien entendu que l'on peut, sans sortir du cadre de l'invention, imaginer des variantes et des perfectionnements de détail et de même envisager l'emploi de moyens équivalents. REVENDICATIONS 1. Système de programmation d'un automate programmable dans lequel est implanté un programme d'application en logique floue, notamment pour des applications de régulation de la qualité, caractérisé par le fait que ce programme d'application comporte des blocs fonctionnels logiciels réalisant des fonctions logique floues de type ET (ANDF), de type OU (ORF), et de type NON (NOF) servant à écrire des équations logiques floues sous forme de ladder flou, un bloc fonctionnel logiciel réalisant une fuaification, un bloc fonctionnel logiciel réalisant une classification floue et un bloc fonctionnel logiciel réalisant des inférences et la défuaification, ces blocs fonctionnels étant associés à des écrans de mise en oeuvre permettant de les configurer. 2. Système selon la revendication 1, caractérisé par le fait que le bloc fonctionnel logique de type ET (ANDF), reçoit sur ses entrées (a, b, c, d) des degrés d'appartenance et fournit sur sa sortie (s) un degré d'appartenance représentant un ET logique flou entre les entrées, c'est-à-dire le minimum des degrés d'appartenance en entrées. 3. Système selon l'une quelconque des revendications précédentes, caractérisé par le fait que le bloc fonctionnel logique de type OU (ORF), reçoit sur ses entrées (a, b, c, d) des degrés d'appartenance et fournit sur sa sortie (s) un degré d'appartenance représentant un OU flou entre les entrées, c'est-à-dire le maximum des degrés d'appartenance en entrées. 4. Système selon l'une quelconque des revendications précédentes, caractérisé par le fait que le bloc fonctionnel logique de type NON, (NOF), reçoit sur son entrée un degré d'appartenance et fournit sur sa sortie (s) un degré d'appartenance inverse de l'entrée, c'est-à-dire la différence entre 1 et le degré d'appartenance reçu en entrée. 5. Système selon l'une quelconque des revendications précédentes, caractérisé par le fait qu'il comporte un bloc fonctionnel logiciel (CF) de classification floue recevant en entrées des mesures (A, B, C) d'un point de manière à affecter ce point à des classes de référence de façon graduelle, calcule le degré d'appartenance à ces différentes classes, travaille avec une base de points de référence, définissant les classes de référence et utilise un algorithme de classification floue. 6. Système selon l'une quelconque des revendications précédentes, caractérisé par le fait qu'il comporte un bloc fonctionnel logiciel configurable (EVF) recevant sur son entrée numérique une mesure et fournissant sur chacune de ses sorties, après calcul, le degré d'appartenance à un ensemble correspondant à un terme linguistique. 7. Système selon l'une quelconque des revendications précédentes, caractérisé par le fait qu'il comporte un bloc fonctionnel logiciel configurable (MTF) servant au calcul d'inférences et de défuuification, reçoit sur ses entrées des degrés d'appartenance qui sont utilisés pour le mécanisme d'inférences floues à l'aide d'une base de règles floues et réalise la défuzzification des variables floues selon des fonctions d'appartenance de type singleton pour fournir des sorties numériques directement utilisables par un actionneur. 8. Système de programmation selon l'une quelconque des revendications précédentes, caractérisé par le fait qu'il comporte des moyens logiciels de logique floue pour évaluer un produit manufacturé (CF et EVF), des moyens logiciels de logique floue pour diagnostiquer les dérives de qualité du produit (ANDF, ORF, NOF) et des moyens logiciels de logique floue (MTF) pour prendre des décisions sous forme d'actions à appliquer au procédé de fabrication du produit.