11.3 Definition de la table des horaires
11.3.2 Définitions des colonnes
11.3.3 Définitions des rangées
1.4.1 Description de la table d’horaires
11.4.3 Details de la localisation
11.4.4 Details de la synchronisation
11.5 Notes complémentaires sur les horaires
11.5.2 Traitement de la commande #dispose pour le train de joueurs
11.5.3 Fin de l’exécution du tableau d'horaire
11.5.4 Calcul du délai de fonctionnement
11.5.5 Pas d'accouplement automatique
11.5.6 Utilisation de Consists dans les commandes de triage
11.5.7 Exigences en matière de signalisation et concept d'horaire
Général
11.6. Stockage des trains avec des pools
11.7.1 Pools sans table tournante
11.7.2 Pools avec table tournante
11.9. Exemple de fichier horaire (TimeTable)
11.10 Quels sont les outils disponibles pour élaborer un horaire ?
Le concept d'horaire ne remplace pas la définition de l'activité, mais constitue un moyen alternatif de définir les trains contrôlés par des joueurs et par des ordinateurs (AI et Static).
Dans une activité, le train du joueur est défini explicitement, et tous les trains d'AI sont définis dans une définition de trafic. Les trains statiques sont définis séparément.
Dans un Timetable, tous les trains sont définis de la même manière. Au début d'un parcours, le train-joueur requis est sélectionné dans la liste des trains disponibles. Dans la définition même de l'horaire, 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é comme tel, il sera utilisé comme train AI. Les trains statiques sont définis de la même manière mais ne peuvent pas être sélectionnés comme train joueur.
Par conséquent, le nombre d'activités différentes pouvant être jouées à partir d'un même fichier horaire est égal au nombre de trains définis dans l'horaire, moins les trains statiques.
Les aspects importants pour lesquels l'utilisation d'éléments spécifiques dans OR ou dans MSTS pour les horaires diffère sensiblement pour une activité sont indiqués en gras.
Les données de l'horaire sont définies dans une feuille de calcul et sauvegardées dans un fichier *.csv (fichier séparé par des caractères) au format Unicode. Le caractère de séparation doit être soit ',' (virgule), ';' (point-virgule) ou le caractère de tabulation.
Ne pas sélectionner l'espace comme caractère de séparation.
Comme ';' ou ',' ou tabulation sont des caractères de séparation possibles, ces symboles ne doivent être utilisés nulle part dans les données réelles. La mise en place 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 les horaires.
Les fichiers *.csv sauvegardé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 Activities de l'itinéraire.
Plusieurs horaires peuvent être chargés simultanément en utilisant des fichiers de groupe d'horaires. Un fichier de groupe est un fichier texte qui porte l'extension .*.timetablelist-or, qui est également situé dans le sous-répertoire OpenRails du répertoire Activities de la route, et qui contient les noms d'un ou plusieurs fichiers horaires listés sur chaque ligne. La première ligne peut également commencer par le symbole #, auquel cas le texte qui suit sera utilisé comme nom d'affichage du groupe d'horaires dans le sous-réperoire Open Rails.
Voici un exemple de fichiers de groupe d’horaires :
#All Northeast Corridor Services - Fri Aug 2018
Amtrak - Fri Aug 2018.timetable-or
MARC Camden Line - Fri Aug 2018.timetable-or
MARC Penn Line - Fri Aug 2018.timetable-or
SEPTA Wilmington-Newark - Fri Aug 2018.timetable-or
Pools ( § 11.6 ) peut être utilisé pour stocker les trains hors service sur la base du premier arrivé, premier servi, sans qu'il soit nécessaire de programmer manuellement les sillons dans et hors des voies de garage. Les fichiers de pool sont situés dans le même répertoire OpenRails que les fichiers horaires. Ils portent l'extension .pool-or ou .turntable-or.
Weather files ( § 11.8 ), une fonctionnalité exclusive au mode horaire, orchestrent les changements dans les facteurs de couverture nuageuse, de précipitations et de visibilité au cours de la journée. Ils sont situés dans un sous-répertoire spécial WeatherFiles du dossier de l'itinéraire et portent l'extension *.weather-or. Le joueur active un fichier météo en le sélectionnant dans la section "mode horaire" du menu principal ; cela remplace les conditions météorologiques statiques.
Lors du lancement d'un fichier d'horaires, le mode Horaires est sélectionné dans le menu principal. Le fichier d'horaires ou le fichier de groupe d'horaires souhaité doit ensuite être sélectionné dans l'affichage « Ensemble d'horaires » du menu principal.
Après avoir sélectionné l'horaire souhaité, une liste de tous les trains contenus dans cet horaire s'affiche et le train souhaité peut être sélectionné.
Il est également possible de sélectionner la saison et les conditions météorologiques (statiques ou définies par le fichier), qui ne sont pas prédéfinies dans la définition de l'horaire.
Un horaire se compose d'une liste de trains et, pour chaque train, de l'horaire requis pour ces trains. L'horaire peut se limiter à l'heure de départ ou inclure les heures intermédiaires.
Actuellement, les horaires intermédiaires sont limités aux emplacements des "quais" tels qu'ils sont créés à l'aide de l'éditeur d'itinéraires TSRE ou MSTS.
Chaque colonne de la feuille de calcul contient les données d'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 ne présente que les grandes lignes, une description plus détaillée suivra dans les paragraphes suivants.
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 en utilisant la syntaxe suivante :
- #comment : la colonne contient uniquement un commentaire et est ignorée lors de la lecture de l'horaire.
- <blank> : la colonne est l'extension de la colonne précédente.
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 :
• #commentaire : la ligne contient uniquement un commentaire et est ignorée lors de la lecture du planning.
• <vide> : la ligne est une extension de la ligne ci-dessus.
• #path : définit le sillon du train.
• #consist : définit la composition du train.
• #start : définit l'heure à laquelle le train démarre.
• #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é une fois terminé.
• #speed, #speedmph ou #speedkph : définit le comportement de vitesse du train en mètres par seconde, miles par heure, ou kilomètres par heure, respectivement ; la même unité doit être utilisée dans un même horaire.
• #restartdelay : définit des retards aléatoires pour un train.
• #briefing : la ligne contient le texte de briefing pour chaque train et est ignorée lors de la lecture de l'horaire.
Chaque cellule qui se trouve à l'intersection d'une colonne de train et d'une ligne d'emplacement peut contenir des détails de synchronisation pour ce train. Les commandes de synchronisation peuvent être définies aux endroits où le train s'arrête, mais peuvent également être définies pour des endroits où aucun timing n'est inséré lorsque le train passe par cet endroit sans s'arrêter.
Bien que les lignes et colonnes #comment soient généralement ignorées, le contenu de la cellule à l'intersection de la première ligne #comment et de la première colonne #comment est utilisé comme description du calendrier. Celui-ci apparaît comme nom de l'horaire dans le menu Open Rails et est utilisé pour référencer les trains d'autres horaires.
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é pour faire référence à ce train dans une commande de train ; voir les détails ci-dessous.
La séquence des trains n'est pas importante.
À l'heure actuelle, les emplacements possibles sont limités aux « plates-formes » telles que définies dans l'éditeur d'itinéraire TSRE ou 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 la localisation ne peut pas être trouvée et donc ne peut pas être traitée.
De plus, chaque nom de lieu doit être unique, sinon sa position dans le sillon pourrait être ambiguë.
L'ordre des lieux n'est pas important, car l'ordre dans lequel les gares sont traversées par un train est défini dans le sillon de ce dernier. Pour la même raison, le sillon d'un train peut être défini de manière à passer entre certaines localités ou à contourner certaines gares.
Chaque cellule située à une intersection d'un train et d'un emplacement peut contenir les détails de synchronisation de ce train à cet emplacement. Les heures sont définies en HH:mm et l'horloge de 24 heures doit être utilisée. Si une seule heure est insérée, elle est considérée comme l'heure de départ (sauf au lieu final).
Si l’heure d’arrivée et l’heure de départ doivent être définies, elles doivent être séparées par un tiret « - »
Des commandes de synchronisation supplémentaires peuvent être incluses. Ces 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 synchronisation, mais le train doit passer par cet endroit pour que les commandes soient effectives.
Bien qu'un lieu puisse être défini plusieurs fois dans un horaire, il n'est pas possible de définir plusieurs fois les détails de l'horaire des trains pour un lieu donné. Si un train suit un itinéraire qui le fait passer plus d'une fois par le même lieu, il doit être "scindé" en plusieurs entrées de train.
• Colonne #comment.
Une colonne avec la définition #comment dans la première ligne est une colonne de commentaire et est ignorée lors de la lecture de l'horaire, à l'exception de la cellule à l'intersection de la première colonne de commentaire et de la première ligne de commentaire.
• Colonne <Blank>.
Une colonne dont la première ligne comporte une cellule vide est considérée comme la suite de la colonne précédente. Elle peut être utilisée pour insérer des commandes de contrôle qui s'appliquent aux détails de la colonne précédente.
Cela peut être utile lorsque les temps sont calculés automatiquement à l'aide de formules dans la feuille de calcul, car l'insertion de commandes dans la cellule de temps elle-même exclurait l'utilisation de ces formules.
• Ligne #comment.
Une ligne avec la définition #comment dans la première colonne est une ligne de commentaire et est ignorée lors de la lecture du planning, à l'exception de la cellule située à l'intersection de la première colonne de commentaire et de la première ligne de commentaire.
• Ligne <Blank>
Une ligne dont la première colonne comporte une cellule vide est considérée comme la suite de la ligne précédente.
• La ligne #Path.
La ligne #Path définit le chemin de ce train. Le sillon doit être un fichier *.pat tel que défini par l'éditeur d'activités MSTS ou par Trackviewer, et doit être situé dans le répertoire Path de l'itinéraire. Ce champ est obligatoire.
Timetable utilise les mêmes parcours que ceux définis pour les activités.
Cependant, les points d'attente ne doivent pas être définis dans les sillons pour être utilisés dans les horaires, car le traitement des points d'attente n'est pas pris en charge par le concept d'horaire. Les points d'attente 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 feuilles d’horaires importantes peuvent contenir de nombreux sillons, et le chargement de ceux_ci peut prendre un temps considérable (plusieurs minutes). Pour réduire ce temps de chargement, les sillons peuvent être stockés dans un format binaire traité.
Ce format est le même que celui utilisé dans la commande 'save'. Il est à noter que l'utilisateur ne peut pas accéder directement aux informations sur les chemins binaires, que ce soit pour les lire ou pour les écrire.
Lorsque /binary est défini, le programme vérifie si un chemin binaire existe. Si c'est le cas, il lira ce chemin. Si ce n'est pas le cas, il lira le chemin "normal" et le stockera en tant que chemin binaire pour une utilisation ultérieure. Les chemins binaires sont stockés dans un sous-réper- toire 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 ne seront plus à jour. Dans ce cas, elles sont supprimées et recréées automatiquement lorsque l'utilisateur démarre l'itinéraire.
• Ligne #consist
La ligne #consist définit la composition utilisée pour ce train. Ce champ est obligatoire.
Toutefois, si le train est exploité en tant que train AI et qu'il est "formé" à partir d'un autre train (voir ci-dessous), les informations relatives à la 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é à partir d'un autre train. La définition du convoi doit être un fichier *.con tel que défini par l'éditeur d'activité MSTS ou par l'éditeur de convoi TSRE5, et doit être stocké dans le répertoire de convoi défini.
Une syntaxe plus complexe de la définition du contenu est également possible, comme décrit ci-dessous.
Cela permet à une définition de consist de ne pas être une simple chaîne de caractères faisant directement référence à un fichier, mais une combinaison de chaînes de caractères, avec la possibilité d'utiliser (une partie) du consist en sens inverse.
La syntaxe generale est:
consist [$reverse] [+ consists [$reverse] [+ ...] ]
Exemple:
Un train tracté par une locomotive, utilisant le même ensemble de voitures, circulant dans les deux sens. Deux consists sont définis : c_loco et c_wagons. Les définitions du consist qui peuvent désormais être utilisées sont :
c_loco + c_wagons,
et pour l’autre sens :
c_loco $reverse + c_wagons $reverse
Veuillez noter que $reverse s'applique toujours uniquement au sous-consist avec lequel il est défini, et non au consist combiné complet.
Si ce train à besoin de wagons supplémentaires, par exemple 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,
et pour l’autre sens :
c_loco $reverse + c_add $reverse + c_wagons $reverse
Il est clair que cela permet d'économiser sur la définition du nombre total d'unités requises et, en particulier, sur la tâche fastidieuse consistant à définir des unités "inversées". En cas d'utilisation d'unités multiples, cela est encore plus utile.
Supposons qu'il y ait deux ensembles d'unités multiples, circulant soit comme des trains individuels, soit comme des trains combinés. Normalement, il faudrait six compositions différentes pour couvrir tous les trains, mais maintenant seulement deux suffisent : la composition_a et la composition_b. Les différentes combinaisons sont les suivantes :
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 de caractères qui contiennent "+" ou "$" peuvent être utilisées dans les horaires, mais doivent être entourées de < >. Par exemple :
<loco+wagon>+<$loco+wagon>$reverse
• Ligne #start :
La ligne #start définit l'heure à laquelle le train démarre. Elle doit être définie comme HH:mm, et l'horloge de 24 heures doit être utilisée. Ce champ est obligatoire.
Utilisation de l'heure de départ pour les trains AI :
- Lorsqu'un train est formé à partir d'un autre train et que cet autre train est inclus dans l'horaire, l'heure définie dans #start n'est utilisée que pour définir le moment où le train devient actif.
Utilisation de l'heure de départ pour le train de 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 inclus dans 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'à ce que le train dont il est formé soit arrivé. Cela s'applique à la fois au train de l'AI et au train du joueur. Cela signifie que le début de l'activité du joueur 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.
• Ligne #note
La ligne #note peut être utilisée pour définir des commandes de notes qui ne sont pas liées à l'emplacement mais qui s'appliquent à l'ensemble du train. Elle peut également être utilisée pour définir des commandes pour les trains qui ne s'arrêtent pas ou ne passent pas par un lieu défini. Cette ligne est facultative.
• Ligne #dispose
La ligne #dispose définit ce qu'il advient d'un train d'AI lorsqu'il a atteint la fin de son parcours, c'est-à-dire lorsqu'il est arrivé au bout de la trajectoire définie. Les informations contenues dans la ligne #dispose peuvent préciser si le train doit être transformé en un autre train et, le cas échéant, comment et où. Pour plus de détails, voir les commandes #dispose décrites plus loin.
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 supprimé de l'activité une fois qu'elle s'est terminée.
La ligne #dispose actuellement n'affecte pas la fin du parcours du train du joueur.
• Ligne #speed
Ce champ facultatif définit la vitesse maximale des trains, ce qui peut limiter le train à une vitesse inférieure à celle qui serait normalement autorisée. Notez que toute valeur définie ici ne sera jamais appliquée si elle dépasse la vitesse maximale fixée par les panneaux de vitesse ou les signaux, ou définie dans le fichier de composition.
Si elle est spécifiée, une seule ligne #speed (m/s), #speedkph, ou #speedmph peut être présente dans un seul fichier horaire.
Cette ligne accepte également un certain nombre de commandes de vitesse.
• Ligne #restartdelay
Des retards sont appliqués lors du redémarrage d'un train à partir d'un arrêt, par ex. à une gare ou à un signal. Des retards aléatoires par défaut sont définis pour chaque train. Les valeurs par défaut peuvent éventuellement être annulées à l'aide de commandes de délai dans le champ #restartdelay.
Le retard aléatoire est calculé comme suit : partie fixe +Random (partie variable), toutes les valeurs étant exprimées en secondes.
• Ligne #briefing
La ligne #briefing est facultative et contient un texte qui décrit le fonctionnement du train pour l'utilisateur. Ce texte apparaît dans la fenêtre principale d'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 #commentaire fournit un texte qui décrit l'ensemble du calendrier. Le fichier emploi-horaire ne permet pas aux champs de contenir des sauts de ligne mais si des sauts HTML « <br> » sont insérés dans le champ #briefing, ceux-ci seront convertis en sauts de ligne.
Les commandes de contrôle peuvent être définies pour contrôler le comportement et les actions du train et de la signalisation.
Syntaxe des commandes
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.
• Syntaxe value : définit la valeur liée à la commande. Certaines commandes n’ont pas de valeur.
• Qualificateurs de syntaxe : ajoutent des informations supplémentaires à la commande. Certaines n'ont pas de qualificateurs. Certains qualificatifs peuvent être facultatifs, tandis que d'autres peuvent être obligatoires, ou obligatoires uniquement en combinaison avec d'autres qualificatifs.
• Valeurs des qualificatifs syntaxiques : un qualificatif peut exiger une valeur.
$name = value /qualifier=value
Plusieurs valeurs peuvent être définies, séparées par des "+". Notez que les qualificatifs 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 qu'il est défini dans la première ligne.
Si le train cible figure dans un horaire distinct du même groupe d'horaires, la référence prend la forme suivante : nom du train:description de l'horaire, où la description est le texte situé à l'intersection de la première ligne #commentaire et de la première colonne #commentaire dans l'autre fichier horaire.
Les commandes concernant les stations s'appliquent à tous les arrêts d'une ligne de station donnée. Elles sont insérées directement après le nom dans la première colonne.
$hold, $nohold and $forcehold
Si $hold est activé, cela signifie que le signal de sortie pour ce lieu doit être maintenu à danger jusqu'à 2 minutes avant le départ du train.
Un signal de sortie est attribué à un quai si ce signal est situé au-delà du repère de fin de quai (dans le sens de la marche), mais toujours à l'intérieur du même nœud de voie - il ne doit donc pas y avoir de points, etc. entre le repère de quai et le signal de sortie.
Par défaut, le signal sera à voie libre.
$forcehold définit le premier signal au-delà du quai comme signal de maintien, même si ce signal n'est pas attribué au quai en tant que signal de sortie. Cela peut s'avérer utile sur des sites à l'agencement complexe, où les signaux ne se trouvent pas directement aux extrémités des quais, mais où le fait de ne pas maintenir les signaux peut entraîner des retards pour les autres trains.
$forcewait
Forcer le train à attendre si le signal suivant est à danger, même si ce signal n'est pas reconnu comme le signal de sortie pour ce quai.
$nowaitsignal
Normalement, si un train est arrêté dans une gare et que le signal suivant est différent de voie libre, le train ne partira pas. Toutefois, dans certaines situations, il convient de passer outre cette règle.
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 petits signaux ) ou sans aucun aiguillage. Le signal suivant est probablement un signal de bloc « normal » et peut être situé à une certaine distance de la station. Dans cette situation, le train n'a pas besoin d'attendre que ce signal soit autorisé pour partir.
D'autres situations se présentent où les trains de marchandises n'attendent pas que le signal soit libéré et s'approchent du signal afin de perdre le moins de temps possible pour quitter la gare.
$terminal
La commande $terminal modifie le calcul de la position d'arrêt et fait en sorte que le train s'arrête à l'extrémité terminale du quai. La vérification de la trajectoire du train permet de déterminer si le quai est réellement un quai de terminaison et à quelle extrémité il se termine.
Si le quai se trouve dans la première section du sillon d'un train, ou s'il n'y a pas de jonction dans le sillon menant à la section où se trouve le quai, on suppose que le train commence à un quai terminal et que la fin du train est placée près du début du quai.
Si le quai se trouve dans la dernière section du sillon ou s'il n'y a pas de bifurcation au-delà de la section où se trouve le quai, on suppose que le quai se trouve à l'extrémité du sillon et que le train circulera jusqu'à proximité de l'extrémité du quai dans son sens de marche.
Si le quai se trouve dans la dernière section du sillon ou s'il n'y a pas de jonctions au-delà de la section où se trouve le quai, on suppose que le quai se trouve à la fin du sillon du train et que le train circulera jusqu'à proximité de l'extrémité du quai dans sa direction de marche.
L'option $terminal peut être définie pour une gare ou pour des trains individuels. Si elle est définie pour une gare, elle ne peut pas être appliquée un train.
Toutefois, en raison de la logique décrite ci-dessus, si le réglage est effectué pour une gare qui possède à la fois des quais terminaux et des quais de transit, les trains dont les sillons passent par ces quais auront les positions d'arrêt normales.
$closeupsignal
Définit un dégagement réduit en approche du signal pour maximiser l'utilisation de la longueur de plate-forme disponible
$extendplatformtosignal
Parfois, le marqueur de quai est placé à une certaine distance de l'extrémité réelle du quai où se trouve le signal, par exemple dans le cas d'aiguillages le long du quai. Normalement, les trains s'arrêtent loin de l'extrémité du quai et bloquent les aiguillages à l'arrière. Ce paramètre place la position "fin de quai" non pas à la position du marqueur de quai, mais juste avant la position du signal.
$restrictplatformtosignal
Parfois, le marqueur de quai est placé au-delà du signal de sortie de ce quai. Si le signal affiche danger, le train s'arrêtera au signal et s'il s'agit d'un long train, cet arrêt ne sera pas considéré comme l'arrêt en gare car le train n'a pas atteint la position d'arrêt à quai requise. Ce paramètre place la position "fin de quai" non pas à la position du marqueur de quai, mais juste avant la position du signal.
$stoptime
Syntaxe : $stoptime=n (n est le temps en secondes)
Définit l'heure d'arrêt par défaut requise pour 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.
$keepclear
Définit que la position d'arrêt doit être telle que la longueur de quai indiquée dans la commande doit être maintenue libre devant ou derrière le train. Cela peut être essentiel si un autre train doit être attaché ou si un autre train doit être pris 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 est de n mètres. Si le quai dispose d'un signal de sortie, le train s'arrêtera devant le signal même si cela signifie que la distance minimale est inférieure à n mètres, à moins que le paramètre / force ne soit également défini. Dans ce cas, le train doit poursuivre sa route au-delà du signal de sortie.
Notez que le train n'ira jamais au-delà de la fin de sa trajectoire.
front = <n> (n in meter)
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ètres. Si l'arrière du train se trouve en dehors du quai, l'emplacement est calculé de manière à ce que l'arrière du train se trouve à l'extrémité du quai, même si cela signifie que moins de n mètres sont disponibles, sauf lorsque le paramètre /force est défini comme ci-dessous.
force
Force la section avant ou arrière à rester dégagée, même si le train doit franchir le signal de sortie (pour le paramètre arrière), ou si l'arrière du train est hors quai (pour le paramètre avant).
$endstop
Lorsque la trajectoire du train se poursuit 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.
Ces commandes peuvent être définies pour chaque cellule de synchronisation, c'est-à-dire à chaque intersection de la colonne train et de la ligne emplacement, ou dans la ligne #note. Les commandes s'appliqueront à l'emplacement et à partir de celui-ci (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 la station elle-même, mais il peut aussi 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 circuler en premier. Le train référencé peut être acheminé dans la même direction ou dans la direction opposée que ce train lui-même. Une recherche est effectuée pour la première section de voie commune aux deux trains, à partir de l'endroit où $wait est défini, ou au début du sillon s'il est défini dans la ligne #note.
Si le point de départ est déjà commun aux deux trains, on recherche d'abord 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 activée, le tronçon ne sera pas libéré pour ce train tant que le train référencé n'aura pas franchi ce tronçon. Cela oblige le train à attendre. Le train référencé doit exister pour que l'attente soit valide.
Toutefois, si l'option /notstarted est activée, l'attente sera également activée même si le train référencé n'a pas encore démarré. Ceci 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 y a un risque que le train libère la section avant que le train référencé ne démarre.
Il convient d'être prudent lors de la définition d'un $wait à un endroit où le train doit faire marche arrière. Étant donné que la recherche ne porte que sur le sous-chemin actif, un $wait défini à l'endroit où le train doit faire marche arrière ne sera pas efficace, car le tronçon commun se trouvera dans le sous-chemin suivant l'inversion. Dans une telle situation, le train doit être "divisé" en deux définitions distinctes, l'une jusqu'à l'endroit où le train doit faire marche arrière et l'autre à partir de cet endroit.
Valeur de la commande : train référencé, obligatoire.
Qualificatifs de la commande :
/maxdelay=n : n est le retard maximal (en minutes) du train référencé pour lequel l'attente est encore valable.
Ce retard est compensé pour tout retard du train qui doit attendre, par exemple si maxdelay est de 5 minutes, que le train référencé a un retard de 8 minutes mais que ce train lui-même a un retard de 4 minutes, le retard compensé est de 4 minutes et l'attente est donc toujours valide.
Ce paramètre est facultatif. S'il n'est pas défini, un délai maximum de 0 minute est défini comme paramètre.
/notstarted : l'attente sera également appliquée si le train référencé n'a pas encore
démarré.
/atstart: the wait is activated at the present position rather than the first non-
common position.
Peut être utilisé lorsqu'un train en sens inverse doit se terminer au même endroit que celui où ce train a démarré et qu'il n'y a pas d'emplacements de passage possibles entre cette position de départ et la position actuelle de l'autre train.
/owndelay=n (n est le retard en minutes) ;
le qualificatif "owndelay" ne rend la commande valide que si le train en question est retardé d'au moins le nombre total de minutes défini pour le qualificatif "owndelay".
Cette fonction peut être utilisée pour retenir un train en retard de manière à ce qu'il ne cause pas de retards supplémentaires aux autres trains, en particulier sur les tronçons à voie unique.
/trigger=HH:MM
Option expérimentale : Cette commande ne peut être déclenchée qu'après le délai spécifié.
/endtrigger=HH:MM
Experimental option: Cette commande ne peut être déclenchée qu'avant l'heure spécifiée.
$follow
Syntaxe : $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 section où les sillons des trains se rejoignent après une section qui n'était pas commune, 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 chaque section de ce type.
La commande ne peut être activée que pour des trains acheminés dans la même direction. Lorsqu'une position d'attente est trouvée 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 le chemin du train référencé ou, s'il l'est, que le train référencé a déjà libéré cette position. Dans le cas contraire, une impasse se produirait, le train référencé ne pouvant pas dépasser le train qui l'attend.
Valeur de commande : train référencé, ceci est obligatoire.
Qualifications de la commande
/maxdelay=n :
n est le retard maximal (en minutes) du train référencé pour lequel l'attente est encore valable. Ce retard est compensé par tout retard du train qui doit attendre, par exemple si maxdelay est de 5 minutes, que le train référencé a un retard de 8 minutes mais que ce train lui-même a un retard de 4 minutes, le retard compensé est de 4 minutes et l'attente est donc toujours valable.
Ce paramètre est facultatif. S'il n'est pas défini, un délai maximum de 0 minute est défini comme paramètre 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) :
le qualificatif de commande owndelay ne rend la commande valide que si le train en question est retardé d'au moins le nombre total de minutes défini pour le qualificatif owndelay.
Cette fonction peut être utilisée pour retenir un train en retard de manière à ce qu'il n'entraîne pas de retard supplémentaire pour les autres trains, en particulier sur les tronçons à voie unique.
/trigger=HH:MM
Option expérimentale : restreint le déclenchement de cette commande uniquement après l'heure spécifiée.
/endtrigger=HH:MM
Option expérimentale : limite cette commande au déclenchement uniquement avant l'heure spécifiée.
$connect
Syntaxe : $connect=<train> /maxdelay=n /hold=h.
Définit qu'un train doit attendre dans une gare jusqu'à l'arrivée d'un autre train, afin de permettre aux passagers d'effectuer la correspondance entre les trains.
Le train sera programmé pour permettre cette correspondance, et la commande $connect est définie pour maintenir cette correspondance si le train qui arrive est en retard.
Notez que la commande $connect ne bloque pas le signal. Si les sillons de ce train et du train arrivant entrent en conflit avant que le train arrivant n'atteigne la gare, des commandes $wait ou $hold supplémentaires doivent être définies pour éviter l'impasse.
Valeur de commande : référence au train à attendre, celle-ci est obligatoire
Qualificateurs de commande :
/maxdelay=n :
n est le retard maximum (en minutes) du train à l'arrivée pour lequel ce train est retenu.
Si le retard du train arrivant dépasse cette valeur, le train n'attendra pas.
Le retard maximal est indépendant du retard du 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 nécessaire aux passagers pour effectuer la correspondance. Ce qualificatif et sa valeur sont obligatoires
$waitany
Syntaxe : $waitany=<path> /both /opposite
Cette commande permet d'établir un temps d'attente pour tout train se trouvant sur le tronçon de sillon défini.
Si le qualificatif /both est défini, l'attente sera appliquée à tout train quelle que soit sa direction, sinon l'attente n'est définie que pour les trains se dirigeant dans la même direction que la définition du sillon.
Le sillon défini dans la commande waitany doit avoir une section commune avec le sillon du train lui-même, sinon aucune position d'attente ne peut être trouvée.
Cette commande peut être utilisée pour contrôler l'attente des trains au-delà des règles normales de signalisation ou d'impasse. Par exemple, elle peut être utilisée pour contrôler un train qui doit quitter une voie d'évitement ou un triage, en vérifiant que la ligne que le train doit rejoindre n'est pas en approche sur cette ligne, sur une distance supérieure à celle que la signalisation devrait normalement libérer, afin de s'assurer que le train ne se trouve pas sur la trajectoire d'un autre train en approche sur cette ligne.
Avec le qualificatif /both, elle peut être utilisée à l'extrémité des lignes à voie unique pour s'assurer qu'un train ne pénètre pas dans cette section au-delà de la dernière boucle de passage si un autre train s'y trouve déjà, car cela pourrait entraîner des blocages irrémédiables.
Avec le qualificatif /opposite, la commande ne recherche que les trains dans la direction opposée au sillon défini.
$callon
Cela permet à un train d'accéder à 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 and $forcehold
Ces commandes sont fonctionnellement identiques et ont priorité sur leurs commandes de gare respectives, mais s'appliquent uniquement au train actuel.
$forcewait
Identique à la commande station, mais ne s'applique qu'au train en cours.
$nowaitsignal
Identique à la commande station, mais ne s'applique qu'au train en cours.
$waitsignal
Peut être utilisé pour remplacer et annuler une commande de gare $nowaitsignal pour le train en cours.
$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 doté de la commande $noclaim serait toujours dernier dans la file d'attente aux carrefours occupés, donnant toujours la priorité à tout autre train.
$detach
Syntaxe : $detach <detach parameters> <forms parameters>
Définir les détails d'un train pour détacher une partie de ce train.
Paramètres pour définir la partie à détacher :
/puissance
Détache l'unité d'alimentation. Le système vérifiera si l'unité d'alimentation se trouve à l'avant ou à l'arrière.
Si les deux sont trouvés, c'est l'avant qui prévaut. S'il n'y a pas d'unité d'alimentation à l'une ou l'autre extrémité, rien n'est détaché.
/leadingpower
Détache l'unité d'alimentation avant uniquement. S'il n'y a pas d'unité motrice à l'avant, en n'est détaché.
/allleadingpower
Détache toutes les unités de puissance à l'avant du train. S'il n'y a pas d'unité de puissance à l'avant, rien n'est détaché.
/trailingpower
Détache l'unité motrice la plus en arrière du train. Si l'unité arrière n'est pas une unité motrice, rien n'est détaché.
/alltrailingpower
Détache toutes les unités de puissance situées à l'arrière du train. S'il n'y a pas d'unité de puissance à 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étermine à quelle extrémité du train se trouvent les unités motrices, puis détache 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 de l'arrière. Si les deux extrémités sont équipées d'unités motrices, 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 sera détaché à l'arrière du train. Si n dépasse la longueur réelle du train, n est réduit de telle sorte qu'une unité reste dans le train.
/consist=<consist>[+<consist>[+...]]
Nom du (des) groupe(s) à détacher. Pour l'utilisation des noms de consist dans la commande detach, voir la note sur les noms de consist ci-dessous. ( § 11.5.6 )
Le groupe à détacher doit se trouver à l'une ou l'autre extrémité du train, c'est-à-dire qu'il doit s'agir de la partie avant ou de la partie arrière du train.
Si une liste de convois est définie, elle doit être établie dans l'ordre des convois à 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, le premier convoi de la liste doit être la partie avant, mais si les unités doivent être détachées à l'arrière, le premier convoi 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 le train formé :
/forms=<train>
La partie détachée formera un train comme indiqué.
/statique
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 gare, il est inutile de définir quoi que ce soit au-delà de cet arrêt, et rien ne peut être défini dans le champ #dispose non plus.
Si l'autre train auquel ce train
doit s'attacher n'est pas à l'endroit où l'attache doit avoir lieu, ce train
s'arrêtera sans que l'attache ait lieu. Il est donc conseillé d'utiliser une
commande $wait pour s'assurer que l'autre train se trouve à l'endroit 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 le premier arrivé.
Paramètres valables uniquement à l'arrêt en station.
/firstin
Ce train est en première position et attendra l'arrivée du second train pour effectuer l'attache. L'autre train peut arriver avant ce train par un aiguillage ou dans la direction opposée.
/setback
Ce train est en première position et attend que l'autre train arrive derrière. Lorsque l'autre train est arrivé, ce train recule pour effectuer l'attache.
Cette fonction ne doit pas être utilisée si une locomotive doit être détachée de l'autre train, car ce dernier n'attendra pas que la locomotive se soit libérée avant d'effectuer l'attachement.
$pickup
Syntaxe : $pickup=<train> /static
Ce train prendra le train tel que défini dans la commande, ou prendra le train statique qui se trouve à l'endroit où la prise en charge est définie.
Le train pris en charge cesse d'exister. Le train complet est pris en charge, aucune modification n'est apportée à la composition des deux trains (sauf si elle est combinée à la commande $triggers dans le champ #dispose).
S'il n'y a pas de train à récupérer à l'endroit souhaité, le train continuera comme défini.
$transfer
Syntaxe : $transfer=<train> /static <transfer parameters>.
Ce train (le train "actif") transfère des unités avec le train indiqué ou avec une rame statique placée à l'endroit où le transfert est défini (le train "passif").
Lors d'un transfert, les unités sont transférées d'un train à l'autre, mais les deux trains continuent d'exister. Au moins une unité motrice doit rester sur le train "actif", cette unité motrice ne doit pas faire partie de la portion à transférer. Le train "passif" ne doit pas avoir d'unités de puissance, ou toutes les unités de puissance 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 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 définies pour le train "passif" seront déplacées vers le train "actif".
/keep
Toutes les unités, à l'exception de celles définies pour le train "actif", seront transférées vers le 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 locomotives à 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 manière à ce qu'une unité reste sur le train.
/consist=<consist>[+consist[+...]]
Nom des portions à conserver ou à transférer. Les noms des convois doivent se succéder et le premier (ou le seul) nom du convoi doit correspondre à la portion située à l'extrémité du train concernée.
$activate
Syntaxe: $activate=<train>
Active le train comme indiqué, soit lorsque le train démarre, lorsque le train est à l'arrêt indiqué ou lorsqu'il est terminé.
$create
Syntaxe : $create[=<time>] [/ahead=<train>]
La commande $create créera ce train à l'heure indiquée. Si aucune heure n'est indiquée, le train sera créé avant le départ du premier train. Le train sera "statique" jusqu'à l'heure indiquée comme heure de départ. Les règles normales de placement des trains s'appliquent toujours, de sorte qu'un train ne peut pas être placé sur une section de voie déjà occupée par un autre train.
Cependant, les voies de garage contiennent souvent plusieurs trains. Pour tenir compte de cette situation et 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 alors placé devant le train référencé, dans la direction de la trajectoire du train. Plusieurs trains peuvent être stockés sur une même voie de garage, mais il faut veiller à définir les références appropriées. La référence doit toujours être celle du train précédent - deux trains ne peuvent pas référencer le même train dans le paramètre /ahead car cela provoquerait des conflits.
Si la longueur totale de tous les trains dépasse la longueur des voies de garage, les trains "déborderont" sur 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 part de la zone d’attente définie. ( garage, voie de stationnement dans une gare etc). Pour les trains partant de ces zones, le sillon doit commencer à la fin ou près de la fin d'un des sillons d'accès définis pour cette zone. Si le sillon commence avant la dernière section de voie définie pour le sillon d'accès, il ne doit pas s'écarter de ce sillon.
Pour les zones avec plaque tournante (ex : rotonde), 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épart se situe après 00:00 à la fin de l'horaire. Peut être utilisé pour faire démarrer un train après minuit.
$static
Syntaxe : $static [/pool=<pool>] [/ahead=<train>]
Ce train sera un train statique.
/pool=<pool>
Le train est créé dans la zone référencée. Pour qu'une zone ait des trains, ceux-ci doivent être définis à l'aide de cette commande.
Le chemin d'accès doit être un chemin de stockage tel que défini pour cette zone. Notez que le train peut être placé sur l'un des autres chemins de stockage définis dans cette zone par le biais de la logique de la zone.
Si le nombre de trains créés dans une zone est supérieur à la capacité de la zone, un avertissement est émis.
/ahead=<train>
Comme ci-dessus pour la commande $create.
$activated
The train is activated through the $activate command from another train. The $activate command may be sent before or after the defined start time of this train.
A train can be activated by only one other train.
Ligne #note
La ligne de notes définit les commandes applicables au moment où le train est démarré. Outre les commandes #note exclusives énuméré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, les trains de voyageurs et les trains à grande vitesse). Mais ces valeurs ne sont pas toujours adéquates, en particulier pour les trains modernes.
Cela peut entraîner des retards lorsque l'on essaie de suivre 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, fixer 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 vite en fonction de la valeur définie.
La plupart du temps, le comportement du train est contrôlé par la physique. Mais le facteur $dec a surtout un effet secondaire important. La valeur de décélération est également utilisée pour calculer la distance de freinage requise attendue. Régler 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. Attention 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 pourra pas s'arrêter à temps, ce qui entraînera des SPAD, etc
Une valeur typique pour le matériel moderne pour la commande $dec est 2 ou 3.
$acc
Syntaxe : $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
Syntaxe : $dec=<value>
Définit la décélération requise pour ce train. <valeur> est un multiplicateur de la décélération par défaut.
$doo
Définit le train comme étant "conduit uniquement par le conducteur". Si cette option est activée, il n'y aura pas de son de départ (sifflet, cloche ou autre) au départ d'une gare.
$forcereversal
Normalement, lorsqu'une inversion est effectuée et qu'il y a un signal sur la trajectoire du train à partir du point d'inversion, la position d'inversion réelle est placée de telle sorte que le train dépasse complètement ce signal avant d'inverser la marche, et le mouvement d'inversion est donc contrôlé par ce signal.
Le réglage de $forcereversal permet au train de faire marche arrière dès qu'il a dépassé la position de marche arrière. Ceci est utile pour les manœuvres dans les gares de triage lorsqu'il n'est pas nécessaire de sortir complètement de la gare de triage pour effectuer la marche arrière et le signal d'entrée.
$max
Syntaxe : $max=<valeur>
Vitesse maximale globale pour ce train.
$cruise
Syntaxe : $cruise=<value
Vitesse maximale à laquelle le train circule normalement lorsqu'il est à l'heure.
Lorsque le retard réel dépasse le retard maximal défini (tel que défini dans $maxdelay), le train accélère jusqu'à la vitesse maximale.
$maxdelay
Syntax : $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 à la vitesse maximale.
$creep
Syntaxe: $creep=<value>
La vitesse lente est la vitesse minimale lors de l'approche finale d'un signal de danger ou d'un arrêt en station.
$attach
Syntaxe: $attach=<value>
Vitesse à laquelle le train s'attachera à un autre train.
$detach
Syntax : $detach=<value>
Vitesse à laquelle le train se détachera d'un autre train
$movingtable
Syntax : $movingtable=<value>
Vitesse à laquelle le train circulera sur les plaques tournantes.
Toutes les commandes de délai, à l'exception de la commande $reverse, se présentent sous la forme $command [/fix=<f>] [/ var=<v>], où <f> représente la composante fixe du délai et <v> représente la composante variable du délai, toutes deux en secondes.
$new
Définit le délai d'attente du train après son arrivée dans le simulateur.
Le délai fixe est fixé par défaut à 0 seconde, tandis que le délai variable est fixé par défaut à 10 secondes.
$path
Définir le délai d'arrêt du train en cas d'obstacle sur sa trajectoire, tel qu'un signal d'arrêt ou un aiguillage inversé.
Le délai fixe est fixé par défaut à 1 seconde, tandis que le délai variable est fixé par défaut à 10 secondes.
$station
Définit le délai d'attente du train après un arrêt en gare.
Le délai fixe est fixé par défaut à 0 seconde, tandis que le délai variable est fixé par défaut à 15 secondes.
$follow
Définit le délai du train lorsqu'il suit un autre train.
Le délai fixe est fixé par défaut à 15 secondes, tandis que le délai variable est fixé par défaut à 10 secondes.
$attach
Définit le délai d'attente du train après son rattachement à un autre train.
Le délai fixe est fixé par défaut à 30 secondes, tandis que le délai variable est fixé par défaut à 30 secondes.
$detach
Définit le délai d'attente du train après le détachement d'une de ses portions.
Le délai fixe est fixé par défaut à 5 secondes, tandis que le délai variable est fixé par défaut à 20 secondes.
$movingtable
Définit le délai du train après l'utilisation d'une plaque tournante.
Le délai fixe est fixé par défaut à 1 seconde, tandis que le délai variable est fixé par défaut à 10 secondes.
$reverse
Syntaxe: $reverse /additional=<value>
Lors de la marche arrière, un délai supplémentaire est ajouté pour tenir compte du temps nécessaire au conducteur pour traverser ou longer le train jusqu'à l'autre extrémité. Ce délai est fixé par défaut à 0,5 seconde par mètre de train, valeur qui peut être modifiée à l'aide de cette commande.
Pour les trains qui sont poussés en marche arrière, par exemple pour les manœuvres de trains de marchandises, il est conseillé de régler le délai de marche arrière à 0.
Les commandes Dispose peuvent être définies dans la ligne:
#dispose :
Pour définir ce qui doit être fait avec le train une fois qu'il est au terme de son voyage. 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
Syntaxe: $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 composition autre 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 tractés par des locomotives, on peut définir que la ou les locomotives doivent être mises en tête du train, pour que le train se déplace dans la direction opposée.
Pour les règles et conditions spécifiques au fonctionnement du runround, voir la discussion sur la relation entre la signalisation et le concept d'horaire.( § 11.5.7 )
Si le tête à queue est défini, l'heure à laquelle le celui-ci doit avoir lieu peut être définie. Si cette heure n'est pas fixée, le tête à queue aura lieu immédiatement à la fin du train entrant.
Valeur de la commande : train référencé, ceci est obligatoire.
Qualificateurs de commande :
/runround=<path> : <path> est le chemin à utiliser par la motrice pour effectuer un tête à queue.
Ce qualificatif est facultatif ; si elle est définie, 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 : l'heure est la définition de l'heure à laquelle le tête à queue doit avoir lieu. L'heure doit être définie en HH:mm et doit utiliser le format 24 heures.
Ce qualificatif n'est valide qu'en combinaison avec le qualificatif /runround, il 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 de gare défini mais que le train qu'il doit former démarre dans une gare, cette commande copiera les détails du premier arrêt de gare du train formé, pour garantir que ce train s'arrêtera au bon endroit . Pour que ce qualificatif fonctionne correctement, le trajet du train entrant doit se terminer dans la zone du quai du train au départ.
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 aucun arrêt en gare n'est défini pour ce train.
/closeup: La position finale du train sera proche de l'extrémité 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 de tête à queue en m/s.
$triggers
Syntax : $triggers=<train> <qualifiers>
Les $triggers définissent également le nouveau train qui sera formé à partir de ce train.
Cependant, lorsque cette commande est utilisée, le nouveau train sera formé en utilisant la définition de la composition du nouveau train et la composition existante sera supprimée.
Valeur de la commande : train référencé, obligatoire.
Qualificatifs de commandes :
/runround=<chemin> : <chemin> est le chemin à utiliser par l’engin moteur pour effectuer le runround.
Ce qualificatif est facultatif ; s'il est 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 qualificatif n'est valable qu'en combinaison avec le qualificatif /runround. Il est facultatif, mais s'il est défini, la valeur est obligatoire.
/setstop : si ce train n'a pas d'arrêt défini mais que le train qu'il doit former démarre dans une gare, cette commande copiera les détails du premier arrêt du train formé, afin de 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 sortant.
Ce qualificateur est facultatif et ne prend aucune valeur.
/gare : 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 aucun arrêt en gare n'est défini pour ce train.
/closeup : La position finale du train sera proche de l'extrémité 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 de roulement en m/s.
$static
Syntax : $static /closeup
Le train deviendra un train "statique" après sa terminaison.
Valeur de la commande : aucune.
Qualificatifs de la commande :
/closeup : La position finale du train sera proche de l'extrémité 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 endroit avant que la commande correspondante 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 démarre effectivement.
Notez que dans ces cas, le train doit effectuer deux déplacements, vers l'extérieur et vers l'intérieur.
Un parcours peut être effectué dans le cas où /forme est définie
Si l'option /triggers est définie, le changement de composition aura lieu à la position "stable". Toute inversion dans la trajectoire d'entrée ou à la position finale d'entrée est prise en compte lors de la construction du nouveau train, de sorte que la composition est orientée dans la bonne direction lorsque le nouveau train est formé à la position finale d'entrée.
$stable peut être utilisé lorsqu'un train forme un autre train, mais que le train doit quitter 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 accompli sa dernière tâche, et y être "stabilisé" en tant que train statique
Des horaires séparés peuvent être définis pour chaque mouvement ; si une telle heure n'est pas définie, le déplacement aura lieu immédiatement lorsque le déplacement précédent sera terminé.
Si des horaires sont définis, le train sera « statique » après l'achèvement du mouvement précédent jusqu'à l'heure requise.
Si le train formé a un arrêt de 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 de gare du train formé, la vérification 'setstop' (voir le qualificatif setstop dans la commande $forms ) sera automatiquement ajouté.
Valeur de la commande : aucune.
Qualificatifs de la commande :
/out_path=<path>: <chemin> est le chemin à emprunter par le train pour se rendre à la position "stable". Le début du sillon doit correspondre à la fin du sillon du train entrant.
/out_time = Heure : définition de l'heure à laquelle la marche de départ doit être entamée. L'heure est définie en HH:mm et doit utiliser l'horloge de 24 heures.
/in_path=<path>: <chemin> est le chemin à emprunter par le train pour la marche intérieure depuis la position "stable" jusqu'au départ du nouveau train. Le début du sillon doit correspondre à la fin du out_path, la fin du sillon doit correspondre au début du sillon du nouveau train.
/in_time = heure : définition de l'heure à laquelle la marche vers l'intérieur doit commencer.
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 l'extrémité de la voie ou d'un autre train.
/callon : Ce train est autorisé à s'engager sur le quai même si ce dernier est occupé.
Cette option nécessite que la fonction TrainHasCallOn ou TrainHasCallOn_Restricted soit implémentée pour le signal qui protège la plate-forme.
/runround=<chemin> : <chemin> est le chemin à utiliser par l’engin moteur pour effectuer son demi-tour. Pour plus de détails, voir la définition de l'heure à laquelle l'exécution doit avoir lieu dans la commande $forms. 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 demi-tour 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 demi-tour doit avoir lieu.
Valeurs possibles :
• out : le demi-tour aura lieu avant le début du mouvement aller.
• stable : le parcours s'effectuera en position « stable ».
• in : le demi-tour aura lieu après la fin du mouvement vers l'intérieur.
/speed=<v>: This qualifier can only be used with the $runround parameter. It defines
the maximum speed for the runround move in m/s.
/ name =< name > : ce qualificatif ne peut être utilisé qu'avec le paramètre $runround. Il
Il définit le nom que portera le train pendant le déplacement stable. C'est le nom qui apparaît dans F7 info, dans le hud info du dispatcher et dans la fenêtre du dispatcher.
/static : le train deviendra un train "statique" après avoir effectué le déplacement vers l'extérieur.
/forms=<train> : le train formera le nouveau train à la fin du mouvement vers l'intérieur. Voir la commande $forms pour plus de détails.
/triggers=<train> : le 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: optionnel
En combinaison avec /forms:
• /out_path: obligatoire
• /out_time: optionnel
• /in_path: obligatoire
• /in_time: optionnel
• /runround: optionnel
• /rrtime: optionnel, seulement valide si /runround is utilisé
• /rrpos: obligatoire si /runround is utilisé, sionon non valide.
In combination with /triggers :
• /out_path: obligatoire
• /out_time: optionnel
• /in_path: obligatoire
• /in_time: optionnel
$pool
Syntaxe : $pool=<poolname> [/direction=forward|backward]
Le train entre dans la zone définie lorsqu'il s’arrête.
Pour les zones avec plaque tournante, la direction dans laquelle le train s’engage sur 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.
$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.
$activate
Équivalent à la commande de synchronisation du même nom.
Un train statique peut être défini en plaçant $static dans la première ligne (par exemple, comme "nom" de ce train). Consist et path sont toujours nécessaires - l’itinéraire est utilisé pour déterminer où le train est placé (extrémité arrière du train au début du l’itinéraire). L'heure de départ n'est pas requise. Le train sera créé à partir du début de l'horaire - mais il ne peut pas être utilisé pour quoi que ce soit à l'intérieur d'un horaire. Il ne peut être référencé dans aucune commande, car il n'a pas de nom. Pour l'instant, il n'est pas non plus possible de se coupler à un train statique - voir ci-dessous pour plus de détails.
Notez qu'il y a quelques différences entre le mode horaire et le mode activité dans la façon dont les trains statiques sont générés. En mode activité, le train est une instance de la classe Train, de type STATIQUE.
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 un comportement différent en ce qui concerne le son, la fumée et les feux.
Lorsque le train du joueur se termine et qu'une commande #dispose est définie pour ce train afin de former un autre train (soit $form, $trigger ou $stable), le train formera effectivement le prochain train comme indiqué, et ce prochain train sera désormais le nouveau train du joueur. Le joueur peut donc continuer avec ce train, par exemple lors d'un voyage de retour.
Lors de la formation du nouveau train, le train devient "inactif". Il s'agit d'un nouvel état dans lequel le train n'est pas autorisé à circuler.
Notez que les informations du Track Monitor (touche F4) ne sont pas mises à jour lorsque le train est "inactif". L'affichage de la prochaine station dans le moniteur d'activité F10 affiche des détails sur la date de départ du train.
Le train devient "actif" à l'heure de départ définie pour le train formé. Pour information, la fenêtre du moniteur d'activité indique le nom du train que le joueur est en train de conduire.
A la fin de l'exécution d'un Timetable, le programme ne s'arrête pas automatiquement mais doit être arrêté par le joueur.
Une valeur approximative du retard est continuellement mise à jour. Cette approximation est dérivée de l'heure d'arrivée à la station suivante. Si l'heure actuelle est plus tardive que l'heure d'arrivée prévue et que cette différence dépasse le retard actuel, le retard est fixé à 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. Cette approximation se traduira par une meilleure régulation lorsque les paramètres /maxdelay ou /owndelay sont utilisés.
Le programme comporte une logique qui permet de vérifier, pour tout train arrêté, s'il est suffisamment proche d'un autre train pour s'y atteler. C'est cette logique qui permet au train joueur de s'atteler à n'importe quel train statique.
Cependant, cette logique contient certaines actions qui ne correspondent pas au traitement des trains de l'horaire. Par conséquent, le couplage des trains n'est pas possible en mode horaire, sauf pour les manœuvres spécifiées explicitement par des commandes, telles que $attach et $detach.
Tout wagon de la simulation doit avoir été placé quelque part en tant que "new" train. Lorsqu'un "new" train est placé, il est formé selon le Consist de ce train.
Chaque wagon se souviendra de cette " Consist d'origine" tout au long de sa vie dans la simulation.
Ce nom de « original consist » peut être utilisé dans toute commande $detach ou $transfer, même si la partie concernée a changé de train.
Ainsi, par exemple, si un train de marchandises composé de plusieurs portions est mis en place, chacune ayant son propre Consist (en utilisant la définition de composition multiple), chaque wagon de ce train se souviendra toujours de son Consist d'origine. Lorsque ce train est démantelé, que des portions sont intégrées à d'autres trains, etc., le nom du Consist d'origine peut toujours être utilisé.
Lors de l'utilisation de cette fonction, il est important de savoir où et dans quel train les différentes parties sont déplacées. Étant donné qu'une liste de convois doit être définie dans l'ordre correct, 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 comptabiliser le nombre d'unités dans chaque train et chaque portion.
Note : Les informations contenuesdans les Consist ne peuvent pas être utilisées si l'unité est démarrée à partir d’un pool, qui peut contenir différentes compositions. Dans ce cas, il n'est pas possible de définir quel groupe constituera le train réel.
Le concept d’horaires est plus exigeant en termes de performances du système de signalisation que les activités « normales ». La principale raison en est que les horaires prévoient souvent des trains AI circulant dans les deux sens, y compris des trains qui précèdent le train du joueur. Il existe très peu d'activités dans de telles situations car aucun effort ne serait bien sûr fait pour définir des trains dans une activité qui ne se produirait jamais, mais aussi parce que MSTS ne pourrait pas toujours gérer correctement une telle situation.
Tout défaut de signalisation, par ex. des signaux libérant la voie d'un train trop loin devant lui, auront immédiatement un effet sur le déroulement d'un horaire.
Si les signaux sont à voie libre trop loin devant le train sur une ligne à voie unique, par exemple, cela signifie que les trains franchiront les boucles de dépassement 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 vers un seul ensemble de boucles de dépassement.
Des situations similaires peuvent se produire dans les grandes gares très fréquentées : si les trains se frayent un chemin dans une telle gare trop tôt, d'autres trains resteront en attente 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 sera répercuté au retour.
Les systèmes de signalisation peuvent permettre à un train de s’engager dans une section de voie déjà occupée par un autre train.
La différence ‘call on’ et les signaux d'autorisation de franchissement standard (STOP et PROCEED) est que ces derniers autorisent l’entrée du train dans le tronçon occupé par un autre train (dans la même direction), qu’il soit à l’arrêt ou en mouvement, tandis que le ‘call on’ n'est généralement donné que si le train présent dans le tronçon concerné est à l'arrêt.
Lorsqu'un signal autorise l'appel, les trains AI passent toujours ce signal et circulent jusqu'à une distance prédéfinie, derrière le train dans la section.
Dans les gares, cela peut conduire à un véritable chaos, car les trains peuvent s'engager sur des quais déjà occupés par d'autres trains, de telle sorte que la longueur totale des deux trains dépasse largement la longueur des quais, de sorte que le deuxième train bloquera totalement l’accès à la gare, 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 devraient être bloqués dans les zones de gare, 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 blocage global. Cela s'applique à la fois à l'AI et au train des joueurs.
Dans le cas où le train doit s'attacher à un autre train sur le quai, l'appel est automatiquement effectué.
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 « d'appel »,
mais s'appuient plutôt sur l'utilisation de « demandes de permission ». 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’attelage peuvent également ne pas fonctionner
dans les zones de gare.
Notez que
la commande « runround » nécessite également la capacité
« d'appel » 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, la commande
« runround » ne peut fonctionner que si la signalisation prend en
charge « appel » (‘call on’)
Des
fonctions de signalisation spéciales sont disponibles pour adapter les signaux
au fonctionnement comme décrit ci-dessus, qui peuvent être utilisées dans les
scripts pour les signaux pertinents dans le fichier sigscr.
La fonction « TRAINHASCALLON() » renverra « vrai » si la section au-delà du signal jusqu'au signal suivant comprend un quai où le train est réservé pour s'arrêter et que le drapeau « callon » est activé. Cette fonction retournera également « vrai » s'il n'y a pas de plate-forme dans la section au-delà du signal.
La fonction « TRAINHASCALLON_RESTRICTED » renvoie « vrai » dans des conditions similaires, sauf qu'elle renvoie toujours « faux » s'il n'y a pas de quai dans la section au-delà du signal.
Les deux fonctions doivent être utilisées en combinaison avec BLOCK_STATE = BLOCK_OCCUPIED.
A partir de l'endroit où est défini ‘wait’ ou ‘follow’, on recherche le premier tronçon commun aux deux trains, faisant suite à un tronçon où les sillons ne sont pas communs.
Cependant, sur les itinéraires à voie unique avec boucles de dépassement où des « sillons de dépassement » sont définis pour les deux trains, le sillon principal des trains passera par les mêmes voies dans les boucles de dépassement et, par conséquent, aucun tronçon non commun ne sera trouvé. En conséquence, le point d'attente ne trouve pas d'emplacement pour que le train attende et la procédure ne fonctionnera donc pas.
Si des points d'attente sont utilisés sur des lignes à voie unique, les trains doivent avoir leurs sillons sur des voies différentes à travers la boucle de dépassement pour que les points d'attente fonctionnent correctement.
C'est une question de choix pour le créateur d'horaires de prédéfinir les emplacements de passage à l'aide des commandes d'attente, ou de laisser le système déterminer les emplacements de passage à l'aide des chemins de dépassement.
Les commandes ‘wait’ et ‘follow’ sont traitées via le ‘blockstate’ du contrôle du signal. Si à l'endroit où le train doit attendre, des signaux d'autorisation sont utilisés et que ces signaux permettent un aspect ‘proceed’ sur l'état de bloc JN_OBSTRUCTED, la commande ‘wait’ ou ‘follow’ ne fonctionnera pas car le train ne sera pas arrêté.
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 au train des joueurs :
• Les trains réservés pour démarrer avant minuit démarreront 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 NE démarreront PAS si le train entrant est en retard et, par conséquent, l'heure de départ est décalée après minuit. Dans cette situation, l'activité est interrompue.
• Les trains réservés pour démarrer après minuit démarreront plutôt en début de 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 démarrer avant minuit démarreront 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 démarreront quand même si le train entrant est en retard et par conséquent l'heure de départ est décalée après minuit.
• Les trains réservés pour démarrer après minuit démarreront plutôt en début de journée, à moins que la commande $next ne soit utilisée.
Pour modifier 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 défiler les trains actifs.
• 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 indiquera 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.
• Si deux trains doivent être placés sur une même voie de garage en utilisant $create avec le qualificatif /ahead, mais que les trains ont des sillons 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 dans le répertoire Paths n'existe pas, le programme ne sera pas en mesure de charger des sillons.
Les pools peuvent être utilisés pour stocker des trains avant ou entre des 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. En cas de besoin, le train peut être extrait du pool. Lorsque la mission est terminée, le train peut être replacé dans le pool. 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 requis qu'à un moment ultérieur. Lors de l'utilisation de pools, le système s'occupe de l'emplacement réel du stockage et sélectionne le premier train disponible lorsqu'un train est requis.
Un pool se compose d'une ou de plusieurs voies utilisées pour garer les trains. Les voies d'accès doivent également être définies (pour plus de détails, voir ci-dessous). Un type particulier de pool est le pool de plaques tournantes. Dans un pool de plaques tournantes, toutes les voies de stockage sont connectées à une plaque tournante. Les voies d'accès sont également connectées à la plaque tournante. Lors de l'extraction ou du stockage d'un train, le train passe devant la plaque tournante et la plaque tournante, sur laquelle se trouve le train, est tournée dans la position requise.
Les pools peuvent être utilisés à la fois pour les trains d'AI et les trains de joueurs. Lorsqu'un train extrait d'un pool est sélectionné comme train joueur, le premier train disponible est sélectionné et défini comme train joueur. Lorsqu'un train qui est le train du joueur est envoyé dans un pool, le train se terminera dans ce pool. Le joueur peut rester avec le train jusqu'à sa prochaine mission, mais il n'y a aucun moyen de savoir quelle sera cette mission ou quand elle aura lieu, car cela dépend d'autres actions mises en place pour ce pool.
Un pool ne peut contenir que des trains dont l'utilisation est équivalente. Il n'est pas nécessaire que les trains soient 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.
‘Attach’, ‘detach’ ou ‘transfer’ ne sont pas possibles pour les trains stockés dans un pool. Seules les formations fixes (motrices seules ou multiples) peuvent être extraites d'un pool ou y être envoyées. Si plusieurs unités sont nécessaires, elles doivent être extraites séparément et couplées ensemble après avoir quitté le pool. Si plusieurs unités doivent être envoyées à un pool, elles doivent être détachées avant d'être envoyées au pool. Étant donné qu'il n'est pas possible d'attacher, de détacher ou de transférer des unités, les pools ne peuvent être utilisés que par les motrices seules ou en MU, c'est-à-dire pour les unités qui peuvent se déplacer par elles-mêmes. Les pools ne peuvent pas être utilisés pour les voitures et les wagons ou les trains sans électricité.
Un "débordement" du pool peut se produire lorsqu'un train est envoyé dans un pool alors que la zone de stockage est pleine. Dans ce cas, le train s'arrêtera au point d'accès au pool et sera retiré.
Le pool "underflow" peut se produire lorsqu'un train est demandé à un pool mais que la zone de stockage est vide et qu'aucune unité n'est disponible. Dans cette situation, si l'indicateur "forcer la création" est activé pour ce pool, le train sera créé et démarrera au point d'accès. Si cet indicateur n'est pas activé, le train est annulé. Un avertissement est émis dans le fichier journal en cas de sous-utilisation du pool.
Les pools sont définis dans un fichier similaire à un fichier horaire, c'est-à-dire une feuille de calcul csv sauvegardée en tant que fichier texte unicode. Les fichiers doivent être stockés dans le même répertoire que les fichiers horaires (<route>\Activités\OpenRails).
La présentation d'un fichier de pool est très différente de celle d'un fichier TimeTable. Tous les paramètres se trouvent 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 pools avec table tournante, elle est .turntable-or.
Un fichier peut répéter des paramètres pour définir plusieurs pools, qui ne doivent être liés d'aucune manière.
Notez qu'il existe des différences essentielles entre les pools sans table tournante et les pools avec table tournante :
• Pour les pools sans table tournante, chaque chemin de stockage doit avoir au moins un chemin d'accès ; pour les pools avec table tournante, 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 de la sortie ; pour les pools avec plateau tournant, les chemins de stockage sont définis comme s'éloignant du plateau tournant, c'est-à-dire dans le sens de l'entrée.
Paramètres pour les pools sans table tournante:
#commentaire
Commentaire uniquement, la valeur est ignorée.
#name
Nom du pool. Il s'agit du nom qui doit être utilisé dans les commandes timetable ‘$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.
#Stockage
Chemin définissant une voie de garage. Au moins une voie de stockage doit être définie pour un pool.
Le sillon doit être défini dans le sens de la sortie, c'est-à-dire dans le sens où le train quitte le pool.
Un sillon de remisage ne peut être qu'un seul tronçon ; il ne peut pas passer par des aiguillages ou des passages à niveau.
#Accès
Chemin définissant l'accès à une piste de stockage. Chaque définition de voie de stockage doit être suivie d'une ou plusieurs définitions de chemin d'accès.
Le sillon doit être défini dans le sens sortant, c'est-à-dire dans le sens du train lorsqu'il quitte le pool.
Un sillon d'accès peut passer par des aiguillages ou des passages à niveau, mais ne peut pas contenir de points 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 qu'il ne définit que le nombre maximal 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 indicateurs spécAIux pour l'utilisation du pool. Actuellement, une seule valeur est autorisée : ‘force creation’, qui force les trains à se créer sur le point d'accès si le pool n'est pas assez rempli.
Il n'est pas possible de définir des zones de stockage "traversantes". 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 à la même extrémité.
Bien que chaque chemin de stockage ait son propre chemin d'accès, il est souhaitable que tous les chemins d'accès aboutissent au même point, de sorte que tous les chemins de stockage soient accessibles à partir de cet endroit. Il est possible d'avoir plusieurs points d'accès, mais il est alors conseillé que tous les chemins de stockage soient accessibles à partir de tous les points.
Si un point d'accès ne permet d'accéder qu'à une partie des voies de stockage, les trains risquent de ne 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'ont pas accès à toutes les voies de stockage, il peut y avoir une série continue de "débordements" et de "sous-débordements" du pool car les moteurs envoyés au pool ne peuvent pas être extraits.
#commentaire
Commentaire uniquement, la valeur est ignorée.
#name
Nom du pool. Il s'agit du nom qui doit être utilisé dans les commandes timetable « $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 du world file dans lequel se trouve la table tournante.
#uid
L'identifAInt de la table tournante dans le world file. Avec #worldfile, il définit la table tournante contenue dans le pool.
#storage
Chemin définissant une voie de stockage. Ce chemin doit être défini dans la direction opposée à la table tournante. Au moins une piste de stockage doit être définie.
La position de départ du chemin doit se situer en dehors de la zone de la table tournante. Une voie de stockage ne peut être qu'un seul tronçon ; elle ne peut pas passer par des aiguillages ou des passages à niveau.
#Accès
Chemin qui définit l'accès à une voie de stockage. Ce chemin doit être défini dans le sens opposé à la plaque tournante. Au moins un chemin d'accès doit être défini. Le chemin d'accès n'est pas lié à une voie de stockage spécifique mais s'applique à toutes les voies de stockage car celles-ci sont toujours accessibles vAI la plaque tournante.
La position de départ du chemin doit se situer en dehors de la zone de la plaque tournante. Le chemin peut passer par des aiguillages ou des passages à niveau, 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 qu'il ne définit que le nombre maximal 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 et #speedkph
Ces paramètres définissent la vitesse maximale du train lors de l'accès à la plaque tour- nante, en mph ou en kph. Cette vitesse s'applique également aux voies de stockage.
Lors de la sortie de la plaque tournante sur les sillons d'accès, le train reviendra automatiquement à la vitesse maximale qui s'appliquait à l'approche de la plaque tournante.
Grâce à ces commandes, il n'est pas nécessaire de placer des panneaux de vitesse sur l'itinéraire pour limiter la vitesse sur la plaque tournante.
#framerate
Ce paramètre définit la fréquence d'images pour faire tourner la table tournante. Voir Tables tournantes et taux de rafraîchissement pour plus de détails. §11.7.2.
#approachclearance
Ce paramètre définit la distance, en mètres, à laquelle la locomotive s'arrêtera devant la table tournante lorsqu'il s'en approche mais doit attendre que la table tournante s'aligne. C'est également la distance à laquelle la vitesse limitée de la table tournante est appliquée.
#releaseclearance
Ce paramètre définit la distance, en mètres, à laquelle la plaque tournante sera libérée après que la locomotive ait quitté la plaque tournante. C'est également la distance à laquelle la limitation de vitesse de la table tournante sera levée si la locomotive quitte le pool.
#settings
Équivalente à la commande "pool" du même nom, qui ne concerne pas la table tournante. §11.7.1
Ne déplacez à aucun moment la plaque tournante à l'aide des commandes manuelles.
Lorsque le train de joueurs est extrait du pool, la plaque tournante se met dans la position voulue. Le train-joueur peut soit attendre, soit se déplacer lentement vers la plaque tournante. Lorsque le train de joueurs s'approche de la table tournante sur un chemin d'accès et que la table tournante n'est pas dans la position requise, il faut s'arrêter juste avant la table tournante et attendre qu'elle soit en position. Une notification s'affiche à l'écran lorsque la table tournante est prête.
Lorsque vous vous déplacez sur le plateau tournant, continuez jusqu'à ce que la locomotive soit complètement positionné sur le plateau. Une notification s'affiche à l'écran lorsque la locomotive est correctement positionnée.
Lorsque la locomotive est positionné, mettez l'accélérateur à 0 % et l'inverseur au point mort (ou à 0 % pour les machines à vapeur). La table tournante commencera à se déplacer lorsque ces deux conditions seront remplies. Ne déplacez pas la locomotive pendant que la table tourne.
Lorsque la table tournante est dans la position requise, le train peut être déplacé hors de la table.
La plaque tournante se déplace toujours vers la position requise sur l'angle le plus court.
Lorsqu'un train demande la plaque tournante mais que celle-ci 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 la locomotive qui l'occupe quitte la plaque tournante et se trouve à une courte distance de celle-ci. Si aucune autre demande n'est en attente, la plaque tournante reste 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ête juste avant la plaque tournante et demande à la plaque tournante de se mettre dans 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 celle-ci ne sera pas en position.
Le Track Viewer affichera les chemins qui passent par la plaque tournante. Les chemins de la plaque tournante ne doivent cependant pas passer par la plaque tournante elle-même, mais commencer à l'extérieur de la zone de la plaque tournante, comme le montre cette image :
Il est conseillé d'avoir des chemins d'accès distincts pour l'extraction des trains du pool et l'envoi des trains vers le pool, en particulier si la plaque tournante est partagée par plusieurs pools. Sinon, si un train est envoyé sur la plaque tournante à peu près en même temps qu'un autre s‘en extrait, il y a un risque d'impasse. Le programme ne peut pas résoudre ce problème, car il ne peut pas voir que les deux trains sont tenus de s'engager sur la même voie alors que le train qui s’extrait attend toujours la plaque tournante ou est en train d'être tourné.
Normalement, la fréquence d'images de la table tournante (vitesse à laquelle la table tourne) est tirée du fichier de forme de la table tournante.
Toutefois, 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 que la fréquence d'images ne puisse donc pas être dérivée de cette manière. La valeur définie pour le pool est utilisée comme substitut.
Si, à un moment donné, la table tournante est utilisée lorsque son fichier de forme est chargé, cette valeur de remplacement est remplacée par la valeur 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. S'il n'est pas défini, 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.
La couverture nuageuse, les précipitations et la visibilité peuvent être modifiées au cours de la journée de l'horaire à l'aide de fichiers météorologiques. Les fichiers météo se trouvent dans un sous-répertoire spécial WeatherFiles du dossier de l'itinéraire et portent l'extension *.weather-or. Ils sont sélectionnés par le lecteur dans le menu du mode horaire.
Un fichier météo est un fichier JSON qui consiste en un tableau unique, 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 suivant :
{
"Changes": [
{
"Type": "<type>",
"<property>": "<value>"
}
]
}
Il existe trois types d'événements :Clair, Précipitation,
Brouillard, chacun ayant ses propres propriétés.
Property |
Type |
Description |
Time |
string |
L'heure
de déclenchement de l'événement (24 heures) |
Overcast |
number |
L'intensité
des nuages en pourcentage de 0 à 100. |
OvercastVariation |
number |
Variation
de l'intensité des nuages en pourcentage de 0 à 100. |
OvercastRateOfChange |
number |
Le
taux de changement de l'intensité des nuages sous forme de facteur d'échelle
de 0 à 1. |
OvercastVisibility |
number |
a
visibilité résultante, en mètres. La valeur doit être comprise entre 10000 et
60000. (Pour des valeurs inférieures, utilisez un événement de brouillard). |
Un événement de précipitations représente une période de pluie suivie d'une période d'éclaircie, avec des transitions douces vers, depuis et entre les deux phases.
Property |
Type |
Description |
Time |
string |
Heure
de déclenchement de l'événement (24 heures). |
Phase
1: Build up to precipitation |
|
|
OvercastPrecipitationStart |
number |
L'intensité
des nuages pendant la période précédant l'épisode de précipitations est
exprimée en pourcentage de 0 à 100. |
OvercastBuildUp |
number |
Le
taux de changement de l'intensité des nuages avant l'épisode de
précipitations sous la forme d'un facteur d'échelle de 0 à 1. |
PrecipitationStartPhase |
number |
Durée
de la phase d'accumulation des précipitations, en secondes. Doit être
comprise entre 30 et 240 |
Phase
2: Precipitation spell |
|
|
PrecipitationType |
string |
Le
type de précipitations. Doit être l'un de Neige ou Pluie |
PrecipitationDensity |
number |
L'intensité
des précipitations en tant que facteur d'échelle de 0 à 1. |
PrecipitationVariation |
number |
La
variabilité de l'intensité des précipitations en tant que facteur d'échelle
de 0 à 1. |
PrecipitationProbability |
number |
La
probabilité de l'événement de précipitation en pourcentage de 0 à 100. |
PrecipitationSpread |
number |
Nombre
de périodes distinctes d'averses au cours de la période. Doit être compris
entre 1 et 1000. |
PrecipitationVisibilityAtMinDensity |
number |
La
visibilité à la densité minimale de précipitations. |
PrecipitationVisibilityAtMaxDensity |
number |
La
visibilité à la densité maximale des précipitations. |
Phase
3: Dispersion after precipitation |
|
|
OvercastDispersion |
number |
Le
taux de changement de l'intensité du couvert après l'épisode de
précipitations sous forme de facteur d'échelle de 0 à 1 |
PrecipitationEndPhase |
number |
Durée
de la phase de dispersion des précipitations, en secondes. Doit être comprise
entre 30 et 360. |
Phase
4: Clear spell |
|
|
Overcast |
number |
L'intensité
des nuages en pourcentage de 0 à 100. |
OvercastVariation |
number |
Variation
de l'intensité des nuages en pourcentage de 0 à 100. |
OvercastRateOfChange |
number |
Le
taux de changement de l'intensité des nuages sous forme de facteur d'échelle
de 0 à 1. |
OvercastVisibility |
number |
La
visibilité résultante, en mètres. La valeur doit être comprise entre 10000 et
60000. |
Un
épisode de brouillard réduit considérablement la visibilité. Il se caractérise
par des transitions douces dans le brouillard et hors du brouillard, entre l'événement
météorologique précédent et l'événement météorologique suivant :
Property |
Type |
Description |
Time |
string |
L'heure
de déclenchement de l'événement (24 heures) |
FogVisibility |
number |
La
visibilité résultante, en mètres. Valeur maximale 1000. (Pour des valeurs
plus élevées, utilisez un événement "Clear"). |
FogSetTime |
number |
Le
temps de transition pour que le brouillard s'installe, en secondes. La valeur
doit être comprise entre 300 et 3600. |
FogLiftTime |
number |
Temps
de transition pour la levée du brouillard, en secondes. La valeur doit être
comprise entre 360 et 3600. |
FogOvercast |
number |
L'intensité
du couvert nuageux résultant de la levée du brouillard, exprimée en
pourcentage de 0 à 100. |
Voici un extrait d'un fichier horaire (présenté en Excel) :
Il est recommandé d'utiliser un puissant programme autonome
(Excel n'est pas nécessaire), appelé Timetable Editor. Il est inclus dans le
pack d’OR et accessible à partir du bouton Outils du menu de l'OR.