Des lecteurs de transpondeurs commandés par ordinateur "Deuxième partie : Le logiciel"

Cet appareil permet de contrôler avec un programme simple, exécutable sous Windows, jusqu’à 16 lecteurs de transpondeurs passifs, de créer la liste des personnes habilitées et d’attribuer à chacune la possibilité d’effectuer des actions locales comme l’activation d’un ou plusieurs relais en mode impulsionnel ou bistable. Nous avons, dans la première partie, monté les platines et nous les avons interconnectées et interfacées avec le PC, dans cette seconde partie nous allons apprendre à installer et à nous servir du logiciel de gestion.


Dans la première partie nous avons analysé et construit ce ou ces lecteurs de transpondeurs et l’interface ce communication : vous vous souvenez que nous avions ensuite fait allusion au logiciel de gestion, eh bien nous le décrirons et nous apprendrons à nous en servir dans la présente seconde partie.
Mais auparavant, revoyons quelques concepts de base du système : la principale caractéristique du montage est qu’il ne se compose pas d’un seul lecteur de transpondeurs, mais qu’il peut en comporter jusqu’à 16, afin de contrôler plusieurs points d’accès. Un PC fait partie du système (et il permet de faire tourner le logiciel de gestion, bien sûr), mais aussi, évidemment, les différents lecteurs et l’interface de communication, se chargeant de les relier à l’ordinateur. Chaque lecteur de transpondeurs comporte 2 relais pouvant être reliés à divers dispositifs (par exemple, une serrure électrique, un contrôle d’accès, etc.) dont l’activation/désactivation est commandée par voie logicielle. La connexion interface de communication/ordinateur se fait par une liaison sérielle RS232, alors que celles entre les lecteurs de transpondeurs et cette interface sont constituées d’un bus divisé au format RS485.
La logique de fonctionnement est la suivante : quand un badge à transpondeur passe devant un lecteur, le code d’identification est lu puis transmis, par l’intermédiaire du bus divisé, à l’interface de communication. Cette dernière convertit les niveaux RS485 en RS232 et ensuite passe les données au PC. Le logiciel recevant le code le compare à ceux mémorisés et éventuellement commande dans le lecteur concerné l’activation ou la désactivation de l’un ou des deux relais. La gestion de la communication se fait en “polling” (décision confiée à l’ordinateur) : le PC interroge séquentiellement les divers lecteurs de transpondeurs et éventuellement commande l’activation/désactivation du/des relais. Nous vous rappelons que les lecteurs peuvent travailler en deux modes, paramétrables par le cavalier J1 : J1 fermé, le fonctionnement est autonome et le lecteur envoie le code lu sans attendre que l’ordinateur l’interroge, J1 ouvert, le lecteur mémorise dans un “buffer” (tampon) interne les codes lus et les transmet au PC quand celui-ci les réclame. On comprend que le premier mode peut être utilisé pour exécuter un test de fonctionnement du lecteur ou si peu de lecteurs sont reliés au bus. Si en revanche on souhaite connecter plusieurs lecteurs sur la ligne, il est nécessaire de choisir le second mode et de gérer la communication en “polling”, afin d’éviter les collisions.
Passons maintenant à l’analyse du logiciel. Elle se fera en deux parties : dans la première nous nous occuperons du protocole de communication utilisé entre l’ordinateur et les lecteurs de transpondeurs et dans la seconde nous prendrons un exemple de programme (écrit en Delphi) lequel, mettant à profit le protocole de communication, sera en mesure de gérer les divers lecteurs de transpondeurs et les différents points d’accès.

Figure 1 : Le réseau des lecteurs de transpondeurs reliés à l’ordinateur.

Figure 2 : Protocole de communication.
Le protocole de communication définit les règles d’envoi des requêtes, des paramètres et des commandes de l’ordinateur vers les lecteurs de transpondeurs, il définit en outre le mode de réponse des lecteurs aux interrogations et commandes. Disons tout d’abord que chaque paquet envoyé par le PC commence par les caractères ASCII “*#”, utilisés comme symboles de synchronisation. Toutes les réponses transmises par les lecteurs commencent en revanche par les caractères “ST”.
Ensuite deux caractères sont présents : ils sont utilisés pour adresser l’un parmi les 16 lecteurs possibles reliés au bus RS485. Les deux caractères indiquent respectivement les dizaines et les unités du code d’identification : par exemple, les caractères “00” indiquent le premier lecteur, les caractères “04” le lecteur ayant l’adresse 4, enfin “15” le dernier lecteur, soit le numéro 15. Il faut noter que l’identification sert pour les communications effectuées à partir du PC et pour les réponses émises par les lecteurs.
Après les symboles d’adressage, on trouve des informations complémentaires identifiant le type de commande ou réponse (voir figure 2 pour plus de détails et une liste complète).
Enfin, le paquet se termine par les caractères ASCII 90h s’il s’agit d’un paquet envoyé par le PC. Si en revanche l’émission provient des lecteurs, le paquet se termine par les caractères “EN”.


Pour exécuter la communication entre le PC et les différents lecteurs de transpondeurs on utilise un protocole : il est constitué des commandes envoyées par l’ordinateur et des réponses envoyées par les lecteurs de transpondeurs. Nous avons déjà vu que les commandes envoyées par le PC commencent toutes par les symboles “*#”, alors que les réponses des lecteurs commencent toutes par “ST”.
Ensuite se trouvent deux caractères identifiant le lecteur de transpondeurs (indiquées par “d u” représentant les dizaines et les unités
de l’adresse du lecteur). Puis sont transmis certains caractères identifiant le type de commande ou de réponse, enfin suivent les caractères de fin de paquet, 90h pour les paquets envoyés par l’ordinateur et “EN” pour les réponses envoyées par les lecteurs.
Voyons à présent en détail quelles sont les différentes commandes et réponses qu’il est possible de transmettre et comment elles sont identifiées. La première commande que le PC peut transmettre est l’interrogation en “polling” (l’initiative est à l’ordinateur) : elle est identifiée par les caractères “01”. Le paquet envoyé est donc : *# d u 01 90, où 01 indique justement l’interrogation.
Le lecteur peut alors répondre par le paquet : ST d u 01 EN, pour indiquer qu’il n’a pas de codes de transpondeurs mémorisés à envoyer (les caractères 01 indiquent justement qu’aucune donnée n’est présente). Si en revanche ces informations sont présentes, le transpondeur répond par le paquet : ST d u 02 <10 byte, identifiant le code du transpondeur lu > EN, où les caractères 02 identifient l’envoi du code lu.
Les codes des transpondeurs sont transmis en utilisant 10 caractères (afin d’éviter tout malentendu, précisons que les caractères “<” et “>” ne sont pas transmis dans le paquet, ils ont été inséré pour une raison purement graphique).
Les opérations que le PC peut demander au lecteur d’exécuter sont l’activation ou le changement d’état des relais : le paquet envoyé par l’ordinateur se compose de : *# d u 02 01 90, où 02 identifie la commande d’activation (ou changement d’état) du relais, alors que 01 identifie le relais 1.
Si l’on voulait agir sur le second relais, il faudrait transmettre : *# d u 02 02 90.
Le lecteur de transpondeurs confirme alors la réception et l’exécution de la commande en envoyant le paquet : ST d u 03 01 EN, où 03 identifie le type de réponse, alors que 01 identifie le numéro du relais.
Un dernier paquet concerne le réglage des durées d’activation des deux relais. Le PC en transmettant : *# d u 03 01 td tu 90, indique au lecteur identifié par les caractères d u de paramétrer une durée d’activation pour le premier relais (caractères 01) égale à td tu.
Le mécanisme par lequel on indique les secondes est le même que pour l’adressage du lecteur : td indique les dizaines, tu les unités.
La durée d’activation peut donc être spécifiée dans l’intervalle de 1 à 99 secondes : si en revanche on transmet tdtu=00 on spécifie le mode bistable.
La réponse du lecteur à cette commande est : ST d u 03 01 td tu EN, où, encore une fois, 03 identifie le type de réponse, 01 indique le numéro du relais et td tu indiquent la durée d’activation paramétrée. Une fois connu le protocole de communication, il est donc possible de réaliser un logiciel valable qui, en se basant justement sur celui-là, gère les différents lecteurs de transpondeurs et règle donc l’activation des deux relais en fonction de l’usager reconnu.
Exemples d’interrogation en “polling”
des 2 lecteurs de transpondeurs. Le PC interroge le premier lecteur, lequel répond qu’il n’a pas de données. L’ordinateur passe alors à l’interrogation du second lecteur, lequel répond en revanche qu’il a des données et les transmet. Le cycle peut alors continuer avec l’interrogation des autres lecteurs présents, ou bien reprendre au début avec l’interrogation du lecteur 1.

Le logiciel de gestion
Maintenant que nous avons vu comment fonctionne le protocole de communication, il est possible de réaliser un programme permettant de contrôler les usagers et les accès. Le logiciel doit donc tout d’abord interroger les 16 lecteurs afin de vérifier lesquels sont effectivement présents, ensuite il doit réclamer (en mode “polling”) la transmission des codes lus aux lecteurs détectés. Il doit contrôler dans sa base de données si le code reçu est un de ceux mémorisés : si oui, il est possible d’identifier l’usager et d’agir en conséquence (activer ou non le relais), tout en contrôlant éventuellement l’horaire d’accès et le numéro du lecteur par lequel on accède, de façon à n’autoriser l’accès à l’usager que dans le cadre de certains horaires ou par certaines portes. Si en revanche le code n’est pas dans la base de données, il peut demander l’insertion d’un nouvel usager, c’est-à-dire la mémorisation de son code dans la “database” (mode d’auto-apprentissage) ou bien exécuter d’autres opérations particulières.
Le logiciel doit en outre être en mesure de gérer le paramétrage correct des durées d’activation des relais : nous vous rappelons que ces valeurs sont mémorisées à l’intérieur de chaque lecteur de transpondeurs et qu’elles sont par conséquent égales pour chacun des codes d’identification.
On comprend que les fonctions opérables par voie logicielle en s’appuyant sur le protocole de communication sont nombreuses et qu’elles couvrent un large éventail d’applications. Pour chaque situation particulière, il faudrait réaliser un programme spécifique : ci-après nous vous donnons cependant un exemple de spécifications choisies par nos soins, ayant toutes les chances de coïncider avec vos besoins et qu’on pourrait qualifier de standards.
Avant d’analyser ce programme, regardons comment exécuter le “polling” (décision confiée à l’ordinateur) des différents lecteurs : on l’a vu, la communication sur la ligne divisée est au format RS485. C’est pourquoi le circuit utilise des circuits intégrés MAX485, convertissant les niveaux de tension de TTL à RS485 et vice versa. Avant l’exécution de chaque transmission, le logiciel présent dans le microcontrôleur active automatiquement le MAX485, quand la transmission est terminée la puce est désactivée. Le problème est que les deux opérations réclament un certain délai pour leur exécution : par conséquent, en mode “polling”, il faut en tenir compte et introduire un certain retard entre l’interrogation d’un dispositif et celle du suivant. Un temps de quelques dizaines de millisecondes convient bien : on le voit c’est un intervalle assez court et, dans l’exécution normale, cela ne devrait poser aucun problème.
Nous pouvons maintenant commencer l’analyse de notre programme : on l’a dit, il est écrit en Delphi et tourne sous Windows 95/98/Me/XP. Son installation est fort simple : la procédure exige seulement de spécifier dans quel registre on souhaite copier les fichiers du programme. Une fois celui-ci lancé, l’écran principal apparaît : il contient essentiellement un moniteur d’état, dans lequel apparaissent au fur et à mesure les opérations exécutées avec les commandes manuelles de l’usager ou avec celles automatiques opérées par le programme lui-même.
A l’intérieur de cette même fenêtre il est en outre possible de spécifier quel port COM utiliser pour l’émission/réception des données. Le choix du port est la première opération à accomplir car, si le système est relié à un COM différent de celui auquel le programme s’attend, il n’est possible de réaliser aucune opération. La vitesse de communication ne peut en revanche pas être modifiée, car elle est prévue à 115 200 bits/s, sans parité, avec 8 bits de données, 1 bit de Start et un de Stop. De toute façon, il ne devrait y avoir aucun problème puisque les COM montés sur tous les PC de ces dernières années sont en mesure de gérer une communication à cette vitesse et avec ces paramètres.
Une barre des menus contient deux mots (“File” et Configurer), chacun ouvrant un menu déroulant, nous allons les analyser. L’indication “File” (fichier) contient deux possibilités : Terminer, qui permet de terminer le programme et Démarrer, qui en revanche permet d’activer l’interrogation en “polling” des divers lecteurs. Si l’interrogation est activée, dans la fenêtre principale sont visualisées certaines informations relatives aux opérations en cours (interrogations, code transpondeur reçu, identification usager, etc.). Par exemple, un flux de type Démarrer 01/07/03 15:33:00 apparaît : date (format jj/mm/aa) et heure (format hh:mm:ss) sont celles détectées par l’horloge du PC au moment de la commande. Pour terminer la procédure de “polling”, dans le menu “File” l’indication Démarrer est remplacée par “Stop”.
Passons au menu le plus substantiel, Configurer : nous y trouvons les indications “Reader” (lecteur) et Usagers servant, la première pour accéder à la fenêtre de dialogue où l’on peut choisir le mode de fonctionnement des lecteurs et la seconde pour définir chaque usager et associer à leur détection des actions locales déterminées.
Si l’on ouvre le menu Configurer et si l’on clique sur “Reader”, on accède à la fenêtre de dialogue “Remote Readers Setup”, constituée de deux parties (“Readers” et Temporisation) avec lesquelles on peut choisir toutes les fonctions des lecteurs.
En fait, à partir de “Readers”, le programme indique quels sont les lecteurs reliés au système. Par un clic sur le poussoir “AutoScan” le programme exécute une recherche sur le bus RS485 des lecteurs présents.
Cette opération n’est rien d’autre qu’une interrogation de toutes les adresses de 0 à 15 et quand elle est terminée les lecteurs détectés apparaissent cochés dans la fenêtre de dialogue. A noter que pendant l’interrogation le menu contextuel du bas visualise l’état de la recherche. Par un clic sur le poussoir OK on accepte et on confirme la liste des lecteurs détectés, avec Annuler on abandonne la procédure et les derniers paramétrages sauvegardés restent valides.
Notez cependant que pour permettre la liaison “à chaud” (soit sans interrompre l’exécution du programme) d’un nouveau lecteur, le programme tente même l’interrogation des lecteurs n’ayant pas été identifiés au moyen de la procédure “Autoscan”.
Cette procédure peut toutefois être utile pour vérifier l’exactitude du paramétrage des micro-interrupteurs de chaque lecteur relié au bus. La partie Temporisations concerne en revanche le paramétrage des deux relais de chaque lecteur : nous y trouvons deux fenêtres dans lesquelles on peut écrire le nombre de secondes de la durée d’activation voulue. Par exemple, si l’on écrit 10 en Temps d’activation Relais 1, le relais RL1 du lecteur sera excité pendant 10 secondes environ chaque fois qu’un transpondeur, parmi ceux mémorisés dans la base de données, sera lu. La sélection du lecteur auquel se réfère le paramétrage se fait par la fenêtre Sélectionner “Reader”. Après avoir choisi les diverses durées d’activation, cliquez sur le poussoir Envoi Configuration : le programme envoie alors les paramètres en utilisant le paquet de paramétrage convenable.
Nous avons déjà souligné qu’en laissant à zéro la durée d’un relais, ce dernier fonctionne en mode bistable : cela signifie que le passage d’un transpondeur habilité déterminera l’inversion de l’état actuel dudit relais (il se relaxe s’il est excité et il s’active s’il est au repos). Il est en outre possible de relaxer un relais ou les deux du lecteur indiqué : ainsi, si en un point d’accès il est nécessaire de commander un seul dispositif externe, on peut choisir de le relier au premier relais et de désactiver le second. Par exemple, si l’on veut commander le seul relais 1 du lecteur numéro 0 pour 2 secondes chaque fois qu’un transpondeur autorisé est lu, on doit écrire 2 dans la fenêtre Temps d’activation Relais 1. Il faut aussi cliquer dans la case Temps d’activation Relais 1 afin de la cocher. En revanche, il faut décocher la case Temps d’activation Relais 2. En pressant Envoyer Configuration, les paramètres sont transmis au lecteur.
Avant de passer à la seconde indication du menu Configurer, nous vous devons une précision : tous les paramétrages vus peuvent être pratiqués et appliqués avant que le système ne soit lancé avec la commande Démarrer du menu “File” : ils sont en effet transmis aux différents lecteurs le long du bus RS485. Une fois le système lancé, le bus est occupé par les interrogations : il n’est donc plus possible de transmettre les commandes de paramétrage. D’ailleurs la commande “Reader” n’est plus sélectionnable (en gris) : pour pouvoir modifier le paramétrage, il faut bloquer momentanément l’interrogation (menu “File”, indication “Stop”) puis entrer dans le menu Configurer et sélectionner la commande “Reader”, maintenant disponible.
Analysons ensuite la configuration des usagers. Elle est accessible en deux modes : manuellement, en ouvrant le menu Configurer et en cliquant sur la commande Usagers, ou en automatique, quand devant la self d’un ou des lecteurs du système passe un transpondeur inconnu dans la base de données.
Dans le premier cas on accède à la fenêtre de dialogue Configuration Usagers dans laquelle, pour chaque transpondeur reconnu, apparaît une ligne indiquant le code d’identification, le nom correspondant (utile quand un transpondeur doit identifier une personne) et les éventuelles actions associées (activation du relais 1 ou 2) à son passage devant le lecteur. Pour ajouter un nouvel usager, il suffit de cliquer sur Ajout et d’écrire manuellement les données, c’est-à-dire code et nom. Il y a ensuite deux cases à cocher Relais 1 et Relais 2 : la coche indique que les relais correspondants seront activés après le passage du transpondeur identifié par le code inséré. Si l’on presse OK, le nouvel usager est temporairement ajouté, si en revanche l’on presse l’icône Sauvegarder, la “database” des usagers est mise à jour.
Jusqu’ici nous avons expliqué la définition manuelle. Cependant le programme a été réalisé de manière à permettre l’ajout d’un transpondeur différent de ceux déjà mémorisés dans la base de données par l’intermédiaire d’une technique d’auto-apprentissage.
Plus précisément, si l’on approche d’un quelconque lecteur un transpondeur inconnu, la procédure de définition des nouveaux usagers est automatiquement lancée : une fenêtre de requête Ajout nouvel usager ? apparaît à l’écran, par laquelle le PC demande à l’opérateur s’il veut créer un nouvel usager : si l’on répond Oui, la fenêtre de dialogue Configuration Usagers apparaît, dans laquelle le champ Code donne la valeur lue sur le transpondeur. Si l’on répond Non, l’ordinateur ignore le nouveau dispositif et ne produit aucune action locale. Bien entendu, si l’on approche à nouveau le même transpondeur d’un autre lecteur ou du même, une nouvelle proposition d’enregistrement d’un nouvel usager nous est faite.
Dans la fenêtre Configuration Usagers il est en outre possible d’éliminer ou de modifier les enregistrements relatifs aux usagers : dans les deux cas les commandes ont un effet sur la ligne sélectionnée (pour sélectionner un usager de la liste, il suffit de cliquer sur la ligne qui le contient).
Dernier aspect touchant au logiciel de gestion : celui-ci réalise un “file” (fichier) de log dans lequel il mémorise toutes les informations correspondant aux opérations exécutées.
Les informations sont les mêmes que celles visualisées dans la fenêtre principale, mais elles sont sauvegardées de façon à en permettre la lecture même après coup. Les données sont inscrites dans un fichier de type texte (extension .txt) nommé au format aaaamm.txt dans lequel les 4 premiers caractères identifient l’année et les 2 derniers le mois (chaque fichier contient en effet les informations relatives aux opérations effectuées chaque mois). Le format de sauvegarde se compose de 7 champs :
- jour exprimé dans le format jj/mm/aa,
- heure exprimée dans le format hh:mm:ss,
- adresse du transpondeur au format d u (le premier caractère pour les dizaines, le second pour les unités),
- code d’identification du transpondeur,
- nom usager associé au code transpondeur,
- deux caractères identifiant si les relais respectifs sont actifs ou non (S pour activation, N pour non activation).
Les données sont sauvegardées à l’intérieur du fichier textuel où chaque ligne représente un événement : les 7 champs sont en outre séparés par le caractère “;” de façon à permettre une importation plus simple en “database” ou feuillets électroniques comme Access ou Excel.


Figure 3 : Principaux écrans du programme.





Programme lancé, apparaît l’écran principal. La première opération à accomplir est la sélection du port COM à utiliser. A partir du menu “File” il est possible de lancer les interrogations des lecteurs ou sortir. A partir du menu Configurer il est possible en revanche d’entrer dans le mode de configuration des lecteurs de transpondeurs ou des usagers.
Au moyen de la fonction “Autoscan” il est possible d’activer la détection automatique des lecteurs de transpondeurs reliés au bus RS485. Le paramétrage du code d’identification de chaque lecteur se fait par le dipswitch à 4 bits présent sur le circuit (voir première partie de l’article).
Comme on peut le voir ci-contre, il n’est pas absolument nécessaire de paramétrer les codes de manière séquentielle, mais on peut aussi faire des “sauts” (dans notre exemple les lecteurs 03 et 04 n’ont pas été paramétrés, alors que le lecteur 05 est inséré). En pressant OK le paramétrage est accepté et il est donc sauvegardé.
Ecran de paramétrage des lecteurs désignés par la procédure “Autoscan”.
Pour chaque lecteur, sélectionnable à partir du code d’identification, il est possible de paramétrer lequel des deux relais activer et sa durée d’activation. Pour chaque relais il est possible de spécifier un intervalle d’activation compris entre 1 et 99 secondes.
Si l’on paramètre 0 seconde, on sélectionne le mode bistable (une première commande excite le relais, une seconde le désactive et ainsi de suite).
Ecran des usagers mémorisés dans la base de données du programme. Chaque usager est identifié par le code du badge à transpondeur et par une dénomination.
Pour chaque usager il est possible de spécifier lequel des deux relais activer et si l’identification correspondante a eu lieu (la durée d’activation dépend en revanche du paramétrage mémorisé dans le lecteur).
Par l’intermédiaire des poussoirs présents dans la partie supérieure, il est possible d’ajouter ou de modifier les enregistrements correspondant aux usagers.

Figure 4 : Les cartes à transpondeur sont disponibles au format badge ISO7816 (carte de crédit) ou, plus commode, au format porte-clés.

Figure 5 : Exemple fichier de log.

Le programme que nous vous proposons dispose d’une fonction de sauvegarde des fichiers de log utile et commode, car toutes les actions advenues dans le mois sont écrites. Les données sont sauvegardées dans des fichiers de texte (avec extension .txt) et chaque action est écrite sur une ligne. Pour chaque ligne les champs sont séparés par le caractère “;” de façon à permettre une importation rapide à l’intérieur de la “database” ou vers des feuillets électroniques.

1er partie : Le matériel (étude et réalisation).

À Découvrir

Schema Electronique