Après les concepts généraux et la présentation des matériels, intéressons maintenant à ce qui représente une réelle innovation et qui est la clef d’une grande simplification : Le processus de découverte réciproque qui va servir à l’apprentissage des cartes.
Satellites autonomes
LES SATELLITES AUTONOMES : une nouvelle approche du concept de Satellites Locoduino. (3)
Discovery : le processus de découverte.
.
Par :
Cette opération est similaire à la saisie que l’on doit réaliser sur un logiciel de gestion centralisée, mais vous allez voir que dans notre cas, les choses sont considérablement simplifiées.
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 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 automatisée en fonction des informations échangées entre les cartes pendant l’exploitation et aussi des commandes envoyées comme le déplacement d’une aiguille.
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.
Je recommande d’identifier toutes les nouvelles cartes en les raccordant les unes après les autres à la carte Main. Cette opération d’identification peut être réalisée une fois pour toute 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, les servomoteurs et les signaux.
J’ai cherché à simplifier au maximum cette phase de description du réseau et autoriser avec très peu de contraintes les évolutions et extensions du réseau.
Pour aider à la compréhension, voici un petit schéma d’implantation déjà présenté dans le premier article.
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.
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).
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).
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 switch 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 sont 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 ».
`
Figure 1 - Nous appuyons en premier sur le bouton poussoir (-) de S0 (la led rouge clignote) puis sur le bouton poussoir (+) de SP1. On peut aussi faire S1 puis S0, cela ne change rien.
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.
Figure 2 - 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 réalisation 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, une aiguille reliée à pied à 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 informatique correspondant. Celui-ci apparaît dans l’interface web du satellite et il vous est d’ores et déjà possible de procéder au réglage des servomoteurs et même de tester le rendu. Les valeurs des butées sont renseignées par défaut à 1500, valeur de moyenne pour la pluspart des servomoteurs.
Profitons d’être sur l’interface web de ce satellite pour noter que son ID est 6, qu’il est relié à horaire au satellite d’ID 3 quand l’aiguille est droite et au satellite d’ID 4 quand l’aiguille est déviée.
Figure 3 - Nous enregistrons maintenant le satellite que se trouve après la première aiguille droite et la seconde déviée. La valeur binaire du switch est 10 pour 1° aiguille droite (1° bit de poids faible à 0) et 2° aiguille déviée (2° bit de poids faible à 1).
Figure 4 - Dans le cas d’une aiguille triple ou de deux aiguilles qui s’enchainent toujours à « pied », on basculera aussi le switch de gauche sur « on » (l’aiguille la plus éloignée est déviée), le switch de droite à « off » (l’aiguille la plus proche est droite), et on répètera la sauvegarde des données avec le bouton poussoir. Hormis cela, il n’y a rien de différent comparé au montage précédent.
Dans le dernier cas d’aiguilles à horaire, on accède au canton S+1 par l’aiguille 1 déviée et par l’aiguille 2 déviée également. Aussi le switch de S0 sera-t-il commuté sur 11.
Figure 5 - Abordons maintenant le cas des satellites placés à anti-horaire. Premier cas, le satellite S-1 est rattaché par une voie sans aiguille ou avec une aiguille droite
Sans surprise, les deux switches sont commutés sur 00. 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 -.
Figure 6 - Second exemple, 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.
Figure 7 - Dernier exemple pour « S-1 dévié », le switch 1 de S0 sera sur « on » et le switch 2 de S0 sera sur « off ». Nous allons maintenant appuyer sur le BP Sat- de « S-1 dévié » et sur le BP Sat+ de S0.
Les switches 1 et 2 de S-1 droit et de S-1 déviés sont eux placés sur « off ».
Il faut se souvenir que l’on appuie toujours sur les boutons poussoirs qui sont les plus rapprochés. Le bouton + pour le satellite à anti-horaire et le bouton – pour celui qui est à horaire.
Comme vous le voyez, par ces simples boutons poussoirs et ces switches, il sera possible de réaliser très rapidement et très simplement le mapping du réseau et il sera possible pour l’application d’en déduire les aiguilles présentes et le type des cibles.
En effet, au fur et à mesure que l’application aura une vue d’ensemble du réseau, elle calculera automatiquement quelles cibles de signalisation il faudra installer au niveau de chaque sortie de canton et/ou de chacune des aiguilles.
Une fois tous les satellites reliés entre eux, on pourra dire que la boucle sera bouclée.
Dans le cas où aucun satellite ne serait relié à l’une des extrémités du canton (avec ou sans aiguille), le système en déduira qu’il s’agit, soit d’une voie de garage, soit d’un tronçon non enregistré et il ralentira puis stoppera alors systématiquement les locomotives.
Dans ce système, il est très facile d’intercaler un nouveau satellite dans le réseau. Il faut enregistrer dans ce nouveau satellite l’ID du (des) satellite(s) à horaires et enregistrer ce nouveau satellite dans le (les) satellites à anti horaire. Cela effacera les anciennes données et le nouveau mapping du réseau sera lancé automatiquement.
Si vous souhaitez effacer ce que vous avez pu enregistrer pour un canton, l’appui simultané sur les deux boutons + et - d’une même carte a pour effet d’effacer toutes les données enregistrées.
Sur le forum vous trouverez d’autres exemples de découverte mutuelle.
https://forum.locoduino.org/index.p...
N’hésitez pas non plus à poser toutes vos questions, ici ou sur le forum.
Le prochain article présentera le réglage des satellites au travers de l’interface web propre à chacun. Cela conclura ce qu’il est nécessaire de connaître pour l’utilisateur. Les articles suivants détaillerons la programmation.
Vous pouvez réagir et apporter vos questions et commentaires sur le forum : https://forum.locoduino.org/index.p...