Overview
Les sémaphores. Guide d’utilisation. (user guide).
Introduction
English version (translator)[www.guideoui.com]
About the english version, please note that the translation is not mine.
Guide décrivant le fonctionnement des sémaphores.
Face aux blocages récurrents de mes propres parties, j’ai eu besoin de mieux comprendre comment les sémaphores fonctionnent. J’ai donc consigné ici les tests effectués.
Les bons réflexes (best practices).
Crier aux bugs ne sert à rien. Il y en a, surtout depuis l’introduction des “chainages”. Mais on peut les éviter en faisant simple. Des trains en rade, j’en ai eu. Mais force m’est d’admettre que mon manque de rigueur en était chaque fois la cause. C’est pourquoi aussi j’écris ce guide.
C’est le premier reflex à acquérir. Combien de fois suis-je aller me coucher, les lignes bloquées, pestant contre ces développeurs que je qualifiais à la petite semaine, pour le lendemain de retour sur la champ de bataille, ne poser qu’un petit signal … et tout débloquer.
Le jeu est complexe. Et même si construire correctement un réseau ferroviaire est un aspect normalement secondaire du jeu, cela fait appel à une multitude de facteurs, tel que la taille du train, de l’emplacement de la station carburant, etc.
Pour le moins dans le jeu. Il faut absolument respecter cette règle. Lorsque les embranchements deviennent compliqués, placer les signaux aux bons emplacements et dans le bon sens devient vite un véritable casse-tête. Faire rouler ces trains toujours dans le bon sens aide à ne pas se perdre. De plus les sémaphores se placent sur la droite de la voie ferrée, càd à l’extérieur d’une voie double. .
On peut évidemment opter pour une circulation à gauche. Mais il faut alors s’y tenir. Et savoir que les sémaphores se retrouveront au milieu d’une double voie. Ce qui n’aide pas à la clarté.
Lorsqu’on débute le réseau ferroviaire, il faut fixer la longueur maximale d’un convoi. La principale cause des blocages est directement causée par des trains trop longs qui ne tiennent pas dans la zone délimitée par deux sémaphores.
Construire un réseau revient à relier des gares entre elles. Nous disposons pour cela de la ligne simple uni- ou bidirectionnelle ou de deux lignes parallèles à sens unique opposé. Pour les relier, nous disposons de l’embranchement en Y. Pour que cela fonctionne nous n’avons pas besoin de plus. Il suffit de savoir utiliser ces éléments et de respecter leurs règles d’utilisation.
A partir de la version 7.4, nous pouvons “chaîner” les sémaphores. De mon avis, cela complexifie inutilement. Si nos sémaphores sont rigoureusement placés, il n’est pas nécessaire de lier les sémaphores, voire il est dangereux de le faire, ne serait-ce que parce que la lecture du circuit, quel sémaphore suit quel autre, devient rapidement impossible.
Dernier point: On peut voir ici et là dans les guides et autres tutoriels des intersections de voies en croix. Je déconseille vivement de le faire. Outre que les ordres d’ouverture/fermeture ne se transmettent visiblement pas correctement, le circuit devient très vite illisible, d’autant plus du fait du “chaînage” des sémaphores.
Par exemple, lorsqu’un embranchement intervient, il ne faut pas mélanger les genres. Un embranchements de deux lignes parallèles doit ne passer que par des lignes parallèles.
Voici un exemple où deux voies parallèles au nord desservent quatre lignes simples au sud. Les trains doivent pouvoir se rendre sur les quatre lignes simples, depuis les lignes parallèles, et vice-versa.
Ci-contre à droite j’avais mis en place quatre intersections en croisées en X ! Malgré cela, j’étais incapable de respecter la règle des trains qui circulent à gauche. Pour que la ligne bleue desserve une des lignes simples, elle devait circuler à droite (en rouge) quand elle aurait dû rester sur la portion jaune. Mais pour y arriver, j’aurais dû ajouter un cinquième croisement X. Heureusement la place manquait….
Faute d ‘avoir été rigoureux, je m’y perdais avec, à la clef, des blocages en cascades. Lorsque je corrigeais un signal, c’était un autre signal qui bloquait plus ♥♥♥♥ la circulation. L’ajout d’une nouveau train relevait du casse-tête, ne me souvenant pas du sens des lignes.
A gauche, la même partie du réseau, mais refaite en respectant les consignes. Il n’y a plus qu’un croisement en X et deux en Y. Les deux lignes parallèles respectent la règle de la circulation à gauche. Les trains montant vers le Nord, en bleu clair, circulent à gauche sur la carte et ceux qui descendent, en bleu foncé, à droite sur la carte mais à gauche de le sens de leur marche.
Toutefois il reste un souci. Si la règles de circulation à gauche logiquement ne s’applique pas aux les lignes bidirectionnelles, la ligne bidirectionnelle doit offrir deux voies de croisement dès que plusieurs trains l’emprunte. Or dans mon réseau les deux tronçons en rouge sont partagées par les trois lignes bidirectionnelles situées au sud aussi bien pour les trains allant vers le nord que ceux partant au sud. Gérer correctement les signaux devient problématiques et les engorgements seront inévitables.
C’est pourquoi, à défaut de lignes de croisement (pour cela il aurait fallu allonger les tronçons en rouge), j’ai procédé à deux embranchements latéraux (l’embranchement de gauche est mis en évidence par un fond violet). Un chapitre plus bas est consacré aux embranchements).
Le résultat est satisfaisant. A l’exception inévitable des croisements (rouge), les trains d’une même voie circulent tous dans la même direction. Il n’y a plus de collisions frontales. On peut donc démultiplier le nombre de convois sur chaque ligne.
Par contre pour un embranchement latél, je n’ai pas respecté la règle de circulation à gauche. Caramba!
Définitions
Le signal est le composant qui gère l’ouverture ou la fermeture de la voie. Il est composé d’au moins un sémaphore qui régule la circulation dans le sens de la marche mais “regarde” à contresens. Il s’occupe donc du tronçon qui suit le signal dans le sens de marche. Il est situé à gauche, toujours dans le sens de la marche.
L’éventuel second sémaphore s’occupe du tronçon qui précède le signal dans le sens de la marche. Il est situé à droite dans le sens de la marche.
Dans le cas où le signale ne contient qu’un seul sémaphore, la voie est à sens unique. Ce sémaphore est celui de gauche. Il s’occupe donc du tronçon à venir.
Le sémaphore est à droite du train qui circule conformément à la circulation du train qui se fait à droite. Attention, dans les premières version, le jeu étant slovène, la circulation se faisait à gauche.
Le tronçon ou la section d’une ligne ou d’une voie est la partie de la ligne qui peut-être, à un moment donné, ouverte ou fermée.
Dans le guide, j’utiliserai indistinctement tronçon ou section, et ligne ou voie.
Fonctionnement
Le signal a pour fonction de fermer ou d’ouvrir le tronçon de ligne qui le précède ou qui le suit.
Pour ce faire, le signal procède selon la séquence suivante:
- Le tronçon est libre, y compris les sections qui précède et suive respectivement. Les deux sémaphores sont ouverts.
Cette séquence n’est pas automatiquement présente, dans la mesure où un train peut occuper la tronçon précédent le signal et se mettre en attente. Dans ce cas, le signal passe à la séquence suivante.
- Le tronçon précédent est occupé, un train arrive. Le sémaphore optionnel, à droite, marque que le tronçon arrivant est fermé.
- Le train franchit le signal. Le tronçon arrivant et le suivant sont fermés, occupés par le train.
- Le train a dépassé le signal. Le tronçon précédant est libre. Le suivant reste fermé.
Après la 4ème séquence, le système revient soit à la première, si aucun autre train n’est arrivé, soit la deuxième séquence prête à traiter le train arrivant. Ce qui revient à dire que le signal suit systématiquement au moins les trois dernières séquences.
Le signal en sens unique ne comporte qu’un sémaphore.
Si le signal ouvre ou ferme le tronçon qui précède, le sémaphore indique l’état du tronçon qui suit.
Ci-après, deux signaux (quatre sémaphores) démarquent un tronçon. Cette configuration n’a évidemment qu’un but démonstratif. Elle illustre que les sémaphores suivent les séquences décrites ci-dessus.
Lorsqu’il est traversé, le signal ferme le tronçon qui le suit. Un train à droite arrive. Le signal de droite change, indiquant que le tronçon de droite est fermé.
Le train traverse le signal de droite. Le tronçon est fermé. Le signal de droite ferme son sémaphore du sens du trajet et synchronise du signal de gauche en ferme le signal en contresens.
Le train dépasse le signal de droite. Le tronçon à droite est maintenant libre. Le sémaphore du signal de droite à contresens est maintenant libre.
L’opération se répète dans la même séquence pour le signal de gauche.
- Approche du slgnal -> tronçon “arrivant” occupé-> Fermeture du sémaphore à contresens
- Franchissement du signal -> les deux tronçons occupés -> Fermeture du sémaphore dans le sens
- Dépassement du signal: tronçon “arrivant” libre -> ouverture du sémaphore à contre sens.
Rôle des tronçons et blocage
Comprendre la fonction du tronçon est primordial pour éviter des blocages de train.
Le tronçon est étroitement lié au signal. Sans signal, pas de tronçon. Et un signal crée automatiquement deux tronçons.
Ci-après un réseau trivial sans signal, donc sans tronçon. Le réseau est volontairement élémentaire afin de mieux saisir l’importance des tronçons. Mais le problème relevé se retrouve dans les réseaux développés.
Un signal est posé, à gauche. Celui-ci va gérer deux tronçons.
Les deux tronçons sont ouverts pour le signal.
Cette configuration pose toutefois problème. Les deux tronçons considérés par le signal ne forment concrètement qu’un seul et même tronçon. Ce qui signifie que le tronçon en amont et an aval du signal aura toujours le même état: ouvert ou fermé. Ce qui altère le fonctionnement du signal. La dernière séquence, qui consiste à fermer le tronçon qui suit le signal et ouvrir celui qui précède est impossible puisqu’il s’agit du même tronçon. Il ne s’agit pas d’un bug car nous devons pouvoir poser notre premier signal.
Aussi lorsque nous placerons un signal celui-ci considérera aléatoirement que les tronçons seront soit ouverts, soit fermés.
Si nous avons de la chance, les tronçons seront fermés et avec le blocage du train arrivant au signal.
Par contre, si nous n’avons pas de chance, le signal considérera les tronçons ouverts. Nous pourrons alors aisément faire circuler un train, deux, trois et ainsi de suite.
Le problème surviendra alors lorsque nous déplacerons le signal ( (suppression puis ajout) qui considérera alors les tronçons comme fermés. Le premier train arrivé au signal va attendre sagement mais indéfiniment l’ouverture du signal. Mais le train suivant va rebrousser chemin jusqu’à la rencontre du trans suivant. Les deux trains vont alors chacun changer de direction et ainsi de suite. A la clef une belle pagaille.
Pour palier à ce souci, il faut scinder le tronçon problématique en deux, soit un le coupant physiquement (rupture d’une voie), soit en ajoutant un deuxième signal. On peut aussi transformer la ligne en sens unique. Mais dans ce dernier cas, nous ferons que repousser le problème.
Dans le cas d’un circuit trivial comme celui-ci, la détection et la résolution du problème est simple. Mais dans un circuit complexe le compréhension du problème est vite ardue et l’on a tôt fait d’accuser le bug.
Ligne unidirectionnelle
Attention, ce paragraphe a été fait avec la circulation à gauche (ancienne version du jeu).
Partager une ligne simple en plusieurs tronçons est utile lorsque l’on fait circuler plusieurs convois dans une même direction sur longue ligne sans faire attendre chaque convoi que la ligne entière soit parcourue par un convoi. Il faudra au moins autant de sections qu’il y a de convois. Evidemment les convois doivent retourner par une autre voie.
Une section de ligne est la portion de ligne entre deux signaux, composés d’un ou de deux sémaphores. Normalement cette section a un seul sens. Elle sera donc bordée d’une part d’un signal “sens unique”, à gauche dans l’exemple, et d’un signal normal à l’autre bout.
Lorsque les signaux sont posés, les trois feux sont ouverts, signifiant que la section ainsi que celles qui suivent ou précèdent sont libres.
Le sémaphore à droite, à contre-sens, se ferme indiquant que la section à sa droite est fermée. Ce qu’atteste le train qui arrive.
Le sémaphore à droite, dans le sens de la marche, se ferme dès que le train le franchit. L’autre sémaphore, en contre sens, reste fermé car le tronçon à droit n’est pas encore libéré.
Le sémaphore de droite, à contresens, est ouvert. Le train a libéré le tronçon à droite.
Le train franchit le sémaphore de gauche. Les deux sémaphores dans le sens de la marche restent fermés car les tronçons du centre entre les signaux et celui de gauche ne sont pas encore libérés.
Le trains a dépassé le signal de gauche. Le sémaphore de droite dans le sens de la marche libère le tronçon entre les deux sémaphores.
Double ligne unidirectionnelle en direction opposée
Attention, ce paragraphe a été fait avec la circulation à gauche (ancienne version du jeu).
Ci-dessous une double ligne parallèle, chacune dans une direction.
Le même principe est appliqué: un signal gérant la disponibilité des deux sections de lignes qui suivent ou précèdent le signal.
L’ensemble de voies, aussi bien à gauche ou à droite des deux tronçons centraux parallèles, ne forment que deux sections, l’une à gauche, l’autre à droite.
Les trois sémaphores sont fermés. En effet la section centrale du “retour” est fermée et les voies tout à gauche ne forment qu’une seule section qui est occupée. Tant que le convoi occupe cette section, elle reste entièrement fermée. La partie suivante du guide traitant des embranchements montrent comment découper cette section.
Branchement
Je recommande fortement de n’utiliser que les aiguillages en Y, qu’il faut évidemment composer avec d’autres. Comme je l’explique plus bas, les croisement en traversée ne sont pas fiables, en l’état.
Pour l’intersection de deux lignes parallèles, on utilise 4 aiguillages avec 4 sémaphores comme suit.
Evidemment les voies arrivantes et partantes devront être complétées des sémaphores adéquats.
La séquence d’ouverture et de fermeture des voies est la suivante:
Un train arrive sur la gauche. Aucun tronçon n’est fermé.
Il part à droite et laisse les autres tronçons ouverts.
Un train arrive à droite en bas.
En s’engageant, il verrouille très logiquement la voie de la droite vers la gauche d’en haut et celle de droite qui va vers la gauche. Mais il laisse libre la voie de gauche qui descend.
Il quitte vers la gauche. La voie empruntée ainsi que celles déjà fermées restent fermées.
Un train arrive cette fois de la droite et va vers la gauche. Les 2 voies allant vers la droite sont donc fermées.
Reste à analyser la voie de droite du haut. Un train qui y arrive ne peut que se rendre à gauche.
La voie qui va de gauche à droite sera fermée. Mais celle qui descend de gauche vers la droite restera ouverte.
La séquence est parfaite, n’offrant aucune faille. C’est pourquoi je l’utilise.
Les traversées permettent le croisement à niveau d’une voie par une autre, sans qu’il ne soit possible d’agir sur l’orientation des trains.
Qu’elles soient en X ou en Y, je déconseille de les utiliser car, en l’état, l’ouverture ou la fermeture des voies adjacentes n’est pas satisfaisante.
Ici un train arrivant sur la voie de gauche. Celui-ci peut monter, descendre ou aller tout droit.
Logiquement les voies encadrées en bleu sont donc fermées. Mais pourquoi celle en rouge??? Le convoi sur cette ligne poursuit son trajet vers sa gauche, ligne du haut, ne coupant jamais le train arrivant de la gauche, ligne du bas.
Le problème aussi est que le comportement n’est pas toujours le même. Si les traversées ferment abusivement des voies, elles en laissent d’autres ouvertes tout aussi abusivement.
Le train de droite va vers la gauche. Il peut rester à niveau ou descendre en coupant la voie du haut qui va de droite vers la gauche . C’est pourquoi la voie cerclée en rouge devrait être fermée.
Il semble que les aiguillages sous forme de traversée ne savent pas distinguer le sens de voies qui les concernent et les ferment (ou plus bizarrement les laissent ouvertes) sans distinguo.
Aussi leur utilisation pose-t-elle de sérieux problèmes, le plus ennuyeux étant que les blocages n’arrivent pas forcément tout de suite. A faible circulation la probabilité d’un blocage ou d’un téléscopage est faible. Par contre lorsque la circulation est importante, les blocages deviennent fréquents. Déterminer alors qui a mis le “boxon” n’est plu une mince affaire. Surtout si, confiants, nous avons augmenté la fréquence de nos lignes.
L’idée du chaînage est d’utiliser les signaux dit avancés. Le problème majeur cependant est qu’un chaînage est lié à la notion d’itinéraire. Chaque itinéraire peut avoir son propre enchaînement. Or, faute de tenir compte de l’itinéraire d’un convoi, le jeu associe à un signal avancé tous les itinéraires possibles du signal avancé, avec les conséquences suivantes:
- La première conséquence est une visibilité difficile, si ce n’est impossible.
- Ensuite le signal avancé peut dérouter un convoi vers un itinéraire du moment que celui-ci est ouvert. On peut donc avoir des convois qui, pour aller d’Est ou Ouest passer par le nord et le Sud. Ce que nous ne souhaitons pas forcément. Or nous ne possédons pas, comme dans Train Fever, le point de passage pour fixer un itinéraire.
- Last but not least, le déroutage ne fonctionne pas toujours.
Ci-contre un exemple.
Un convoi emprunte l’itinéraire du point bleu foncé vers le clair. Comme l’itinéraire est sur une ligne qui traverse plusieurs aiguillages. Pour ne pas bloquer le convoi au milieu du parcours et créer ainsi un blocage avec un train empruntant une même section du parcours, un “chaînage” a ici toute son utilité. Un convoi ne peut s’engager que si le tronçon est libre dans sa totalité, du permier au dernier sémphpore..J’ai donc placé un “chaînage” de sémaphores le long du chemin critique.
Apparemment cela fonctionne comme souhaité. Le trajet attendu est fermé et, à l’exception du premier, les sémaphores sont rouges, car un train, qu’on verra arriver, est déjà sur la ligne.
C’est ce premier signal qui pose d’abord problème. Il est bleu, et non rouge. Il laisse donc supposer une alternative au trajet fermé. Hors, on ne le voit pas sur les copies d’écran, mais l’alternative proposée (point vert foncé) ne mène pas à la gare de destination initialement prévue. Il mène à un cul de sac. Très ennuyeux.
Mais un autre scénario va se défouler. Dans la copie d’écran suivante, nous voyons arriver trois convois, le a, le b et le c. Le (a) est celui qui nous intéresse car il emprunte le parcours “chaîné” bleu. Le (b) se rend à une gare en croisant notre parcours. Bien qu’il utilise une traversée en X qui peut poser problème, là en l’occurrence ce n’est pas le cas. Le (c) partage le trajet du (a) jusqu’à l’aiguillage que va atteindre le (a). Arrivé à cet aiguillage, le (c) passera par la droite dans le sens de la marche. Etant déjà sur la portion de ligne partagée, il est prioritaire. Nous ne le voyons pas, mais le tronçon qu’il traverse contient un signal de chaînage à son entrée. Le parcours dans son sens est ouvert! Il va donc s’acheminer vers l’aiguillage où est arrêté le (a) pour poursuivre sur la droite de cet aiguillage, dans le sens de sa marche. C’est parfait.
Enfin, ça aurait dû être parfait.
Arrivé au signal bleu, le trains (a) ralentit, voire s’immobilise, comme attendu et le ((b) entre sur la traversée en X. Il ferme logiquement les tronçons qui le coupent, donc le parcours du (c) (flèche jaune).
Remarquons qu’il ouvre logiquement un nouveau trajet alternatif au train (a) (flèche rouge). Jusque là, tout roule.
Le train (a), ayant un signal bleu, se met logiquement en branle (le signal passe au rouge), je l’imagine, vers une destination alternative verte.
Mais, contre toute attente, le train (a) file sur la seule voie fermée…..
Connexion entre trois gares desservies pas 11 convois
Ce chapitre est un exemple où trois gares ont été reliées, desservies par 11 trains . 4 convois desservent les trois gares, 4 relient la gare de gauche à celle du centre, et 3 celle du centre à celle de droite.
Les convois circulent sans aucun blocage.
Qu’il desserve une gare, une ramification ou un embranchement, l’aiguillage ainsi que sa signalisation auront la forme suivante.
La règle de base est que la circulation à droite doit être vérifiée dans tous les cas. Dans le cas d’une gare, un convoi n’emprunte jamais la voie de gauche de la gare, même si la voie est disponible pour un arrêt. Le signal avancé ne sert donc pas à “choisir” une voie. Un convoi ne change de voie que s’il change se sens, en d’autre terme quand il rebrousse chemin. C’est ce que montre le réseau. Arrivé au point (1), le convoi peut retrousser chemin ou le continuer. On peut aussi faire rebrousser le convoi sur la voie du haut en inversant le croisement en Y.
Par contre on ne peut pas faire rebrousser les convois sur les deux voies pour profiter du fait qu’une des deux voies soient libres. Pour cela on utiliserait un croisement en X en laissant au signal avancé de soin de “choisir” la voie libre. Comme dit précédemment les signaux avancés ne sont pas fiables, en particulier lorsqu’ils proposent les routes possibles (signal bleu). Comme le montre l’écran ci-après, leur utilisation amène très rapidement des télescopages. Les deux trains abordant la gare, l’un par la gauche et l’autre par la droite ont passé leur signal avancé dont l’un aurait dû être fermé. Qu’ils se dirigent vers la voie de gare du haut ou du bas, le blocage (télescopage) est maintenant inévitable!
Toutefois, l’usage d’un signal avancé est rendu nécessaire suite à l’interdiction de la pose de signaux sur une voie de branchement. Cet usage est limité à la fonction de chaînage, et ceci en la limitant à un seul chaînage.
Un signal sur la voie de branchement (point rouge) permet de séparer les deux voies de circulation du secteur (cadre noir). Si l’ensemble du secteur est fermé par une voie, alors, évidemment, l’autre voie n’est plus disponible. Si cela est correct pour les voies gérées par un signal standard dans notre schéma puisque le convoi l’ayant dépassé peut bloquer la voie dans l’autre sens du fait du croisement en Y qui lie les deux voies, pour le convoi dépassant le signal avancé, ne pouvant passer sur l’autre voie, il n’y a donc pas de raison que le secteur soit bloqué. C’est pourquoi il est nécessaire d’utiliser un signal avancé. Le convoi ne peut entrer dans le secteur que si le signal suivant est libre. Ainsi ne s’arrêtera-t-il pas au milieu du secteur, bloquant inadéquatement ainsi la voie parallèle en sens inverse. Ce qui peut rapidement amener un blocage de la double voie.