Brevet FR2834094A1 — publié le 20030627

Procédé de mise en oeuvre, et agencement, d'un appareil de traitement de données tel qu'un automate programmable Un procédé de mise en oeuvre d'un appareil de traitement de données tel qu'un automate programmable ainsi que la constitution de celui-ci sont décrits, par exemple, dans l'ouvrage de G. Strohmann, Automatisierungstechnik 1, Annexe 4, Éditions R. Oldenbourg, 1998, pages 334 et suivantes. D'après cette publication, les éléments fonctionnels les plus importants d'un automate programmable sont une unité de commande munie d'un ou parfois plusieurs microprocesseurs ainsi que d'une mémoire de données comportant des zones d'écriture pour des temps, des compteurs, des marqueurs et des images du processus ainsi qu'une mémoire de programme. Des modules d'entrée/sortie et, le cas échéant, des temporisations, des compteurs et des générateurs de seuil sont également prévus. Tous les composants de l'automate programmable sont reliés entre eux par le biais d'un ou de plusieurs bus par lesquels les données sont transmises en parallèle ou en série. Conformément à un mode de fonctionnement connu d'un automate programmable, l'unité de commande interroge au début de chaque cycle les états des signaux aux entrées du module d'entrée de l'automate très rapidement les uns après les autres et met à 0 ou à 1 une cellule de mémoire associée à chaque entrée dans une image d'entrées du processus de manière que les cellules de la mémoire de données, après l'exécution de cette étape du traitement, contiennent une image des états des signaux des entrées. La mémoire est généralement organisée en octets, ce qui veut dire que chaque emplacement de mémoire a une largeur de 8 bits (1 octet). La largeur des données correspond ici au nombre d'unités binaires que peut contenir une cellule mémoire. Les automates programmables connus utilisent généralement des types de données fixes tels que des octets (8 bits), des mots (16 bits), des doubles mots (D-Words, 32 bits) ou des mots quadruples (Q-Words, 64 bits). Cela veut dire que toutes les instructions, données et adresses de ces instructions et données ont un nombre d'emplacements qui correspond au type de données. Les mémoires connues sont structurées de telle manière qu'à chaque adresse mémoire correspond une cellule contenant au moins un nombre de bits correspondant à un type de données, par exemple 8 bits. Un octet correspond ainsi à la plus petite unité adressable. En d'autres termes, avec les automates programmables connus, les données binaires qui identifient par 1 ou 0 l'état d'une entrée sont traitées comme des octets, ce qui entraîne une consommation importante d'espace mémoire. De plus, l'enregistrement d'une information relative à une entrée qui ne contient en fait qu'un seul bit dans une cellule de mémoire a pour inconvénient que les données d'entrée doivent fréquemment être dépaquetées et empaquetées. Pendant l'exécution ultérieure du programme, le microprocesseur de l'unité de commande revient à l'image du processus enregistrée dans la mémoire et traite en fonction de celle-ci les instructions de commande qui sont enregistrées dans la mémoire de programmes. Les données d'entrée/sortie sont alors transférées à la pile du processeur proprement dite. Un autre inconvénient de la procédure connue réside dans le fait qu'il est nécessaire de recopier les paramètres nécessaires en cas d'imbrication des fonctions 1 blocs fonctionnels, car des mémoires sont attribuées de manière fixe aux liaisons entre les fonctions 1 blocs fonctionnels. Lors de l'exécution du programme, le processeur charge par exemple l'état du signal d'une entrée E1. 1 dans son unité de calcul et additionne l'état du signal de l'entrée E2.1, par exemple. Il est ainsi possible d'enregistrer un résultat dans un registre du processeur. Après avoir terminé l'exécution du programme, c'est à dire à la fin du cycle de traitement, l'unité de commande transmet le contenu du registre vers l'image des sorties du processus et le contenu de l'image des sorties vers les modules de sortie. L'unité de commande commence ensuite le cycle de traitement suivant par une reprise des états des signaux des entrées, suivie d'une exécution du programme et ensuite envoi de l'image des sorties aux modules de sortie. En partant de cela, la présente invention a pour objet de perfectionner un procédé de mise en oeuvre d'un automate programmable, et d'agencer l'automate programmable, de manière à garantir un traitement rapide des données d'entrée et/ou de sortie tout en utilisant peu de mémoire. Le problème est résolu selon l'invention par les étapes suivantes : - lecture des données d'entrées présentes sur les modules d'entrée, - mémorisation des données d'entrée dans une mémoire sous forme d'image des entrées du processus de telle manière qu'un bit d'une cellule de mémoire associé à chaque entrée soit mis à 0 ou à 1, - organisation d'un espace mémoire à la manière d'une pile avec les données d'entrée nécessaires à la poursuite de l'exécution du programme, - chargement dans un registre du processeur des données d'entrée déposées dans la pile, - génération de données de sortie par exécution d'un code programme avec les données d'entrée déposées dans le registre du processeur de telle manière que ce registre contienne après exécution des données de sortie appropriées, - enregistrement dans la mémoire des données de sortie contenues dans le registre du processeur en tant qu'image des sorties du processus, de manière qu'un bit d'une cellule de mémoire associé à chaque sortie soit mis à 0 ou à 1, - transmission à un module de sortie des données de sortie enregistrées dans la mémoire. Le procédé vise d'une part à enregistrer les données d'entrée dans une mémoire sous forme de bits en tant qu'image des entrées ou des sorties du processus et, pour atteindre une grande vitesse de traitement, à traiter ces données dans le processeur par un traitement direct des bits. Cela a pour avantage que l'automate programmable peut fonctionner avec un faible espace mémoire et qu'un dépaquetage/empaquetage fréquent des données d'entrée déposées sous forme d'octets devient inutile. Il en résulte, outre une faible zone de données, la possibilité d'utiliser un code très compact quand on programme le processeur. Selon un mode de réalisation préférentiel, les données d'entrée sont structurées en pile de bits et sont chargées dans le registre du processeur tel qu'un registre DX. Autrement dit, les données d'entrée, contrairement aux procédés connus, sont traitées par bits, un registre du processeur faisant ici office de pile. Les données requises peuvent alors être décalées par des fonctions PUSH et POP. Un élément dit "carry-flag" du processeur est utilisé comme registre de bits dans lequel sont déposés les résultats, ou résultats intermédiaires, d'une étape du programme. Il est prévu dans le registre du processeur que l'élément situé en haut de la pile (TOP) est sur le bit de préambule du registre de programme. Outre le traitement des données d'entrée dans un registre du processeur en pile de bits, il est également possible, en option, de traiter les données d'entrée en pile de mots, pile d'octets, pile de mots doubles ou quadruples, un ou plusieurs registres du processeur étant alors chargés avec les données correspondantes en provenance de la pile constituée à un moment donné pendant un cycle. Lors du traitement de la pile, il est prévu que les données d'entrée ou de sortie soient enregistrées dans une mémoire à pile, comme décrit ci-dessus, un autre élément étant ajouté lors de l'enregistrement à l'élément le plus haut de la mémoire, l'élément le plus haut étant extrait lors de la lecture. Cela veut dire que, lors de la construction de la pile, les données d'entrée sont déposées sur la pile en fonction de leur ordre de traitement, indépendamment du format de données, et, après exécution du programme, les résultats du traitement peuvent être prélevés de la pile en représentant alors l'image des sorties du processus des modules de sortie. Pour assurer une exécution optimale du code programme, il est prévu que la pile est construite selon un algorithme donné ou avec un générateur de code de manière que les entrées à combiner logiquement ensemble dans le cycle soient enregistrées dans un ordre prédéfini approprié lors du traitement de la pile. Le traitement de la pile de bits se caractérise notamment par le fait qu'un résultat d'une combinaison logique de données d'entrée est disponible sur la pile de bits immédiatement pour leur traitement ultérieur, c'est à dire à la disposition du registre du processeur tel qu'un registre de données, sans utiliser de mémoires intermédiaires. Les états internes tels que compteurs, temporisations, marqueurs et différentes variables peuvent être écrits et lus par le biais d'une mémoire propre de référence. En d'autres termes, les états internes sont interrogés par le biais de références. La mémoire de référence peut viser tous types de données. Il est très avantageux de n'avoir à enregistrer sur la pile propre au processeur que des adresses de retour pour traiter des fonctions/blocs fonctionnels imbriqués. D'autres caractéristiques de l'invention apparaîtront à la lecture de la description ci-après d'un exemple de réalisation préférentiel en regard des dessins. La figure 1 montre une structure schématique d'automatique programmable. La figure 2 est une représentation schématique du traitement d'une combinaison booléenne ET au moyen d'une pile de bits ; La figure 3 illustre un programme assembleur (X86) qui représente le déroulement de la combinaison logique de la figure 2. La figure 4 représente schématiquement une combinaison booléenne ET/OU de trois données d'entrée. La figure 1 représente très schématiqument un automate programmable SPS comprenant une unité centrale ZE qui est reliée par le biais d'un bus BUS à une mémoire de données DS, une mémoire programme PS et à un ou plusieurs modules d'entrée EO... En à entrées EO. 1... En. n et modules de sortie AO... An à entrées AO. O... An. n. Dans le présent exemple de réalisation, le module d'entrée EO présente par exemple une largeur de données de 16 bits et comprend les entrées EO. O à EO. 15. Au début d'un cycle d'exécution, les données d'entrée EO. O... En. n présentes sur les modules d'entrée EO... En sont lues et déposées dans la mémoire de données DS dans un espace mémoire alloué PAE sous forme d'image des entrées du processus. Selon l'invention, les données sont enregistrées de manière qu'un bit d'une cellule mémoire SZ associé à chaque entrée EO. O... En. n est mis à 0 ou à 1. En d'autres termes, un signal d'entrée EO. O... En. n est associé à chaque bit d'une cellule mémoire. Dans une autre étape, les données d'entrée enregistrées dans une ou plusieurs cellules mémoire SZ sont éventuellement arrangées en une ou plusieurs piles BIST, WST, BYST, DWST, QWST par traitement d'un générateur de pile STG. Suivant le traitement qui s'ensuit, les piles peuvent être structurées en tant que pile de bits BIST, pile de mots WST, pile d'octets BYST, pile de mots doubles DWST et pile de mots quadruples QWST. Dans une forme de réalisation préférentielle, c'est à dire avec traitement direct de bits des données d'entrée, un registre DX du processeur de l'unité centrale ZE est chargé avec le contenu de la pile de bits BST. Pour la suite du traitement, les données d'entrée sont prélevées de la pile et traitées par manipulation du registre du processeur DX en fonction d'un code programme PC présent dans la mémoire programme PS de manière que le registre DX et ainsi la pile de bits BITST contienne après traitement les données respectives de sortie AO. O... An. n. Un exemple de combinaison logique d'entrées est expliqué en regard de la figure 2. Les données de sortie générées sont ensuite déposées sur la pile ST, dans le présent exemple sur la pile BITST, et disponibles pour la suite du traitement, par exemple en imbriquant des fonctions 1 blocs fonctionnels. Cela a pour avantage qu'il est inutile de recopier par exemple des paramètres lors de l'imbrication des fonctions 1 blocs fonctionnels. Les données de sortie AO. O... An. n ainsi générées sont affectées dans la mémoire de données DS à un espace mémoire PAA en tant qu'image des sorties du processus de manière qu'un bit d'une cellule mémoire SZ associé à chaque sortie soit mis à 0 ou à 1. Les données de sortie enregistrées dans la mémoire sont ensuite transmises aux modules de sortie AO... An et les sorties correspondantes AO. O... An. n mises à 0 ou à 1. Outre la combinaison logique par bits des diverses sorties par des fonctions logiques ou mathématiques, les données d'entrée peuvent aussi être traitées dans des formats de données tels que mots, octets, mots doubles (D-Word) ou quadruples (Q-Word), les piles correspondantes étant générées par le générateur de pile. Les états ou variables par exemple enregistrés dans la mémoire programme PS peuvent ainsi être interrogés par le biais de références. La procédure décrite précédemment offre comme avantage, notamment lors de l'exécution de fonctions 1 blocs fonctionnels imbriqués, que les résultats intermédiaires se trouvent sur la pile de bits ou de mots et sont immédiatement disponibles pour poursuivre le traitement sans besoin d'attribuer de manière fixe des mémoires pour la liaison entre les fonctions 1 blocs fonctionnels ou sans qu'il soit nécessaire de recopier des paramètres. Le fonctionnement d'un processeur courant s'en trouve ainsi simplifié, car seules les adresses de retour vers les composants fonctionnels doivent être indiquées sur la pile propre du processeur INTST. La figure 2 représente de manière purement schématique le traitement de bits direct selon l'invention au moyen d'une pile de bits, selon l'exemple d'une fonction booléenne ET de la famille des processeurs X86 (firme Intel). La pile de bits BITST préalablement construite est déjà chargée et contient les signaux d'entrée EO. O et E2.4. Le registre de drapeau "carry-flag" utilisé comme registre de bits se trouve dans un état non défini. La valeur d'entrée EO. O est décalée dans le marqueur F en manipulant la pile de bits, c'est à dire par exemple à l'aide d'une instruction de décalage, ce qui est comparable à la fonction PUSH d'une pile (Push Bit-Stack = ROR DX, 1). La valeur de l'entrée EO. O est interrogée dans le registre de bits F. Si EO. O a l'état 1, la valeur de l'entrée E2.4 située au sommet de la pile est alors déjà le bon résultat. En d'autres termes, les données de sortie sont déjà sur la pile. Si l'entrée EO. 0 a pour valeur 0, l'élément du haut de la pile de bits BITST devrait aussi avoir la valeur 0. L'élément du haut est mis à 0 par une fonction set. Dans ce cas aussi les données de sortie sont déposées directement sur la pile BITST et sont disponibles sur la pile pour la suite du traitement. La figure 3 représente un exemple de programme assembleur qui illustre la possibilité d'une programmation avec un code très compact. Il convient notamment de noter qu'aucune donnée n'est utilisée dans le code qui s'étend sur 8 octets, car les entrées et sorties se trouvent sur la pile de bits. Un autre exemple de réalisation d'une combinaison logique ET et OU est représenté figure 4. La pile de bits est d'abord chargée avec les données d'entrée EO. O, EO. 1 et EO. 2 en exécutant des opérations PUSH sur la pile. Comme décrit en regard de la figure 2, une combinaison ET des entrées EO. O et EO. 1 peut ensuite être réalisée par manipulation de la pile. Le résultat de la combinaison finale qui se trouve au sommet de la pile est ensuite combiné par une fonction OU à l'entrée EO. 2 de manière à finalement obtenir au sommet de la pile le résultat de la sortie AO. O, lequel est chargé par une opération POP à partir de la pile de bits via le registre de bits dans la mémoire image des sorties. Le fonctionnement du processeur de pile décrit avec traitement direct de bits a pour avantage par rapport à l'état de la technique l'inutilité d'empaqueter et de dépaqueter les données d'entrée enregistrées sous forme d'octets. Au contraire, les données d'entrée et sortie sont traitées comme des bits. Il en résulte comme avantage que l'automate programmable peut être réalisé avec une zone de données et ainsi un espace mémoire de très petite taille. Un autre avantage résulte du fait que la programmation peut être réalisée avec un code très compact, ce qui simplifie la programmation de l'automate programmable dans son ensemble et accélère le traitement. Outre les bonnes performances de l'automate programmable selon l'invention, on note que seules de petites quantités de données sont requises par exemple pour des animations. L'automate décrit est notamment approprié pour des mini-automates ayant 1 à 5 modules d'entrée/sortie. La structure de l'automate programmable et le procédé selon l'invention se sont avérés particulièrement avantageux quand on couple deux automates, dont l'un est uniquement utilisé en mode veille, spécialement en veille active. La réduction du volume de données permet un basculement immédiat sur l'automate de secours qui fonctionne en mode veille par une brève recopie des données du programme. Il convient en outre de mentionner que le procédé et la structure du processeur peuvent être mis en oeuvre indépendamment de la plateforme. revendications 1. Procédé de mise en oeuvre d'un appareil de traitement de données (SPS) tel qu'un automate programmable, comprenant les étapes suivantes : - lecture de données d'entrées (EO. 1... En. n) présentes sur des modules d'entrée (EO... En), - mémorisation des données d'entrée dans une mémoire (DS) sous forme d'image d'entrées du processus (PAE) de manière qu'un bit d'une cellule mémoire (SZ) associé à chaque entrée (EO. O... En. n) soit mis à 0 ou à 1, - agencement d'un espace mémoire à la manière d'une pile (BIT ST, BY ST, WST, DWST, QWST) avec les données d'entrée (EO. O... En. n) nécessaires à une exécution ultérieure du programme, - chargement dans un registre du processeur (EX) des données d'entrée (EO. O... En. n) déposées dans la pile (BIT ST, BY ST, WST, DWST, QWST), - génération de données de sortie (AO. O... An. n) par exécution d'un code programme avec les données d'entrée (EO. O... En. n) déposées dans le registre du processeur (DX) de manière que ce registre (DX) contienne après exécution les données de sortie respectives, - enregistrement dans la mémoire (DS) des données de sortie contenues dans le registre du processeur (DX) en tant qu'image des sorties du processus (PAA) de manière qu'un bit de cellule mémoire associé à chaque sortie (AO. O... An. n) soit mis à 0 ou à 1, - transmission à un module de sortie (AO... An) des données de sortie (AO. O... An. n) enregistrées dans la mémoire (DS). 2. Procédé selon la revendication 1, caractérisé en ce que les données d'entrée (EO. O... et En. n) sont structurées en pile de bits et chargées dans le registre du processeur (DX) dans le registre de données. 3. Procédé selon la revendication 1 ou 2, caractérisé en ce que les données d'entrée (EO. O... et En. n) et/ou les données de sortie (AO. O... An. n) sont traitées par bits. 4. Procédé selon l'une des revendications 1 à 3, caractérisé en ce que le registre du processeur (DX) est utilisé en tant que pile, les données requises étant décalées par des fonctions PUSH/POP. 5. Procédé selon l'une des revendications 1 à 4, caractérisé en ce qu'un registre à marqueur (F), de préférence un registre"carry-flag"du processeur, est utilisé en tant que registre de bits pour interroger et combiner les résultats intermédiaires d'une étape du programme. 6. Procédé selon l'une des revendications 1 à 5, caractérisé en ce qu'un élément du sommet de la pile est situé sur le bit de préambule du registre du processeur (DX). 7. Procédé selon l'une des revendications 1 à 6, caractérisé en ce que la pile est structurée en pile d'octets (BYST), pile de mots (WST), pile de mots doubles (DWST) et pile de mots quadruples (QWST), un ou plusieurs registres du processeur étant chargés avec les données de type bit, octal, mot, double mot et quadruple mot pendant le traitement du programme. 8. Procédé selon l'une des revendications 1 à 7, caractérisé en ce que lors de la construction de la pile, les données d'entrée et/ou de sortie sont ajoutées à l'écriture sur l'élément situé tout en haut de la mémoire et l'élément supérieur est extrait à la lecture. 9. Procédé selon l'une des revendications 1 à 8, caractérisé en ce qu'au début de l'exécution du programme les données d'entrée sont présentes sur la pile et qu'après exécution du programme la pile est dotée des données de sortie. 10. Procédé selon l'une des revendications 1 à 9, caractérisé en ce que la pile (BITST, BYST, WST) est construite selon un algorithme déterminé ou avec un générateur de code (CG). 11. Procédé selon l'une des revendications 1 à 10, caractérisé en ce que les états internes tels que compteurs, temporisations et le marqueurs ainsi que variables sont interrogés par le biais de références. 12. Procédé selon l'une des revendications 1 à 11, caractérisé en ce que seules des adresses de retour pour le traitement des fonctions/blocs fonctionnels imbriqués sont enregistrées sur la pile propre du processeur (INST). 13. Appareil de traitement de données (SPS) tel qu'un automate programmable comprenant - un ou plusieurs modules d'entrée (EO... En) auxquels sont appliquées des données d'entrée (EO... En. n), - une mémoire (DC) dans laquelle les données d'entrée sont enregistrées en tant qu'image des entrées du processus (PAE) de manière qu'un bit de cellule mémoire (SZ) associé à chaque entrée (EO. O... En. n) soit mis à 0 ou à 1, - un générateur de pile (SG) pour organiser un espace mémoire à la manière d'une pile (BITST, BYST, WST, DWST, QWST) avec les données d'entrée (EO. O ... En. n) requises pour l'exécution ultérieure du programme, - un registre de processeur (DX) dans lequel sont chargées les données d'entrée (EO. O... En. n) déposées dans la pile et dans lequel les données de sortie (AO. O... An. n) sont générées par exécution d'un code programme avec les données d'entrée (EO. O... En. n) déposées dans le registre du processeur (DX) de manière que le registre du processeur (DC) contienne après exécution les données de sortie respectives, - une mémoire (DS) dans laquelle les données de sortie contenues dans le registre du processeur (DX) en tant qu'une image des sorties du processus (PAA) sont enregistrées de manière qu'un bit d'une cellule mémoire associé à chaque sortie (AO. O... An. n) soit mis à 0 ou à 1, - un ou plusieurs modules de sortie (AO... An) auxquels sont transmises les données de sortie (AO. O... An. n) mémorisées.