Chapitre 12 Indicateur horaire

Mode horaire


12.1 Présentation


Le concept d'horaire ne remplace pas la définition de l'activité, mais constitue une manière alternative de définir à la fois les trains contrôlés par les joueurs et les trains contrôlés par ordinateur (IA et statique).


Dans une activité, le train de joueurs est défini explicitement et tous les trains AI sont définis dans une définition de trafic. Les trains statiques sont définis séparément.


Dans un horaire, tous les trains sont définis de la même manière. Au démarrage d'un horaire, le train joueur requis est sélectionné dans la liste des trains disponibles. Dans la définition de l'horaire lui-même, aucune distinction n'est faite entre les trains en circulation - n'importe lequel des trains en circulation peut être sélectionné comme train joueur, et s'il n'est pas sélectionné en tant que tel, il sera exécuté comme des trains AI. Les trains statiques sont également définis de la même manière mais ne peuvent pas être sélectionnés comme train du joueur.


Par conséquent, le nombre d'"activités" différentes pouvant être jouées à l'aide d'un même fichier horaire est égal au nombre de trains définis dans l'horaire, moins les trains statiques.


Les aspects importants où l'utilisation d'éléments spécifiques de la RO ou du MSTS pour les horaires diffèrent considérablement de son utilisation dans une activité sont indiqués en gras.


Le développement du concept d'horaire est encore un travail en cours. Au fur et à mesure que les travaux se poursuivent, tous les éléments sont encore susceptibles de changer.


12.2 Général


12.2.1 Définition des données


Les données horaires sont définies dans une feuille de calcul et enregistrées sous forme de fichier *.csv (fichier séparé par des caractères) au format Uni-code. Comme caractère de séparation, vous devez utiliser soit ‘,’ (virgule), ‘;’ (point-virgule) ou le caractère de tabulation.


Ne sélectionnez pas d'espace comme caractère de séparation.


Comme ';', ',' ou tabulation sont des caractères de séparation possibles, ces symboles ne doivent pas être utilisés n'importe où dans les données réelles. L'encadrement du texte par des guillemets (simples ou doubles) n'a aucun effet. De plus, le caractère « # » ne doit pas être utilisé dans les noms de train, car il s'agit du préfixe des mots réservés dans l'horaire.


12.2.2 Structure du fichier


Les fichiers *.csv enregistrés doivent être renommés avec l'extension *.timetable-or. Les fichiers horaires doivent être placés dans un sous-répertoire nommé OpenRails créé dans le répertoire Activités de l'itinéraire.


12.2.3 Groupes horaires


Plusieurs horaires peuvent être chargés simultanément à l'aide de fichiers de groupe d'horaires. Un fichier de groupe est un fichier texte brut portant l'extension .*.timetablelist-or, qui se trouve également dans le sous-répertoire OpenRails du répertoire Activités de l'itinéraire et qui contient les noms de fichier d'un ou plusieurs fichiers d'horaires répertoriés sur chaque ligne. La première ligne peut également commencer par un symbole #, auquel cas le texte qui suit sera utilisé comme nom d'affichage du groupe d'horaires dans le menu Open Rails.


Voici un exemple de fichier de groupe horaire :


#Tous les services du corridor nord-est - ven. août 2018

Amtrak - ven. août 2018.horaire-ou

Ligne MARC Camden - ven. août 2018.horaire-ou

MARC Penn Line - ven. août 2018.horaire-ou

SEPTA Wilmington-Newark - ven. août 2018.horaire-ou


12.2.4 Fichiers de pool


Les pools peuvent être utilisés pour stocker les trains hors service selon le principe du premier arrivé, premier servi, sans qu'il soit nécessaire de programmer manuellement les voies d'accès et de sortie des voies de stockage. Les fichiers de pool sont situés dans le même répertoire OpenRails que les autres fichiers d'horaires. Ils ont l'extension .pool-or ou .turntable-or.


12.2.5 Fichiers météo


Les fichiers météo, une fonctionnalité exclusive au mode horaire, orchestrent les changements de la couverture nuageuse, des précipitations et des facteurs de visibilité au cours de la journée horaire. Ils sont situés dans un sous-répertoire spécial WeatherFiles du dossier de la route et ils ont l'extension de fichier *.weather-or. Le lecteur active un fichier météo en le sélectionnant dans la section mode horaire du menu principal ; cela remplace la condition météo statique.


12.2.6 Sélection de fichier et de train


Au démarrage d'une exécution horaire, le mode Horaire est sélectionné dans le menu. Le fichier d'horaires ou le fichier de groupe d'horaires souhaité doit ensuite être sélectionné dans l'affichage de l'ensemble d'horaires.


Après avoir sélectionné l'horaire requis, une liste de tous les trains contenus dans cet horaire s'affiche et le train requis peut être sélectionné.


La saison et la météo (statique ou définie par fichier) peuvent également être sélectionnées ; ceux-ci ne sont pas prédéfinis dans la définition de l'horaire.


12.3 Définition des horaires


12.3.1 Général


Un horaire se compose d'une liste de trains et, par train, de l'horaire requis de ces trains. Le minutage peut être limité à l'heure de début ou il peut également inclure des temps intermédiaires.


À l'heure actuelle, les horaires intermédiaires sont limités aux emplacements de «plate-forme» tels que créés à l'aide de l'éditeur d'itinéraire MSTS.


Chaque colonne de la feuille de calcul contient des données pour un train et chaque ligne représente un emplacement. Une cellule à l'intersection d'un train et d'un emplacement contient les données de synchronisation pour ce train particulier à cet emplacement.


Des lignes et des colonnes spéciales peuvent être définies pour des informations générales ou des commandes de contrôle.


La première ligne de chaque colonne contient la définition du train.


La première colonne de chaque ligne contient la définition de l'emplacement.


La cellule à l'intersection de la première ligne et de la première colonne doit être vide.


Ce paragraphe n'énumère que les grandes lignes, une description plus détaillée suivra dans les paragraphes suivants.


12.3.2 Définitions des colonnes


Une colonne est définie par le contenu de la première ligne.


Par défaut, la première ligne définit le nom du train.


Des colonnes spéciales peuvent être définies à l'aide de la syntaxe suivante :


• #commentaire : la colonne ne contient que des commentaires et est ignorée lors de la lecture de l'emploi du temps.


• <vide> : la colonne est l'extension de la colonne précédente.


12.3.3 Définitions des lignes


Une ligne est définie par le contenu de la première colonne.


Par défaut, la première colonne définit l'emplacement de l'arrêt.


Des colonnes spéciales peuvent être définies à l'aide de la syntaxe suivante :


• #comment : la ligne ne contient que des commentaires et est ignorée lors de la lecture de l'horaire


• <vide> : la ligne est l'extension de la ligne du dessus


• #path : définit le sillon


• #consist : définit la composition du train


• #start : définit l'heure à laquelle le train est démarré


• #note : définit les notes générales et les commandes de contrôle de démarrage pour ce train


• #dispose : définit la manière dont le train est géré après sa fin


• #speed, #speedmph ou #speedkph : définit le comportement de la vitesse du train en mètres par seconde, miles par heure ou kilomètres par heure, respectivement ; un seul type de ligne de vitesse peut être utilisé dans un même fichier horaire


• #restartdelay : définit des retards aléatoires pour un train


• #briefing : la ligne contient le texte d'information pour chaque train et est ignorée lors de la lecture de l'horaire


12.3.4 Détails de chronométrage


Chaque cellule située à l'intersection d'une colonne de train et d'une ligne d'emplacement peut contenir des détails de chronométrage pour ce train à cet emplacement. Les commandes de minutage peuvent être définies aux endroits où le train s'arrête, mais peuvent également être définies pour les endroits où aucun minutage n'est inséré lorsque le train passe par cet endroit sans s'arrêter.


12.4 Détails des données des horaires


12.4.1 Description de l'horaire


Bien que les lignes et les colonnes #commentaires soient généralement ignorées, le contenu de la cellule à l'intersection de la première ligne #commentaire et de la première colonne #commentaire est utilisé comme description de l'horaire. Cela apparaît comme le nom de l'horaire dans le menu Open Rails et est utilisé pour référencer les trains d'autres horaires.


12.4.2 Détails des trains


Le nom du train tel que défini dans la première ligne doit être unique pour chaque train dans un fichier horaire. Ce nom est également utilisé lors de la référence à ce train dans une commande de train ; voir les détails ci-dessous.


La séquence des trains n'a pas d'importance.


12.4.3 Détails de l'emplacement


À l'heure actuelle, les emplacements possibles sont limités aux "plates-formes" telles que définies dans l'éditeur d'itinéraire MSTS.


Chaque emplacement doit être défini sur le « Nom de la station » tel que défini dans les définitions de la plate-forme.


Le nom utilisé dans l'horaire doit correspondre exactement au nom utilisé dans la définition de l'itinéraire (fichier *.tdb), sinon l'emplacement est introuvable et ne peut donc pas être traité.


De plus, chaque nom de lieu doit être unique, sinon sa position dans le sillon pourrait être ambiguë.


La séquence des emplacements n'est pas importante, car l'ordre dans lequel les gares sont traversées par un train est défini dans le sillon de ce train. Pour la même raison, la trajectoire d'un train peut être configurée pour circuler entre certains emplacements ou être configurée pour contourner certaines gares.


12.4.4 Détails de chronométrage


Chaque cellule à une intersection de train et d'emplacement peut contenir les détails de chronométrage de ce train à cet emplacement.


Les heures sont définies au format HH:mm et l'horloge de 24 heures doit être utilisée.


Si une seule heure est insérée, elle est prise comme heure de départ (sauf à l'emplacement final).


Si les heures d'arrivée et de départ doivent être définies, elles doivent être séparées par '-'.


Des commandes de synchronisation supplémentaires peuvent être incluses. De telles commandes peuvent également être définies pour des endroits où le train ne s'arrête pas et n'a donc pas de détails de chronométrage, mais le train doit passer par cet endroit pour que les commandes soient efficaces.


Bien qu'un emplacement lui-même puisse être défini plus d'une fois dans un horaire, il n'est pas possible de définir plus d'une fois les détails des horaires des trains pour un emplacement. Si un train suit un itinéraire qui passe par le même endroit plus d'une fois, le train doit être « scindé » en entrées de train distinctes.


• #path row.


Cependant, les points d'attente ne doivent pas être définis dans les sillons à utiliser dans les horaires car le traitement des points d'attente n'est pas pris en charge dans le concept d'horaire. Les points d'attente à l'intérieur d'un horaire doivent être définis à l'aide des commandes de contrôle spécifiques.


L'instruction #path peut prendre un qualificatif : /binary.


Les grands horaires peuvent nécessiter de nombreux chemins, et le chargement de ces chemins peut prendre un temps considérable (plusieurs minutes). Pour réduire ce temps de chargement, les chemins peuvent être stockés dans un format binaire traité. Ce format est le même que celui utilisé dans la commande 'save'. Notez que les informations de chemin binaire ne sont pas directement accessibles par l'utilisateur, que ce soit en lecture ou en écriture. Lorsque /binary est défini, le programme vérifie si un chemin binaire existe. Si tel est le cas, il lira ce chemin. Si ce n'est pas le cas, il lira le chemin "normal", puis le stockera en tant que fichier binaire pour une utilisation future. Les chemins binaires sont stockés dans un sous-répertoire nommé OpenRails qui doit être créé dans le répertoire Paths de la route.


Remarque : si un chemin ou l'itinéraire est modifié, les données binaires seront obsolètes. Si tel est le cas, il est supprimé et recréé automatiquement lorsque l'utilisateur démarre la route.


• #consist row


La ligne #consist définit la composition utilisée pour ce train. Ce champ est obligatoire.


Cependant, si le train est exécuté comme un train AI et qu'il est "formé" à partir d'un autre train (voir ci-dessous), les informations de composition sont ignorées et le train utilise la composition du train à partir duquel il a été formé.


Pour le train du joueur, la composition est toujours utilisée même si le train est formé d'un autre train. La définition de composition doit être un fichier *.con tel que défini par l'éditeur d'activité MSTS ou par l'éditeur de composition TSRE5, et doit être stocké dans le répertoire de composition défini.


Une syntaxe plus complexe de la définition de consistance est également possible, comme décrit ci-dessous.


Cela permet à une définition de composition d'être non seulement une seule chaîne faisant directement référence à un fichier, mais une combinaison de chaînes, avec la possibilité d'utiliser (une partie de) la composition à l'envers.


La syntaxe générale est :


consist [$reverse] [+ consists [$reverse] [+ ...] ]


Exemple : un train tiré par une loco, utilisant le même ensemble de voitures, circulant dans les deux sens. Deux trains sont définis : c_loco et c_wagons. Les définitions de composition qui peuvent maintenant être utilisées sont :


c_loco + c_wagons, and pour reverse:


c_loco $reverse + c_wagons $reverse


Veuillez noter que $reverse s'applique toujours uniquement au sous-composé avec lequel il est défini, et non au composé combiné complet.


Si ce train a parfois des wagons supplémentaires, par ex. aux heures de pointe, les compositions peuvent être définies comme suit (avec c_add la définition des wagons supplémentaires) :


c_loco + c_wagons + c_add, and pour reverse:


c_loco $reverse + c_add $reverse + c_wagons $reverse


Clairement, cela peut économiser sur la définition de la composition totale requise, et en particulier évite la tâche fastidieuse d'avoir à définir des compositions « inverses ». Lorsque vous utilisez plusieurs unités, cela est encore plus utile.


Supposons qu'il y ait deux ensembles d'unités multiples, fonctionnant soit comme des trains simples, soit combinés. Normalement, six compositions différentes seraient nécessaires pour couvrir tous les trains, mais maintenant seulement deux suffiront : set_a et


set_b. Les différentes combinaisons sont :


set_a, reverse set_a $reverse.


set_b, reverse set_b $reverse.


set_a + set_b, reverse set_b $reverse + set_a $reverse.


Les chaînes composées qui contiennent '+' ou '$' peuvent être utilisées dans les horaires mais doivent être entourées de < >. Par exemple :


<loco+wagon>+<$loco+wagon>$inverse


• #start row


La ligne #start définit l'heure à laquelle le train est démarré. Il doit être défini comme HH:mm et l'horloge de 24 heures doit être utilisée. Ce champ est obligatoire.


Utilisation de l'heure de départ des trains AI :


– Lorsqu'un train est formé à partir d'un autre train et que cet autre train est inclus pour circuler dans l'horaire, l'heure définie dans #start n'est utilisée que pour définir quand le train devient actif.


Utilisation de l'heure de début pour l'entraînement des joueurs :


– L'heure définie dans #start est normalement utilisée comme heure de début de l'« activité » de l'horaire.


Si un train est formé à partir d'un autre train et que ce train est inscrit à l'horaire, alors si ce train est retardé et n'est pas arrivé avant l'heure de départ définie, le départ de ce train est également retardé jusqu'au train dont il est issu. formé est arrivé. Cela s'applique à la fois à l'IA et à l'entraînement des joueurs. Cela signifie que le début de l'activité du lecteur peut être retardé.


Le champ #start accepte également un certain nombre de commandes de démarrage.


Pour plus de détails sur le démarrage et la circulation des trains vers minuit, voir le paragraphe ci-dessous.


• #note row


La ligne #note peut être utilisée pour définir des commandes de note qui ne sont pas liées à l'emplacement mais s'appliquent au parcours complet du train. Il peut également être utilisé pour définir des commandes pour les trains qui ne s'arrêtent pas ou ne passent par aucun emplacement défini. Cette ligne est facultative.


• #dispose row


La ligne #dispose définit ce qui arrive à un train AI lorsqu'il a atteint la fin de sa course, c'est-à-dire qu'il a atteint la fin du chemin défini. Les informations de la ligne #dispose peuvent indiquer si le train doit être transformé en un autre train et, si oui, comment et où. Pour plus de détails, voir les commandes dispose comme décrit plus bas.


Cette ligne est facultative et si elle est incluse, l'utilisation par train est également facultative. Si la ligne n'est pas incluse ou si le champ n'est pas défini pour un train particulier, le train est retiré de l'activité après sa fin.


La ligne #dispose n'affecte pas actuellement la fin de la course pour le train du joueur.


• #speed row


Ce champ facultatif définit la vitesse maximale des trains, ce qui peut limiter le train à une vitesse inférieure, ce qui serait autrement autorisé. Notez que toute valeur définie ici ne sera jamais appliquée si elle dépasse la vitesse maximale définie par les speedposts ou les signaux, ou définie dans le fichier de composition.


Si spécifié, une seule ligne #speed (m/s), #speedkph ou #speedmph peut être présente dans un même fichier horaire.


Cette ligne accepte également un certain nombre de commandes de vitesse.


• #restartdelay row


Des retards sont appliqués lors du redémarrage d'un train à partir d'un arrêt, par ex. à une station ou à un signal. Des retards aléatoires par défaut sont définis pour chaque train. Les valeurs par défaut peuvent éventuellement être remplacées à l'aide de commandes de délai dans le champ #restartdelay.


Le retard aléatoire est calculé comme partie fixe + 𝑅𝑎𝑛𝑑𝑜𝑚(partie variable), où toutes les valeurs sont en secondes.


• #briefing row


La ligne #briefing est facultative et contient du texte qui décrit l'exploitation du train pour l'utilisateur. Ce texte apparaît dans la fenêtre principale Open Rails avec la description de l'itinéraire et de la locomotive.


L'utilisateur peut également le voir en jeu dans l'onglet Briefing de la fenêtre d'aide (F1).


Une entrée similaire dans la colonne #comment fournit un texte qui décrit l'ensemble du calendrier. L'horaire ou le fichier ne permet pas aux champs de contenir des sauts de ligne, mais si des sauts de ligne HTML "<br>" sont insérés dans le champ #briefing, ils seront convertis en sauts de ligne.


12.4.7 Commandes de contrôle


Général


Les commandes de contrôle peuvent être définies pour contrôler le comportement et les actions du train et de la signalisation.


Syntaxe de commande


Toutes les commandes ont la même syntaxe de base. Une commande se compose de :


• Nom de la syntaxe : définit la commande de contrôle.


• Valeur de syntaxe : définissez la valeur liée à la commande. Toutes les commandes ne prennent pas une valeur.


• Qualificateurs de syntaxe : ajoute des informations supplémentaires à la commande. Toutes les commandes n'ont pas de qualificateurs. Certains qualificatifs peuvent être facultatifs mais d'autres peuvent être obligatoires, ou obligatoires uniquement en combinaison avec d'autres qualificatifs.


• Valeurs de qualificateur de syntaxe : un qualificateur peut nécessiter une valeur


Syntaxe de la commande :


$name = value /qualifier=value


Plusieurs valeurs peuvent être définies, séparées par "+". Notez que tous les qualificateurs s'appliquent toujours à toutes les valeurs.


Référence des trains


De nombreuses commandes nécessitent une référence à un autre train. Cette référence est le nom de l'autre train tel que défini dans la première ligne.


Si le train cible est dans un horaire séparé du même groupe d'horaires, la référence est sous la forme nom du train:description de l'horaire, où la description est le texte à l'intersection de la première ligne #commentaire et de la colonne #commentaire dans l'autre fichier horaire.


Commandes de poste


Les commandes de gare s'appliquent à tous les arrêts d'une rangée de gare donnée. Ils sont insérés directement après le nom de la station dans la première colonne.


$hold, $nohold et $forcehold


Si $hold est défini, il définit que le signal de sortie pour cet emplacement doit être maintenu au danger jusqu'à 2 minutes avant le départ du train.


Un signal de sortie est attribué à un quai si ce signal se trouve au-delà du marqueur de fin de quai (dans le sens de la marche), mais se trouve toujours dans le même nœud de voie - il ne doit donc pas y avoir de points, etc. entre le marqueur de quai et le signal .


Par défaut, le signal ne sera pas retenu.


$forcehold définira le premier signal au-delà de la plate-forme comme le signal "hold", même si ce signal n'est pas attribué à la plate-forme comme signal de sortie. Cela peut être utile à des endroits avec une disposition complexe où les signaux ne sont pas directement aux extrémités des quais, mais ne pas retenir les signaux pourrait entraîner un retard des autres trains.


$forcewait


Forcer le train à attendre si le signal suivant est en danger même si ce signal n'est pas reconnu comme signal de sortie pour ce quai.


$nowaitsignal


Normalement, si un train est arrêté à une gare et que le signal suivant est toujours en danger, le train ne partira pas. Mais, il y a des situations où cela devrait être annulé.


Certaines stations sont des stations de «ligne libre», c'est-à-dire qu'elles ne sont pas contrôlées par des signaux (généralement de petites haltes, sans interrupteurs). Le prochain signal est probablement un signal de bloc « normal » et peut être à une certaine distance de la station. Dans cette situation, le train n'a pas à attendre que ce signal soit dégagé pour partir.


Une autre situation concerne les trains de marchandises, les locomotives légères et le stock vide, qui n'attendent généralement pas non plus que le signal se dégage mais s'approchent du signal afin de prendre le moins de temps possible pour sortir de la gare.


$terminal


La commande $terminal modifie le calcul de la position d'arrêt et fait s'arrêter le train à l'extrémité terminale du quai. La question de savoir si le quai est vraiment un quai d'arrivée et à quelle extrémité il se termine est déterminée par une vérification du sillon du train.


Si le quai se trouve dans la première section du sillon d'un train, ou s'il n'y a pas de jonctions dans le chemin menant à la section qui contient le quai, on suppose que le train commence à un quai terminal et que la fin du train est placée à proximité au début de la plate-forme.


Si la plate-forme est dans la dernière section si le chemin ou s'il n'y a pas de jonctions au-delà de la section qui contient la plate-forme, on suppose que la plate-forme est à la fin du chemin du train et le train roulera jusqu'à près de la fin de la plate-forme dans son sens de déplacement.


Si aucune condition n'est remplie, on suppose qu'il ne s'agit pas d'une plate-forme terminale après tout, et la position d'arrêt normale est calculée.


L'option $terminal peut être définie pour une gare ou pour des trains individuels. S'il est défini pour une gare, il ne peut pas être annulé par un train.


Cependant, en raison de la logique décrite ci-dessus, si elle est définie pour une gare qui a à la fois des quais terminaux et des quais traversants, les trains avec des sillons continuant à travers ces quais auront les positions d'arrêt normales.


$closeupsignal


Définit un dégagement réduit à l'approche du signal pour maximiser l'utilisation de la longueur de plate-forme disponible.


$extendplatformtosignal


Parfois, le marqueur de plate-forme est placé à une certaine distance de l'extrémité réelle de la plate-forme où se trouve le signal, par ex. en cas d'aiguillages le long du quai. Normalement, cela entraînerait l'arrêt des trains loin de l'extrémité du quai, puis bloquerait les aiguillages vers l'arrière. Ce paramètre placera la position « fin de plate-forme » non pas à la position du marqueur de plate-forme mais juste devant la position du signal.


$restrictplatformtosignal


Parfois, le marqueur de quai est placé au-delà du signal de sortie de ce quai. Si le signal est en danger, le train s'arrêtera au signal et s'il s'agit d'un train long, cet arrêt ne sera pas considéré comme l'arrêt de la gare car le train n'a pas atteint la position d'arrêt de quai requise. Ce paramètre placera la position « fin de plate-forme » non pas à la position du marqueur de plate-forme mais juste devant la position du signal.


$stoptime


Syntax : $stoptime=n (n est le temps en secondes)


Définit l'heure d'arrêt par défaut requise sur cette plate-forme, en remplaçant la définition de l'heure d'arrêt définie dans la base de données des voies.


$closeup


Le train s'arrêtera à proximité d'un autre train déjà sur le quai. Ne peut être utilisé que si la commande de minutage $callon est également définie pour ce train.


$keepclear


Définit que la position d'arrêt doit être telle que la longueur de quai indiquée dans la commande doit être dégagée devant ou derrière le train. Cela peut être essentiel si un autre train doit être attaché ou si un autre train doit être amené sur le même quai.


Paramètres :


rear = <n> (n in meter)


L'emplacement de l'arrêt doit être tel que la distance minimale derrière le train soit de n mètre. Si le quai a un signal de sortie, le train s'arrêtera devant le signal même si cela signifie qu'il reste moins de n mètres, à moins que le paramètre /force ne soit également défini. Dans cette situation, la trajectoire du train doit se poursuivre au-delà du signal de sortie.


Notez que le train n'ira jamais au-delà de la fin de sa trajectoire.


avant = <n> (n en mètre)


L'emplacement de l'arrêt doit être tel que la longueur minimale de quai disponible devant le train ne soit pas inférieure à n mètre. Si l'arrière du train était à l'extérieur du quai, l'emplacement est calculé de telle sorte que l'arrière du train soit à l'extrémité du quai même si cela signifie qu'il reste moins de n mètres, sauf lorsque le paramètre /force est également défini .


force


Force la section avant ou arrière à rester dégagée même si le train doit passer le signal de sortie (pour le paramètre arrière) ou si l'arrière du train ne rentre pas dans la plate-forme (pour le paramètre avant).


$endstop


Lorsque la trajectoire du train continue au-delà de la position de la gare (par exemple lors du réglage de $keepclear /rear /force), l'arrêt est considéré comme la fin de la trajectoire même si le train n'a pas atteint la position finale réelle.


Commandes de synchronisation


Ces commandes peuvent être définies pour chaque cellule de synchronisation, c'est-à-dire à chaque intersection de la colonne de train et de la ligne d'emplacement, ou dans la ligne #note. Les commandes s'appliqueront à et à partir de l'emplacement (le cas échéant).


Par exemple, une commande $wait peut être définie pour une station sans arrêt. Le lieu d'attente réel peut être cette station elle-même, mais il peut également s'agir d'une boucle ou d'une jonction quelque part au-delà de cette station.


$wait


Syntaxe : $wait=<train> /maxdelay=n /notstarted /atstart /owndelay=n


Définit qu'un train doit attendre le train référencé pour permettre à ce train de passer en premier. Le train référencé peut être acheminé dans le même sens ou dans le sens opposé à ce train lui-même. Une recherche est effectuée sur le premier tronçon de voie commun aux deux trains, à partir de l'endroit où le $wait est défini, ou au début de le chemin s'il est défini dans la ligne #note.


Si l'emplacement de départ est déjà commun aux deux trains, une recherche est d'abord effectuée pour le premier tronçon qui n'est pas commun aux deux trains, et l'attente est appliquée au premier tronçon commun suivant.


Si l'attente est définie, la section ne sera pas libérée pour ce train jusqu'à ce que le train référencé ait passé cette section. Cela obligera le train à attendre. Le train référencé doit exister pour que l'attente soit valide.


Cependant, si /notstarted est défini, l'attente sera également définie même si le train référencé n'a pas encore été démarré. Cela peut être utilisé lorsque la position d'attente est très proche de la position de départ du train référencé et qu'il existe un risque que le train quitte la section avant que le train référencé ne soit démarré.


Des précautions doivent être prises lors de la définition d'un $wait à un endroit où le train doit faire marche arrière. Comme la recherche est effectuée pour le sous-chemin actif uniquement, une $wait définie à un endroit où le train doit faire marche arrière ne sera pas effective car la section commune sera dans le sous-chemin suivant après l'inversion. Dans une telle situation, le train doit être « scindé » en deux définitions distinctes, l'une jusqu'à l'emplacement d'inversion et l'autre à partir de cet emplacement.


Valeur de commande : train référencé, c'est obligatoire.


Qualificatifs de commande :


Définit qu'un train doit attendre le train référencé pour permettre à ce train de passer en premier. Le train référencé peut être acheminé dans le même sens ou dans le sens opposé à ce train lui-même. Une recherche est effectuée sur le premier tronçon de voie commun aux deux trains, à partir de l'endroit où le $wait est défini, ou au début de le chemin s'il est défini dans la ligne #note.


Si l'emplacement de départ est déjà commun aux deux trains, une recherche est d'abord effectuée pour le premier tronçon qui n'est pas commun aux deux trains, et l'attente est appliquée au premier tronçon commun suivant.


i l'attente est définie, la section ne sera pas libérée pour ce train jusqu'à ce que le train référencé ait passé cette section. Cela obligera le train à attendre. Le train référencé doit exister pour que l'attente soit valide.


ependant, si /notstarted est défini, l'attente sera également définie même si le train référencé n'a pas encore été démarré. Cela peut être utilisé lorsque la position d'attente est très proche de la position de départ du train référencé et qu'il existe un risque que le train quitte la section avant que le train référencé ne soit démarré.


Des précautions doivent être prises lors de la définition d'un $wait à un endroit où le train doit faire marche arrière. Comme la recherche est effectuée pour le sous-chemin actif uniquement, une $wait définie à un endroit où le train doit faire marche arrière ne sera pas effective car la section commune sera dans le sous-chemin suivant après l'inversion. Dans une telle situation, le train doit être « scindé » en deux définitions distinctes, l'une jusqu'à l'emplacement d'inversion et l'autre à partir de cet emplacement.


Valeur de commande : train référencé, c'est obligatoire.


Qualificatifs de commande :


Ce retard est compensé pour tout retard du train qui doit attendre, par ex. si maxdelay vaut 5 minutes, le train référencé a un retard de 8 minutes mais ce train lui-même a un retard de 4 minutes, le retard compensé est de 4 minutes et donc l'attente est toujours valable.


Ce paramètre est facultatif, s'il n'est pas défini, un maxdelay de 0 minutes est défini par défaut.


/notstarted : l'attente sera également appliquée si le train référencé n'a pas encore démarré.


/atstart : l'attente est activée à la position actuelle plutôt qu'à la première position non commune.


Peut être utilisé lorsqu'un train en sens inverse doit se terminer au même endroit que celui où ce train est démarré et qu'il peut ne pas y avoir d'emplacements de passage possibles entre cette position de départ et la position actuelle de l'autre train.


/owndelay=n (n est le délai en minutes); la commande de qualificatif owndelay rend la commande valide uniquement si le train en question est retardé d'au moins le nombre total de minutes défini pour le qualificatif owndelay.


Cela peut être utilisé pour retenir un train en retard de sorte qu'il n'entraîne pas de retards supplémentaires pour les autres trains, en particulier sur les tronçons à voie unique.


/trigger=HH:MM


Option expérimentale : limite cette commande pour qu'elle se déclenche uniquement après l'heure spécifiée.


/endtrigger=HH:MM


Option expérimentale : limite cette commande pour qu'elle se déclenche uniquement avant l'heure spécifiée.


$follow


Syntax : $follow=<train> /maxdelay=n /notstarted /owndelay=n


Cette commande est très similaire à la commande $wait, mais dans ce cas, elle est appliquée à chaque section commune des deux trains au-delà d'une partie de l'itinéraire qui n'était pas commune. Le train est contrôlé de telle sorte qu'à chaque tronçon où les sillons des trains se rejoignent après un tronçon qui n'était pas commun, le train n'avancera que si le train référencé a dépassé cette position. La commande fonctionne donc comme un $wait qui est répété pour chacune de ces sections.


La commande ne peut être définie que pour les trains circulant dans le même sens. Lorsqu'un lieu d'attente est trouvé et que le train doit être retenu, une vérification spéciale est effectuée pour s'assurer que l'arrière du train n'est pas sur la trajectoire du train référencé ou, si c'est le cas, le train référencé a déjà dégagé cette position . Sinon, il en résulterait une impasse, le train référencé ne pouvant dépasser le train qui l'attend.


Valeur de commande : train référencé, c'est obligatoire.


Qualificatifs de commande :


/maxdelay=n : n est le retard maximum (en minutes) du train référencé pour lequel l'attente est toujours valable. Ce retard est compensé par tout retard du train qui doit attendre, par ex. si maxdelay est de 5 minutes, le train référencé a un retard de 8 minutes mais ce train a lui-même un retard de 4 minutes, le retard compensé est de 4 minutes et donc l'attente est toujours valable.


Ce paramètre est facultatif, s'il n'est pas défini, un maxdelay de 0 minutes est défini par défaut.


/notstarted : le suivi sera également appliqué si le train référencé n'a pas encore démarré.


/owndelay=n (n est le retard en minutes) : la commande de qualificatif owndelay rend la commande valide uniquement si le train en question est retardé d'au moins le nombre total de minutes défini pour le qualificatif owndelay.


Cela peut être utilisé pour retenir un train en retard de sorte qu'il ne cause pas


des retards supplémentaires aux autres trains, en particulier sur les tronçons à voie unique.


/trigger=HH:MM


Option expérimentale : limite cette commande pour qu'elle se déclenche uniquement après l'heure spécifiée.


/endtrigger=HH:MM


Option expérimentale : limite cette commande pour qu'elle se déclenche uniquement avant l'heure spécifiée.


$connect


Syntaxe : $connect=<train> /maxdelay=n /hold=h


Définit qu'un train doit attendre à une gare jusqu'à ce qu'un autre train soit arrivé, afin de permettre aux passagers de faire la correspondance entre les trains.


Le train sera programmé pour permettre cette connexion, et la commande $connect est configurée pour maintenir cette connexion si le train qui arrive est en retard.


Notez que la commande $connect ne verrouille pas le signal. Si les chemins de ce train et du train qui arrive entrent en conflit avant que le train qui arrive n'atteigne la gare, des commandes supplémentaires $wait ou $hold doivent être définies pour éviter un blocage.


Valeur de commande : référence au train qui doit être attendu, c'est obligatoire.


Qualificatifs de commande :


/maxdelay=n : n est le retard maximum (en minutes) du train arrivant pour lequel ce train est retenu.


Si le retard du train qui arrive dépasse cette valeur, le train n'attendra pas. Le retard maximum est indépendant du propre retard de ce train.


Ce qualificatif et sa valeur sont obligatoires.


/hold=n : n est le temps (en minutes) pendant lequel le train est encore retenu après l'arrivée de l'autre train, et correspond au temps mis par les passagers pour effectuer la correspondance.


Ce qualificatif et sa valeur sont obligatoires.


$waitany


Syntax : $waitany=<path> /both /opposite


Cette commande définira une attente pour tout train qui se trouve sur la section de chemin définie.


Si le qualificatif /both est défini, l'attente sera appliquée pour n'importe quel train quelle que soit sa direction, sinon l'attente est définie uniquement pour les trains allant dans la même direction que la définition du sillon.


Le chemin défini dans la commande waitany doit avoir une section commune avec le chemin du train lui-même, sinon aucune position d'attente ne peut être trouvée.


Cette commande peut être configurée pour contrôler les trains pour qu'ils attendent au-delà des règles normales de signalisation ou d'interblocage. Par exemple, il peut être utilisé pour effectuer un contrôle pour un train qui doit quitter une voie d'évitement ou une gare de triage, en vérifiant la ligne que le train doit rejoindre pour tout train approchant sur cette ligne, sur une distance plus éloignée que la signalisation ne le ferait normalement, afin de s'assurer qu'il n'entre pas dans la trajectoire d'un train approchant sur cette ligne.


Avec le jeu de qualificatifs /both, il peut être utilisé à l'extrémité terminale des lignes à voie unique pour s'assurer qu'un train n'entre pas dans cette section au-delà de la dernière boucle de passage s'il y a déjà un autre train dans cette section, car cela pourrait conduire à des impasses irrécupérables.


Avec le qualificatif /opposé défini, la commande recherche uniquement les trains dans la direction opposée au chemin défini.


$callon


Cela permettra à un train de "faire appel" à un quai occupé par un autre train.


Pour plus de détails, voir la discussion ci-dessus sur la relation entre la signalisation et l'horaire.


$hold, $nohold et $forcehold


Ces commandes sont fonctionnellement identiques (et ont priorité sur) leurs commandes de gare respectives, mais ne s'appliquent qu'au train actuel.


$forcewait


Identique à la commande gare, mais ne s'applique qu'au train courant.


$nowaitsignal


Identique à la commande gare, mais ne s'applique qu'au train courant.


$waitsignal


Peut être utilisé pour remplacer et annuler une commande de station $nowaitsignal pour le train actuel.


$noclaim


Option expérimentale : la commande $noclaim empêche le train de réclamer des sections de circuit de voie si le train est retenu à un signal. Un train avec la commande $noclaim serait toujours le dernier dans la file d'attente aux carrefours occupés, donnant toujours la priorité à tout autre train.


$detach


Syntax : $detach <detach parameters> <forms parameters>


Définissez les détails du train pour détacher une partie de ce train.


Paramètres pour définir la portion à détacher :


/power


Détachera l'unité d'alimentation. Le système vérifiera l'unité d'alimentation à l'avant ou à l'arrière, si les deux sont trouvées, l'avant prévaudra. S'il n'y a pas d'unité d'alimentation à chaque extrémité, rien n'est détaché.


/leadingpower


Ne détachera que l'unité d'alimentation avant. S'il n'y a pas de bloc d'alimentation à l'avant, rien n'est détaché.


/allleadingpower


Détachera toutes les unités motrices à l'avant du train. S'il n'y a pas d'unités de puissance à l'avant, rien n'est détaché.


/trailingpower


Détachera l'unité d'alimentation qui est l'unité la plus en arrière du train. Si l'unité arrière n'est pas une unité d'alimentation, rien n'est détaché.


/allrailingpower


Détachera toutes les unités motrices de l'arrière du train. S'il n'y a pas d'unités motrices à l'arrière du train, rien n'est détaché.


/nonpower


Toutes les unités qui ne sont pas des unités motrices seront détachées du train. Le système déterminera à quelle extrémité du train se trouvent les unités motrices, puis détachera toutes les unités non motrices de l'autre extrémité du train.


Si aucune extrémité n'a d'unités motrices, les unités seront détachées par l'arrière. Si les deux extrémités sont des unités de puissance, rien n'est détaché.


/units=n (n peut être <0 ou >0 mais n=0 n'est pas autorisé)


Nombre d'unités à détacher.


Si n>0, les unités seront détachées à l'avant du train. Si n<0, les unités seront détachées à l'arrière du train. Si n dépasse la longueur réelle du train, n est réduit de sorte qu'il reste une unité sur le train.


/consist=<consist>[+<consist>[+...]]


Nom du ou des ensembles à détacher. Pour l'utilisation des noms de composition dans la commande de détachement, voir la note sur les noms de composition ci-dessous.


La composition à détacher doit être à chaque extrémité du train, c'est-à-dire qu'elle doit être la partie avant ou la partie arrière du train.


Si une liste de compositions est définie, elle doit être dans l'ordre des compositions à détacher, de l'extérieur vers l'intérieur, c'est-à-dire que si les unités doivent être détachées à l'avant, la première composition de la liste doit être la partie avant , mais si les unités doivent être détachées à l'arrière, le premier composé de la liste doit être la partie arrière.


Si ni la partie avant ni la partie arrière ne correspondent à la composition ou à la première composition telle que définie, rien n'est détaché.


Paramètres pour train formé :


/forms=<train>


La partie détachée formera le train comme indiqué.


/static


La partie détachée formera une composition statique.


$attach


Syntaxe : $attach=<train>


Ce train s'attachera au train comme indiqué, et cessera donc d'exister.


S'il est utilisé à l'arrêt de la station, il est inutile de définir quoi que ce soit au-delà de cet arrêt, et rien ne peut non plus être défini dans le champ #dispose.


Si l'autre train auquel ce train doit s'attacher n'est pas à l'endroit où l'attache doit avoir lieu, ce train se terminera sans que l'attache ait lieu. Il est donc conseillé d'utiliser une commande $wait pour s'assurer que l'autre train est à l'emplacement requis.


Si le paramètre /firstin ou /setback est défini, ce devrait être l'inverse, dans ce cas, une commande $wait devrait être définie pour l'autre train afin de s'assurer que ce train est bien premier.


Paramètres (uniquement valables à l'arrêt de la station) :


/firstin


Ce train est en premier, et attendra l'arrivée du second train pour effectuer l'attelage. L'autre train peut arriver devant ce train par un aiguillage ou en sens inverse.


/setback


Ce train est le premier et attendra que l'autre train arrive derrière. Lorsque l'autre train est arrivé, ce train reculera pour effectuer l'attelage.


Cela ne doit pas être utilisé si une locomotive doit être détachée de l'autre train car ce train n'attendra pas que la locomotive se libère avant d'effectuer l'attachement.


$pickup


Syntax : $pickup=<train> /static


Ce train ramassera le train tel que défini dans la commande, ou ramassera la composition statique qui se trouve à l'emplacement où le ramassage est défini.


Le train qui est ramassé cessera d'exister. Le train complet est récupéré, aucune modification n'est apportée à la composition de l'un ou l'autre des trains (sauf s'il est combiné avec la commande $triggers dans le champ #dispose).


S'il n'y a pas de train à prendre à l'endroit requis, le train continuera comme défini.


$transfer


Syntaxe : $transfer=<train> /static <transfer parameters>


Ce train (le train "actif") transférera des unités avec le train comme indiqué, ou avec une composition statique placée à l'endroit où le transfert est défini (le train "passif").


Avec un transfert, les unités seront transférées d'un train à l'autre, mais les deux trains continueront d'exister. Au moins une unité motrice doit rester sur le train "actif", cette unité motrice ne doit pas faire partie de la partie à transférer. Le train "passif" n'a pas besoin d'unités motrices, ou toutes les unités motrices peuvent être détachées dans le cadre du transfert.


Paramètres définissant le type de transfert :


/give


Ce train doit donner les unités définies à l'autre train, c'est-à-dire que les unités telles que définies pour le train "actif" seront déplacées vers le train "passif".


/take


Ce train doit prendre les unités définies de l'autre train, c'est-à-dire que les unités telles que définies pour le train "passif" seront déplacées vers le train "actif".


/keep


Toutes les unités à l'exception des unités définies pour le train "actif" seront transférées au train "passif".


/leave


Toutes les unités à l'exception des unités définies pour le train « passif » seront transférées au train « actif ».


Paramètres définissant les unités à transférer ou à conserver dans le train :


/onepower : Une seule unité d'alimentation.


/allpower : Toutes les unités de puissance.


/nonpower : Toutes les unités qui ne sont pas des unités de puissance.


/units=<n>


Si la portion est définie pour le train "actif" et que <n> dépasse la longueur de ce train, le nombre est réduit de sorte qu'une unité restera sur le train.


/consist=<consist>[+consist[+...]]


Se compose de noms de portions à conserver ou à transférer. Les noms de composition doivent être dans l'ordre, et le premier (ou le seul) nom de composition doit correspondre à la partie à l'extrémité applicable du train.


$activate


Syntaxe : $activate=<train>


Activera le train comme indiqué, soit lorsque le train démarre, lorsque le train est à l'arrêt indiqué ou lorsqu'il est terminé.


Commandes de démarrage


$create


Syntaxe : $create[=<heure>] [/ahead=<train>]


La commande $create créera ce train au moment indiqué. Si aucune heure n'est définie, le train sera créé avant le départ du premier train. Le train sera « statique » jusqu'à l'heure définie comme heure de départ. Les règles normales de placement des trains s'appliquent toujours, donc un train ne peut pas être placé sur une section de voie déjà occupée par un autre train.


Cependant, les embranchements de stockage accueillent souvent plusieurs trains. Pour permettre cela, et pour s'assurer que les trains sont stockés dans le bon ordre (le premier à l'avant), le paramètre [/ahead=<train>] doit être utilisé.


Le train sera désormais placé devant le train référencé, dans le sens de la trajectoire du train. Plusieurs trains peuvent être stockés sur une même voie d'évitement, mais il faut veiller à définir les bonnes références. La référence doit toujours être au train précédent - deux trains ne peuvent pas référencer le même train dans le paramètre /ahead car cela provoquerait un conflit.


Si la longueur totale de tous les trains dépasse la longueur des voies d'évitement, les trains « déborderont » sur tout ce qui se trouve au-delà.


Notez qu'un train référencé dans un paramètre /ahead doit être créé avant ou en même temps que le train qui utilise cette référence.


$pool


Syntaxe : $pool=<poolname> [/direction=forward|backward]


Le train provient du pool défini.


Pour les trains partant d'un pool, le sillon doit commencer à ou près de la fin de l'un des chemins d'accès définis pour ce pool. Si le chemin commence avant la dernière section de voie définie pour le chemin d'accès, il ne doit pas s'écarter de ce chemin.


Pour les pools de plaques tournantes, la direction dans laquelle le train sort de la plaque tournante peut être définie à l'aide du qualificateur de direction. S'il n'est pas défini, le train fera marche arrière.


$next


L'heure de début est après 00:00 à la fin de l'horaire. Peut être utilisé pour démarrer le train après minuit.


$static


Syntaxe : $static [/pool=<pool>] [/ahead=<train>]


Ce train apparaîtra comme un train statique.


/pool=<pool>


Le train est créé dans le pool référencé. Pour qu'un pool ait des trains, ceux-ci doivent être définis à l'aide de cette commande.


Le chemin doit être un chemin de stockage tel que défini pour ce pool. Notez que le train peut être placé sur l'un des autres chemins de stockage tels que définis pour ce pool, ceci est défini par la logique du pool.


Si plus de trains sont créés dans un pool que le pool ne peut en contenir, un avertissement est émis.


/ahead=<train>


Comme ci-dessus pour la commande $create.


$activated


Le train est activé par la commande $activate d'un autre train. La commande $activate peut être envoyée avant ou après l'heure de départ définie de ce train.


Un train ne peut être activé que par un seul autre train.


Remarque Commandes


La rangée de notes définit les commandes applicables au démarrage du train. En plus des commandes exclusives #note répertoriées ci-dessous, cette ligne accepte également toutes les commandes de synchronisation.


Le programme utilise des valeurs moyennes d'accélération et de décélération pour tous les trains (valeurs différentes pour les trains de marchandises, de voyageurs et à grande vitesse). Mais ces valeurs ne sont pas toujours adéquates, surtout pour les trains modernes. Cela peut entraîner des retards lorsque vous essayez de respecter un horaire réel.


A l'aide des commandes $acc et $dec, les valeurs utilisées peuvent être modifiées. Notez que ces commandes ne définissent pas une valeur réelle, mais définissent un facteur ; la valeur par défaut sera multipliée par ce facteur. Cependant, définir une valeur plus élevée pour l'accélération et la décélération ne signifie pas que les trains accéléreront et décéléreront toujours plus rapidement en fonction de la valeur définie. La plupart du temps, le comportement du train est contrôlé par la physique. Mais surtout le facteur $dec a un effet secondaire important. La valeur de décélération est également utilisée pour calculer la distance de freinage requise attendue. Le réglage d'une décélération plus élevée réduira la distance de freinage requise, permettant au train de continuer à rouler à la vitesse maximale autorisée sur de plus longues distances. Cela peut avoir un effet significatif sur le timing. Veillez cependant à ne pas définir une valeur trop élevée - la distance de freinage calculée doit bien sûr être suffisante pour permettre un freinage correct, sinon le train ne peut pas s'arrêter à temps, ce qui entraîne des SPAD, etc.


Une valeur typique pour le stock moderne pour la commande $dec est 2 ou 3.


$acc


Syntax : $acc=<value>


Définit l'accélération requise pour ce train. <value> est un multiplicateur pour l'accélération par défaut.


$dec


Syntax : $dec=<value>


Définit la décélération requise pour ce train. <valeur> est un multiplicateur pour la décélération par défaut.


$doo


Définit le train comme « Conduit uniquement exploité ». S'il est réglé, il n'y aura pas de son de départ (sifflet, cloche ou autre) au départ d'une station.


$forcereversal


Normalement, lorsqu'une inversion est effectuée et qu'il y a un signal sur la trajectoire du train comme menant du point d'inversion, la position d'inversion réelle est placée de telle sorte que le train passera complètement ce signal avant de s'inverser, et le mouvement inverse est donc contrôlé par ce signal.


Le réglage de $forcereversal permettra au train de faire marche arrière dès qu'il est dégagé de la position de marche arrière. Ceci est utile lors des manœuvres dans les chantiers lorsqu'il n'est pas nécessaire de sortir complètement du chantier pour faire marche arrière et le signal d'entrée.


Commandes de vitesse


$max


Syntaxe : $max=<value>


Vitesse maximale globale pour ce train.


$cruise


Syntaxe : $cruise=<value>


Vitesse maximale à laquelle le train fonctionnera normalement lorsqu'il circule à l'heure.


Lorsque le retard réel dépasse le retard maximal défini (tel que défini dans $maxdelay), le train accélérera jusqu'à la vitesse maximale.


$maxdelay


Syntaxe : $maxdelay=<m>


Délai maximum (en minutes) pour le régulateur de vitesse. Lorsque ce délai est dépassé, le train accélère jusqu'à la vitesse maximale.


$creep


Syntaxe : $creep=<value>


La vitesse rampante est la vitesse minimale lors de l'approche finale d'un signal à l'emplacement d'un danger ou d'un arrêt en gare.


$attach


Syntaxe : $attach=<value>


Vitesse à laquelle le train s'attachera à un autre train.


$detach


Syntaxe : $detach=<value>


Vitesse à laquelle le train se détachera d'un autre train.


$movingtable


Syntaxe : $movingtable=<value>


Vitesse à laquelle le train naviguera sur les plaques tournantes.


Delay Commands


Toutes les commandes de délai, à l'exception de la commande $reverse, sont sous la forme de $command [/fix=<f>] [/ var=<v>], où <f> représente la composante fixe du délai et <v > représente la composante variable de la temporisation, toutes deux en secondes.


$new


Définissez le retard du train après son apparition dans le simulateur.


Le délai fixe est par défaut de 0 seconde, tandis que le délai variable est par défaut de 10 secondes.


$path


Définissez le retard du train après l'arrêt d'un obstacle sur sa trajectoire, tel qu'un signal d'arrêt ou un aiguillage inversé.


Le délai fixe est par défaut de 1 seconde, tandis que le délai variable est par défaut de 10 secondes.


$station


Set the train’s delay after making a station stop.


The fixed delay defaults to 0 seconds, while the variable delay defaults to 15 seconds.


$follow


Réglez le retard du train lorsqu'il suit un autre train.


Le délai fixe est par défaut de 15 secondes, tandis que le délai variable est par défaut de 10 secondes.


$attach


Définissez le retard du train après s'être attaché à un autre train.


Le délai fixe est par défaut de 30 secondes, tandis que le délai variable est par défaut de 30 secondes.


$detach


Réglez le retard du train après avoir détaché une de ses portions.


Le délai fixe est par défaut de 5 secondes, tandis que le délai variable est par défaut de 20 secondes.


$movingtable


Réglez le retard du train après avoir utilisé une plaque tournante.


Le délai fixe est par défaut de 1 seconde, tandis que le délai variable est par défaut de 10 secondes.


$reverse


Syntaxe : $reverse /additional=<value>


En marche arrière, un délai supplémentaire est ajouté pour refléter le temps nécessaire au conducteur pour traverser ou longer le train jusqu'à l'autre bout. Ce délai est par défaut de 0,5 seconde par mètre de train, une valeur qui peut être remplacée avec cette commande.


Pour les trains poussés en marche arrière, par ex. pour les mouvements de manœuvre des trains de marchandises, il est conseillé de régler le délai d'inversion à 0.


Disposer des commandes


Les commandes Dispose peuvent être définies dans la ligne #dispose pour définir ce qui doit être fait avec le train après sa fin. Voir les notes spéciales ci-dessous sur le comportement du train du joueur lorsqu'il est formé à partir d'un autre train par une commande de disposition, ou lorsque le train du joueur lui-même a une commande de disposition.


$forms


Syntax : $forms=<train> <qualifiers>


$forms définit quel nouveau train doit être formé à partir de ce train lorsque le train se termine. La composition du nouveau train est formée à partir de la composition du train d'arrivée et toute définition de composition pour le nouveau train est ignorée. Le nouveau train sera « statique » jusqu'à l'heure définie dans la ligne #start pour ce train. Cela signifie que le nouveau train n'essaiera pas de dégager son chemin, ses signaux, etc., et ne bougera pas même s'il n'est pas dans une gare.


Si le train entrant est en retard et que son heure d'arrivée est postérieure à l'heure de départ du nouveau train, le départ du nouveau train est également retardé mais le nouveau train deviendra immédiatement actif dès sa formation.


Pour les trains tirés par des locomotives, on peut définir que la ou les locomotives doivent tourner autour du train pour que le train se déplace dans la direction opposée. Le qualificatif runround a besoin d'un chemin qui définit le chemin que le ou les moteurs doivent emprunter lors de l'exécution du runround. Si le train a plus d'une locomotive de tête, toutes les locomotives tourneront. Toutes les autres unités de puissance dans le train ne seront pas déplacées.


Pour les règles et conditions spécifiques pour que le runround fonctionne, voir la discussion sur la relation entre la signalisation et le concept d'horaire.


Si le runround est défini, l'heure à laquelle le runround doit avoir lieu peut être définie. Si cette heure n'est pas définie, le tour de piste aura lieu immédiatement à la fin du train entrant. Valeur de commande : train référencé, c'est obligatoire.


Qualificatifs de commande :


/runround=<path> : <path> est le chemin à utiliser par le moteur pour effectuer le runround.


Ce qualificatif est facultatif ; si défini, la valeur est obligatoire.


Pour un contrôle plus fin de la manœuvre d'exécution, il est suggéré d'utiliser les commandes $detach et $attach à la place.


/rrtime=time : time est la définition de l'heure à laquelle le runround doit avoir lieu. L'heure doit être définie en HH:mm et doit utiliser l'horloge de 24 heures.


Ce qualificateur n'est valide qu'en combinaison avec le qualificateur /runround, est facultatif mais s'il est défini, la valeur est obligatoire.


/setstop : si ce train lui-même n'a pas d'arrêt en gare défini mais que le train qu'il doit former commence à une gare, cette commande copiera les détails du premier arrêt en gare du train formé, pour s'assurer que ce train s'arrêtera au bon endroit .


Pour que ce qualificatif fonctionne correctement, le sillon du train entrant doit se terminer dans la zone de quai du train partant.


Ce qualificatif est facultatif et ne prend aucune valeur.


/atstation : La position finale du train est calculée comme si le train s'arrêtait à la gare de départ du nouveau train, même si aucune gare d'arrêt n'est définie pour ce train.


/gros plan : la position finale du train sera proche de la fin de la voie ou d'un autre train.


/speed=<v> : ce qualificatif ne peut être utilisé qu'avec le paramètre $runround. Il définit la vitesse maximale pour le mouvement d'exécution en m/s.


$triggers


Syntaxe : $triggers=<train> <qualifiers>


$triggers définit également quel nouveau train doit être formé à partir de ce train lorsque le train se termine.


Cependant, lorsque cette commande est utilisée, le nouveau train sera formé en utilisant la définition de composition du nouveau train et la composition existante est supprimée.


Valeur de commande : train référencé, c'est obligatoire.


Qualificatifs de commande :


/runround=<path>: <path> est le chemin à utiliser par le moteur pour effectuer le parcours.


Ce qualificatif est facultatif ; si défini, la valeur est obligatoire.


/rrtime=time:time est la définition de l'heure à laquelle le runround doit avoir lieu. L'heure doit être définie en HH:mm et doit utiliser l'horloge de 24 heures.


Ce qualificateur n'est valide qu'en combinaison avec le qualificateur /runround, est facultatif mais s'il est défini, la valeur est obligatoire.


/setstop : si ce train lui-même n'a pas d'arrêt en gare défini mais que le train qu'il doit former commence à une gare, cette commande copiera les détails du premier arrêt en gare du train formé, pour s'assurer que ce train s'arrêtera au bon endroit .


Pour que ce qualificatif fonctionne correctement, le sillon du train entrant doit se terminer dans la zone de quai du train partant.


Ce qualificatif est facultatif et ne prend aucune valeur.


/atstation : La position finale du train est calculée comme si le train s'arrêtait à la gare de départ du nouveau train, même si aucune gare d'arrêt n'est définie pour ce train.


/gros plan : la position finale du train sera proche de la fin de la voie ou d'un autre train.


/speed=<v> : ce qualificatif ne peut être utilisé qu'avec le paramètre $runround. Il définit la vitesse maximale pour le mouvement d'exécution en m/s.


$static


Syntaxe : $static /closeup


Le train deviendra un train « statique » après avoir terminé.


Valeur de commande : aucune.


Qualificatifs de commande :


/closeup : la position finale du train sera proche de la fin de la voie ou d'un autre train.


$ stable


Syntaxe: $stable /out_path=<path> /out_time=time /in_path=<path> /in_time=time /static /runround=<path>/rrtime= time /rrpos=<runround position> / forms=<train> /triggers=<train> /speed=<v> /name=<name>


$stable est une forme étendue de $forms, $triggers ou $static, où le train est déplacé vers un autre emplacement avant que la commande associée ne soit exécutée. Dans le cas de /forms ou /triggers, le train peut revenir au même endroit ou à un autre endroit où le nouveau train commence réellement. Notez que dans ces cas, le train doit effectuer deux mouvements, aller et retour.


Un contournement peut être effectué si /forms est défini.


Si /triggers est défini, le changement de composition aura lieu à la position "stable". Toute inversion (s) dans le chemin vers l'intérieur, ou à la position finale vers l'intérieur, est prise en compte lors de la construction du nouveau train, de sorte que le convoi fait face à la bonne direction lorsque le nouveau train est formé à la position finale vers l'intérieur.


Le $stable peut être utilisé lorsqu'un train forme un autre train mais lorsque le train doit dégager le quai avant que le nouveau train puisse être formé pour permettre à d'autres trains d'utiliser ce quai. Il peut également être utilisé pour déplacer un train vers une voie d'évitement après avoir terminé sa dernière tâche, et y être "garé" en tant que train statique.


Des minutages distincts peuvent être définis pour chaque mouvement; si un tel temps n'est pas défini, le mouvement aura lieu immédiatement lorsque le mouvement précédent sera terminé.


Si des horaires sont définis, le train sera « statique » après la fin du mouvement précédent jusqu'à l'heure requise.


Si le train formé a un arrêt en gare valide et que le chemin de retour de la commande stable (in_path) se termine dans la zone du quai du premier arrêt en gare du train formé, la vérification 'setstop' (voir qualificatif setstop dans la commande $forms ) sera automatiquement ajouté


Valeur de commande : aucune.


Qualificatifs de commande :


/out_path=<path>: <path> est le chemin à emprunter par le train pour se déplacer vers la position « stable ». Le début du sillon doit correspondre à la fin du sillon du train entrant.


/out_time = time: définition de l'heure à laquelle la course aller doit être démarrée. L'heure est définie comme HH:mm et doit utiliser l'horloge de 24 heures.


/in_path=<path>: <path> est le chemin à emprunter par le train pour le trajet retour depuis la position « stable » jusqu'au départ du nouveau train. Le début du chemin doit correspondre à la fin du out_path, la fin du chemin doit correspondre au début du chemin du nouveau train.


/in_time = time: définition de l'heure à laquelle la course entrante doit être lancée. L'heure est définie comme HH:mm et doit utiliser l'horloge de 24 heures.


/closeup : la position finale du train sera proche de la fin de la voie ou d'un autre train.


/callon : Ce train est autorisé à entrer sur le quai même si ce quai est occupé.


Cette option nécessite l'implémentation de la fonction TrainHasCallOn ou TrainHasCallOn_Restricted pour le signal qui protège le quai.


/runround=<path>: <path> est le chemin à utiliser par le moteur pour effectuer le runround. Pour plus de détails, consultez la définition de la commande $forms de l'heure à laquelle l'exécution doit avoir lieu. L'heure doit être définie en HH:mm et doit utiliser l'horloge de 24 heures.


/rrtime=time : time est la définition de l'heure à laquelle le runaround doit avoir lieu. L'heure doit être définie en HH:mm et doit utiliser l'horloge de 24 heures.


/rrpos = <runround position> : la position dans le mouvement « stable » à laquelle le runround doit avoir lieu.


Valeurs possibles:


• out : le runround aura lieu avant le début du mouvement aller.


• stable : le tour de piste aura lieu à la position « stable ».


• in : le runround aura lieu après l'achèvement du mouvement vers l'intérieur.


/speed=<v>: Ce qualificatif ne peut être utilisé qu'avec le paramètre $runround. Il définit la vitesse maximale pour le mouvement d'exécution en m/s.


/name=<name>: Ce qualificatif ne peut être utilisé qu'avec le paramètre $runround. Il définit le nom que le train portera lors du déplacement de l'écurie. Il s'agit du nom affiché dans les informations F7, dans les informations hud du répartiteur et dans la fenêtre du répartiteur.


/static: le train deviendra un train « statique » après avoir terminé le mouvement vers l'extérieur.


/forms=<train>: formera le nouveau train une fois le mouvement d'arrivée terminé. Voir la commande $forms pour plus de détails.


/triggers=<train>: train déclenchera le nouveau train après la fin du mouvement vers l'intérieur. Le train passera à la composition du nouveau train à la position "stable". Voir la commande $triggers pour plus de détails.


Utilisation des qualificatifs de commande :


En combinaison avec /static


• /out_path : obligatoire


• /out_time : facultatif


En combinaison avec /forms :


• /out_path : obligatoire


• /out_time : facultatif


• /in_path : obligatoire


• /in_time : facultatif


• /runround : facultatif


• /rrtime : facultatif, valide uniquement si /runround est défini


• /rrpos : obligatoire si /runround est défini, sinon non valide


En combinaison avec /triggers :


• /out_path : obligatoire


• /out_time : facultatif


• /in_path : obligatoire


• /in_time : facultatif


$pool


Syntaxe : $pool=<poolname> [/direction=forward|backward]


Le train entre dans le pool défini lorsqu'il se termine.


Pour les pools de plaques tournantes, la direction dans laquelle le train entre à partir de la plaque tournante peut être définie à l'aide du qualificatif de direction. S'il n'est pas défini, le train fera marche arrière.


$attach


équivalent à la commande de synchronisation du même nom.


$detach


équivalent à la commande de synchronisation du même nom.


$pickup


équivalent à la commande de synchronisation du même nom.


$transfer


équivalent à la commande de synchronisation du même nom.


$activer$activate


équivalent à la commande de synchronisation du même nom.


12.5 Notes supplémentaires sur les horaires


12.5.1 Trains statiques


Un train statique peut être défini en définissant $static dans la ligne du haut (par exemple, comme le « nom » de ce train). La composition et le chemin sont toujours requis - le chemin est utilisé pour déterminer où la composition est placée (extrémité arrière du train au début du chemin). Aucune heure de début n'est requise. Le train sera créé dès le début de l'horaire - mais il ne peut pas être utilisé pour quoi que ce soit dans un horaire. Il ne peut être référencé dans aucune commande, etc., car il n'a pas de nom. À l'heure actuelle, il n'est pas non plus possible de se coupler à un train statique - voir ci-dessous pour plus de détails.


Notez qu'il existe quelques différences entre les horaires et le mode d'activité dans la manière dont les trains statiques sont générés. En mode activité, le train est une instance de la classe Train, de type STATIC.


En mode horaire, le train est une instance de la classe TTTrain (comme tous les trains en mode horaire), de type AI, mouvement AI_STATIC. Cette différence peut entraîner des comportements différents vis-à-vis du son, de la fumée et des lumières.


12.5.2 Traitement de la commande #dispose pour l'entraînement des joueurs


Lorsque le train du joueur se termine et qu'une commande #dispose est définie pour que ce train forme un autre train (soit $form, $trigger ou $stable), le train formera en effet le prochain train comme détaillé, et ce prochain train sera maintenant le train de nouveaux joueurs. Ainsi, le joueur peut continuer avec ce train, par exemple lors d'un voyage de retour.


Lors de la formation du nouveau train, le train deviendra «inactif». Il s'agit d'un nouvel état, dans lequel le train n'est pas autorisé à circuler.


Notez que les informations du moniteur de voie F4 ne sont pas mises à jour lorsque le train est « inactif ». L'affichage de la prochaine station dans le moniteur d'activité F10 affichera des détails sur le moment où le train doit démarrer. Le train deviendra « actif » à l'heure de démarrage définie pour le train formé. Pour information, la fenêtre Activity Monitor affiche le nom du train que le joueur conduit.


12.5.3 Fin d'un parcours horaire


En arrivant à la fin d'un horaire, le programme ne sera pas terminé automatiquement mais doit être terminé par le joueur.


12.5.4 Calcul du délai de fonctionnement


Une valeur approximative du retard est continuellement mise à jour. Cette approximation est dérivée de l'heure d'arrivée réservée à la prochaine gare. Si l'heure actuelle est postérieure à l'arrivée réservée et que cette différence dépasse le retard actuel, le retard est défini sur cette différence. Le temps nécessaire pour atteindre cette station n'est pas pris en compte.


Cette approximation se traduira par une meilleure régulation lorsque les paramètres /maxdelay ou /owndelay sont utilisés.


12.5.5 Pas d'accouplement automatique


Il y a une logique dans le programme qui, pour tout train arrêté, vérifie s'il est suffisamment proche d'un autre train pour s'accoupler à ce train. C'est cette logique qui permet au train du joueur de se coupler à n'importe quel train statique.


Cependant, cette logique contient certaines actions qui ne correspondent pas au traitement des horaires des trains. Par conséquent, le couplage de trains n'est pas possible en mode horaire, sauf pour les manœuvres spécifiées explicitement avec des commandes, telles que $attach et $detach.


12.5.6 Utilisation de Consists dans les commandes de manœuvre


Tout wagon sur la simulation doit avoir été placé quelque part en tant que "nouveau" train. Lorsqu'un "nouveau" train est placé, il est formé comme défini dans la définition de composition pour ce train.


Chaque wagon se souviendra de cette «composition originale» tout au long de sa vie sur la simulation.


Ce nom de « composition originale » peut être utilisé dans n'importe quelle commande $detach ou $transfer, même si la portion concernée a changé de train.


Ainsi, par exemple, si un train de marchandises est placé et se compose de plusieurs portions, chacune avec son propre nom de composition (en utilisant la définition de composition multiple), chaque wagon de ce train se souviendra toujours de sa composition d'origine. Lorsque ce train est démonté, des portions sont prises dans d'autres trains, etc., le nom de composition d'origine peut toujours être utilisé.


Lors de l'utilisation de cette installation, il est important de savoir où et dans quel train les différentes portions sont déplacées. Comme une liste de compositions doit être définie dans le bon ordre, il est également important de garder une trace de la configuration des trains formés. L'avantage de cette méthode est qu'il n'est pas nécessaire de compter le nombre d'unités dans chaque train et chaque portion.


Notez que les informations de composition ne peuvent pas être utilisées si l'unité est démarrée dans un pool, si ce pool peut contenir différentes compositions. Dans cette situation, il n'est pas défini quelle composition formera le train réel.


12.5.7 Exigences de signalisation et concept d'horaire


Général


Le concept d'horaire est plus exigeant pour les performances du système de signalisation que les activités « normales ». La raison principale en est que l'horaire aura souvent des trains AI circulant dans les deux sens, y compris des trains circulant devant le train du joueur dans la même direction que le train du joueur. Il y a très peu d'activités avec de telles situations car aucun effort ne serait bien sûr fait pour définir des trains dans une activité qui ne serait jamais vue, mais aussi parce que MSTS ne pourrait pas toujours gérer correctement une telle situation.


Tout défaut de signalisation, par ex. signaux dégageant la trajectoire d'un train trop loin devant, auront un effet immédiat sur le déroulement d'un horaire.


Si les signaux se dégagent trop loin sur une ligne à voie unique, par exemple, cela signifie que les trains traverseront les boucles de passage trop tôt, ce qui entraînera de très longues attentes pour les trains dans la direction opposée. Ceci, à son tour, peut conduire à des blocages lorsque plusieurs trains commencent à converger sur un seul ensemble de boucles de passage.


Des situations similaires peuvent se produire dans les grandes gares très fréquentées - si les trains se frayent un chemin trop tôt dans une telle gare, cela entraînera l'attente d'autres trains pour entrer ou sortir de la gare


Si les commandes $forms ou $triggers sont utilisées pour relier les trains en marche arrière, le problème est exacerbé car tout retard du train entrant se répercutera sur le retour.


Aspect du signal d'appel


Les systèmes de signalisation peuvent permettre à un train de « faire appel », c'est-à-dire permettre à un train d'emprunter une section de voie déjà occupée par un autre train (également appelé travail permissif).


La différence entre 'appel sur' et 'signaux permissifs' (aspects STOP et PROCEED) est que ce dernier est également autorisé si le train dans la section se déplace (dans la même direction), mais 'appel sur' n'est généralement autorisé que si le train du tronçon est à l'arrêt.


Lorsqu'un signal autorise l'appel, les trains AI passeront toujours ce signal et rouleront jusqu'à une distance prédéfinie derrière le train dans la section.


Dans les zones de gare, cela peut conduire à un véritable chaos car les trains peuvent se heurter à des quais occupés par d'autres trains de sorte que la longueur totale des deux trains dépasse de loin la longueur du quai, de sorte que le deuxième train bloquera la "gorge de la gare" en arrêtant tous les autres trains. Cela peut facilement conduire à un blocage complet de tout le trafic dans et autour de la gare.


Pour éviter cela, les appels doivent être bloqués dans les zones des gares même si la signalisation le permet. Pour permettre à un train de "faire appel" lorsque cela est requis dans l'horaire, la commande $ callon doit être définie, ce qui annule le bloc global. Cela s'applique à la fois à l'IA et à l'entraînement des joueurs


Dans le cas où le train doit s'attacher à un autre train sur le quai, l'appel est automatiquement activé.


En raison de l'incapacité des trains AI dans MSTS à s'arrêter correctement derrière un autre train s'ils sont "appelés" sur une voie occupée, la plupart des systèmes de signalisation ne prennent pas en charge les aspects "appel sur", mais reposent plutôt sur l'utilisation de "demandes d'autorisation". Les trains AI ne peuvent pas émettre une telle demande, donc dans de tels systèmes, $callon ne fonctionnera pas.


Dans cette situation, les commandes d'attachement peuvent également ne pas fonctionner dans les zones de station.


Notez que la commande 'runround' nécessite également la capacité 'call on' pour le mouvement final de la locomotive vers le train pour s'y attacher. Par conséquent, lorsqu'il est effectué dans les zones de gare, le contournement ne peut également fonctionner que si la signalisation prend en charge l'appel.


Des fonctions de signalisation spéciales sont disponibles pour adapter les signaux à la fonction décrite ci-dessus, qui peuvent être utilisées dans les scripts pour les signaux pertinents dans le fichier sigscr.


La fonction "TRAINHASCALLON()" renverra "true" si la section au-delà du signal jusqu'au prochain signal comprend une plate-forme où le train est réservé pour s'arrêter, et le train a le drapeau "callon" défini. Cette fonction renverra également "true" s'il n'y a pas de plate-forme dans la section au-delà du signal.


La fonction "TRAINHASCALLON_RESTRICTED" renvoie "true" dans des conditions similaires, sauf qu'elle


renvoie "faux" s'il n'y a pas de plate-forme dans la section au-delà du signal.


Les deux fonctions doivent être utilisées en combinaison avec BLOCK_STATE = BLOCK_OCCUPIED.


Commandes d'attente et chemins de passage


À partir de l'emplacement où « attendre » ou « suivre » est défini, une recherche est effectuée pour la première section commune pour


les deux trains, dans le prolongement d'un tronçon où les voies ne sont pas communes.


Cependant, sur les itinéraires à voie unique avec des boucles de dépassement où des «sillons de dépassement» sont définis pour les deux trains, le chemin principal des trains empruntera les mêmes voies dans les boucles de dépassement et, par conséquent, aucune section non commune ne sera trouvée. En conséquence, le point d'attente ne peut pas trouver d'emplacement pour que le train attende et donc la procédure ne fonctionnera pas.


Si des points d'attente sont utilisés sur des lignes à voie unique, les trains doivent avoir leurs trajectoires sur des voies différentes à travers la boucle de passage pour que les points d'attente fonctionnent correctement.


C'est une question de choix pour le créateur de l'horaire soit de prédéfinir les emplacements de passage à l'aide des commandes d'attente, soit de laisser le système déterminer les emplacements de passage à l'aide des chemins de passage.


Commandes d'attente et signaux d'autorisation


Les commandes 'wait' et 'follow' sont traitées via le 'blockstate' de la commande de signal. Si à l'endroit où le train doit attendre, des signaux permissifs sont utilisés, et que ces signaux permettent un aspect "continuer" sur l'état de bloc JN_OBSTRUCTED, la commande "attendre" ou "suivre" ne fonctionnera pas car le train ne sera pas arrêté.


Faire circuler des trains vers minuit


Un horaire peut être défini pour une journée complète de 24 heures, et inclurait donc les trains circulant vers minuit.


Les règles suivantes s'appliquent pour le train de joueurs :


• Le train réservé pour commencer avant minuit démarrera en fin de journée, mais continuera à circuler s'il se termine après minuit.


• Les trains formés à partir d'autres trains partant avant minuit ne seront PAS démarrés si le train entrant est retardé et que, par conséquent, l'heure de départ est déplacée après minuit. Dans ce cas, l'activité est interrompue.


• Les trains réservés pour démarrer après minuit seront plutôt démarrés au début de la journée, à moins que la commande $next ne soit utilisée.


Les règles suivantes s'appliquent aux trains AI :


• Les trains réservés pour un départ avant minuit partiront en fin de journée, mais continueront à circuler s'ils se terminent après minuit.


• Les trains formés à partir d'autres trains partant avant minuit seront toujours démarrés si le train entrant est retardé et que, par conséquent, l'heure de départ est déplacée après minuit.


• Les trains réservés pour démarrer après minuit seront plutôt démarrés au début de la journée, à moins que la commande $next ne soit utilisée.


Affichage des autres trains actifs dans l'horaire


Pour changer le train affiché dans les vues externes, cliquez sur <Alt+F9> pour afficher la liste des trains et sélectionnez le train souhaité dans la liste des trains actifs, ou cliquez sur <Alt+9> comme décrit dans Changer la vue pour faire du vélo à travers les trains actifs.


12.5.8 Problèmes connus


• Si une commande #dispose est traitée pour le train du joueur et que le nouveau train circule dans la direction opposée, l'inverseur "passera" à l'état inverse lors de la formation de ce nouveau train.


• Une commande d'exécution définie dans une commande #dispose ne peut pas encore être traitée. Il sera nécessaire de passer en manuel pour effectuer ce tour de piste.


• Si deux trains doivent être placés sur une seule voie d'évitement en utilisant $create avec le qualificatif /ahead, mais que les trains ont des chemins dans des directions opposées, les trains peuvent être placés dans des positions incorrectes.


• Si le qualificateur /binary est défini pour #path, mais que le sous-répertoire OpenRails du répertoire Paths n'existe pas, le programme ne pourra pas charger de chemins.


12.6 Stockage des trains avec pools


Les pools peuvent être utilisés pour stocker les trains avant ou entre les tâches actives, ou lorsque toutes les tâches ont été effectuées. Les trains peuvent être définis pour être placés dans un pool au début de l'horaire. Si nécessaire, le train peut être extrait de la piscine. Lorsque le service est terminé, le train peut être remis à la piscine. Il n'est pas nécessaire de définir le stockage exact du train, ni de trier les différentes tâches afin d'éviter que des trains ne soient bloqués par d'autres trains qui ne sont nécessaires qu'ultérieurement. Lors de l'utilisation de pools, le système prendra soin de l'emplacement de stockage réel et sélectionnera le premier train disponible lorsqu'un train est requis.


Un pool sera composé d'une ou plusieurs voies qui serviront à garer les trains. Des voies d'accès doivent également être définies. (Pour plus de détails, voir ci-dessous.) Un type spécial de piscine est la piscine à plateau tournant. Dans un pool à plaque tournante, toutes les pistes de stockage sont connectées à une plaque tournante. Les voies d'accès sont également reliées à la plaque tournante. Lors de l'extraction ou du stockage d'un train, le train se dirigera vers la plaque tournante et la plaque tournante, avec le train dessus, sera tournée dans la position requise.


Les pools peuvent être utilisés à la fois pour l'IA et les trains de joueurs. Lorsqu'un train extrait d'un pool est sélectionné comme train de joueur, le premier train disponible sera sélectionné et défini comme train de joueur. Lorsqu'un train qui est le train du joueur est envoyé à un pool, le train se terminera dans le pool. Le joueur peut rester avec le train jusqu'à son prochain devoir, mais il n'y a aucun moyen de dire quoi ou quand ce devoir sera, car cela dépend d'autres actions mises en place pour ce pool.


12.6.1 Remarques supplémentaires


Un pool ne peut contenir que des trains dont l'utilisation est équivalente. Les trains n'ont pas besoin d'être tous du même type, mais leur utilisation doit être interchangeable. Il n'est pas possible de sélectionner un type de train spécifique dans un pool.


Attacher, détacher ou transférer n'est pas possible pour les trains stockés dans un pool. Seules les formations fixes (moteurs simples ou multiples, ou UM) peuvent être extraites ou envoyées à un pool. Si plusieurs unités sont nécessaires, celles-ci doivent être extraites séparément et couplées ensemble après la sortie de la piscine. Si plusieurs unités doivent être envoyées à un pool, celles-ci doivent être détachées avant d'être envoyées au pool. Comme l'attachement, le détachement ou les transferts ne sont pas possibles, les pools ne peuvent être utilisés que par les moteurs et les UM, c'est-à-dire pour les unités qui peuvent se déplacer par elles-mêmes. Les piscines ne peuvent pas être utilisées pour les autocars et les wagons ou les trains sans électricité.


Un "débordement" de pool peut se produire lorsqu'un train est envoyé à un pool mais que la zone de stockage est pleine à pleine capacité. Dans cette situation, le train s'arrêtera au point d'accès à la piscine, et sera retiré.


Un « débordement » de pool peut se produire lorsqu'un train est demandé à partir d'un pool mais que la zone de stockage est vide et qu'aucune unité n'est disponible. Dans cette situation, si le drapeau "forcer la création" est défini pour ce pool, le train sera créé et démarrera au point d'accès. Si ce drapeau n'est pas défini, le train est annulé. Un avertissement est envoyé au fichier journal en cas de dépassement insuffisant du pool.


12.7 Définition du pool


Les pools sont définis dans un fichier similaire à un fichier horaire, c'est-à-dire une feuille de calcul csv enregistrée sous forme de fichier texte unicode. Les fichiers doivent être stockés dans le même répertoire que les fichiers horaires (<route>\Activities\OpenRails).


La mise en page d'un fichier de pool est considérablement différente de celle d'un fichier d'horaires. Tous les paramètres sont situés dans la première colonne et une seule valeur peut être définie par ligne. La toute première ligne est ignorée.


L'extension de fichier pour les pools normaux est .pool-or ; pour les piscines à plateau tournant, il s'agit de .turntable-or.


Un fichier peut répéter des paramètres pour définir plusieurs pools, qui n'ont besoin d'aucune façon d'être liés.


Notez qu'il existe des différences essentielles entre les pools sans plateau tournant et les pools avec plateau tournant :


• Pour les pools sans plateau tournant, chaque chemin de stockage doit avoir au moins un chemin d'accès ; pour les piscines à plateau tournant, les chemins d'accès sont indépendants des chemins de stockage.


• Pour les pools sans plateau tournant, les chemins de stockage sont définis dans le sens sortant ; pour les pools de plaques tournantes, les chemins de stockage sont définis comme s'éloignant de la plaque tournante, c'est-à-dire dans le sens entrant.


12.7.1 Piscines sans plateau tournant


Paramètres pour les piscines sans plaque tournante :


#comment


Commentaire uniquement, la valeur est ignorée.


#name


Nom de la piscine. C'est le nom qui doit être utilisé dans les commandes horaires $pool pour créer, extraire ou stocker des trains pour ce pool. Ce champ est obligatoire et doit précéder tous les autres paramètres.


#storage


Un chemin qui définit une piste de stockage. Au moins une piste de stockage doit être définie pour un pool.


La trajectoire doit être définie dans le sens aller, c'est-à-dire le sens du train lorsqu'il quitte le pool.


Un chemin de stockage ne peut être qu'une seule section ; il ne peut pas passer au-dessus des aiguillages ou des passages à niveau.


#access


Un chemin qui définit l'accès à une piste de stockage. Chaque définition de piste de stockage doit être suivie d'une ou plusieurs définitions de chemin d'accès.


La trajectoire doit être définie dans le sens aller, c'est-à-dire le sens du train lorsqu'il quitte le pool.


Un chemin d'accès peut passer par des aiguillages ou des croisements mais ne peut contenir aucun point d'inversion.


#maxunits


Pour chaque piste de stockage, le nombre maximum d'unités pouvant être stockées sur cette piste peut être défini. Ce champ est facultatif.


Notez que cela ne définit que le nombre maximum d'unités. Le nombre effectif peut être inférieur si la longueur de la piste de stockage n'est pas suffisante pour contenir ce nombre d'unités.


#settings


Contient des drapeaux spéciaux pour l'utilisation du pool. Actuellement, une seule valeur est autorisée : forcer la création, qui force les trains à apparaître sur le point d'accès si le pool est en sous-capacité.


Notes complémentaires


Il n'est pas possible de définir des zones de stockage "passantes". Les chemins d'accès aux voies de stockage ne peuvent être définis qu'à une extrémité de la voie de stockage, et les trains entreront et sortiront toujours du pool par la même extrémité.


Bien que chaque chemin de stockage ait son ou ses propres chemins d'accès, il est conseillé que tous les chemins d'accès se terminent au même point, de sorte que toutes les voies de stockage soient accessibles à partir de cet emplacement. Il est possible d'avoir plusieurs points d'accès, mais il est toujours conseillé que tous les chemins de stockage soient accessibles depuis tous les points.


Si seule une partie des voies de stockage est accessible depuis un point d'accès, il existe un risque que les trains ne puissent pas être répartis de manière adéquate sur l'ensemble de la zone de stockage. Dans le pire des cas, si tous les trains sont toujours envoyés à un point d'accès et toujours extraits d'un autre point d'accès et que ces points n'accèdent pas à toutes les voies de stockage, il peut y avoir une série continue de "débordement" et "sous-débit" du pool lorsque les moteurs envoient à la piscine ne peut pas être extraite.


12.7.2 Piscines de plateau tournant


Paramètres pour les piscines à plateau tournant :


#comment


Commentaire uniquement, la valeur est ignorée.


#name


Nom de la piscine. C'est le nom qui doit être utilisé dans les commandes horaires $pool pour créer, extraire ou stocker des trains pour ce pool. Ce champ est obligatoire et doit précéder tous les autres paramètres.


#worldfile


Le nom de fichier du fichier mondial dans lequel se trouve la plaque tournante.


#uid


L'uid de la platine dans le fichier mondial. Avec #worldfile, cela définit la plaque tournante sur laquelle le pool est basé.


Les valeurs #worldfile et #uid doivent être les mêmes que les valeurs associées dans le fichier turntable.dat qui définit les horaires de travail.


#storage


Un chemin qui définit une piste de stockage. Cette trajectoire doit être définie dans le sens s'éloignant de la plaque tournante. Au moins une piste de stockage doit être définie.


La position de départ du chemin doit être en dehors de la zone de la plaque tournante. Un chemin de stockage ne peut être qu'une seule section ; il ne peut pas passer au-dessus des aiguillages ou des passages à niveau.


#access


Un chemin qui définit l'accès à une piste de stockage. Cette trajectoire doit être définie dans le sens s'éloignant de la plaque tournante. Au moins un chemin d'accès doit être défini. Le chemin d'accès n'est pas lié à une piste de stockage spécifique mais s'applique à toutes les pistes de stockage car celles-ci sont toujours accessibles via le plateau tournant.


La position de départ du chemin doit être en dehors de la zone de la plaque tournante. Le chemin peut passer par des aiguillages ou des croisements mais ne peut contenir aucun point d'inversion.


#maxunits


Pour chaque piste de stockage, le nombre maximum d'unités pouvant être stockées sur cette piste peut être défini. Ce champ est facultatif.


Notez que cela ne définit que le nombre maximum d'unités. Le nombre effectif peut être inférieur si la longueur de la piste de stockage n'est pas suffisante pour contenir ce nombre d'unités.


#speedmph and #speedkph


Ces paramètres définissent la vitesse maximale du train lors de l'accès à la plaque tournante, en mph ou km/h. Cette vitesse s'appliquera également aux pistes de stockage.


En sortie de plaque tournante sur les voies d'accès, le train reviendra automatiquement à la vitesse maximale qui s'appliquait à l'approche de la plaque tournante.


Avec ces commandes, il n'est pas nécessaire de placer des speedposts dans le parcours pour limiter la vitesse sur la plaque tournante.


#framerate


Ce paramètre définit la fréquence d'images pour faire tourner la platine. Voir Platines et fréquence d'images pour plus de détails.


#approachclearance


Ce paramètre définit la distance, en mètres, à laquelle le moteur s'arrêtera devant la plaque tournante lorsqu'il s'approche de la plaque tournante mais doit attendre que la plaque tournante s'aligne. C'est aussi la distance à laquelle la vitesse de rotation restreinte est appliquée.


#releaseclearance


Ce paramètre définit la distance, en mètres, à laquelle la plaque tournante sera relâchée après que le moteur se soit éloigné de la plaque tournante. C'est également la distance à laquelle la limitation de vitesse du plateau tournant sera levée si le moteur quitte la piscine.


#settings


Équivalent à la commande pool non-turntable du même nom.


Utilisation du plateau tournant


Ne déplacez à aucun moment le plateau tournant à l'aide des commandes manuelles.


Lorsque le train du joueur est extrait de la piscine, la plaque tournante se tournera vers la position requise. Le train du joueur peut soit attendre, soit se déplacer lentement vers la plaque tournante. Lorsque le train du joueur s'approche de la plaque tournante sur un chemin d'accès et que la plaque tournante n'est pas dans la position requise, arrêtez-vous juste avant la plaque tournante et attendez que la table soit en position. Il y aura une notification à l'écran lorsque le plateau tournant sera prêt.


Lors du déplacement sur le plateau tournant, procéder jusqu'à ce que le moteur soit complètement positionné sur le plateau tournant. Il y aura une notification à l'écran lorsque le moteur sera correctement positionné.


Lorsque le moteur est positionné, réglez la manette des gaz sur 0 % et mettez l'inverseur au point mort (ou 0 % pour les machines à vapeur). La plaque tournante commencera à se déplacer lorsque les deux conditions seront remplies. Ne déplacez pas le moteur pendant que la table tourne.


Lorsque la plaque tournante est dans la position requise, le train peut être déplacé hors de la table.


Comportement de la platine IA


Le plateau tournant se déplacera toujours vers la position requise sur l'angle le plus court.


Lorsqu'un train demande la plaque tournante mais que la plaque tournante est déjà activée ou occupée par un autre train, la demande est mise en file d'attente. La plaque tournante est libérée lorsque le moteur occupant quitte la plaque tournante et se trouve à une courte distance de celle-ci. Si aucune autre demande n'est en file d'attente, le plateau tournant restera dans cette position jusqu'à la prochaine demande.


Lorsqu'un train AI s'approche de la plaque tournante sur un chemin d'accès et que la plaque tournante n'est pas dans la position requise, le train s'arrêtera juste avant la plaque tournante et demandera à la plaque tournante de se déplacer vers cette position.


Lorsqu'un train AI est invité à sortir d'une voie de stockage et que la plaque tournante n'est pas dans cette position, il demandera à la plaque tournante de se déplacer mais ne commencera pas à se déplacer vers la plaque tournante tant que la plaque tournante n'est pas en position.


Chemins de la plaque tournante


La visionneuse de piste affichera les chemins menant à travers la plaque tournante. Les chemins de la plaque tournante, cependant, ne doivent pas traverser la plaque tournante elle-même, mais plutôt commencer à l'extérieur de la zone de la plaque tournante, comme indiqué dans cette image :

Il est conseillé d'avoir des voies d'accès séparées pour extraire les trains du pool et envoyer les trains vers le pool, surtout si la plaque tournante est partagée par plusieurs pools. Sinon, si un train est envoyé vers la plaque tournante à peu près en même temps qu'un autre est extrait, il y a un risque de situation de blocage. Le programme ne peut pas résoudre ce problème, car il ne peut pas voir que les deux trains sont tenus de continuer sur la même voie alors que le train en cours d'extraction attend toujours la plaque tournante ou est en train d'être tourné.


Platines et fréquence d'images


Normalement, la fréquence d'images de la plaque tournante (vitesse à laquelle la table tourne) est extraite du fichier de forme de la plaque tournante.


Cependant, comme les trains AI peuvent utiliser une plaque tournante n'importe où sur un itinéraire, il se peut que le fichier de forme d'une plaque tournante particulière qui n'est pas visible n'ait pas été chargé, et par conséquent la fréquence d'images ne peut pas être dérivée de cette manière. La valeur telle que définie pour le pool est utilisée comme substitut.


Si à tout moment la plaque tournante est utilisée lorsque son fichier de forme est chargé, cette valeur de remplacement est remplacée par la valeur telle que définie dans le fichier de forme. Une image par seconde correspond à une vitesse de rotation de 0,1 degré par seconde. Ce paramètre est facultatif. Si elle n'est pas définie, une valeur par défaut de 30 images par seconde est utilisée, ce qui donne une vitesse de rotation par défaut de 3 degrés par seconde.


12.8 Météo changeante


La couverture nuageuse, les précipitations et la visibilité actuelles peuvent être modifiées au cours de la journée de l'horaire avec des fichiers météorologiques. Les fichiers météo résident dans un sous-répertoire spécial WeatherFiles du dossier de l'itinéraire et ils ont l'extension de fichier *.weather-or. Ils sont sélectionnés par le joueur dans le menu du mode horaire.


Un fichier météo est un fichier JSON composé d'un seul tableau, nommé "Changes", dont chaque élément représente un événement météorologique qui s'active à un moment précis. Chaque événement est un objet JSON dont la propriété "Type" identifie le type d'événement météorologique. Concrètement, un fichier météo suit le format :


{

"Changements": [

{

"Type": "<type>",

"<propriété>": "<valeur>"

}

]

}


Il existe trois types d'événements : Clair, Précipitation et Brouillard, chacun avec ses propres ensembles de propriétés.


12.8.1 Evénement "Effacer"


Un événement Clair supprime toute précipitation ou brouillard tout en définissant les conditions de ciel couvert dominantes. Les événements Clear contiennent les propriétés JSON suivantes :

Propriété Taper Description
Time chaîne L'heure de 24 heures à laquelle cet événement s'active.
Overcast nombre L'intensité du ciel couvert en pourcentage de 0 à 100.
OvercastVariation nombre La variation de l'intensité du ciel couvert en pourcentage de 0 à 100.
OvercastRate- OfChange nombre Taux de variation de l'intensité du ciel couvert en tant que facteur d'échelle de 0 à 1.
OvercastVisibility nombre La visibilité résultante, en mètres. La valeur doit être comprise entre 10 000 et 60 000. (Pour les valeurs inférieures, utilisez un événement Fog.)

12.8.2 Evénement « Précipitations »


Un événement de précipitations représente une période de pluie suivie d'une période de temps clair, avec des transitions douces vers, hors et entre les deux phases.

Propriété Taper Description
Time chaîne L'heure de 24 heures à laquelle cet événement s'active.
Phase 1: Build up to precipitation
OvercastPrecipitationStart nombre L'intensité du ciel couvert pendant la montée jusqu'à l'épisode de précipitations en pourcentage de 0 à 100.
OvercastBuildUp nombre Taux de variation de l'intensité du ciel couvert avant l'épisode de précipitations sous la forme d'un facteur d'échelle de 0 à 1.
PrecipitationStart- Phase nombre La durée de la phase d'accumulation des précipitations, en secondes. Doit être compris entre 30 et 240.
Phase 2: Precipitation spell
PrecipitationType string Le type de précipitation. Doit être neige ou pluie
PrecipitationDensity nombre L'intensité des précipitations en tant que facteur d'échelle de 0 à 1.
PrecipitationVariation nombre La variabilité de l'intensité des précipitations en tant que facteur d'échelle de 0 à 1.
PrecipitationProbability nombre La probabilité de l'événement de précipitation en pourcentage de 0 à 100.
PrecipitationSpread nombre Le nombre de périodes distinctes d'averses pendant la période. Doit être compris entre 1 et 1000.
PrecipitationVisibilityAtMinDensity nombre La visibilité à une densité de précipitation minimale.
PrecipitationVisibilityAtMaxDensity nombre La visibilité à la densité maximale des précipitations.
Phase 3: Dispersion after precipitation
OvercastDispersion nombre Taux de variation de l'intensité du ciel couvert après la période de précipitations sous forme de facteur d'échelle de 0 à 1.
PrecipitationEnd- Phase nombre La durée de la phase de dispersion des précipitations, en secondes. Doit être compris entre 30 et 360.
Phase 4: Clear spell
Overcast nombre L'intensité du ciel couvert en pourcentage de 0 à 100.
OvercastVariation nombre La variation de l'intensité du ciel couvert en pourcentage de 0 à 100.
OvercastRate- OfChange nombre Taux de variation de l'intensité du ciel couvert en tant que facteur d'échelle de 0 à 1.
OvercastVisibility nombre La visibilité résultante, en mètres. La valeur doit être comprise entre 10 000 et 60 000.

12.8.3 Événement « Brouillard »


Un événement de brouillard réduit considérablement la visibilité dominante. Il présente des transitions fluides dans et hors du brouillard, de l'événement météorologique précédent au prochain événement météorologique.

Propriété Taper Description
Time chaîne L'heure de 24 heures à laquelle cet événement s'active.
FogVisibility nombre La visibilité résultante, en mètres. Valeur maximale 1000. (Pour des valeurs plus élevées, utilisez un événement Clear.)
FogSet- Time nombre Le temps de transition pour que le brouillard s'installe, en secondes. La valeur doit être comprise entre 300 et 3600.
FogLift- Time nombre Le temps de transition pour que le brouillard se lève, en secondes. La valeur doit être comprise entre 360 et 3600.
FogOvercast nombre L'intensité du ciel couvert qui en résulte après la levée du brouillard en pourcentage de 0 à 100.

12.9 Exemple de fichier horaire


Voici un extrait d'un fichier horaire (affiché dans Excel):

12.10 Quels sont les outils disponibles pour développer un emploi du temps ?


Il est recommandé d'utiliser un puissant programme autonome (Excel n'est pas nécessaire), appelé Timetable Editor. Il est inclus dans le package OR et accessible à partir du bouton Outils du menu OR.

Share by: