Nous allons maintenant voir ce que j’ai appelé le «
processus de découverte » ou «
discovery ». C’est certainement le point le plus innovant dans ce projet de satellites autonomes que je vous propose.
Comme vous le savez sans doute déjà et vous le constatez actuellement sur le forum, dans une approche « classique » de gestionnaire, il vous est demandé d’établir des listes de jonctions avec des z1, z2, c0, s4, s6, a0 et a1 et que sais-je encore et ensuite de déterminer quelles cibles pour la signalisation. Mais franchement qui a encore envie de faire cela au 21° siècle ?
Pour les satellites autonomes, ce processus fastidieux est remplacé par un processus de découverte réciproque qui va servir à l’
apprentissage des cartes.
Pour pouvoir fonctionner de manière autonome, chaque satellite à besoin de connaitre la topologie de son environnement : Satellite(s) qui le précède(nt), satellite(s) qui le suit (suivent), et ce en fonction de la présence et de la position d’éventuelles aiguilles.
Cette connaissance porte pour une part sur des éléments statique et pour une autre, sur des valeurs variables, donc dynamiques.
Cantons et aiguilles sont par exemple des équipements statiques. Position des aiguilles, présence ou non d’un convoi sur un canton, signalisation lumineuse sont des informations dynamiques qui évoluent avec l’exploitation.
L’identification et la hiérarchisation des équipements statiques est réalisée à l’occasion de ce j’ai appelé « le processus de découverte » ou « discovery ».
La gestion des équipements dynamiques est, elle, totalement autonome en fonction des informations échangées entre les cartes et aussi des commandes envoyées comme le déplacement d’une aiguille ou les commandes de locomotives.
Discovery : le processus de découverte.A sa première utilisation, chaque satellite se voit attribué un ID (identifiant unique). Cet identifiant est « distribué » par la
carte main qui incrémente un compteur pour chaque nouveau satellite « anonyme » se connectant au bus CAN.
Astuce : je recommande avant toute chose d’identifier toutes les nouvelles cartes en les raccordant les unes après les autres au bus CAN. Cette opération d’identification peut être réalisée en une seule fois avant même leur implantation sur le réseau. On peut ainsi raccorder une carte sur le bus puis la déconnecter, en mettre une autre à la place et ainsi de suite. L’identifiant, une fois attribué, est conservé « en dur » dans le satellite, vous pouvez retirer la carte du bus puis initialiser tour à tour toutes vos cartes.
L’ordre dans lequel est attribué l’identifiant d’un satellite n’a aucun lien avec sa position ultérieure sur le réseau. De même, les satellites n’ont pas besoin d’être reliés entre eux en essayant de respecter la topologie du réseau ce qui serait de toutes les façons impossible sur un réseau un peu complexe. Vous chercherez cependant à les disposer à proximité du canton qu’elles pilotent pour minimiser les longueurs de fils avec les capteurs et les servomoteurs.
J’ai cherché à simplifier au maximum cette phase de description du réseau et autoriser avec peu de contraintes les évolutions de configuration.
Le mapping du réseau se fait sur un modèle de découverte (apprentissage ou discovery). On enregistre pour un satellite les satellites qui lui sont directement avoisinants.
Un satellite enregistre les identifiants (ID) de ceux qui le suivent ou le précèdent, que ce soit directement ou par l’intermédiaire d’aiguilles et, par un simple système de chainage progressif, nous obtenons toutes les interconnexions des satellites du réseau entre eux.
Les boutons poussoirs et le switch du mode Discovery
Pour ce faire, nous utilisons les boutons poussoir
Sat- et
Sat+ de la carte et des cartes voisines. On se sert également d’un switch à 2 leviers soit 4 états binaires possibles :
00, 01, 10, 11. Les états 0 sont utilisés pour des cantons reliées entre eux sans aiguille ou avec une aiguille droite alors que les états 1 sont utilisés pour indiquer que les cantons sont reliés lorsqu’une aiguille est déviée.
C’est la combinaison de deux boutons poussoirs et d’un switch à quatre états qui va permettre aux satellites d’échanger leurs informations et leurs positions relatives sur le réseau. Cette opération devra être répétée pour chaque satellite (canton).
Très important : Par convention, on réalise toujours le processus de découverte dans le sens horaire, c’est à dire le sens des aiguilles d’une montre. Nous nommons le satellite que l’on est en train de programmer S0, le suivant (dans le sens horaire) S1 ou S+1 ou encore SP1 (pour S « plus » 1). Ceci est vrai quelque soit le sens de roulage des trains par exemple. La seule question à se poser est de savoir si le canton S0 est avant ou après (dans le sens des aiguilles d'une montre) l'autre canton (satellite) auquel on souhaite le relier. Il est après, on appuiera sur le bouton - (moins), il est avant, on appuiera sur le bouton + (plus)
Un même satellite S0 peut avoir jusqu’à trois satellites S+1 qui se distingueront les uns par rapport aux autres en fonction de la position des aiguilles : S+1 droit, S+1 dévié, S+1 dévié 2.
A l’inverse, le satellite se trouvant à anti-horaire de S0 avec ou sans aiguille sera désigné SM1 ou S-1 pour satellite -1. Un même satellite S0 peut avoir jusqu’à trois satellites S-1 qui se distingueront les uns par rapport aux autres en fonction de la position des aiguilles : S-1 droit, S-1 dévié, S-1 dévié 2.
Mais notez qu’au total, dans cette version, un satellite ne peut avoir que 4 aiguilles au total. Par exemple 3 à horaire et 1 à anti horaire ou 2 à horaire et 2 à anti horaire ou encore 1 à horaire et 3 à anti horaire.
Concernant les leviers du switch, il faut entendre que le swith 1 correspond à l’aiguille qui est la plus proche du canton. Le switch 2 correspond à l’aiguille la plus extrème du canton.
Comment fonctionne le système de découverte / apprentissage ?Quand deux satellites soient reliés sans l’intermédiaire d’une aiguille ou par une aiguille en position droite, les switches 1 et 2 de chacune des cartes seront sur « off ».
Nous appuyons en premier sur le bouton poussoir (-) de S0 (la led rouge clignote) puis sur le bouton poussoir (+) de SP1.
Quand les deux leds s’allument en continu, cela indique que les deux satellites se sont identifiés mutuellement. On peut dès lors relâcher les deux boutons poussoirs.
Prenons maintenant l’exemple où nous avons une aiguille en sortie de canton S0 à horaire. L’ID de « S1 dévié » sera enregistré en basculant le switch de droite du satellite S0 sur « on » puis nous allons à nouveau « appairer » les deux cartes par un appui simultané sur les boutons poussoirs. et la reconnaissance de cette nouvelle carte est opérée quand les deux leds restent allumées. La led rouge en s’allumant en permanence nous confirme une nouvelle fois la bonne exécution de l’opération.
Rien de plus compliqué. S0 connait maintenant l’ID du satellite qui gère le canton « S1 dévié ».
Important : Par convention, pour les satellites autonomes, une aiguille reliée à pointe à un canton appartient à ce canton. Que l’aiguille soit déviée à gauche ou à droite est sans incidence pour le programme.
Maintenant que nous avons relié deux cantons S+1 avec la sortie SO (à horaire), le logiciel déduit logiquement qu’il y a une aiguille et crée automatiquement l’objet logiciel correspondant. Celui-ci apparaît dans l’interface web du satellite et il vous est d’ores et déjà possible de l’actionner et de procéder au réglage des servomoteurs et de tester le rendu. Les valeurs des butées sont renseignées par défaut à 1500, valeur de moyenne pour la plupart des servomoteurs.
Vous noterez que l’appWeb nous renseigne également sur son ID sur les ID des satellites déjà "appairés".
Voyons maintenant comment cela se passe pour une aiguille dont la pointe est reliée à S0 mais côté anti horaire.
Le satellite S-1 est relié à S0 par l’aiguille déviée la plus proche de S0 :
Le switch gauche de S0 est commuté sur « off » et le switch droit est commuté sur « on ». Ne vous trompez pas, le switch le plus à droite représente toujours l’aiguille la plus proche du canton. Le switch 1, lui, l’aiguille la plus éloignée, et ce quel que soit le côté horaire ou anti-horaire. C’est une petite gymnastique à laquelle il faudra s’habituer.
Notez que l’on appuie maintenant sur le bouton poussoir Sat+ de S0 et Sat- de S-1, S0 étant, dans le sens horaire + par rapport à S-1 qui lui est -.
Notez enfin que l’
appui simultané sur les deux boutons + et - d’un même satellite a pour effet d’effacer toutes les données enregistrées pour ce satellite.
Pour la suite des explications, nous allons concrètement expliquer la découverte mutuelle des satellites à l'aide du plan qui a été imposé pour l’exercice mais n'hésitez pas d'ores et déjà à poser des questions !