Les itinéraires, le sujet a été souvent abordé à Locoduino, comme par exemple dans les articles Un gestionnaire en C++ pour votre réseau (3) ou SGDD : Système de Gestion DD (2) ainsi que dans le forum Commande d’itinéraires par arduino (locoduino.org).
Alors, direz-vous, pourquoi un article de plus ? Tout d’abord, un vieux dicton plein de sagesse populaire nous dit « qu’abondance de biens ne nuit pas ». Ensuite, les TCO concernés par cet article sont plutôt du type « gare d’Aumont-Aubrac » que du type commande centralisée de la LGV Sud-Est. Enfin, nous nous sommes attachés, par la simplicité du mode opératoire, à préserver le plaisir de « jouer au train ».
La commande des appareils de voie décrite dans les articles TCO Web interactif avec des ESP32 et des ESP8266 (1) et TCO Web interactif avec des ESP32 et des ESP8266 (2) permet à un Aiguilleur de former un itinéraire. Nous allons voir dans cet article comment montrer l’itinéraire formé, comment l’Aiguilleur peut l’alimenter et, ainsi permettre au Mécano de conduire son train.
Bien sûr, l’Aiguilleur et le Conducteur de train peuvent être une seule et même personne. Pour élaborer un itinéraire, il faut positionner les appareils de voie, cliquer sur un élément de départ (heurtoir ou feu). L’itinéraire se constitue automatiquement jusqu’à ne plus pouvoir avancer (appareil non fait pour la direction voulue, butoir ou sortie du TCO).
La figure suivante présente, de manière succincte, la formation d’un itinéraire, et son utilisation pour conduire un train.
- Figure 1
- Principe de formation d’un itinéraire avec TCO-Web.
Définitions préalables.
Qu’est-ce qu’un itinéraire ?
Un itinéraire permet à un train d’emprunter les sections de voie reliant un point de départ (élément de départ du TCO) et un point d’arrivée (élément de TCO). Une section de voie (appelée parfois canton) est la portion de voie comprise entre deux appareils ou entre un point de départ ou de sortie et un appareil. Cette section de voie est constituée d’un ou plusieurs éléments de voie représenté par les petits carrés dans le TCO.
La figure ci-après présente un itinéraire du TCO Combrailles, (TCO imaginé à partir de l’article intitulé « Un Suédois dans les Combrailles » et paru dans le Loco Revue N° 907 de février 2023). Cet itinéraire permet d’amener l’engin moteur, qui est près du heurtoir, sur la plaque tournante afin d’y être retourné.
- Figure 2
- Exemple d’itinéraire établi sur le TCO Combrailles.
Un itinéraire peut être formé (les éléments qui le composent ont des motifs grisés) ou bien alimenté (les motifs des éléments sont bleus). Lorsque un itinéraire est formé, tant qu’il n’est pas alimenté, ce dernier est détruit par n’importe quelle action sur un appareil de voie.
Qu’est-ce qu’un élément de voie ?
Un élément de voie peut être un aiguillage, une portion de voie droite ou courbe ou tout autre dispositif utile à la conduite des trains. Pour un état donné, un élément de voie dispose d’une extrémité origine et d’une extrémité destination. Par convention, mais cela n’est pas obligatoire, l’origine est à gauche (ou en bas) et la destination à droite (ou en haut). La figure suivante résume tout cela.
- Figure 3
- Définition d’un élément de voie.
Qu’est-ce qu’un point de départ ?
Pour le moment, un point de départ est, soit un heurtoir (butoir), soit un feu de départ. Ces éléments sont caractérisés par une origine valant zéro et une destination comprise entre 1 et 8, comme indiqué sur la figure ci-dessous.
- Figure 4
- Définition d’un point de départ.
Qu’est-ce qu’un point d’arrivée ?
Un point d’arrivée est l’élément à partir duquel il n’est plus possible de constituer l’itinéraire. Ces impossibilités sont montrées dans la figure suivante.
- Figure 5
- Détermination des points d’arrivée.
La figure ci-après montre comment l’Aiguilleur peut constituer un itinéraire.
- Figure 6
- Comment créer un itinéraire.
L’algorithme de calcul d’un itinéraire est comme suit :
- partir d’un point de départ ;
- tant qu’un point d’arrivée n’est pas atteint :
- chercher l’élément suivant ;
- s’il n’existe pas : le point d’arrivée est atteint ;
- vérifier que la destination de l’élément courant est à 180° de l’origine de l’élément suivant (c’est à dire qu’un coupon de voie dirigé vers l’est se connecte bien avec un coupon de voie dirigé vers l’ouest) ;
- sinon, intervertir l’origine et la destination de l’élément suivant et revérifier ;
- si ce n’est pas le cas : le point d’arrivée est atteint ;
- l’élément suivant validé devient l’élément courant et on reboucle.
Cet algorithme est concrétisé par la fonction Javascript CalculIti
qui sera abordée dans un prochain article. On peut le mettre en images comme suit :
- Figure 7
- Algorithme de détermination d’un itinéraire.
L’élément courant est déterminé par ses coordonnées X (abscisse) et Y (ordonnée). La position de l’élément suivant se déduit des coordonnées de l’élément courant et de la valeur de la donnée destination de l’élément courant comme indiqué dans le tableau ci-après.
- Figure 8
- Calcul de l’élément suivant.
Qu’est-ce qu’une section de voie ?
Une section de voie (ou canton - peut-être abusivement) est une suite d’éléments de voie qui peut être alimentée et pour laquelle il est possible d’en connaître l’occupation par un train.
Une section de voie est généralement comprise entre deux appareils de voie ou entre un élément de départ et un appareil . Elle se caractérise essentiellement par un libellé, comme par exemple dans la figure suivante :
- Figure 9
- Exemple de nommage des sections de voie.
Définition de la table des éléments de TCO.
Cette table permet de décrire (grâce au langage Javascript) chaque élément utilisable dans le TCO. Un élément est caractérisé par un code, un type, une origine et une destination.
Cette table est utilisée principalement lorsque l’état d’un appareil est modifié pour mettre à jour la nouvelle destination de l’appareil.
- Figure 10
- Table des éléments de TCO.
Définition de la table descriptive du TCO.
Cette table (toujours en code Javascript) se compose de chaque élément non vide du TCO, c’est-à-dire des appareils de voie, des éléments de départ et des éléments de voie simples (comme les segments de voie droite, les segments obliques, les virages à droite ou à gauche).
Chaque ligne de la table est constituée par :
- un numéro fabriqué à partir des coordonnées X et Y de l’élément dans le TCO ;
- un code pour mettre en relation la ligne avec la table des éléments ;
- l’angle de rotation de l’élément qui vaut « valeur » x 90° (sens trigonométrique) ;
- le type de l’élément qui est identique au type indiqué par la table des éléments ;
- le nom de l’image qui est le nom du fichier dans la mémoire Flash sans l’extension PNG ;
- l’origine et la destination qui sont celles de la table élément si l’angle de rotation vaut 0°, qui sont recalculées comme l’indique la figure 12 ci-après ;
- enfin, le nom de la section (canton) à laquelle appartient l’élément.
- Figure 11
- Table descriptive du TCO.
Le tableau suivant permet de calculer l’origine ou la destination d’un élément de voie, après une rotation de 90°, 180° ou 270° dans le sens trigonométrique.
- Figure 12
- Rotations des origines ou des destinations.
Définition des tables Itinéraires et Cantons.
Ces tables sont renseignées automatiquement par le code Javascript de calcul d’itinéraire (fonction CalculIti
, voir dans l’article suivant).
La table Itinéraire est formée de la liste de tous les éléments intervenants dans l’itinéraire. Pour chaque élément, ses coordonnées, le nom de l’image (en mémoire Flash) et le nom de la section de voie sont nécessaires.
La table Cantons, quant à elle, est la liste des cantons formant l’itinéraire. L’état d’un canton peut avoir les valeurs suivantes :
- canton non affecté à un itinéraire (inactif) ;
- canton d’un itinéraire formé ;
- canton d’un itinéraire alimenté ;
- canton occupé par un convoi (fonctionnalité abordée dans un prochain article).
- Figure 13
- Tables Itinéraires et Cantons.
Pour conclure.
La théorie sur les itinéraires pour le TCO Web, pour le moment c’est terminé. Nous allons pouvoir imaginer un TCO comme celui de Combrailles.
- Figure 14
- Un des itinéraires alimentés du réseau Combrailles.
Pour concrétiser votre TCO, il vous faudra vous inspirer des solutions logicielles mises en œuvre dans le prochain article, ainsi que des solutions matérielles qui feront l’objet d’un article à suivre.