Brevet FR2748333A1 — publié le 19971107

PROCEDE POUR SELECTIONNER UN MODULE ELECTRONIQUE PARMI UNE PLURALITE DE MODULES PRESENTS DANS LE CHAMP D'INTERROGATION D'UN TERMINAL La présente invention concerne un procédé pour sélectionner un module électronique parmi une pluralité de modules présents dans le champ d'interrogation d'un terminal, afin d'établir une communication entre le terminal et le module sélectionné. Dans certaines réalisations, il arrive que plusieurs modules électroniques veulent dialoguer au même moment avec un terminal. C'est le cas notamment avec les étiquettes électroniques et les cartes à puce sans contact lorsque plusieurs de ces éléments se trouvent au même instant dans le champ d'interrogation d'un terminal. Une telle situation est représentée en figure 1, où l'on voit un terminal T en présence de plusieurs modules M1, M2, M3. Le terminal T est équipé d'une interface de communication IT lui permettant d'envoyer des messages aux modules et de recevoir des messages émis par ces derniers. Les modules M sont équipés d'interfaces de communication IM leur permettant d'envoyer des messages au terminal et de recevoir des messages du terminal. Le terminal doit établir une communication avec l'un des modules, sans préférence, afin de réaliser des opérations prévues par l'application, par exemple une transaction monétaire, une opération d'identification en vue de délivrer une autorisation de passage, une opération de péage ou tout simplement une identification des modules présents. Par ailleurs, cette communication, une fois établie, ne doit pas être perturbée par des messages venant d'autres modules. Dans le cas contraire, il y aurait collision de messages et cela se traduirait au niveau du terminal par la réception de signaux perturbés électriquement et de messages entachés d'erreur. En règle générale, le terminal ne connaît pas l'identité des modules qui sont présents dans son champ d'interrogation. Cela signifie qu'il n'est pas envisageable que le terminal envoie à tel module un message particulier qui permettrait de rendre actif ce module tout en maintenant les autres silencieux. Egalement, il n'est pas envisageable que l'initiative de la communication soit laissée aux modules, car les modules émettraient de façon désordonnée des demandes de communication qui entreraient en collision les unes avec les autres ou perturberaient une communication déjà établie avec un autre module. Ainsi, la solution généralement adoptée est que le terminal envoie aux modules un message d'interrogation générale, puis fasse le tri parmi les diverses réponses reçues jusqu'à ce qu'un module et un seul soit sélectionné. On connaît dans l'art antérieur une méthode de sélection basée sur un codage des messages permettant de détecter des collisions bit par bit. Par exemple, comme illustré par les figures 2A et 2B, le 1 logique est codé par un code à deux bits "10" et le 0 logique est codé par un code à deux bits "ou". Ainsi, si un bit à 1 d'un message émis par un module entre en collision avec un bit à O d'un message émis par un autre module, le terminal reçoit un code à deux bits "00", ou code C de collision, le O (mise à la masse) l'emportant sur le l (mise à un potentiel non nul). Pour comprendre la méthode de sélection de l'art antérieur, considérons maintenant à titre d'exemple le cas simple où, en réponse à un message d'interrogation générale, les trois modules de la figure l envoient simultanément au terminal les codes d'identification suivants Module 1/code 1 : O 1 o O Module 2/code 2 l l O o Module 3/code 3 l 0 l l Comme chaque bit d'un code est en collision avec au moins un bit de même rang d'un autre code, le résultat à la réception est le suivant CCCC Le terminal demande alors que les modules ayant envoyé un code d'identification dont le premier bit est à 1 envoient à nouveau ce code (le terminal pourrait aussi, de façon aléatoire, demander que seuls les codes dont le premier bit est à 0 soient renvoyés). Les codes suivants vont être envoyés par les modules concernés Code 2 : 1 1 0 0 Code 3 : 1 0 1 1 Le résultat de cette interrogation sélective à la réception est le suivant 1CCC, Comme il n'y a maintenant plus de collision sur le premier bit, le terminal va s'occuper de la collision sur le deuxième bit, par exemple en demandant que seuls les messages ayant le deuxième bit à 0 soient renvoyés. Au terme de cette deuxième interrogation sélective, le terminal reçoit le code 3 sans collision. Une fois ce code reçu, le terminal le renvoie vers l'ensemble des modules et le module M3 l'ayant émis se reconnaît et se trouve sélectionné. Cette méthode de sélection classique peut être appliquée à un grand nombre de modules mais présente trois inconvénients principaux. D'une part, le processus de sélection est assez lent et nécessite de nombreuses interrogations, chaque nouvelle interrogation permettant en moyenne de ne sélectionner que la moitié des modules sélectionnés à l'interrogation précédente. De plus, la probabilité d'une collision à la première interrogation ne dépend pas uniquement du nombre de modules effectivement présents dans le champ d'interrogation, mais aussi du nombre de bits que comprennent les codes d'identification des modules, choisi en fonction du nombre de modules susceptibles de se trouver simultanément dans le champ d'interrogation. D'autre part, cette méthode n'est pas simple à mettre en oeuvre puisqu'elle nécessite la détection des collisions bit par bit et l'utilisation d'un codage particulier des l et des 0, comme décrit plus haut. Enfin, cette méthode de sélection par détection des collisions bit par bit nécessite une parfaite synchronisation des différents modules, afin que les bits des codes d'identification émis par les divers modules soient parfaitement superposés. Ainsi, un objectif de la présente invention est de prévoir un procédé de sélection qui procure un résultat rapide. Un autre objectif de la présente invention est de prévoir un procédé de sélection qui soit simple à mettre en oeuvre. Encore un autre objectif de la présente invention est de prévoir un procédé de sélection qui puisse s'appliquer à des modules pilotés par des signaux d'horloge passablement synchronisés. Ces objectifs sont atteints grâce à un procédé pour sélectionner un module électronique parmi une pluralité d'au moins deux modules susceptibles d'émettre des messages simultanément, comprenant les étapes consistant à envoyer un message d'interrogation générale aux modules, et sélectionner le module ayant répondu le premier, les modules étant agencés pour, sur réception d'un message d'interrogation, déterminer un intervalle de temps aléatoire puis envoyer un message de réponse quand l'intervalle de temps est écoulé. Quand plusieurs modules ont répondu simultanément à un message d'interrogation, il est prévu les étapes consistant à envoyer un message d'interrogation complémentaire aux modules ayant répondu les premiers, et sélectionner le module ayant répondu le premier au message d'interrogation complémentaire. Selon un mode de réalisation, un module se place dans un état de veille quand il reçoit un message avant que l'intervalle de temps précédant l'envoi d'une réponse ne soit écoulé. Selon un mode de réalisation, un module se place également dans un état de veille quand il reçoit un message non identifiable ou non prévu après avoir répondu à un message d'interrogation. Selon un mode de réalisation, l'état de veille est caractérisé au moins par le fait qu'un module ne répond pas à un message d'interrogation complémentaire. Selon un mode de réalisation, les modules sont agencés pour envoyer, en réponse à un message d'interrogation, un message d'identification comportant des données d'identification. Selon un mode de réalisation, les messages de réponse envoyés par les modules comprennent un faible nombre de bits, une demande d'identification est envoyée aux modules immédiatement après la réception d'au moins un message de réponse, et les modules sont agencés pour envoyer, en réponse à la demande d'identification, un message d'identification comportant des données d'identification. Selon un mode de réalisation, un message d'interrogation complémentaire est envoyé quand il est reçu de la pluralité de modules un message d'identification perturbé par une collision. Avantageusement, les modules sont agencés pour émettre ledit message de réponse sur une échelle temporelle de réponse comprenant une pluralité de positions de réponse. Ces caractéristiques ainsi que d'autres de la présente invention seront exposées plus en détails dans la description suivante du procédé selon l'invention et d'un exemple de réalisation pratique d'un module selon l'invention, en relation avec les figures jointes parmi lesquelles - la figure 1 représente un terminal et plusieurs modules susceptibles de vouloir dialoguer avec le terminal, - les figures 2A à 2C représentent un codage de l'art antérieur permettant de détecter bit par bit des collisions de messages, - les figures 3 et 4 sont des chronogrammes représentant des signaux échangés entre un terminal et des modules conformément au procédé de l'invention, - la figure 5 est un chronogramme représentant des signaux échangés entre un terminal et des modules conformément à une variante du procédé de l'invention, - la figure 6 est un diagramme d'états logiques représentant le fonctionnement d'un module selon l'invention, et - les figures 7 et 8 sont des organigrammes représentant de façon plus détaillée des états du diagramme de la figure 6. Principe général de l'invention La figure 3 représente les divers messages échangés entre le terminal T et les trois modules Ml, M2, M3 de la figure 1, tel que le prévoit la présente invention. Ces messages ont pour but la sélection par le terminal d'un module au hasard parmi l'ensemble des modules présents. Dans un souci de simplicité, on se limitera dans la présente description à des exemples mettant en jeu trois modules seulement, comme on l'a déjà fait au préambule. Le terminal envoie tout d'abord un signal d'activation ACTIVALL, ou signal d'interrogation générale des modules. Selon l'invention, la réception du message ACTIVALL déclenche dans chaque module une étape de calcul ou de production d'une valeur aléatoire P, de préférence une valeur équiprobable, que l'on appellera par la suite position de réponse. La position de réponse P représente l'instant où chaque module envoie, sur une échelle temporelle de réponse RSP commune à tous les modules, une réponse au message d'interrogation générale. Sur l'échelle RSP représentée en figure 3 figurent les diverses positions de réponse PO, P1, P2, P3... susceptibles d'être calculées aléatoirement par les modules Ml à M3. L'échelle RSP court à compter de la fin du message ACTIVALL mais la première position PO présente, pour des raisons pratiques (temps d'élaboration par les modules de leurs positions de réponse respectives), un décalage temporel t par rapport à la fin du message ACTIVALL. Selon l'invention, le module ayant émis le premier une réponse au message ACTIVALL est réputé sélectionné. Dans l'exemple représenté, le module M3 est le premier à répondre et la réponse consiste ici dans l'envoi d'un message d'identification ID3 contenant des données d'identification propres au module, par exemple son numéro de série NS. Sur réception de ID3, le terminal envoi un message de confirmation de sélection SELECT-ID3. Le message SELECT-ID3 comprend les données d'identification NS comprises dans le message reçu ID3 de sorte que le module M3 peut savoir qu'il est sélectionné. La sélection étant faite, tout type de communication fonctionnelle classique peut ensuite se dérouler entre le module M3 et le terminal. Par ailleurs, on voit sur la figure 3 que les modules Ml et M2 ont élaboré aléatoirement des positions de réponse plus éloignées dans le temps, respectivement P2 et P3. Il est souhaitable que les modules Ml et M2 n'émettent pas leurs réponses IDl et ID2 lorsque les positions P2, respectivement P3 sont atteintes, afin de ne pas perturber la communication entre le terminal et le module M3. Ainsi, et sous réserve de variantes de réalisation qui seront évoquées plus loin, un module se place dans un état de veille ou état de désélection lorsqu'il reçoit un message quelconque pendant la période d'attente qui précède l'envoi de sa réponse ID. Dans l'exemple représenté, les modules Ml et M2 reçoivent le message SELECT-ID3 pendant la période d'attente et se désélectionnent d'eux-mêmes. D'autres manières de désélectionner les modules peuvent être prévues, par exemple l'envoi par le terminal, à la place du message SELECT-ID3, d'un message explicite de désélection de tous les modules sauf le module M3, du type DESELECT-EXCEPTID3. Bien entendu, il est possible, statistiquement, que deux modules aient élaborés la même position de réponse et que cette position de réponse commune soit la première de toutes les positions de réponse élaborées par les autres modules. Un tel cas est illustré par la figure 4, où les modules Ml et M3 après avoir reçu le message ACTIVALL (non représenté émettent simultanément leurs messages de réponse/identification IDl et ID3 sur la position P3, la position de réponse élaborée par le module M2 étant P5. Le terminal reçoit un message perturbé par une collision et émet un message complémentaire ACTIV. A la différence du message ACTIVALL, le message ACTIV ne s'adresse qu'aux modules ayant déjà envoyé leur réponse à l'interrogation générale et provoque la désélection (état de veille) des modules encore en attente d'envoi de la réponse R. Ainsi, sur la figure 4, le message ACTIV a pour effet de désélectionner le module M2, qui n'a pas encore répondu. Par contre, les modules Ml et M3 élaborent de nouvelles positions de réponse aléatoires (respectivement P2' et P4' dans l'exemple représenté) sur une nouvelle échelle de réponse RSP' qui court à compter de la réception du message d'interrogation complémentaire ACTIV. Au terme de ce nouveau cycle de sélection, la probabilité est encore plus élevée qu'un seul module soit sélectionné. Sur l'exemple de la figure 4, le module M3 répond le premier en position P2' et reçoit la confirmation de sélection SELECT-ID3. On comprendra maintenant que l'état de veille (ou état de désélection) doit au moins être caractérisé par le fait qu'un module ne répond pas à un message d'interrogation complémentaire ACTIV. Cela permet d'éliminer les modules n'ayant pas répondu les premiers à l'interrogation générale ACTIVALL ou complémentaire ACTIV précédente. Avec le procédé de l'invention, la probabilité de non collision Pnc dès la première interrogation (ou probabilité de sélection d'un seul module à la première interrogation) est donnée par la relation suivante m étant le nombre de modules et Np le nombre de positions que comprend l'échelle de réponse RSP. Si l'on cherche une grande rapidité de sélection, il est préférable que l'échelle de réponse ne soit pas trop étendue, les positions de réponse du fait de leur caractère aléatoire pouvant être assez éloignées sur l'échelle de réponse et un temps non négligeable pouvant être perdu pendant l'attente de la première réponse. Ainsi, il peut être avantageux de prévoir une échelle de réponse comportant un faible nombre Np de positions de réponse. Le choix de Np doit toutefois faire l'objet d'un compromis, en application de la relation (1) qui montre que la probabilité Pnc de non collision à la première interrogation est plus élevée, pour un nombre m de modules donné, quand Np est grand. Par exemple, une échelle de réponse à 16 positions (Np = 16) permet de sélectionner dès la première interrogation un module parmi six modules (m = 6) avec une probabilité très élevée de l'ordre de 0,822. Par ailleurs, l'étendue de l'échelle de réponse et la rapidité du processus de sélection dépendent également de l'intervalle de temps séparant deux positions de réponse successives Pi, Pi+l. Dans l'exemple qui vient d'être décrit, l'intervalle de temps entre deux positions successives n'est pas négligeable et doit au moins permettre à un module d'émettre un message complet de réponse/identification ID si l'on veut éviter des collisions partielles entre messages ID. Ainsi, une autre idée de la présente invention est de séparer la fonction "réponse" de la fonction "identification" de manière à comprimer l'échelle de réponse. Ce perfectionnement du principe général de l'invention va maintenant être décrit. Perfectionnement du principe genéral : compression temporelle de l'échelle de réponse La figure 5 illustre un tel perfectionnement. En réponse à un message d'interrogation générale ACTIVALL, les modules Ml à M3 émettent, sur la position de réponse qu'ils ont élaboré, un message de réponse R ne comportant pas de données d'identification. Le message R peut être très court et ne comporter qu'un faible nombre de bits, par exemple de un à trois bits selon la technique de transmission utilisée. L'échelle de réponse est ainsi comprimée au maximum comme on le voit sur la figure 5, l'intervalle de temps séparant deux positions successives Pi, Pi+l étant égal au temps d'émission de la réponse R. Le ou les bits de réponse R peuvent être les mêmes pour tous les modules. Le terminal ne cherche pas à détecter les collisions sur les réponses R (il n'y en aura pas de toutes façons si le code de réponse R est identique pour tous les modules) et émet un message de demande d'identification AFI dès que la première réponse R est reçue. Sur réception du message AFI, les modules ayant déja répondu émettent immédiatement leurs messages d'identification ID. Si deux modules ont répondu simultanément au message ACTIVALL, la collision est détectée par le terminal au moment de la réception des messages d'identification ID. La figure 5 illustre ce dernier cas. Les modules M1 et M3 qui ont la même position de réponse P2 répondent simultanément au message AFI en envoyant les messages d'identification ID1 et ID3. Le terminal reçoit un message perturbé par la collision de IDl et ID3 et envoie un message d'interrogation complémentaire ACTIV. Les modules M1 et M3 élaborent de nouvelles positions de réponse sur une nouvelle échelle de réponse RSP' qui court à compter de la fin du message ACTIV. Selon ce mode réalisation de l'invention, il peut arriver qu'un module envoie une réponse R au moment où le message AFI est émis par le terminal. Par exemple, sur la figure 5, deuxième interrogation, le module M1 répond en P'4 le module M3 en P'5 et le terminal émet le message AFI en P'5. Le module M3 doit donc être désélectionné (état de veille), mais AFI est intervenu trop tard pour que M3 se désélectionne avant l'émission de la réponse R. Ainsi, ici, et sous réserve de variantes de réalisation qui seront évoquées plus loin, un module doit être placé en état de veille au moins dans les cas suivants 1) quand le module reçoit un message ou un commencement de message avant d'avoir émis sa réponse (cas du module M2, figure 5, première interrogation, qui reçoit les premiers bits de AFI avant d'émettre sa réponse), 2) selon que le module est capable ou non de recevoir un message alors qu'il est en train d'émettre a) quand le module reçoit un message non compréhensible après avoir émis sa réponse (cas du module M3, figure 5, deuxième interrogation, dans l'hypothèse où le module M3 n'est pas capable de recevoir les premier bits de AFI pendant qu'il émet sa réponse R, le message AFI étant alors reçu de façon incomplète et incompréhensible), b) quand le module reçoit un message non prévu après ou pendant qu'il émet sa réponse (cas du module M3, figure 5, deuxième interrogation, dans l'hypothèse où le module M5 peut recevoir les premiers bits du message AFI pendant qu'il émet sa réponse R, mais constate que AFI ne devrait pas être reçu à cet instant) 3) quand le module reçoit un message non prévu après avoir émis sa réponse. Exemple de mise en oeuvre pratique du procédé de l'invention La figure 6 est un diagramme d'états logiques représentant à titre d'exemple et de façon simplifiée le fonctionnement d'un module selon l'invention, conformément au mode de réalisation du procédé de l'invention illustré par la figure 5. On distingue sept états Etat OFF (désactivé) : le module est désactivé et ne peut répondre à aucun message. En pratique, cet état peut correspondre à un état non alimenté (power off). Par exemple, lorsque le module est un microcircuit d'une carte à puce sans contact alimentée par un champ magnétique alternatif émis par le terminal, le module est dans l'état OFF lorsqu'il est en dehors du champ d'alimentation émis par le terminal (généralement de l'ordre de la dizaine de centimètres). Etat IDL (veille) : le module est alimenté mais se trouve en état de veille et ne peut sortir de cet état que par la réception d'un message d'activation/interrogation générale ACTIVALL. Le mode veille est par exemple celui dans lequel se trouve un microcircuit de carte à puce en présence d'un champ d'alimentation inductif émis par le terminal, le microcircuit étant alimenté mais pas encore actif. Etat ACT (actif) : le module passe dans cet état lorsqu'il reçoit un message ACTIVALL. Les opérations que le module doit réaliser dans l'état ACT sont détaillées sur la figure 7 - étape 10 : le module calcule ou élabore une position de réponse P et attend le moment où la réponse R doit être émise. Pendant cette attente, le module reste à l'écoute des messages pouvant être envoyés par le terminal. Si le module reçoit un message quelconque MESS alors que la réponse R n'est pas encore envoyée, le module se désélectionne et revient à l'état IDL. Comme représenté en figure 7, on peut toutefois prévoir que le module, avant de se désélectionner, vérifie au cours d'une étape de test 11 que le message MESS reçu n'est pas un message de sélection directe DIRSELECT-ID comportant des données d'identification NS qui sont les siennes. Le cas échéant, le module passe directement dans un état SEL (sélectionné) qui sera décrit plus loin. étape 12 : la position de réponse P est atteinte et le module envoie la réponse R. étape 13 : le module attend un message du terminal. étapes de test 14 et 15 : le module a reçu un message et cherche à reconnaître ce message. Si le message reçu est une demande d'identification AFI, le module passe dans un état WFS décrit ci-après. Si le message reçu est une sélection directe DIRSELECT-ID qui le désigne, le module passe dans l'état SEL. Sinon, le message est un message inconnu ou qui n'est pas prévu à cette étape de fonctionnement, que l'on désignera UNKMESS, et le module se désélectionne en revenant à l'état IDL. Etat WFS (attente de sélection) : le module passe dans cet état lorsqu'il reçoit le message AFI alors qu'il est à l'étape 13 de l'état ACT. Le module réalise les opérations suivantes, représentées sur la figure 8 étape 20 : le module envoi un message d'identification ID. Comme on la déjà indiqué, le message ID comprend des données propres au module, comme son numéro de série. étape 21 : le module attend un message. étape de test 22 et 23 le module a reçu un message et cherche à le reconnaître. Si le message reçu est un message de sélection SELECT-ID le désignant, le module passe dans l'état SEL déjà évoqué, décrit ciaprès. Si le message est une interrogation complémentaire ACTIV (le terminal a perçu une collision) le module revient à l'état ACT pour élaborer une nouvelle position de réponse P. Enfin, si le message n'est pas identifiable ou n'est pas prévu à ce stade du fonctionnement (message UNKMESS), le module se désélectionne en revenant à l'état IDL. Etat SEL (sélectionné) : lorsque le module est dans l'état sélectionné, on peut considérer que la communication est établie avec le terminal, les autres modules restant silencieux. Le terminal envoie au module une première commande fonctionnelle COM qui fait passer le module dans un état d'exécution EXEC. Etat EXEC (exécution) : cet état est en lui-même classique. Le module exécute des commandes fonctionnelles COM pour lesquelles il a été conçu et qui peuvent être de tout type (transaction, authentification, péage, etc.) Etat HALT (blocage) : à tout instant à compter du moment où les états SEL ou EXEC sont atteints, le terminal peut bloquer le module en lui envoyant le message HALT, par exemple lorsque la communication est terminée. L'état de blocage HALT est un état d'inhibition dans lequel le module ne répond plus à des interrogations générales ACTIVALL ou complémentaires ACTIV. Ainsi, le module ne sera pas à nouveau mis en jeu lors de la sélection suivante d'un module, au bénéfice des modules n'ayant pas encore communiqué avec le terminal. Pour que le module revienne dans l'état IDL, il faut tout d'abord qu'il passe par l'état OFF c'est-à-dire qu'il soit désactivé. En pratique, cela peut par exemple signifier que l'utilisateur d'une carte à puce sans contact qui a déjà réalisé une transaction doit, s'il veut réaliser une nouvelle transaction, éloigner sa carte du champ magnétique d'alimentation et la présenter à nouveau. Il va de soi que le procédé de l'invention est susceptible de nombreuses variantes et modes de réalisation, notamment les variantes suivantes - le terminal pourrait forcer un module à quitter l'état HALT, par exemple en lui envoyant un message de sélection directe DIRSELECT-ID comme illustré en figure 6, ou, dans le cas d'une alimentation par champ magnétique, en éteignant un bref instant le champ d'alimentation, - un module dans l'état ACT recevant un message ACTIV ou ACTIVALL pendant 1attente qui précède l'envoi de sa réponse R pourrait rester dans l'état ACT au lieu de revenir à l'état de veille IDL, - un module en état de veille IDL pourrait basculer dans l'état de sélection SEL sur réception d'un message de sélection directe DIRSELECT-ID le désignant, - un message d'interrogation générale ACTIVALL ou complémentaire ACTIV pourrait renvoyer dans l'état ACT un module se trouvant dans l'état WFS, SEL ou EXEC. Enfin, on peut parfaire l'opération de sélection en prévoyant qu'un module ayant reçu une confirmation de sélection SELECT-ID envoie au terminal un message (par exemple un code de réponse R) lui signifiant qu'il est effectivement sélectionné. Aspects Technologiques Comme cela apparaîtra clairement à l'homme de l'art, la présente invention peut être mise en oeuvre aussi bien au moyen de circuits à microprocesseur qu'au moyen de circuits à logique câblée. En effet, la gestion des états logiques des modules et des transitions entre ces états peut être assurée aussi bien par un logiciel que par un séquenceur câblé. Dans le premier cas, les divers états logiques sont matérialisés par des sousprogrammes et dans le deuxième cas par des bits d'état (ou flags) disposés dans un registre particulier et conditionnant le fonctionnement du séquenceur câblé. Détermination par les modules de la position de réponse Pour déterminer une position de réponse, un module doit tout d'abord élaborer un nombre aléatoire ALINT, la position de réponse P étant égale au nombre aléatoire ALINT multiplié par une base de temps commune à tous les modules. En pratique, le déclenchement du message de réponse R ou de réponse/identification ID peut être obtenu par une temporisation ou tout simplement au moyen d'un circuit décompteur chargé à la valeur ALINT et commandé par un signal d'horloge H commun à tous les modules (voir toutefois plus loin le paragraphe "synchronisation des modules") Pour générer le nombre ALINT, les modules doivent en principe être équipés d'un générateur aléatoire ou pseudo aléatoire. Toutefois, la présente invention prévoit une solution avantageuse applicable aux modules équipés d'une fonction d'authentification permettant de lutter contre la fraude. Rappelons ici qu'une fonction d'authentification, ou fonction cryptographique, permet de transformer un mot binaire ou code d'entrée CE en un autre mot binaire ou code d'authentification CA de la forme (2) CA = FKs (CE) FKS représentant la fonction d'authentification et Ks la clé secrète de cette fonction. De façon classique, une procédure d'authentification consiste dans l'envoi par le terminal d'un code d'entrée CE. Sur réception du code CE, le module élabore le code d'authentification CA et l'envoie au terminal. Le terminal, qui dispose de la fonction FKS, vérifie l'exactitude du code CA avant d'exécuter toute opération demandée par le module. Une telle procédure d'authentification, si elle est prévue, se déroule au stade de l'état EXEC, c'est-à-dire lorsque le module est sélectionné. Ici, une idée de l'invention est d'utiliser la fonction d'authentification des modules pour générer le nombre aléatoire ALINT. L'avantage est qu'il n'est plus nécessaire de prévoir, dans chaque module, un générateur de nombre aléatoire. Plus particulièrement, selon l'invention, le terminal incorpore dans le message d'activation générale ACTIVALL ou particulière ACTIV un code aléatoire ALEXT qu'il a lui-même élaboré. Chaque module transforme le code aléatoire ALEXT en un autre code aléatoire ALINT au moyen de la fonction d'authentification dont il est équipé ALINT = FKs (ALEXT) Le code aléatoire ALINT ou une fraction de ce code est utilisée pour déterminer la position de réponse. Bien entendu, cette solution suppose que chaque module possède une clé secrète Ks particulière, ce qui est généralement le cas en pratique, sans quoi toutes les positions de réponse calculées à partir du code ALEXT seraient les mêmes. Synchronisation des modules Dans certaines réalisations, les modules sont environnés par un champ magnétique alternatif dont la fréquence d'oscillation donne le signal d'horloge, et se trouvent ainsi naturellement synchronisés. Dans d'autres réalisations, les modules possèdent chacun un oscillateur qui génère le signal d'horloge et ne peuvent être parfaitement synchronisés en raison des tolérances de fonctionnement des oscillateurs. Toutefois, un avantage inhérent au procédé de la présente invention est d'offrir une tolérance de synchronisation lui permettant d'être appliqué même quand les modules ne sont que passablement synchronisés. En effet, en pratique, la fréquence d'horloge est généralement plus élevée que la fréquence d'émission des bits constituant les messages, un bit pouvant représenter quelques dizaines voire quelques centaines de coups d'horloge, de sorte qu'un certain décalage d'horloge entre les modules peut être toléré. D'autre part, chaque échelle de réponse RSP, RSP', ... court à compter de la fin du dernier message ACTIVALL ou ACTIV reçu, de sorte que les modules sont automatiquement recalés à chaque nouvelle échelle et que des dérives d'horloge ne peuvent conduire à des défauts de synchronisation importants. Ainsi, il suffira que les oscillateurs des modules soient calés sensiblement sur la même fréquence, même si les tolérances de fonctionnement des oscillateurs entraînent des décalages d'horloge de l'ordre de quelques pulsations. Utilité de l'échelle de réponse Dans ce qui précède, tous les signaux émis ou reçus pendant les phases de sélection sont synchronisés par une échelle de réponse commune. Cette méthode de synchronisation offre l'avantage d'une grande simplicité de mise en oeuvre du procédé de l'invention en évitant certains cas de collisions qui seraient assez complexes à traiter. Toutefois, il apparaîtra clairement à l'homme de l'art que le procédé de sélection selon l'invention pourrait être mis en oeuvre sans une telle échelle de réponse, les divers modules pouvant alors émettre les réponses R de façon purement aléatoire. Détection des collisions par le terminal Il ressort de ce qui précède que le terminal doit pouvoir détecter des collisions de messages émis par les modules, en particulier des collisions entre messages d'identification ID. Toutefois, à la différence du procédé de l'art antérieur, il n'est pas nécessaire que la détection de collisions soit réalisée bit par bit. Une détection globale des collisions est suffisante, par exemple au moyen d'une méthode classique de signature des messages ou encore par une détection des anomalies apparaissant dans les tensions électriques représentant les niveaux logiques des bits constituant les messages reçus par le terminal. Domaines d'application La présente invention est susceptible de s'appliquer à tout système mettant en jeu une liaison multipoint entre un terminal et des modules périphériques, que cette liaison soit filaire ou sans contact, par exemple du type infrarouge, hyperfréquence, inductive, radio, etc. Le procédé de l'invention convient particulièrement bien aux applications mettant en jeu un nombre limité de modules, de l'ordre de quelques unités à quelques dizaines d'éléments, notamment aux lecteurs de cartes à puces sans contact et aux terminaux de détection d' étiquettes électroniques. REVENDICATIONS 1. Procédé pour sélectionner un module électronique (M) parmi une pluralité d'au moins deux modules (M1, M2, M3) susceptibles d'émettre des messages simultanément, caractérisé en ce qu'il comprend les étapes consistant a: - envoyer un message d'interrogation générale (ACTIVALL) auxdits modules, et - sélectionner (AFI, SELECT-ID) le module ayant répondu le premier, les modules étant agencés pour, sur réception d'un message d'interrogation (ACVTIVALL, ACTIV), déterminer un intervalle de temps aléatoire (P) puis envoyer un message de réponse (ID, R) quand ledit intervalle de temps (P) est écoulé. 2. Procédé selon la revendication 1 dans lequel, quand plusieurs modules ont répondu simultanément à un message d'interrogation (ACTIVALL, ACTIV), il est prévu les étapes consistant à - envoyer un message d'interrogation complémentaire (ACTIV) aux modules ayant répondu les premiers, - sélectionner (AFI, SELECT-ID) le module ayant répondu le premier au message d'interrogation complémentaire. 3. Procédé selon l'une des revendications précédentes, dans lequel un module se place dans un état de veille (IDL) quand il reçoit un message (MESS) avant que ledit intervalle de temps (P) précédant l'envoi d'une réponse (ID, R) ne soit écoulé. 4. Procédé selon la revendication 3, dans lequel un module se place également dans l'état de veille quand il reçoit un message non identifiable ou non prévu (UNKNWN) après avoir répondu à un message d'interrogation (ACTIVALL, ACTIV). 5. Procédé selon l'une des revendications 3 et 4, dans lequel l'état de veille est caractérisé au moins par le fait qu'un module ne répond pas à un message d'interrogation complémentaire (ACTIV). 6. Procédé selon l'une des revendications 1 à 5, dans lequel un message d'interrogation complémentaire (ACTIV) est envoyé quand il est reçu de ladite pluralité de modules un message de réponse (ID) perturbé par une collision. 7. Procédé selon l'une des revendications 1 à 6, dans lequel les modules sont agencés pour envoyer, en réponse à un message d'interrogation (ACTIV, ACTIVALL), un message d'identification (ID) comportant des données d'identification (NS). 8. Procédé selon l'une des revendications 1 à 6, dans lequel - les messages de réponse (R) envoyés par les modules comprennent un faible nombre de bits, - une demande d'identification (AFI) est envoyée aux modules immédiatement après la réception d'au moins un message de réponse (R), - les modules sont agencés pour envoyer, en réponse à ladite demande d'identification (AFI), un message d'identification (ID) comportant des données d'identification (NS). 9. Procédé selon l'une des revendications 7 et 8, dans lequel un message d'interrogation complémentaire (ACTIV) est envoyé quand il est reçu de la pluralité de modules un message d'identification (ID) perturbé par une collision. 10. Procédé selon l'une des revendications précédentes, comprenant une étape d'envoi au module sélectionné d'un message de confirmation de sélection (SELECT-ID) comportant des données d'identification (NS) du module. 11. Procédé selon l'une des revendications précédentes, dans lequel un module sélectionné est placé dans un état de blocage (HALT) après avoir été utilisé. 12. Procédé selon l'une des revendications précédentes, dans lequel les modules sont agencés pour émettre ledit message de réponse (ID, R) sur une échelle temporelle de réponse (RSP) comprenant une pluralité (Np) de positions de réponse (PO, P1, P2...). 13. Procédé selon la revendication 12, dans lequel la durée d'un message de réponse (ID, R) est au maximum égale à l'intervalle de temps séparant deux positions de réponse successives (Pi, Pu+1) 14. Procédé selon l'une des revendications 12 et 13, dans lequel ladite position de réponse (P) est élaborée par les modules à partir d'un code aléatoire (ALEXT) inclus dans le message d'interrogation (ACTIVALL, ACTIV). 15. Procédé selon la revendication 14, dans lequel la position de réponse (P) est élaborée par les modules au moyen d'une fonction d'authentification (FKs) 16. Procédé de communication entre un terminal et un module électronique caractérisé en ce que, avant de communiquer avec le module, le terminal sélectionne le module au moyen du procédé selon l'une des revendications précédentes. 17. Module électronique, caractérisé en ce qu'il comprend des moyens pour, sur réception d'un message d'interrogation (ACTIV, ACTIVALL) - déterminer un intervalle de temps aléatoire (P) puis envoyer un message de réponse quand ledit intervalle de temps (P) est écoulé, - se placer dans un état de veille (IDL) quand un message (MESS) est reçu avant que ledit intervalle de temps (P) ne soit écoulé. 18. Module électronique selon la revendication 17, comprenant en outre des moyens pour se placer dans ledit état de veille (IDL) quand un message non identifiable ou non prévu (UNKNWN) est reçu après avoir répondu à un message d'interrogation (ACTIVALL, ACTIV). 19. Terminal électronique, caractérisé en ce qu'il comprend des moyens pour - envoyer un message d'interrogation générale (ACTIVALL, ACTIV) et attendre un message de réponse (ID, R), - détecter une éventuelle collision sur un message (ID) reçu, - si une collision est détectée, envoyer un message d'interrogation complémentaire (ACTIV) et attendre un nouveau message de réponse (ID, R), - si une collision n'est pas détectée, envoyer un message de confirmation de sélection (SELECT-ID) comportant des données d'identification (NS) comprises dans un message d'identification (ID) reçu. 20. Terminal selon la revendication 19, comprenant des moyens pour, sur réception d'un message de réponse (R), envoyer une demande d'identification (AFI). 21. Terminal selon l'une des revendications 19 et 20, comprenant des moyens pour inclure un code aléatoire (ALEXT) dans un message d'interrogation (ACTIVALL, ACTIV).