Brevet FR2636447A1 — publié le 19900316

La présente invention a trait à un procédé et à un dispositif de gestion d'une mémoire tampon, et plus particulierement d'une mémoire de type premier entré-premier. sorti pour le stockage de données à émettre sur un réseau de communication de type à diffusion. Un tel réseau de communication, utilisé notamment en milieu industriel (réseau dit de terrain) comprend conventionnellement une ligne de transmission de type bus, un ensemble de stations devant émettre et recevoir des données, telles que des valeurs de paramètres, et éventuellement des messages sur le reseau et un arbitre chargé de gérer l'accès au réseau par les diverses stations. Typiquement, les données échangées sur le réseau sont des valeurs de paramètres industriels, dit "objets", déterminés une fois pour toutes et bien identifiés. Cependant, certains types de réseaux offrent un mode non prioritaire de service "messagerie", autorisant sous certaines conditions la transmission de messages entre les diverses stations. Lorsque c'est le cas, chaque station créant des messages destinés aux autres stations doit stocker ces messages dans une mémoire tampon en attendant que l'arbitre, qui détermine des périodes de temps réservées à ce type de transmission, lui donne l'autorisation démettre un premier message, puis l'un après l'autre les messages suivants. La présente invention se propose d'optimiser la gestion d'une telle mémoire en minimisant le mouvement des données dans celle-ci et en réduisant au minimum le stockage d'informations autres que les messages proprements-dits.. A cet effet, la présente invention concerne tout d'abord un procédé de gestion d'une mémoire d'informations dans une station d'un réseau de transmission de données comportant une pluralité de stations reliées entre elles par un bus, ainsi qu'un arbitre de bus régissant les accès au bus par les diverses stations, réseau du type dans lequel l'émission par une station d'au moins un type d'information implique l'envoi à l'arbitre d'une requête correspondante et le stockage par ce dernier avec conservation de l'or- dre, de toutes les requêtes reçues de la station, puis ultérieurement l'envoi par 1 t arbitre vers la station considérée d'une autorisation d'émission de ce type d'information, caractérisé en ce qu'il comprend les étapes consistant à - stocker en succession dans une mémoire les informations à émettre, avec conservation de leur ordre; - à chaque fois qu'une requête est envoyée à l'arbitre, modifier la valeur d'un index d'accès à ladite mémoire; et - à chaque fois qu'une autorisation d'émission est reçue de l'arbitre, émettre l'information désignée par un pointeur indexé par ledit index. L'invention concerne également une station d'un réseau de transmission de données, pour la mise en oeuvre-du procédé défini ci-dessus, du type comprenant une unité centrale, une mémoire vive et une unité d'acquisition et/ou de restitution de données, caractérisée en ce qu'au moins une partie de la mémoire est une mémoire de messages dont l'accès par l'unité centrale est régi par un pointeur de position du premier message, un index du nombre de messages mémorisés, et un index du nombre de messages mémorisés pour lesquels une requête d'émission de message a été envoyée sur le réseau, le pointeur étant incrémenté ou décrémenté modulo N, N étant le nombre d'emplacements pour messages dans ladite partie de la mémoire. D'autres aspects, buts et avantages de la présente invention apparaitront mieux à la lecture de la description détaillée suivante d'une forme de réalisation préférée de celle-ci, donnée à titre d'exemple et faite en référence aux dessins annexés, sur lesquels - la figure 1 est un schéma-bloc d'un réseau dit de terrain auquel s'applique la présente invention, - la figure 2 est un schéma de l'organisation d'une mémoire d'une station du réseau de terrain de la figure 1, gérée conformément à la présente invention, et - la figure 3 est un ordinogramme du fonctionnement de l'unité de gestion de cette mémoire. En référence tout d'abord à la figure 1, un réseau de terrain pour communication en environnement industriel comprend un ensemble de stations 1, 1', t", ... telles que des automates à commande par microprocesseur, reliées entre elles via un réseau 2 du type à diffusion, constitué dans la pratique d'un simple bus. Un arbitre de bus 3 est charge de gérer les divers accès au bus pour échange de données, messages, etc., entre les diverses stations. On ne décrira pas ici en détail toute l'architecture d'un tel réseau. On se reportera pour plus de renseignements au document . La présente invention vise tout particulièrement, dans le cadre d'un tel réseau, l'échange de données de type "messages", fonction qui vient s'insérer à caté du fonctionnement normal et cyclique d'un tel réseau pour l'échange des valeurs d'objets entre les stations. Il est nécessaire de préciser tout d'abord que le roule premier de l'arbitre de bus 3 est de permettre l'échange cyclique et automatique de données ou valeurs d'objets sur le bus 2, par l'envoi en succession sur celui-ci d'une pluralit d'identif leurs préalablement et bi-univoquement associés à chacun des objets, sous forme de trames notées ID DAT (i), i étant I'identifieur. Chaque identifieur, reçu simultanément par la totalité des stations connectées, donne l'initiative à l'une d'entre elles d'émettre sur le bus une trame contenant la valeur v de l'objet considéré, notée RP DAT (v), -et à une ou plusieurs autres de se mettre à l'écoute du bus, pour recevoir la trame en question et ainsi achever l'échange de la valeur d'objet considérée. Lorsqu'une station, après avoir créé et stocké en mémoire un message destiné à être envoyé à une ou plusieurs autres stations, souhaite effectuer l'émission de celui-ci, alors elle émet une requête correspondante vers l'arbitre de bus 3. Etant donné cependant qu'une station n'a jamais l'initiative des échanges d'informations sur le bus, que ce soit des valeurs d'objets ou des messages, une telle requête est ici transmise à l'arbitre à l'occasion de la diffusion sur le bus par la station en question d'une trame RP DAT (v) contenant une valeur d'objet, en complétant cette trame avec un champ spécifique noté MSG, dédié à cette fonction. La trame envoyée est ainsi notée RP DAT MSG (v).L'un des rôles de l'arbitre est d'identifier les diverses requêtes de ce type reçues par les diverses stations, de stocker ces requêtes dans une pile (mémoire) de type premier entré-premier sorti, et, à chaque fenêtre temporelle réservée à la transmission de données de type "message", de diffuser sur le bus une trame d'identifieur de message, notée ID MSG (i), qui autorise la station émettrice considérée, comme suite a sa requête, à diffuser le message m sur le bus, sous la forme d'une trame RP MSG (m), à destination des stations concernées par le message, selon la base premier entré-premier sorti considérée. Comme on peut l'observer, chaque station comprend principalement une unité centrale 12, par exemple à microprocesseur, une mémoire vive 10 reliée à l'unité centrale par un bus d'adresses A et un bus de données D, ainsi qu'une unité d'interface 14 avec un processus industriel, et notamment avec des capteurs et des actionneurs appropriés. L'ensemble est piloté classiquement par un programme contenu dans une mémoire morte (non illustrée). La présente invention a pour objet, en association avec une organisation de réseau de ce type, un procédé et un dispositif de gestion de mémoire qui évitent une redondance avec la gestion des identifieurs de messages par arbitre de bus et simplifient le traitement des messages a émettre dans chaque station du réseau, avec en particulier un mouvement réduit au minimum des messages dans la mémoire et une taille de mémoire également minl- misée. En référence maintenant à la figure 2, on a représenté une partie 10a de la mémoire vive 10 d'une station du réseau, partie qui est destinée à stocker provisoirement des messages à émettre vers d'autres stations et qui comprend un ensemble de N emplacements ou "boItes" pour ces messages. La mémoire constitue une pile de type premier entré-premier sorti (FIFO), c'est-à-dire que c'est le message qui a été créé et stocké en premier dans la mémoire qui sera émis sur le réseau en premier lieu suite à une autorisation ID MSG (i) envoyée par l'arbitre, comme on va le voir en détail plus loin. Comme on l'a illustré, la mémoire est gérée en boucle, c'est-à-dire que les pointeurs, Sxi Ss ou non sélectionnant les divers emplacements de celle-ci sont comptés "modulo N'. En référence simultanément aux figures 2 et 3, on va maintenant décrire en détail les différentes étapes de la gestion des messages dans la station 1 ainsi que les étapes correspondantes de la gestion de la mémoire 10a stockant ces messages. On adoptera les conventions suivantes - N est le nombre total de bottes pour messages dans la mémoire; - n est un pointeur désignant le numéro de la première boite occupée dans la mémoire; avec OXn - x est un index désignant le nombre total de bottes occupées par des messages, avec O - y est un index désignant le nombre de messages contenus dans la mémoire et associes à des identifieurs, avec O Le pointeur n et tout pointeur indexé le faisant intervenir sont comptés "modulo N". Lorsque la station a créé un message destiné a être émis sur le réseau vers une ou plusieurs autres stations déterminées, le processeur vérifie tout d'abord que la mémoire 10a n'est pas pleine, c'est-à-dire que l'on a bien x On peut noter ici que le message simplement empilé comme décrit ci-dessus n'est pas associé, c'est-à-dire qu'il n'existe pas encore dans le réseau un identifieur i associé à ce message spécifique. Par ailleurs, dès qu'il existe dans la mémoire lOa au moins un message, créé récemment ou non, qui n'a pas encore fait l'objet d'une opération d'association telle qu'on va la détailler ci-dessous, c'est-d-dire dès que l'on a y L'étape suivante consiste alors à achever le processus d'association en transcrivant au sein de la station cette nouvelle situation, ce qui s'effectue en incrémentant d'une unité l'index y, soit y = y + 1. En d'autres termes, le nombre de messages contenus dans la mémoire et déjà associés est incrémenté d'une unité. Dans le cas où tous les messages sont déjà assocités, c'est-à-dire si y = x, alors une simple trame RP DAT (v) est démise. Ainsi l'on constate d'ores et déjà que la pile des identifieurs de messages située dans l'arbitre et la pile de messages située dans la station considérée coopè- rent à distance en vue de gérer l'émission des messages. Plus précisément, l'index y constitue une trace suffisante de l'association des messages les uns après les autres, c'est-a-dire de l'empilement des identifieurs de messages correspondants dans la pile de l'arbitre, ce qui permet avantageusement d'éviter de créer une association concrète de chaque message avec son identifieur dans une mémoire spéciale commune. Maintenant, lorsque, dans une fenêtre temporelle réservée à l'émission de messages, l'arbitre diffuse sur le bus l'identifieur de message ID MSG (i) qui se trouve en première position dans sa pile, la station détecte alors cet identifieur, qui constitue une autorisation d'émettre un message. Il vérifie alors qu'il existe bien dans la pile 10a au moins un message associé, c'est-d-dire que la condition y > O est remplie, et il émet alors sur le bus le message qui est situé en première position parmi tous les messages associés, c'est-à-dire le message qui occupe la boite n, sous la forme d'une trame de type général RP MSG(m). Dans le cas contraire, aucun message n'est émis. Après l'émission, deux cas de figure peuvent se présenter, selon que le transfert de message est du type acquittement (trame RP MSG ACK (m)) -ou non (trame RP MSG NOACK) (m)). Dans le premier cas, la station se place dans l'attente de l'acquittement correspondant crame RP ACK) en provenance de la ou des stations qui étaient destinataires du message, selon un processus classique qui ne sera pas décrit en détail ici. Une fois que le ou les acquittements correspondants ont été reçus, alors la station peut se débarrasser du message émis, clest-à-dire dépiler le message de la pile. Cette operation nécessite tout d'abord la vérification du fait qul- il existe dans la mémoire 10a au moins un message associé, c'est-à-dire y > O (comme pour l'émission). Dans ltaffirma- tive, l'unité centrale effectue simplement les opérations suivantes sur les index et pointeurs d'adressage x = x - 1, y = y - 1, et n = n + 1 (mod N). L'on comprend que cela revient à libérer le premier emplacement de la mémoire (anciennement boite n), et à diminuer d'une unité le nombre total de messages x et le nombre total de messages associés y. C'est donc la boite anciennement n + 1 qui devient la première boite contenant un message, et c'est ce dernier qui sera diffusé sur le bus pendant la prochaine fenêtre temporelle réservée à l'émission de messages. Dans le cas où la transmission du message s'effectue sans acquitement, le dépilement du message émis, comme décrit ci-dessus, s'effectue sans autre condition immédiatement après l'émission du message sur le bus. La figure 3 illustre par un ordinogramme les diverses étapes principales du procédé de gestion de mémoire tel que décrit ci-dessus. Elle doit être considérée comme faisant partie de la présente description. Il est à noter que cet ordinogramme ne constitue qu'un sous-programme du fonctionnement de la station, les interactions complètes avec le programme principal n'étant pas illustrées par souci de clarté. En outre, sur la figure 3, des opérations optionnelles ou mineures du point de vue de la présente invention ont été illustrées en tiretés. Le tableau I ci-dessous résume les aspects essentiels de la gestion de mémoire conformément à l'invention. TABLEAU I Action Condition Satisfaite ? Exécution Empilement x oui empiler le message dans la botte n + x puis faire x = x + 1 Association y oui associer le message occupant la boite n + y puis faire y=y+i Emission y > O non émission refusée oui émettre le message occupant la boite n Défilement y > O non dépilement refusé oui faire x = x y=y-i n = n + 1 (mod N) Il est bien entendu que chaque station d'un réseau de transmission de données du type considéré comportera les fonctionnalités telles que décrites ci-dessus. La présente invention trouve avantageusement application dans tout type de réseau à diffusion offrant un service de messagerie et dans lequel l'initiative de l'accès au réseau, que ce soit pour transmission de données ou de messages, est réservée au seul arbitre, la condition principale étant que l'arbitre conserve de son côté, dans une mémoire, une pile de type "premier entré-premier sorti" (FIFO) des différents identifieurs de messages reçus des stations, et conserve par conséquent de cette manière l'ordre dans lequel les requêtes d'émission de messages ont-été reçues des stations respectives du réseau, en restituant les autorisations correspondantes dans le même ordre Par ailleurs, grâce à ltemploi d'une mémoire gérée en boucle, les mouvements des informations de type message dans la mémoire sont minimisés. On évite également de recourir à une organisation de mémoire comportant des N boites pour messages associées a N boites pour les identifieurs correspondants. La capacité de la mémoire est donc également minimisée. Bien entendu, la présente invention n'est nullement limitée au mode de réalisation décrit ci-dessus et repréJen- té sur les dessins mais l'homme de l'art saura y apporter toute variante ou modification conforme à son esprit. REVENDICATIONS 1. Procédé de gestion d'une mémoire d'information dans une station d'un réseau de transmission de données comportant une pluralité de stations reliées entre elles par un bus, ainsi qu'un arbitre de bus régissant les accès au bus par les diverses stations, réseau du type dans lequel l'émission par une station d'au moins un type d'information implique l'envoi à l'arbitre d'une requête correspondante et le stockage par ce dernieravec conservation de l'ordre, de toutes les requêtes reçues de la station, puis ultérieu- rement l'envoi par l'arbitre vers la station considérée d'une autorisation d'émission de ce type d'information, caractérisé en ce qu'il comprend les étapes consistant à - stocker en succession dans une mémoire les informations à émettre, avec conservation de leur ordre;; - à chaque fois qu'une requête est envoyée a l'arbitre, modifier la valeur d'un index (y) d'accès à ladite mémoire; et - à chaque fois qu'une autorisation d'émission est reçue de l'arbitre, émettre l'information désignée par un pointeur (n + y) indexé par ledit index. 2. Procédé selon la revendication 1, caractérisé en ce qu'il comprend en outre l'étape consistant à effacer une information de ladite mémoire après qu'elle a été valablement émise. 3. Procédé selon l'une des revendications 1 et 2, ca ractérisé en ce que les informations sont mémorisées dans une mémoire de type "premier entré premier sorti" et en ce que ledit index (y) est modifié par incrémentation. 4. Procédé selon la revendication 3, caractérisé en ce que la mémoire est gérée en boucle. 5. Procédé selon la revendication 4, caractérisé en ce que, suite au stockage en mémoire d'une information, un index (x) représentatif du nombre d'informations dans la mémoire est incrémenté. 6. Procédé selon la revendication 5, caractérisé en ce que lorsqu'une information a été valablement émise sur le réseau, un pointeur (n) représentatif de la position de la première information dans la mémoire est incrémenté modulo N et lesdits index (x, y) sont décrémentés, pour ainsi effacer ladite information émise de ladite mémoire. 7. Procédé selon l'une des revendications précédentes, caractérisé en ce que le réseau est un réseau de terrain pour transmission cyclique et automatique de valeurs de paramètres (v) entre un ensemble d'automates industriels (1, 11 i"...), en ce que lesdites informations sont des messages (m), et en ce que lesdites requêtes d'émission de message sont incluses dans des trames (RP DAT MSG (v)) d'émission desdites valeurs de paramètres. 8. Station d'un réseau de transmission de données, pour la mise en oeuvre du procédé selon la revendication 1, au type comprenant une unité centrale (1 2), une mémoire vive (1o) et une unité d'acquisition et/ou de restitution de données (14), caractérisée en ce qu'au moins une partie (10a) de la mémoire est une mémoire de messages dont l'accès par l'unité centrale est régi par un pointeur (n) de position du premier message, un index (x) du nombre de messages mémorisés, et un index (y) du nombre de messages mémorisés pour lesquels une requête d'émission de message (RP DAT MSG (v)) a été envoyée sur le réseau, le pointeur étant incrémenté ou décrémenté modulo N, N étant le nombre d'emplacements pour messages dans ladite partie de la mémoire.