POST DU 10/03/25 PARTIE 2/2BRETELLES :Les appareils de voie sont commandés par de moteurs, mais, dans certaines configurations, la position d'une aiguille entraîne obligatoirement la position d'une autre aiguille sous peine de déraillement. Ce sont les bretelles. Elles permettent donc des gains en câblage et en sécurité.
Exemple de bretelle :

Contrairement aux apparences, le problème de les détecter automatiquement n'est pas simple.
Les aiguilles, dans une bretelle, sont opposées par leurs talons. C'est obligatoire.
Souvent, elles sont reliées par leurs voies déviées, comme dans l'exemple ci-dessus, mais elles peuvent aussi être voie directe - voie déviée, avec une aiguille droite et une aiguille gauche :

On peut aussi avoir un élément droit dans la bretelle :

Et c'est là qu'on apprécie les joies de l'informatique…
On cherche : "Des aiguilles, opposées par leurs talons, avec la possibilité d'une aiguille droite et d'une aiguille gauche et possibilité d'éléments droits ou courbes entre les talons des aiguilles".
Et on tombe sur ça :
Qui est tout, … sauf une bretelle !
Il manque donc un autre paramètre : la longueur des éléments, indispensable ici !
C'est pareil pour une bretelle double.
Il y a tout un monde entre ça :
Et ça :
Et pourtant, le schéma est le même !
Donc, il faut tenir compte des longueurs dans la détermination automatique des bretelles.
Il y a donc, dans mon programme, une longueur maxi (L_MAXI dans le setup) qui permet de bien définir les bretelles.
A noter que le branchement simple est le seul appareil de voie possible dans une bretelle pour la bonne raison qu'il n'a pas de moteur (cas de la bretelle double).
Dans une bretelle, il ne peut y avoir que 2 aiguilles.
Il s'ensuit que les appareils impliqués sont : les aiguilles, l'une des aiguilles d'une TJS, l'une des aiguilles d'une TJD à 2 moteurs, une aiguille triple.
Il n'est pas possible d'avoir une TJD à un seul moteur dans une bretelle.
Une bretelle, c'est le plus simple des super appareils (voir ci-après).
SUPER APPAREIL :On a diminué le nombre de zones en créant des zones multiples.
On peut aussi diminuer le nombre de positions à étudier en regroupant les moteurs des appareils de voie des bretelles.
1°) Les bretelles simples :Deux aiguilles, c'est 2 x 2 positions possibles. Mais comme les deux aiguilles sont liées, il n'y a que 2 positions à étudier : la position "bretelle" et la position "non-bretelle".
On n'a plus qu'un seul super appareil, composé des 2 aiguilles, et seulement 2 positions pour ce super appareil.
On remarquera que, dans une bretelle simple, les deux aiguilles sont dans la même position.

Ex : a0 droite et a1 droite pour la bretelle, a0 gauche et a1 gauche pour les voies parallèles, c’est-à-dire "non bretelle".
Donc, la définition d'une bretelle peut se simplifier :
"Br0" : a0, a1, droite.
La position "non-bretelle" peut s'écrire "Br0-" sans qu'on ait besoin de la décrire dans le JSON (Ce serait Br0- : a0, a1, gauche).
Dernière remarque :
Il n'est pas besoin de décrire une section qui serait entre les 2 aiguilles (une section n'a qu'une position)
2°) Les bretelles doubles :
Dans une bretelle double, il y a 5 appareils de voie. On n'oublie pas, en effet, la traversée centrale composée d'une "aiguille virtuelle", amenant 2 alimentations potentielles, elles bien réelles, en fonction de la bretelle choisie. Soit 32 positions potentielles et seulement 3 positions possibles.
Br0 : a0, a3, droite, a4
Br1 : a1, a2, gauche, a4
La description de la bretelle reste la même que la bretelle simple, mais, ici, on indique aussi la traversée simple en fin de description, sans donner sa position puisqu'elle est identique à celle des aiguilles.
Les 3 positions sont les suivantes :
- position 0 : Br0, Br1-, a4
- position 1 : Br0-, Br1, a4
- position 2 : Br0-, Br1-
En position 1, a4 est à droite par Br0 et à "non-gauche" = droite par Br1- : il est donc à droite.
En position 2, a4 est à "non droite" = gauche par Br0- et à gauche par Br1- : il est donc à gauche.
En position 3, a4 n'est pas concerné.
Mais attention, super appareil ne veut pas dire une seule zone : la bretelle double ci-dessus a bien 7 zones de détection de présence.
3°) Aiguilles triples. Exemple dans le réseau de Dominique :
Z29 est une aiguille triple, décomposée ici en 2 aiguilles consécutives : a9 et a11.
Dans la pratique, il y a 3 aiguilles à gérer ici, soit, à priori 2 x 2 x 2 = 8 possibilités.
Il y a bien une bretelle Br0 : a8, a11, gauche, mais elle ne fonctionne que si a9 est à gauche.
Donc il n'y a que 3 positions qui aient un sens :
- Position 0 : Br0, a9 gauche.
- Position 1 : Br0-, a9 gauche
- Position 2 : Br0-, a9 droite.
Il peut paraître surprenant, quand a9 est à droite, que la position de la bretelle intervienne, mais c'est nécessaire à la sécurité : si a9 est à droite, on ne peut pas envoyer un train venant de a8 vers la bretelle.
Autre exemple, dans le réseau de Dominique complété pour essais :
Z26 est une aiguille triple, décomposée ici en 2 aiguilles consécutives : a0 et a1.
Br0 : a0, a2, droite
Br1 : a1, a51/0, gauche
Les 3 positions sont :
- Position 0 : Br0, Br1-
- Position 1 : Br1, Br0-
- Position 2 : Br0-, Br1-
4°) Toujours dans le réseau de Dominique, une bretelle avec aiguille commune. Ici a16.
Il y a 3 aiguilles, donc 8 positions et, en fait, seulement 2 utiles :
- Position 0 : Br0, Br1-
- Position 1 : Br1, Br0-
On a la liste exhaustive de tous les super appareils possibles :
Bretelle, bretelle double, triple 1 et triple 2, aiguille commune.
LISTES D'APPAREILS DE VOIE :C'est le moment de faire le point sur les différentes listes consacrées aux appareils de voie.
1°) On a une liste de tous les appareils de voie : "a0" : {
"nom" : "a0",
"type" : "TripleSDa",
"no" : 0
},
Qui se lit : l'appareil a pour nom "a0", il est du type "aiguille triple symétrique à droite côté A", c'est le 1er appareil de la liste des appareils et a pour identifiant le numéro 0.
Rappel 1 : Une aiguille triple a sa première aiguille en partant de la pointe à droite et la suivante à gauche dans le cas d'une "TripleD" et sa première aiguille en partant de la pointe à gauche et sa suivante à droite dans le cas d'une "TripleG".
Si, en plus, elle est d'apparence symétrique, il y aura TripleSD et TripleSG.
La 1ere aiguille est côté A et la deuxième côté B.
Rappel 2 : Une aiguille ayant toujours 2 positions ("gauche" et "droite"), ce n'est pas la peine de l'indiquer dans le JSON.
2°) Une liste des bretelles : "Br0" : {
"nom" : "Br0",
"position" : ["a0","a2","droite"],
"no" : 0
},
Qui se lit : Bretelle 0, position a0 et a2 à gauche, identifiant numéro 0.
L'autre position n'est pas décrite et s'appellera "Br0-".
Là, les positions sont décrites car spécifiques au réseau. On voit aussi pourquoi le nom d'une aiguille ne doit pas démarrer par "Br".
3°) Une liste des super appareils : "Su0" : {
"nom" : "Su0",
"positions" : [["Br0", "Br1-"], ["Br0-", "Br1"], ["Br0-", "Br1-"]],
"no" : 0
},
Là, les positions sont décrites car spécifiques au réseau. On voit aussi pourquoi le nom d'une aiguille ne doit pas démarrer par "Su".
BALISE :On a considéré que la détection de présence dans une zone se fait par consommation de courant. C'est le système le plus performant. Mais il suppose de nombreuses coupures de rails.
Il existe aussi des détections de présence ponctuelles (ILS, infra rouge, capteurs à effet Hall…) et on les appellera des balises.
Mon programme ajoute systématiquement une balise (notée Bs) à chaque signal. Ce système sert pour garantir un arrêt devant un signal à un point précis.
Le programme ajoute aussi systématiquement une balise (notée Bb) avant un butoir pour garantir l'arrêt.
Je n'ai pas géré le cas de balises isolées (passage à niveaux, tunnels, panneaux "S", …), mais on pourrait définir une méthode pour en ajouter.
LONGUEURS :Il est indispensable de connaitre la longueur de chaque zone. Par défaut, la longueur d'une zone sera de 999 mm dans mon programme.
Par ailleurs, il faut que des sections de longueur nulle existent pour "affecter" un signal à un appareil de voie.
De plus, certains signaux (jaune clignotant, rouge clignotant, blanc clignotant) sont liés à la longueur de la zone.
Enfin, dans le gestionnaire, j'aurais besoin de longueur précises les sections et branches des appareils de voies pour calculer la distance qui sépare un train de son signal d'arrêt. J'y reviendrai dans le gestionnaire, c'est fondamental.
FICHIERS :Pour l'instant, dans Processing, tous mes fichiers sont issus de "Tables" et sont donc des fichiers dont l'extension est obligatoirement ".tsv", c’est-à-dire "Tabulation Separated Values" (valeurs séparées par une tabulation) qui se trouve être le fichier natif des fichiers Excel.
Il s'ensuit que le meilleur moyen d'ouvrir ces fichiers texte est l'application Excel (ou tout autre tableur).
La conséquence, c'est que le fichier JSON sort actuellement en "_JSON________.tsv".
Si on veut un vrai fichier JSON, il suffit de le copier ailleurs et de changer l'extension ".tsv" en ".json" et on obtient le fichier "_JSON________.json".
Le fichier JSON est, ici, un fichier de sortie et le fichier ZONES est le fichier d'entrée. Il ne contient que les informations que le programme ne peut pas deviner.
Le fichier ZONES, quant à lui contient exclusivement les valeurs nécessaires au calcul du fichier JSON. Il n'y a que des valeurs que vous rentrez. Tout le reste est calculé.
Il est fortement déconseillé de modifier des valeurs directement dans le fichier ZONES, tant elles sont liées les unes aux autres. En passant par le programme, tous les liens sont pris en compte et la cohésion est garantie.
Variables du fichier ZONES :
NOM :
Le nom de la zone simple.
PARITE :
La parité de la section, avec une aide dans le programme.
TYPE :
Numérotés de 0 à 11
ORIENTATION :L'orientation est la position du dessin d'une section ou d'un appareil de voie par rapport à la verticale dans un pavé. La "précision" de cette orientation est de 45°. Elle est caractérisée par un nombre entre 0 et 7 dans le fichier zones.
GARE :L'info de la gare. On a :
g0, g1, … qui sont les zones de gare (on n'en rentre qu'une partie)
ap_g0, ap_g1, … qui sont les zones d'approche des zones de gare (on les rentre toutes)
so_g0, so_g1, … qui sont les zones de sortie des zones de gare (on les rentre toutes)
MANŒUVRE :L'info de la zone de manœuvres.
m0, m1, … qui sont les zones de manœuvre (on n'en rentre qu'une partie)
ap_m0, ap_m1, … qui sont les zones d'approche des zones de manœuvre (on les rentre toutes)
so_m0, so_m1, … qui sont les zones de sortie des zones de manœuvre (on les rentre toutes)
VITESSES :L'info de la vitesse limite d'une zone ou, dans un appareil de voie, d'un segment de l'appareil.
X, Y :
Ce sont les coordonnées du centre du "pavé" sur le TCO. Un pavé n'a pas d'orientation. Il est calé sur une grille.
Les X, Y ne sont pas demandés lors de la création des zones simples :
C'est uniquement lors de modifications, c’est-à-dire dans une deuxième étape.
TCO :A la SNCF, c'est le "Tableau de Contrôle Optique". Il est, en général, le long d'un mur dans le poste d'aiguillage et représente le tracé de toutes les zones gérées par ce poste d'aiguillage, avec l'occupation par les trains, la position des aiguilles, des itinéraires, ...
C'est purement visuel. Il n'y a pas de boutons sur un TCO à la SNCF.
Les modélistes se sont dit qu'il serait pratique, justement, d'y regrouper tous les boutons et le TCO est devenu le "Tableau de Commande Optique".
Tableau de Commande Optique (TCO)
C'était tentant du fait qu'on a déjà le dessin de tous les éléments…
Mais je n'avais pas envie de le dessiner : c'est le programme qui va se charger de le faire.
On doit quand même positionner les éléments (X, Y) et, le plus simple, c'est de rentrer les noms des zones dans Excel. C'est très souple, on peut déplacer plusieurs éléments d'un coup et avoir un positionnement global satisfaisant. C'est plus simple de se mettre en notation "L1C1" plutôt qu'en ABCD. Attention : Excel démarre à 1 et Processing à 0…
On note le nombre de cellules en horizontal et en vertical. En général, le nombre en horizontal est supérieur au nombre en vertical. C'est celui-là qui compte.
On rentre le nombre de colonnes d'Excel dans le setup "NB_PAVES = xx"
Une fois qu'on a rentré tous les X, Y dans les zones, on peut afficher le TCO.
1°) On appuie sur le bouton "Analyse" pour faire tous les calculs et on est ainsi sûr qu'il n'y a pas d'erreur. Si on oublie d'appuyer sur "Analyse" avant, on n'a pas les calculs des portions intermédiaires…
2°) On appuie sur le bouton "TCO" et on a un "paté" du TCO, coincé dans un carré de 500 x 500.
Il faut alors passer au plein écran et le TCO apparait.
On se rend compte alors que certains positionnements ne sont pas bons et on peut alors les modifier directement sur l'écran en cliquant dans les pavés des zones.
Si vous cliquez à gauche dans un pavé, il avance d'une case vers la gauche et le dessin se met à jour. De même pour droite, haut et bas. Et le dessin se recalcule immédiatement !
Quand vous êtes satisfaits du résultat, n'oubliez pas de sauver les X, Y :
1°) Cliquez sur "Valider" dans le rond en bas à droite
2°) Choisissez "Sauver" dans le menu général.
Composition du TCO :Ce TCO est volontairement orienté vers la vérification des données, plus que vers un gestionnaire.
Par exemple, il n'affiche pas la position des appareils de voie (les lames).
Il affiche des panneaux de signaux complets avec tous les feux allumés en même temps …
Il y a un code couleur des zones :
Noir pour les gares
Violet pour les zones de manœuvres
Noir large sur Aqua pour les zones d'approche de gare
Noir étroit sur Aqua pour les zones de sortie de gare
Violet large sur Aqua pour les zones d'approche de manœuvres ou Violet large sur Noir si on est en gare.
Ce code couleur n'est utile que pour les vérifications et n'aura pas d'intérêt dans le gestionnaire.
Signaux :Une particularité des panneaux de signaux SNCF est qu'il est impossible d'avoir, sur le même panneau, à la fois l'affichage du Carré et du Carré violet (les feux sont au même endroit).
J'ai donc décidé que, si l'on doit pouvoir afficher C et Cv au même endroit, il faut deux feux : un sur poteau et un au sol pour le Cv.
Dans les zones de manœuvres, j'ai décidé de faire figurer tous les feux, puisque chaque zone est banalisée. Mais les feux virtuels sont simplement affichés par un rond vide.
J'aimerais bien faire figurer ici les vitesses limites, toujours dans un but de vérification des entrées, mais il n'y a pas beaucoup de place…
Impression :Il suffit de faire une copie-écran et l'imprimer. Mais comme j'ai pitié des cartouches d'imprimante, on peut mettre un fond blanc avant de faire la copie-écran en appuyant sur la bascule "Fond", en bas à gauche.