Bonjour à tous,
Les 3 articles de Pierre contiennent tout ce qu'il faut pour construire un gestionnaire complet, sophistiqué, évolutif, donc parfait selon mes intuitions, ce dont je suis sûr également, et ce n'est pas qu'une affaire de goût.
La question que l'on peut se poser est : est-il bien adapté à mon projet, à mon réseau, à son architecture technique, à mes scénarii de circulation, etc... ?
J'ai commencé, plus haut dans ce fil, à expliquer comment j'ai modélisé mon réseau, c'est à dire trouvé une description informatique de la topographie des voies, principalement grâce aux méthodes particulières
suivantePaire()
et
suivanteImpaire()
des objets Zone.
Et, de plus, cette modélisation est dynamique puisqu'elle s'adapte aux sens des aiguilles à tout instant !Cela fait plus d'un an que mon embryon de gestionnaire, basé sur les objets zones et aiguilles de Pierre fonctionne sans la moindre erreur !
Je vais maintenant compléter ce gestionnaire
jusqu'au bout, en partageant, avec vous, les étapes de ma progression, et en montrant les relations entre le gestionnaire et le matériel du réseau.
En général dans un projet, on commence toujours par une phase "papier" qui s'appelle "spécifications fonctionnelles puis organiques (dans le temps, quand je travaillais encore pour de vrai...). Cette étape avait pour but de prétendre qu'on allait tout prévoir dans le détail avant de commencer à réaliser.
Mais là on est dans un loisir ! A bas la rigidité !Personnellement, je veux construire au fur et à mesure de mes disponibilités en temps et en argent, sans me sentir bloqué, sans avoir l'impression de faire des compromis, toujours en visant l'idéal et la perfection. C'est ambitieux ?
En fait non, grâce à Locoduino dirai-je !
Car mon réseau est construit autour de plusieurs modules qui prennent chacun en charge un partie du boulot : traction, aiguilles, occupations, TCO, etc..
C'est selon ce schéma d'architecture que j'ai publié avec l'article L’Arduino au coeur des systèmes de pilotage analogiques ou numériques :
http://www.locoduino.org/spip.php?article153 :
J'ai donc réalisé plusieurs modules (même pas la moitié de ce que j'ai prévu, en fait), raccordés sur un bus CAN à 500kb/s, qui s'échangent des messages, sans hiérarchie.
Ce qui permet de répartir les responsabilités entre les organes capteurs (occupations, clés d'aiguilles sur le TCO, par exemple), les organes actionneurs (commandes d'aiguilles, par exemple) et le gestionnaire qui assure l'intelligence du réseau selon l'exemple ci-dessous :
On en déduit tout de suite que le gestionnaire peut se réduire à un simple Arduino Due (le plus costaud de la famille, tant qu'à faire), disposant seulement d'une interface CAN pour recevoir des messages et en envoyer d'autres.
C'est vraiment le chef d'orchestre en haut de son estrade qui dirige les musiciens !Et dans ce Due, le programme est exactement ce que Pierre a décrit dans ses articles
Un gestionnaire en C++ pour votre réseau :
http://www.locoduino.org/spip.php?article154http://www.locoduino.org/spip.php?article167http://www.locoduino.org/spip.php?article172Et c'est d'autant plus naturel que le programme de l'Arduino tourne indéfiniment dans sa
loop et ne va faire que lire les messages entrant, analyser ces messages et, en fonction de leur contenu, appeler des méthodes des objets Zone, Aiguilles, Signaux, Trains, etc..
La loop contiendra donc un grand switch pour traiter tous les cas, et on sait bien que l'on peut facilement rajouter d'autres cas par la suite : quelle souplesse cet Arduino !Et certaines de ces méthodes vont envoyer un ou plusieurs message vers des organes de commande, via le bus CAN, tandis que d'autres ne feront que mettre à jour des variables dans les objets.
La définition de mon projet prend donc une toute autre forme, après avoir défini les modules nécessaires : définir les messages à échanger entre les modules (principalement avec le gestionnaire).
Ensuite, même si tous les messages ne sont pas encore définis, je peux commencer à coder.
C'est un peu cette aventure que je souhaite partager avec vous, dans la suite à venir. Je vais décrire succinctement mes modules et les messages qui les concernent. Puis l'intégration de tout cela dans le gestionnaire de Pierre.
Je pense que cela pourra vous aider à franchir le pas !
A suivre ...
Dominique