Brevet FR2644912A1 — publié le 19900928

Cette invention concerne de façon générale des contrôleurs logiques programmables prévus pour l'utilisa- tion dans la commande de processus de fabrication, de pro- cessus industriels ou autres. L'invention porte plus parti- culièrement sur un contrôleur logique programmable utili- sant un processeur de blocs de fonction principal et un processeur de bits auxiliaire. Les contrôleurs logiques programmables consti- tuent un développement relativement récent dans la techno- logie de la conduite de processus. Dans le cadre d'une opé- ration de conduite de processus, on utilise un contrôleur logique programmable pour surveiller des signaux d'entrée provenant de divers capteurs d'entrée qui signalent des événements et des conditions apparaissant dans un processus commandé. A titre d'exemple, un contrôleur logique program- mable peut surveiller des conditions d'entrée telles que la température, la pression et le débit en volume, etc. Un programme de commande est enregistré dans une mémoire qui est associée au contrôleur logique programmable, pour indi- quer à ce dernier les actions qu'il doit accomplir en pré- sence de certaines conditions ou de certains signaux d'en- trée particuliers. Sous la dépendance de ces signaux d'en- trée, le contrôleur logique programmable élabore et produit des signaux de sortie qui sont émis vers divers disposi- tifs, pour commander le déroulement du processus. Par exem- ple, le contrôleur logique programmable émet des signaux de sortie pour ouvrir ou fermer un micro-contact, augmenter ou diminuer une température ou une pression, ou commander la vitesse d'un convoyeur, ainsi que pour accomplir de nom- breuses autres fonctions de commande possibles, trop nom- breuses à énumérer. Les contrôleurs logiques programmables actuels comprennent une unité centrale (UC) pour traiter les diver- ses instructions du programme de commande. Le programme de commande est enregistré dans une mémoire qui est associée à l'unité centrale et qui contient des instructions qui in- diquent à l'unité centrale les signaux de sortie qu'elle doit émettre vers des dispositifs de commande sous l'effet de divers signaux d'entrée que l'unité centrale reçoit à partir des capteurs d'entrée. Un système d'entrée/sortie (E/S) est généralement placé entre l'unité centrale et les capteurs d'entrée et lesdispositifsde commande. Des contrôleurs logiques programmables plus per- fectionnés utilisent une architecture à deux processeurs. Le contrôleur logique programmable comprend ainsi un pro- cesseur de blocs de fonction, ou processeur principal, pour exécuter des instructions de haut niveau qu'on appelle des blocs de fonction. Le contrôleur logique programmable com- prend en outre un processeur de bits, ou coprocesseur, qui exécute d'une manière accélérée des instructions de bas ni- veau qu'on appelle des instructions booléennes. Dans de tels contrôleurs logiques programmables à processeur-copro- cesseur, le programme d'utilisateur est généralement enre- gistré dans une mémoire qui est accessible à la fois au processeur de blocs de fonction et au processeur de bits. Le programme d'utilisateur comprend à la fois des instruc- tions de blocs de fonction et des instructions booléennes, mélangées ensemble. Une tâche des deux processeurs est de coordonner et de se partager l'exécution du programme d'utilisateur. Ainsi, les instructions ou ordres du pro- gramme d'utilisateur en mémoire sont exécutés en série et le processeur de blocs de fonction ou le processeur de bits est sélectionné pour exécuter une instruction particulière, selon que l'instruction est un bloc de fonction ou une ins- truction booléenne. La figure 1 représente un exemple d'une telle ar- chitecture à deux processeurs pour un contrôleur logique programmable. Le contrôleur logique programmable de la fi- gure 1 comprend un bus principal auquel sont connectées une unité d'entrée 1, une unité de sortie 2 et une console de programmation 3. Une mémoire de travail, une mémoire morte (ROM) 5, un processeur de blocs de fonction (processeur principal) 6 et un processeur de bits 7 sont également con- nectés au bus principal. Un multiplexeur 8 est connecté en- tre une mémoire d'utilisateur 9 et le processeur de bits 7. Un autre multiplexeur 10 est connecté entre une mémoire d'entrée/sortie (E/S) 11 et le processeur de bits 7. Une ligne de démarrage et une ligne d'interruption (IRQ) inter- connectent le processeur de blocs de fonction 6 et le pro- cesseur de bits 7. Dans cette architecture, le processeur de bits 7 prend la commande et décode des ordres d'utilisa- teur dans le programme d'utilisateur qui est enregistré dans la mémoire d'utilisateur 9. Lorsque le processeur de bits 7 rencontre une instruction booléenne (encore appelée instruction de bas niveau ou ordre de base), il traite l'instruction booléenne en utilisant ses propres circuits de traitement. Au contraire, lorsque le processeur de bits 7 décode et détecte une instruction de bloc de fonction (encore appelée instruction de haut niveau ou ordre d'ap- plication), il abandonne la commande au processeur de blocs de fonction 6 qui traite alors l'instruction de bloc de fonction. Dans l'architecture à deux processeurs décrite ci-dessus, le processeur de bits 7 comprend un décodeur d'ordres qui décode des ordres dans le programme d'utilisa- teur qui se trouve dans la mémoire 9. Une partie de chaque ordre ou instruction d'utilisateur dans la mémoire 9 fait l'objet d'une conversion d'adresse par un convertisseur d'adresse qui fait partie du processeur de bits 7. Des don- nées se trouvant à l'adresse convertie sélectionnée dans la mémoire d'E/S 10 sont ensuite prélevées et fournies à des circuits logiques et de calcul qui manipulent les données et qui appliquent le résultat de l'opération à un registre de flux d'énergie qui fait partie du processeur de bits 7. Autrement dit, les données qui se trouvent à l'adresse sé- lectionnée dans la mémoire d'E/S Il sont prélevées et mani- pulées, et elles deviennent le contenu du registre de flux d'énergie. Le processeur de bits 7 comprend un compteur d'instructions dont le contenu est actualisé chaque fois qu'un ordre est décodé. Ainsi, après que chaque ordre a été traité, le compteur d'instructions désigne l'adresse de l'ordre suivant du programme d'utilisateur dans la mémoire d'utilisateur 9, qui doit être exécuté. On peut ainsi trai- ter une série d'ordres successifs dans le programme d'uti- lisateur. Dans le cas o le décodeur d'ordre dans le pro- cesseur de bits 7 détermine qu'un ordre particulier dans le programme d'utilisateur est un ordre de bloc de fonction, un signal d'interruption (IRQ) est émis vers le processeur de blocs de fonction 6. Ceci transfère la commande vers le processeur de blocs de fonction 6 dans le but de traiter l'ordre de bloc de fonction courant. On note que dans une architecture à deux processeurs d'un type connu caractéris- tique, une fois qu'un ordre de bloc de fonction est décodé, la commande du traitement est transférée au processeur de bloc de fonction 6 sans aucune condition préalable, c'est- à-dire indépendamment du fait que le contenu antérieur du registre de flux d'énergie dans le processeur de bit 7 soit un "0" ou un "1". On note que lorsqu'un ordre de bloc de fonction est exécuté par le processeur de blocs de fonction 6, un temps relativement important est consomme, et ce temps est de façon caractéristique dans une plage d'environ fois à 100 fois le temps qui est nécessaire pour l'exé- cution d'une instruction booléenne par le processeur de bits 7. Par conséquent, lorsque des ordres de blocs de fonction sont employés dans des programmes d'utilisateur dans cette architecture, la durée du cycle d'exécution est relativement longue, ce qui conduit à un retard important et indésirable. Un contrôleur logique programmable à deux processeurs relativement récent est décrit dans la demande de brevet du Japon 61181007, déposée le 31 juillet 1986 par Tetsuo Doi et col., et cédée à Tateishi Denki K.K. Le contrôleur logique programmable de la demande précitée com- prend à la fois un processeur de blocs de fonction et un processeur de bits. Le processeur de bits décode les ordres qui sont contenus dans un programme d'utilisateur qui est enregistré dans une mémoire d'utilisateur. Lorsque le pro- cesseur de bits trouve un ordre ou un bloc de fonction du type CODE OPERATION dans le programme d'utilisateur, il identifie le code de bloc de fonction et il effectue une opération NOOP (Pas d'Opération) en relation avec le CODE OPERATION si un flux d'énergie de valeur zéro est indiqué dans le registre de flux d'énergie du processeur de bits. Autrement dit, dans ce cas, aucune interruption n'est ap- pliquée au processeur de blocs de fonction, de façon que le bloc de fonction soit traité dans la condition NOOP par le processeur de bits luimême, sans que l'exécution ne passe sous la commande du processeur de blocs de fonction. Aussi longtemps que la valeur contenue dans le registre de flux d'énergie n'est pas un "1", le processeur de bits traite un ordre dans la condition NOOP, même s'il s'agit d'un ordre de bloc de fonction. De cette manière, la durée d'exécution de l'ordre est effectivement raccourcie en comparaison avec sa durée d'exécution lorsque l'ordre est toujours traité par le processeur de blocs de fonction. Malheureusement, bien que cette technique augmen- te quelque peu la vitesse de fonctionnement effective du contrôleur logique programmable, elle présente l'inconvé- nient qui consiste dans l'impossibilité d'établir des blocs de fonction qui doivent être exécutés pendant des périodes au cours desquelles il n'y a pas de flux d'énergie. En ou- tre, il n'est pas possible de créer des blocs de fonction comportant plus d'une sortie booléenne et d'une entrée booléenne, du fait qu'aucune manipulation n'est effectuée sur le registre de flux d'énergie ou sur la pile de bits associée lorsque le bloc de fonction n'est pas exécuté. Une limitation supplémentaire de cette technique consiste en ce que si un bloc de fonction est exécuté, le compteur d'ins- tructions du processeur de bits doit être actualisé par le processeur de bloc de fonction, du fait que l'opération NOOP associée au bloc de fonction n'a pas lieu dans ce cas. Cette action exige une durée notable et ajoute un temps- systéme indésirable au traitement de chaque bloc de fonc- tion qui est exécute. Un but de l'invention est de procurer un contrô- leur logique programmable ayant des performances élevées, qui comprend à la fois un processeur de blocs de fonction et un processeur de bits. Un autre but de l'invention est de procurer un contrôleur logique programmable qui fonctionne avec une vi- tesse élevée tout en réduisant le temps-système indésirable lié au fonctionnement. Un autre but encore de l'invention est de procu- rer un contrôleur logique programmable résolvant les pro- blémes et éliminant les limitations qui sont associées aux contrôleurs logiques programmables envisages ci-dessus. Conformément à l'invention, un contrôleur logique programmable comprend un processeur de bits pour traiter des ordres de bas niveau. Le contrôleur logique programma- ble comprend en outre une mémoire de programme d'utilisa- teur, connectée au processeur de bits, pour enregistrer des ordres de programme d'utilisateur à des adresses respecti- ves dans cette mémoire, ces ordres contenant des CODES OPE- RATION et ayant des OPERANDES associés. Un processeur de blocs de fonction est connecté au processeur de bits pour traiter des ordres de haut niveau. Le processeur de bits comprend un registre de flux d'énergie et un compteur d'instructions contenant un pointeur d'instruction dirigé vers un ordre en mémoire qui est désigné par l'ordre cou- rant. Le processeur de bits comprend en outre un décodeur pour décoder et identifier le CODE OPERATION de l'ordre courant et ses OPERANDES associés, dans la mémoire de pro- gramme d'utilisateur. Le processeur de bits accède à l'or- dre courant dans la mémoire de programme d'utilisateur. Le processeur de bits comprend des moyens de commande prévus de façon à abandonner la commande au processeur de blocs de fonction si le CODE OPERATION présent définit un bloc de fonction et si l'une au moins des deux conditions suivantes est satisfaite: 1) un flux d'énergie est indiqué dans le registre de flux d'énergie du processeur de bits, et 2) le bloc de fonction est un bloc qui doit être exécuté par le processeur de blocs de fonction. Le processeur de bits com- prend un modificateur de pointeur d'instruction qui attend jusqu'à ce que le processeur de blocs de fonction ait pré- levé la valeur de pointeur d'instruction courante dans le processeur de bits, et qui modifie ensuite le pointeur d'instruction de façon à désigner le CODE OPERATION suivant dans la mémoire de programme d'utilisateur. Ce CODE OPERA- TION suivant est maintenant désigné comme étant l'ordre courant. La suite de la description se réfère aux dessins annexés qui représentent respectivement: Figure 1: un schéma synoptique d'un contrôleur logique programmable à deux processeurs de type classique; Figure 2: un schéma synoptique du contrôleur lo- gique programmable de l'invention; Figure 3: un organigramme du fonctionnement du processeur de bits de l'invention dans un mode maître: et Figure 4: une mappe de mémoire correspondant à une partie d'un programme d'utilisateur qui est enregistré dans une mémoire de programme d'utilisateur dans le contrô- leur logique programmable de l'invention. La figure 2 est un schéma synoptique du contrô- leur logique programmable de l'invention, représenté sous la forme du contrôleur logique programmable 100. Le contrô- leur logique programmable 100 comprend un bus de système principal 105 auxquels sont connectés les divers éléments et dispositifs qui constituent le contrôleur logique pro- grammable 100, pour établir une voie de communication entre ces éléments et dispositifs. Le contrôleur logique program- mable 100 comprend en outre un processeur de blocs de fonc- tion 110 qui est connecté au bus de système principal 105. Le processeur de blocs de fonction 110 est également appelé processeur principal ou unité centrale (UC) du contrôleur logique programmable 100. Une horloge de système 115 est connectée au processeur de blocs de fonction 110 pour ap- pliquer à ce dernier un signal de référence de base de temps. Un processeur de bits 120, qu'on appelle égale- ment un coprocesseur, est connecté au bus de système prin- cipal 105 par l'intermédiaire d'une structure tampon d'iso- lation 125. Plus précisément, le processeur de bits 120 est connecté à la structure tampon d'isolation 125 par un bus de connexion 130. Le processeur de bits 120 comprend un re- gistre de mode maître/esclave 121, un compteur d'instruc- tions 122, une pile de bits 123, un registre de flux d'énergie 124 et une unité arithmétique et logique (UAL) , ainsi qu'un décodeur d'ordre 126 qu'on décrira ulté- rieurement de façon plus détaillée. Le contrôleur logique programmable 100 comprend une mémoire vive (RAM) de programme d'utilisateur, 135, qui est destinée à enregistrer un programme d'utilisateur pen- dant que le contrôleur logique programmable 100 est en fonctionnement. La mémoire vive de programme d'utilisateur est connectée au bus de connexion 130, de façon que le processeur de blocs de fonction 110, le processeur de bits et le bus de système principal 105 soient connectés à la mémoire vive 135 et aient accès à cette dernière. Une antémémoire 140 constituée par une mémoire vive relative- ment rapide, est connectée au processeur de bits 120 pour améliorer le fonctionnement de celui-ci, en enregistrant des instructions exécutées récemment, pour permettre leur rappel immédiat par le processeur de bits 120. Une mémoire vive de système 145 est connectée au bus de système principal 105 pour permettre au contrôleur logique programmable 100 de disposer d'une mémoire d'enre- gistrement temporaire, en plus de la mémoire d'enregistre- ment temporaire pour le programme d'utilisateur qui est constituée par la mémoire de programme d'utilisateur 135. D'une manière classique, une interface de pro- grammeur 150 est connectée au bus de système principal 105 pour donner à un programmeur un moyen pour programmer le contrôleur logique programmable 100. Par exemple, dans un mode de réalisation, l'interface de programmeur 150 est une interface clavier/clavier au moyen de laquelle un program- meur introduit des instructions dans le contrôleur logique programmable 100 à l'aide d'un clavier. Egalement d'une ma- nière connue, une interface de module intelligent 155 est connectée au bus de système principal 105 par l'intermé- diaire d'un bus de connexion 160. L'interface de module intelligent 155 procure un autre moyen par lequel le pro- grammeur ou l'utilisateur peut programmer le contrôleur lo- gique programmable 100. En effet, le contrôleur logique programmable 100 comporte une embase de connecteur 165, connectée au bus de connexion 160, pour recevoir une mémoi- re morte programmable et effaçable par voie électrique (EEPROM) qui contient un programme, dans un module d'ins- tructions de programme, pour le contrôleur logique program- mable 100. Une mémoire morte programmable {PROM) de systè- me, 170, est connectée au bus de système principal 105 com- me le montre la figure 2. La mémoire morte programmable 170 enregistre en permanence le programme de commande qui com- mande le fonctionnement du contrôleur logique programmable , et sous l'effet duquel le contrôleur 100 travaille en contrôleur logique programmable de la manière qu'on décrira ultérieurement. Le programme de commande est à distinguer du programme d'utilisateur mentionné précédemment, qui pro- gramme le contrôleur logique programmable 100 en ce qui concerne les signaux de sortie qu'il doit produire lorsque des signaux d'entrée de capteurs particuliers lui sont pré- sentés. Un connecteur de fond de panier d'entrée/sortie (E/S) 175 est connecté au bus de système principal 105 pour permettre de connecter des capteurs d'entrée au bus de sys- tème principal 105, et pour connecter le bus de système principal 105 aux dispositifs de sortie a commander. Les bus qui sont indiqués sur la figure 2 par des chemins lar- ges avec une flèche à au moins une extrémité, comme par exemple le bus 105, contiennent des bus d'adresse et de données, bien que ceux-ci ne soient pas représentés de fa- çon spécifique. Un circuit d'horloge de temps courant 180 est connecté au bus de système principal 105 pour fournir une information de temps courant au processeur de blocs de fonction 110 et au processeur de bits 120. Une horloge 185 est connectée au circuit d'horloge de temps courant 180 pour fournir à ce dernier une référence de base de temps. Le processeur de bits 120 peut fonctionner selon deux modes, à savoir un mode maître et un mode esclave. Un bit de mode maître est écrit dans le registre de mode mal- tre/esclave 121 pour placer le processeur de bits 120 dans ii le mode maitre. D'autre part, pour placer le processeur de bits 120 dans le mode esclave, un bit de mode esclave est écrit dans le registre de mode maitre/esclave 121 du pro- cesseur de bits. Lorsque le processeur de bits 120 est ain- si placé dans le mode esclave, le processeur de blocs de fonction 110 dispose de la commande de la mémoire vive de programme d'utilisateur 135. Lorsque le processeur de blocs de fonction 110 désire utiliser le processeur de bits 120, il écrit un ordre de démarrage. Le processeur de bits 120 prend alors la commande de la mémoire vive d'utilisateur , en écrivant un bit de mode maître dans le registre de mode maître/esclave. Simultanément, des amplificateurs-sé- parateurs à trois états (non représentés) sont conditionnés de façon à isoler le processeur de blocs de fonction 110 vis-à-vis des bus de données et d'adresse qui connectent le processeur 110 au reste du contrôleur logique programmable 100. Dans ce mode, le processeur de blocs de fonction 110 est autorisé à traiter des interruptions et à exécuter des cycles d'accès direct en mémoire (DMA). Cependant, le pro- 24 cesseur 110 est par ailleurs maintenu dans un état inactif par le fait que le processeur de bits 120 active un signal ATTENTE sur la ligne de signal ATTENTE qui connecte le pro- cesseur de bits 120 au processeur de blocs de fonction 110, comme le montre la figure 2. Dans ce mode maître, le pro- cesseur de blocs de fonction 110 n'a aucun accès à la mé- moire vive de programme d'utilisateur 135. Lorsque le processeur de bits 120 est dans le mode esclave, le processeur de blocs de fonction 110 peut accéder directement au compteur d'instructions 122 et à la pile 123 dans le processeur de bits 120. Dans ce mode de réalisation particulier de l'invention, le compteur d'ins- tructions 122 est un compteur à 16 bits et la pile 123 a une largeur de 8 bits, bien que l'invention ne soit pas li- mitée aux valeurs qui sont indiquées ici simplement à titre d'exemple. De plus, lorsque le processeur de bits 120 est dans le mode esclave, le processeur de blocs de fonction peut également accéder à l'antémémoire 140. On va maintenant envisager en détail le fonction- nement du processeur de bits 120 dans le mode maître, en se référant à l'organigramme du mode maître qui est représenté sur la figure 3. Pour activer le mode maître, le processeur de blocs de fonction 110 écrit un ordre de démarrage pour le processeur de bits 120, comme l'indique la case 200. Un bit de mode maître est ensuite écrit dans le registre de mode maitre/esclave 121, comme l'indique la case 205. Une fois que cette opération de démarrage est effectuée, le processeur de bits 120 s'isole du processeur de blocs de fonction 110 et il active un signal ATTENTE sur la ligne ATTENTE, conformément à la case 210. Sous l'effet du signal ATTENTE, le processeur de blocs de fonction 110 exécute en- suite une instruction sous l'effet de laquelle ce proces- seur attend jusqu'à ce que le processeur de bits 120 sup- prime ou désactive le signal ATTENTE. Ainsi, le processeur de blocs de fonction 110 peut réagir à des interruptions, mais il est forcé de retourner à l'état d'attente une fois que le traitement des interruptions est terminé. Le processeur de bits 120 décode un ordre dans la mémoire vive de programme d'utilisateur 135 conformément à la case 215. Si la détermination qui est faite à la case de décision 220 indique que l'ordre courant n'est pas un ordre de bloc de fonction-.avec un flux d'énergie de zéro ou n'est pas un ordre de bloc de fonction du type ayant un CODE OPE- RATION qui doit être traité par le processeur de blocs de fonction, le processeur de bits 120 exécute alors l'ordre courant conformément à la case 222. A la case 224, le pro- cesseur de bits 120 fait progresser le compteur d'instruc- tions 122 pour désigner l'ordre suivant. La séquence re- tourne ensuite à la case 200. Cependant, si la détermina- tion qui est faite à la case de décision 220 indique que l'ordre courant est un ordre de bloc de fonction avec un flux d'énergie de zéro, ou un ordre de bloc de fonction du type ayant un CODE OPERATION qui doit être traité par le processeur de blocs de fonction, la séquence passe à la ca- se 225 à laquelle un bit de mode esclave est écrit dans le registre de mode 121. Cette action ramène le processeur de bits 120 au mode esclave. Le processeur de bits 120 désac- tive également le signal ATTENTE pour rendre la commande au processeur de blocs de fonction 110, comme l'indique la ca- se 230. Le processeur de blocs de fonction 110 lit ensuite le pointeur d'instruction provenant du processeur de bits , et il dispose ainsi d'une désignation de son CODE OPE- RATION dans la mémoire vive de programme d'utilisateur 135, comme l'indique la case 240. On note que le CODE OPERATION de l'ordre courant n'a aucune signification pour le proces- seur de blocs de fonction 110. Cependant, l'information qui suit le CODE OPERATION a effectivement une signification pour le processeur de blocs de fonction 110. Ensuite, le processeur de bits 120 incrémente ou modifie de toute autre manière le compteur d'instructions 122 pour désigner l'adresse de ce CODE OPERATION suivant dans la mémoire vive de programme d'utilisateur 135, conformément à la case 235, * ce qui a pour effet d'actualiser un pointeur d'instruction. A ce point, le processeur de blocs de fonction est libre d'interroger et de modifier des données quel- conques dans la pile de bits 123 ou dans le registre de flux d'énergie 124. Le processeur de blocs de fonction exé- cute le CODE OPERATION conformément à la case 245. A l'achèvement de l'exécution du bloc de fonction, le proces- seur de blocs de fonction 110 actualise si nécessaire la pile de bits 123 et le registre de flux d'énergie 124, con- formément à la case 250. La séquence retourne ensuite à la case 200 pour répéter le processus. Il faut noter que sous l'effet des opérations décrites ci-dessus, le pointeur dans le compteur d'instruction 122 désigne automatiquement l'adresse correcte dans la mémoire de programme d'utilisa- teur 135, pour accéder à l'instruction ou à l'ordre sui- vant, et qu'aucune actualisation supplémentaire du compteur d'instructions 122 n'est nécessaire avant de passer au traitement de l'instruction ou de l'ordre suivant. La figure 4 montre une mappe de mémoire corres- pondant à une partie d'un exemple de programme d'utilisa- teur qui est enregistré dans la mémoire vive de programme d'utilisateur 135. La colonne de gauche contient des exem- ples d'adresses de mémoire séquentielles dans la mémoire vive 135 qui, par commodité, portent les désignations ADRESSE 1, ADRESSE 2, ADRESSE 3, ADRESSE 4... ADRESSE DE REPRISE. A l'adresse portant la désignation ADRESSE 1, un CODE OPERATION CHARGEMENT" est enregistré comme il est in- diqué dans la colonne du milieu de la mappe de mémoire de la figure 4. La colonne de droite montre le code objet qui correspond au CODE OPERATION ou à i'OPERANDE se trouvant à une adresse particulière. Le CODE OPERATION 0CHARGEMENT à l'ADRESSE 1 est un exemple d'un CODE OPERATION qui est exé- cutable par le processeur de bits 120. Le CODE OPERATION "CHARGEMENT" estdécodé par le décodeur d'ordre 126 dans le processeur de bits 120 et il est reconnu par le processeur de bits 120 comme étant un CODE OPERATION booléen ayant un argument ou OPERANDE à la suite du CODE OPERATION. Le CODE OPERATION et son OPERANDE s'étendent sur deux adresses. Dans ce cas, le compteur d'instructions 122 avance de 2, ce qui fait que le pointeur d'instruction désigne l'ADRESSE 3 aprés que les données booléennes qui se trouvent à l'adres- se de bit A42 dans l'antémémoire ont été chargées dans le registre de flux d'énergie. Après que le processeur de bits 120 a effectué l'opération CHARGEMENT décrite ci-dessus, l'instruction présente à l'ADRESSE 3 est décodée par le décodeur d'ordre 126. Le processeur de bits reconnaît l'ordre à l'ADRESSE 3 comme étant un ordre FONC ou ordre de bloc de fonction qui doit être exécuté par le processeur de blocs de fonction 110. La reconnaissance de l'ordre de bloc de fonction s'ef- fectue en employant la technique décrite ci-après. Dans la pratique réelle, le bit supérieur de la pile de bits 123 est désigné comme étant le registre de flux d'énergie, bien qu'un registre de flux d'énergie 124 soit représenté schématiquement de façon séparée sur la fi- gure 2 pour la commodité. Si le bit présent dans le regis- tre de flux d'énergie 124 est un "1", un flux d'énergie est indiqué, tandis que si le bit présent dans le registre de flux d'énergie 124 est un "0"o, aucun flux d'énergie n'est indiqué. L'ordre présent à L'ADRESSE 3 est un ordre de bloc de fonction ayant un CODE OPERATION FONC qui correspond à une représentation de code objet "1000 bccc", dans laquelle les bits "1000" sont appelés bits d'ordre supérieur IN7-IN4 et les bits bbbc' sont appelés bits d'ordre inférieur IN3- IN0. Les bits IN7-IN4 représentent le CODE OPERATION parti- culier. Si le bit IN3 (désigné par "b" sur la figure 4) est fixé à "1", ceci indique que le CODE OPERATION ou l'ordre courant est un ordre de bloc de fonction qui doit toujours être exécuté, et ceci force le processeur de blocs de fonc- tion 110 à exécuter cet ordre à titre d'ordre de bloc de fonction. Au contraire, si le bit IN3 est un "0", le trai- tement de cet ordre par le processeur de blocs de fonction n'est nécessaire que s'il y a un flux d'énergie. Les trois bits portant la désignation IN2-IN0 contiennent le nombre de mots ou d'arguments associés à un CODE OPERATION particulier. Les bits IN2-IN0 indiquent donc le nombre de mots ou d'arguments dans la mémoire vive de programme d'utilisateur 135 que le processeur de bits 120 doit sauter pour atteindre L'ADRESSE DE REPRISE lorsque le processeur de blocs de fonction a terminé le traitement de l'instruc- tion de bloc de fonction. Dans cet exemple, L'ADRESSE DE REPRISE est une adresse contenant le CODE OPERATION suivant dans la mémoire vive 135, après la dernière instruction de bloc de fonction. De cette manière, le pointeur d'instruc- tions dans le processeur de bits 120 est au point approprié pour reprendre l'exécution du programme d'utilisateur apres que le processeur de blocs de fonction 110 a terminé le traitement d'un ordre de bloc de fonction. Bien qu'on ait décrit ci-dessus un appareil con- sistant en un contrôleur logique programmable, on a égale- ment décrit un procédé pour faire fonctionner un contrôleur logique programmable. Le contrôleur logique programmable qui est employé dans le procédé comprend un processeur de blocs de fonction pour traiter des ordres de haut niveau et un processeur de bits pour traiter des ordres de bas ni- veau. Le processeur de bits est connecté à une mémoire de programme d'utilisateur contenant un programme d'utilisa- teur qui comporte une séquence d'ordres auxquels sont asso- ciés des CODES OPERATION et des OPERANDES. Le processeur de bits qui est utilisé dans le procédé comprend également un registre de flux d'énergie et un compteur d'instructions contenant un pointeur d'instruction qui désigne le CODE OPERATION de l'ordre suivant a traiter. Le procédé comprend l'opération dans laquelle le processeur de bits décode et identifie le CODE OPERATION d'un ordre dans la mémoire, cet ordre étant ce qu'on appelle l'ordre courant. Le procédé comprend en outre l'opération dans laquelle le processeur de bits rend la commande au processeur de blocs de fonction pour traiter l'ordre courant si l'une au moins des condi- tions suivantes est vérifiée pour l'ordre courant: 1) un flux d'énergie est indiqué dans le registre de flux d'éner- gie, 2) l'ordre courant est un bloc de fonction qui doit être exécuté par le processeur de blocs de fonction. Le procédé comprend également l'opération dans laquelle le processeur de bits attend jusqu'à ce que le processeur de blocs de fonction ait prélevé le pointeur d'instruction dans le processeur de bits, et il modifie ensuite le poin- teur d'instruction pour désigner le CODE OPERATION suivant dans la mémoire de programme d'utilisateur. Si par ailleurs aucune des conditions 1 et 2 n'est vérifiée, le processeur de bits traite l'ordre courant. On vient de décrire un contrôleur logique pro- grammable et un procédé permettant d'obtenir une vitesse de fonctionnement élevée dans un contrôleur logique programma- ble & deux processeurs qui comprend un processeur de blocs de fonction et un processeur de bits. Le contrôleur logique programmable de l'invention procure ce fonctionnement à vi- tesse élevée tout en réduisant le temps-système indésirable lié au fonctionnement. Le contrôleur logique programmable de l'invention élimine les problèmes et les limitations en- visagés précédemment qui sont associés à des contrôleurs logiques programmables classiques. REVENDICATIONS 1. Contrôleur logique programmable, caractérisé en ce qu'il comprend: un processeur de bits (120) destiné à traiter des ordres de bas niveau: une mémoire de program- me d'utilisateur (135), connectée au processeur de bits (120), pour enregistrer des ordres de programme d'utilisa- teur & des adresses respectives, ces ordres contenant des CODES OPERATION et des OPERANDES ASSOCIES; un processeur de blocs de fonction (110), connecté au processeur de bits (120), pour traiter des ordres de haut niveau; le proces- seur de bits (120) comprenant en outre un registre de flux d'énergie (124) ; un compteur d'instructions (122) contenant un pointeur d'instruction dirigé vers un ordre en mémoire qui est désigné par l'ordre courant: des moyens de décodage (126) destinés a décoder et à identifier le CODE OPERATION de l'ordre courant et des OPERANDES associés dans la mémoi- re de programme d'utilisateur (135);: des moyens d'accès en mémoire pour accéder à un ordre courant dans la mémoire; et des moyens de commande pour abandonner la commande au pro- cesseur de blocs de fonction (110) si l'une au moins des deux conditions suivantes est vérifiée: (1) un flux d'énergie est indiqué dans le registre de flux d'énergie (124) du processeur de bits (120:); et (2) le bloc de fonc- tions est un bloc qui doit étre exécuté par le processeur de blocs de fonction (120); et un modificateur de pointeur d'instruction pour attendre jusqu'à ce que le processeur de blocs de fonction (110) ait prélevé le pointeur d'instruc- tion dans le processeur de bits (120), et pour modifier en- suite le pointeur d'instruction pour qu'il désigne le CODE OPERATION suivant dans la mémoire de programme d'utilisa- teur (135), ce CODE OPERATION suivant étant maintenant dé- signé comme l'ordre courant. 2. Contrôleur logique programmable selon la re- vendication 1. caractérisé en ce qu'il comprend des moyens destinés a faire en sorte que le processeur de blocs de fonction (110) traite l'ordre courant lorsque les moyens de commande abandonnent la commande au processeur de blocs de fonction (110). 3. Contrôleur logique programmable selon la re- vendication 2, caractérisé en ce qu'une ligne ATTENTE est connectée entre le processeur de bits (120) et le proces- seur de blocs de fonction (110), le processeur de blocs de fonction (110) est placé dans un mode d'attente lorsqu'un signal ATTENTE est activé sur la ligne ATTENTE, et le pro- cesseur de blocs de fonction (110) est placé dans un mode de fonctionnement lorsque le signal ATTENTE est désactivé sur la ligne ATTENTE. 4. Contrôleur logique programmable, caractérisé en ce qu'il comprend: un processeur de blocs de fonction (110) destiné à traiter des ordres de haut niveau; un pro- cesseur de bits (120), connecté au processeur de blocs de fonction (110), et destiné à traiter des ordres de bas ni- veau, ce processeur de bits (120) étant connecté à une mé- moire de programme d'utilisateur (135) qui contient un pro- gramme d'utilisateur comportant une séquence d'ordres qui comprend des CODES OPERATION et des OPERANDES associés, ce processeur de bits (120) comprenant un registre de flux d'énergie (124), et ce processeur de bits (120) contenant un compteur d'instructions (122) qui comporte un pointeur d'instruction qui désigne un CODE OPERATION d'ordre à trai- ter, se trouvant dans la mémoire de programme d'utilisateur (135); le processeur de bits (120) comprenant des moyens de décodage (126) destinés à décoder le CODE OPERATION d'un ordre dans la mémoire, cet ordre étant appelé l'ordre cou- rant; le processeur de bits (120) comprenant des moyens pour abandonner la commande au processeur de blocs de fonc- tion (110) pour traiter l'ordre courant, si l'une au moins des deux conditions suivantes est satisfaite pour cet ordre courant: 1) un flux d'énergie est indiqué dans le registre de flux d'énergie (124); 2) l'ordre courant est un bloc de fonction qui doit étre exécuté par le processeur de blocs de fonction (110); le processeur de bits (120) comprenant un modificateur de pointeur d'instruction pour attendre jusqu'à ce que le processeur de blocs de fonction (110) ait prélevé le pointeur d'instruction dans le processeur de bits (120), et pour modifier ensuite le pointeur d'instruc- tion pour désigner le CODE OPERATION suivant dans la mémoi- re de programme d'utilisateur (135);: et le processeur de bits (120) comprenant des moyens destinés à faire en sorte que le processeur de bits traite lui-même l'ordre courant si aucune des conditions 1 et 2 n'est satisfaite, le pro- cesseur de bits (120) faisant avancer dans ce cas le poin- teur d'instruction pour désigner le CODE OPERATION suivant dans la mémoire de programme (135). 5. Contrôleur logique programmable selon la re- vendication 4, caractérisé en ce que le modificateur de pointeur d'instruction comprend des moyens pour incrémenter le pointeur d'instruction de façon à désigner le CODE OPE- RATION valide suivant dans la mémoire de programme d'utili- sateur (135). 6. Contrôleur logique programmable selon la re- vendication 4, caractérisé en ce que le processeur de blocs de fonction (110) comprend des moyens pour exécuter le CODE OPERATION de l'ordre courant lorsque la commande est aban- donnée à ce processeur de blocs de fonction (110), l'exécu- tion du CODE OPERATION de l'ordre courant ayant lieu apres que le processeur de bits (120) a modifié le pointeur d'instruction. 7. Contrôleur logique programmable selon la re- vendication 6, caractérisé en ce que le processeur de blocs de fonction (110) comprend des moyens pour rendre la com- mande au processeur de bits (120) après que le processeur de blocs de fonction (110) a exécuté le CODE OPERATION de l'ordre courant. 8. Procédé prévu pour être mis en oeuvre dans un contrôleur logique programmable comprenant un processeur de blocs de fonction (110) destiné à traiter des ordres de haut niveau, et un processeur de bits (120) destiné à trai- ter des ordres de bas niveau, ce processeur de bits (120) étant connecté à une mémoire de programme d'utilisateur (135) contenant un programme d'utilisateur qui contient une séquence d'ordres comportant des CODES OPERATION et des OPERANDES associés, le processeur de bits (120) comprenant un registre de flux d'énergie (124), et le processeur de bits comprenant un compteur d'instruction qui contient un pointeur d'instruction désignant le CODE OPERATION de l'or- dre suivant à traiter, caractérisé en ce qu'il comprend les opérations suivantes: le processeur de bits (120) décode et identifie le CODE OPERATION d'un ordre dans la mémoire (135), cet ordre étant appelé l'ordre courant; le proces- seur de bits (120) abandonne la commande au processeur de blocs de fonction (110) pour traiter l'ordre courant si l'une au moins des conditions suivantes est satisfaite pour cet ordre courant: 1) un flux d'énergie est indiqué dans le registre de flux d'énergie (124); 2) l'ordre courant est un bloc de fonction qui doit être exécuté par le processeur de blocs de fonction (110); le processeur de bits (120) attend jusqu'à ce que le processeur de blocs de fonction (110) ait prélevé le pointeur d'instruction dans le proces- seur de bits (120), et il modifie ensuite le pointeur d'instruction pour désigner le CODE OPERATION suivant dans la mémoire de programme d'utilisateur (135); et le proces- seur de bits (120) traite par ailleurs l'ordre courant si aucune des conditions 1 et 2 n'est satisfaite. 9. Procédé selon la revendication 8, caractérisé en ce que l'opération d'attente et de modification comprend l'incrémentation du pointeur d'instruction pour qu'il dési- gne le CODE OPERATION valide suivant. 10. Procédé selon la revendication 8, caractérisé en ce que l'opération d'attente et de modification est sui- vie par l'opération dans laquelle le processeur de blocs de fonction (110) exécute le CODE OPERATION de l'ordre cou- rant. 11. Procédé selon la revendication 10. caractéri- sé en ce que l'opération d'exécution du CODE OPERATION est suivie par l'opération de retour de la commande au proces- seur de bits (120).