Vers la page d'accueil
UTS 2000 - PROGRAMME sous WINDOWS
(mise
à jour du 08/09/2024)
UTS est compilé sous C++ 2013 Express (Gratuit
et Génial de Microsoft) mais n'est plus compatible avec Win98 ou
W2000.
Un PC équipé de Pentium III à 450 Mhz est suffisant pour faire
tourner ce programme, sous XP, W7,W8 et W10.
Sur Windows 7, 8 et 10, il ne faut pas installer UTS dans les
répertoires "Programmes" ou "Program Files(x86)", sinon le
programme ne peut pas modifier le TCO (en écriture).
<<<----------V3.7i------------------
Mise à jour au 08/09/2024
--------------------------------->>>
Amélioration du programme UTS, et passage de 200 à 250 actions
d'horodatage.
Modification des numéros d'écran, dans le cas d'appel par clic sur
une touche du TCO.
<<<----------V3.7h------------------
Mise à jour au 08/04/2024
--------------------------------->>>
Le nombre maximum de garages passe de 16 à 32.
<<<----------V3.7g------------------ Mise à jour au
12/12/2021 --------------------------------->>>
Une
amélioration du programme sur le PC, avec un meilleur fonctionnement
des variables "separe" et "regroupe".
Ce qui fonctionne bien maintenant :
- en manuel sur le TCO : Ok entre deux cantons ou entre un
canton et son garage.
- en semi auto avec les variables 9400 et 9500 avec bouton sur
le TCO : Ok avec dans la déclaration de la variable "separeX"
en premier critère pour la loco et deuxième pour les wagons.
- en auto dans un déplacement: avec la fonction sfin : Ok
entre un canton et son garage ou entre cantons.
<<<----------V3.7e------------------
Mise à
jour au
15/02/2020
--------------------------------->>>
Quand
on lance un déplacement, possibilité d'écouter une annonce sonore
complète, avant que le train ne démarre. Voir la
section #depl.
Et nouvelles possibilités pour lancer les annonces sonores en
arrière plan. Voir la section #exe.
<<<----------V3.7d------------------ Mise à
jour au
12/11/2017 --------------------------------->>>
Ajout
une variable "arret_urg_on" pour activer la
fonction d'arrêt d'urgence, depuis un bouton poussoir situé
près du réseau.
Amélioration dans le tableau de la liste des
actions horodatées. La colonne "Départ" est devenue
interactive. Si l'on clique dessus, on positionne l'horloge à
l'heure-1mn, pour démarrer sur ce premier événement.
Une correction sur l'affichage des heures + délais de blocage des
actions qui dépassaient l'heure ronde.
Pour un événement horodaté, la codification "Jour de de semaine/Jour
de week-end" a changé. Au lieu de 'e'
ou 'w', il faut maintenant saisir 's'
ou 'w' (jour de la semaine ou du week-end).
Nouveau, appuyer sur les touches [0] à [7] du clavier pour afficher
le TCO correspondant. La touche [²] située au bout du clavier
affiche aussi le TCO 0.
Les touches du clavier affichent aussi :
[²] = TCO 0
[8] = Caractéristiques des trains
[9] = Tableau de la liste des événements
horodatés
[)] = Tableau des déplacements
[=] = Tableau des itinéraires
<<<----------V3.7c------------------
Mise à
jour au
05/12/2016
--------------------------------->>>
J'ai
amélioré la gestion des trains parcourant les boucles de
retournement.
Une fois qu'un train sort d'une boucle de retournement, sa commande
est inversée. Pour la même position de la manette, le train avance
maintenant en sens inverse.
Dans cette version, les fonctions d'aiguillage automatique, de BAL,
de ralentissement, de halte et de blocage prennent en compte la
commande inversée de ce train.
Pour compléter ces améliorations, un nouveau bloc de fonctions
multiples "INV" est apparu, pour remettre à l'état initial le sens
de parcours des cantons inversés.
Dans les déplacements automatiques, l'activation d'un déplacement
vers un garage occupé n'est plus possible. Ce déplacement passera
actif seulement quand le garage sera libéré.
<<<----------V3.7b------------------ Mise à jour au
16/07/2016 --------------------------------->>>
Dans
la fenêtre d'édition du TCO et de rendu des couleurs, il est
maintenant possible de faire un clic-droit ou
un clic-gauche sur les cases, pour incrémenter ou décrémenter
les couleurs.
Une nouvelle case RAZ permet de remettre les couleurs C1, C2, C3 et
C4 à l'état initial.
Une nouvelle case RAZ permet d'effacer le texte, et de saisir
directement le nouveau texte.
On peut ajouter un pictogramme sur les blocs de
texte, les blocs de voies, les blocs de bouton poussoirs et les blocs interrupteur.
Les blocs de redirection ont plusieurs
représentations.
Le texte dans les bloc du TCO peuvent contenir les
caractères 0-9 a-z A-Z [
] < > ( ) *
- _ et espace.
Dans la section #train, une explication sur les paramètres "acc_progressif" et "dec_progressif".
1 - Utilisation du logiciel UTS
Pour comprendre le fonctionnement de
UTS, il faut commencer par lire le manuel original de
UTS 2000.
fA la livraison d'une nouvelle version logicielle d'UTS, il est
possible de prendre le nouveau fichier 'config.txt' livré et
d'y intégrer ses descriptions personnelles des sections. Ainsi on
dispose de données de son TCO et d'une aide à jour.
La police d'affichage du texte sur le blocs du TCO est aussi
modifiée par le réglage "Ajuster le texte ClearType" de Windows.
UTS est fourni en deux versions logicielles. Une version 'V3' et une
version 'V3---V2' (sur demande via les forums).
La version V3---V2 comprend les améliorations logicielles de
la version V3, tout en restant
compatible avec les anciennes cartes à PIC 8Mhz en V2 à 19200 bps.
La version V3---V2 présente des restrictions :
- Il est déconseillé d'utiliser les servos avec cette
version.
- La gestion améliorée de la liaison RS232 n'est pas
implantée dans cette version.
- Le temps de réaction carte-logiciel est plus long.
- L'inertie des trains est multipliée par 2, donc prendre
les paramètres en conséquence.
- Elle n'a pas été testée sur circuit.
Démarrage d'UTS et messages
d'erreur
Le fichier 'config.txt' est utilisé au démarrage pour configurer les
données du programme.
Si le logiciel sort une fenêtre d'erreur du type :
On affiche le nom de la section et la ligne en erreur.
Vérifier que :
1 / Le nombre maximum de ligne n'est pas atteint. (ici si
l'on a dépassé cent lignes 'cant:')
2 / Le nombre maximum de paramètres n'est pas atteint. (ici
'plusur:' + 6 paramètres maximum, 'blocage:' + 22 conditions au
maximum)
3 / Les éléments obligatoires comme les signes '+' et '-',
(ici '+-', 'plusur:' ou 'blocage:').
4 / La syntaxe interdite comme deux '|' qui se suivent, ou un
'|' en début ou à la fin des conditions de 'blocage:'.
5 / La syntaxe comme ici la présence obligatoire de ':' ou
d'espace à certains endroits.
6 / La valeur des paramètres, exemple la vitesse comprise
entre -64 et +64, ou 8 caractères pour un nom de trains.
7 / Le texte doit être en minuscule sans accents ou de
syntaxe libre pour les noms d'itinéraires, de trains ou de
déplacements.
8 / Lire l'aide mise à jour dans le fichier 'config.txt'.
9 / Bien écrire les variables comme 'det_5.1' et non pas
'det5.1'.
Dans cette exemple de fenêtre d'erreur, l'erreur est sur le n°
d'aiguillage > 64.
Démarrage d'UTS et le
fichier 'Train_UTS_log.txt'
Le fichier "Train_UTS_log.txt" doit rester vide. Si il existe
et grossit, il faut l'ouvrir avec Notepad pour voir les erreurs de
fonctionnement.
Si le fichier "Train_UTS_log.txt", contient des erreurs de
type "-Erreur4 : Lecture N° variable interne : Var inconnue =
4316", cela peut venir du fichier "config.txt".
Il faut alors chercher la chaine de caractère "4316" ou
ce qui correspond à la variable "det2_16". Cette variable
"det2_16" n'existe pas (ok = det2_0 à det2_15), c'est cette variable
hors limite qui provoque l'erreur.
Si l'on ne trouve pas cette chaine de caractère, il faut alors voir
dans l'autre fichier de configuration, "config_tco.txt", le tco et
le bloc qui contient "4316".
Pour ce fichier du tco, voir l'aide tout en bas de la page "Description du fichier de
configuration config.txt" pour trouver le bloc en
erreur.
Démarrage d'UTS et
configuration générale dans 'config.txt'
Dans 'config.txt', la section suivante est d'ordre générale.
Certains paramètres sont optionnels ou ont une valeur par défaut.
#general
[
relief on
resolution_ecran 1130 735
show_cards_found off
leds_card_0 on
ir_aig_digit 2
inv_pot_0 on
inv_pot_1 on
train_aigauto on
memorisation_train on
memorisation_aig on
]
relief <on|off>
on = Effet de relief sur les
blocs du TCO et écran grisé (Par défaut = on ).
off = Pas d'effet de relief sur
les blocs du TCO.
En relief, passe l'écran en nuance de
gris. Augmente légèrement le taux d'utilisation du cpu.
resolution_ecran <taille_horizontale>
<taille_verticale> | plein ecran
Démarre le programme, avec une
fenêtre de cette taille en pixel. (Par défaut = 800 700).
Minimum utilisable = 800 x 700.
Taille maximum = 32*25 cases = 1290 x 1050.
Si on écrit
resolution_ecran plein ecran alors UTS le
lance en plein écran.
show_cards_found <on|off>
show_cards_found off = Si l'on
trouve des cartes UTS, démarre le programme sans afficher de message
(Par défaut =off).
show_cards_found on = Si l'on
trouve des cartes UTS, démarre le programme en affichant les numéros
des cartes UTS détectées.
leds_card_<0-3> <on|off>
leds_card_<0-3> on =
Active les leds (Les leds 'led_0' à 'led_47' sont activées)
Paramètre = n° de carte (Par défaut = on).
leds_card_<0-3> off =
Désactive les leds (Les sorties 'out_24' à 'out_39' sont utilisables
en tant que sorties).
ir_aig_digit <1|2>
2 = Utilise un nombre à 2 chiffres
pour commander les aiguillages (Par défaut = 2).
1 = Utilise un nombre à 1 chiffre
pour commander les aiguillages.
inv_canton_<0-315> <on|off>
inv_pot_<0-305> <on|off>
off = N'inverse pas le sens du
canton ou du potentiomètre (Par défaut = off).
on = Inverse le sens du canton
ou du potentiomètre.
Il n'est pas garanti que les
fonctions élaborées (exemple #balauto) , prennent en compte la
polarité inverse de ces cantons (A éviter donc).
train_aigauto <on|off>
on = Le programme utilise la
configuration de la section '#aigauto',
aiguillages automatiques (Par défaut = on).
Les aiguillages devant les trains en
mouvement sont alors mis automatiquement en bonne position.
off = Le programme n'utilise
pas la configuration '#aigauto'.
memorisation_train <on|off>
on = Le programme sauvegarde les
positions des 32 trains avant de fermer et les récupèrent au
prochain lancement.
Dans ce cas, dans la section #train, la description des trains
"trainxx:" n'est pas prise en compte. Seul les trains de type
"reserve :" sont lus.
UTS replace les trains sur leurs cantons respectifs.
Si un déplacement était en cours, UTS replace le train sur le canton
qui était occupé, ou sinon sur les cantons du déplacement.
off = Le programme ne
sauvegarde pas la position des trains avant de fermer (Par défaut =
off).
memorisation_aig <on|off>
on = Le programme sauvegarde les
positions des aiguillages avant de fermer et les récupèrent au
prochain lancement.
Dans ce cas, dans la section #aig, la position au départ des
aiguillages "position_depart : ax.y az.w" n'est pas prise en compte.
UTS replace les aiguillages dans leurs positions respectives.
off = Le programme ne
sauvegarde pas la position des aiguillages avant de fermer (Par
défaut = off).
Démarrage d'UTS
Si une seule locomotive
n'est pas à l'endroit prévu,
cliquer sur le Bloc à fonctions multiples,
configuré avec 'OPT=3'.
Cette commande replace le train sur le canton si un seul canton est en défaut de
captage et si un seul
train n'est pas affecté à un canton.
Le nom du train sans canton et le numéro de canton cible sont
indiqués sur ce bloc à fonctions multiples.
Pour repositionner un ou plusieurs trains sur le réseau, passer par
le menu : [Trains->Cantons].
Sur cet écran sélectionner un train et choisir un canton libre, de
préférence un canton en jaune car UTS s'attend à avoir un train sur
ce canton.
Le voyant [OCCUPATION...] passe au vert quand tous les trains sont
sur des cantons avec leurs présences détectées.
Si un train a été retiré du réseau, par le menu : ' Tables >
Caractéristiques des Trains', le retirer ou le placer sur un garage
inutilisé.
Cliquez sur le bouton [TRAINS] pour afficher la page dédiée aux
wagons.
Pour ajouter plus facilement des trains sur
le réseau, il est possible d'en configurer 23 d'avance dans le
fichier 'config.txt'.
Il faut ajouter des lignes 'reserve :' dans la section '#train'.
Cela permet d'ajouter en configuration des trains avec leurs
caractéristiques (vitesse, couleur...) pour les prendre en compte
sur le réseau en un seul clic.
La couleur des trains est dynamique. Elle est définie dans #train,
pour les trains au lancement d'UTS et pour les trains en réserve.
Quand on quitte UTS, on sauvegarde la couleur des trains, mais pas
des wagons, sauf si la position des trains est sauvegardée.
On peut toujours modifier la couleur des trains, par le menu :
Modifications > Rendu TCO.
Si le paramètre général "memorisation_train" = "on", les positions
et les caractéristiques des trains sont mémorisées à la mise sous
tension et les directives "train<xx>:" seront alors ignorées.
Seul les trains décrits dans la partie "reserve" seront alors pris
en compte.
Exemple :
#train
[
train0 : RAILCHEM c0 color : 2 clav0
06-64-13-13-xx en_auto
train1 : DBROUGE_ c9 color : 4 clav1
01-40-11-07-xx en_auto
train2 : AUTORAIL
c5
clav2 02-44-12-03-xx en_auto
clav_conf_0 : +a !q -w
clav_conf_1 : +z !s -x
clav_conf_2 : +e !d -c
reserve : RAILCHEM
05-64-13-13-xx color : 2 name : Trix_verte_R4C1201
reserve : DB_ROUGE 05-20-13-05-xx color :
4 name : Roco_rouge_BD_215_083_7
reserve : BB_67381 09-64-13-11-xx color : 11
name : Trix_diesel_bleu
reserve : BB115052
07-50-13-11-xx
name : Trix_electrique_grise_filet_rouge
reserve : BB660097 02-45-13-11-xx
name
: Loco_piko_diesel_bleue
reserve : ABJRENAU 13-46-13-11-xx
name
: Autorail_Mabar_beige_rouge
reserve : VAPNOIR1 12-40-13-11-xx
name
: Fleishmnn_Piccolo_7161_NS851_noire
reserve : VAPE150X 08-40-13-11-xx
name
: Roco_vapeur_150_X_noire
reserve : VAPE131_ 04-55-13-11-xx
name
: Arnold_131_TX404_noire
reserve : VAPE1030 11-50-13-11-xx
name
: Fleismann_7030_33_verte
]
Si le paramètre général memorisation_train = on, les trains
décrits dans ce paragraphe ne sont pas pris en compte, car l'on
reprend ceux en place lors de la mise sous tension.
train<0-15>
: <nom_du_train>
c<0-315>|g<0-15> color :
<0-23> [clav<0-4>/pot<0-304>]
[<1-50>-<6-64>-<1-28|xx>-<1-28|xx>-<1-28|xx>]
inv en_auto
Au démarrage d'UTS, position des trains par défaut sur le
plateau (16 trains maximum).
Nom du train sur 8 caractères ('-', '_', '[' et ']'
autorisés), à compléter obligatoirement avec des '_' pour avoir 8
caractères. Exemple : TGV_____
c<x> ou G<x> = Canton ou garage
de départ.
Color : <0-23> = Couleur du train optionnelle (La table
des couleurs est visible par le menu : Modifications > Rendu TCO
à droite de la fenêtre)..
noir=0, bleu clair=1, vert=2, cyan=3,
rouge=4, violet=5, ,jaune=6, blanc=7, vert fluo=8, ,rouge foncé=9,
orange=10, marron=11, kaki=12, bleu=13, gris
vert=14, vert foncé=15, gris foncé=16, gris=17, gris clair=18, gris
fond d'écran tco=19,
magenta couleur des wagons=20, bleu
foncé=21, lilas=22, cyan foncé=23
Caractéristiques du train [min-max-acc-dec-frein] = Vitesse
minimum, vitesse maximum, 3 valeurs d'inerties ou 'xx' si pas
d'inertie.
min = Alimentation minimum du train = Le train doit commencer
à se déplacer quand la vitesse de consigne =
1.
max = Alimentation maximum du train = Vitesse maximum à
atteindre quand la vitesse de consigne = 64.
ac, dec, frein = Inertie sur la vitesse des trains (Temps de
passage du train de 0 à vitesse maxi).
Tableau des
valeurs 'Accélération' ou 'Décélération" de 1 à 28 donne une inertie
de X secondes pour aller de Vmax à 0 ou de 0 à Vmax.
1 = 0,3 sec,
2 = 0,4 sec, 3 = 0,5 sec,
4 = 0,6 sec, 5 = 0,8 sec,
6 = 1 sec,
7 = 1,2 sec,
8 = 1,3 sec, 9 = 1,5 sec, 10 = 1,7
sec, 11 = 2 sec, 12 = 2,3 sec,
13 = 2,7 sec, 14 = 3
sec, 15 = 3,5 sec, 16 = 4
sec, 17 = 5 sec,
18 = 6 sec,
19 = 7 sec, 20 =
8 sec, 21 = 9 sec, 22 =
10 sec, 23 = 12 sec, 24 = 14
sec,
25 = 18 sec, 26 =
24 sec, 27 = 36 sec, 28 = 74 sec.
UTS corrige automatiquement certaines valeurs pour que :
64>=VMAX>=6, 50>=VMIN>=1, VMAX>VMIN,
28>=ACC>=1, 28>=DEC>=1, 28>=FREIN>=1.
acc_progressif :
[<1-64>-<1-64>-<1-64>-<1-64>-<1-64>-<1-64>-<1-64>-<1-64>]
Une variable commune à tous les trains.
En accélération, permet d'ajouter un peu
plus de progressivité aux faibles vitesses, car les trains ont
tendance à accélérer trop vite.
Indique la vitesse sous la quelle on change
de valeur d'inertie (8 vitesses maximum en valeurs croissantes).
Exemple, si la valeur d'inertie d'un train
est définie à 11 et si l'on indique acc_progressif : 5 10
15,
l'inertie qui est de 2 secondes pour
passer de 0 à 64, passe alors à :
si la vitesse du train >
15
alors sa valeur d'inertie = 11 = 2 secondes
si la vitesse du train > 10 et <=
15 alors sa valeur d'inertie = 11 + 1 = 2,3 secondes
si la vitesse du train > 5
et <= 10 alors sa valeur d'inertie = 11 + 1 + 1 = 2,7
secondes
si la vitesse du train > 0
et <= 5 alors sa valeur d'inertie = 11 + 1 + 1 + 1 =
3 secondes
Exemple, si la valeur d'inertie d'un train
est définie à 11 et si l'on indique acc_progressif : 2 4 6
8 10 12 14 16,
l'inertie qui est de 2 secondes pour
passer de 0 à 64, passe alors à :
si la vitesse du train > 16
alors sa valeur d'inertie = 11 = 2 secondes
si la vitesse du train > 14 et <=
16 alors sa valeur d'inertie = 11 + 1 = 2,3 secondes
si la vitesse du train > 12 et <=
14 alors sa valeur d'inertie = 11 + 1 + 1 = 2,7 secondes
si la vitesse du train > 10 et <=
12 alors sa valeur d'inertie = 11 + 1 + 1 + 1 = 3 secondes
si la vitesse du train > 8
et <= 10 alors sa valeur d'inertie = 11 + 1 + 1 + 1 + 1 =
3,5 secondes
si la vitesse du train > 6
et <= 8 alors sa valeur d'inertie = 11 + 1 + 1
+ 1 + 1 + 1 = 4 secondes
si la vitesse du train > 4
et <= 6 alors sa valeur d'inertie = 11 + 1 + 1
+ 1 + 1 + 1 + 1 = 5 secondes
si la vitesse du train > 2
et <= 4 alors sa valeur d'inertie = 11 + 1 + 1 + 1 +
1 + 1 + 1 + 1 = 6 secondes
si la vitesse du train > 0
et <= 2 alors sa valeur d'inertie = 11 + 1 + 1 + 1 +
1 + 1 + 1 + 1 + 1 = 7 secondes (Remarque : ici 7 secondes, mais
seulement ici entre une vitesse comprise 0 et 2, soit peu de temps
en fait au total)
les valeurs pour une accélération
rapide : acc_progressif : 10 20
les valeurs pour une accélération
moyenne : acc_progressif : 5 10 15 20
les valeurs pour une accélération
lente :
acc_progressif : 2 4 6 8 10 12 14 16
les valeurs pour une accélération très
lente mais que dans les basses vitesses : acc_progressif :
1 2 3 4 5 6 7 8
Essayer les valeurs : acc_progressif
: 2 4 6 8 10 12 14 16 (En fait l'inertie ajoutée
est quand même faible, surtout pour une inertie de train = 11 = 2
secondes pour aller de 0 à 64 à l'origine).
Il faut faire attention au fait que cette
inertie se rajoute à l'inertie des trains. Si vous avez des trains
avec une inertie de 10 à 20, cela a beaucoup plus d'impact sur
les trains à 20.
A voir d'autres valeurs, si vous avez déjà
des inerties de trains > 10 secondes.
dec_progressif :
[<1-64>-<1-64>-<1-64>-<1-64>-<1-64>-<1-64>-<1-64>-<1-64>]
Une variable commune à tous les trains.
En décélération, permet d'ajouter un peu
plus de progressivité aux faibles vitesses, pour éviter de ralentir
trop vite.
Indique la vitesse sous la quelle on change
de valeur d'inertie (8 vitesses maximum en valeurs croissantes).
Le principe est le même que pour
l'accélération.
Essayer les valeurs : dec_progressif
: 5 10 15 (Ne pas mettre trop d'inertie,
sinon les trains vont bruler les signaux au rouge).
reserve :
<nom_du_train>
[<1-50>-<6-64>-<1-28|xx>-<1-28|xx>-<1-28|xx>]
color : <0-23> inv name :
<commentaires>
Pour mettre en route facilement des trains (23 trains
maximum) que l'on vient de poser sur le réseau.
Nom du train sur 8 caractères, à compléter si
nécessaire avec des '_'.
Caractéristiques du train [min-max-acc-dec-frein] = valeur d'inertie ou 'xx' si pas d'inertie.
color : <0-23> = Couleur du train optionnelle, de
0 à 23.
noir=0, bleu clair=1, vert=2, cyan=3,
rouge=4, violet=5, ,jaune=6, blanc=7, vert fluo=8, ,rouge foncé=9,
orange=10, marron=11, kaki=12, bleu=13, gris
vert=14, vert foncé=15, gris foncé=16, gris=17, gris clair=18, gris
fond d'écran tco=19,
magenta couleur des wagons=20, bleu
foncé=21, lilas=22, cyan foncé=23.
inv = Optionnel, inverse l'alimentation de
ce train.
Il n'est pas garanti que les
fonctions élaborées (exemple #balauto) , prennent en compte la
polarité inverse de ces locomotives. (A éviter donc).
name : Commentaire sur 40 caractères maximum sans
espace ni caractères particuliers. Sera affiché dans UTS. Utiliser
des '_' à la place des espaces. Ne pas utiliser des sigles
'+', '-' ou ':'.
On peut aussi décrire des groupes de wagons à essieux
résistifs qui sont souvent seuls sur le réseau.
Quand on ajoute un train par le menu : ' Tables >
Caractéristiques des Trains' en cliquant dans la colonne 'n° TR' sur
une
ligne libre, la fenêtre suivante apparaît :
Il suffit de choisir entre le nom par défaut ou un train en réserve
avec prise en compte automatique de ses caractéristiques
[min-max-acc-dec-frein] et 'inv'. Le commentaire qui suit 'name :'
est affiché sur ces cases, sous le nom de la loco.
Remarques :
J'ai mis pour ma locomotive Roco BD rouge '05' en décélération, pour
éviter de griller les cantons en 'balauto',
car cette locomotive a naturellement beaucoup d'inertie.
Pour changer la couleur du train, il faut passer par le menu :
"Modifications > Rendu TCO".
Explications supplémentaires sur les
paramètres "acc_progressif" et "dec_progressif" :
Ces paramètres ajoutent de l'inertie aux basses vitesses.
Pour un train ayant comme accélération et décélération
successivement les valeurs = 10, 15 et 20, on affiche les
courbes en fonction des valeurs des paramètres "acc_progressif" et
"dec_progressif'".
On constate que l'accélération et décélération sont plus ou moins
progressifs, suivant les valeurs de ces paramètres.
Si l'on ne défini pas ces paramètres, on retrouve l'accélération
prévue les les trains, soit pour 10 = 1,7
secondes, 15 = 3,5 secondes
ou 20 = 8 secondes, pour passer de 0 à
64.
En rouge, vert
et bleu, le train à une
accélération et décélération propre de 10, 15 et 20.
Pour chaque série de trait d'une couleur, le trait de gauche
correspond au paramètre "acc_progressif" = pas défini
(ligne à située à gauche), "1, 2, 3, 4, 5, 6, 7, 8" (un peu
d'inertie) et "2, 4, 6, 8, 10, 12, 14, 16" (plus d'inertie, à
gauche).
Accélérations suivant l'accélération propre au train (10, 15 ou 20)
et "acc_progressif " (La vitesse va de 0 à 64 et le temps est en
secondes) :
Décélérations suivant la décélération propre au train et
"dec_progressif " :
Pour cette deuxième série de courbe, avec un train ayant comme
accélération et décélération les valeurs fixes de 20 (= 8
secondes), on teste plusieurs valeurs pour les paramètres
"acc_progressif" et "dec_progressif'".
Le trait de gauche correspond au paramètre "acc_progressif"
= pas défini (ligne droite), puis "5, 10, 15",
"1, 2, 3, 4, 5, 6, 7, 8", "18,
20, 22, 24, 26",
"1, 4, 7, 10, 13, 16, 19, 22", "2, 4, 6, 8, 10,
12, 14, 16", 18, 20, 22, 24, 26, 28", 1,
5, 10, 15, 20, 25, 30, 35" et "30, 32, 34, 36, 38, 40".
On constate que l'accélération et décélération sont plus ou moins
progressifs, suivant les valeurs de ces paramètres et affectent
surtout les basses vitesses.
Accélérations suivant divers valeurs de "acc_progressif " (La
vitesse va de 0 à 64 et le temps est en secondes) :
Décélérations suivant divers valeurs de "dec_progressif " (La
vitesse va de 0 à 64 et le temps est en secondes) :
Il faut faire attention au fait que cette inertie se rajoute à
l'inertie des trains. Si vous avez des trains avec une inertie de 10
à 20, cela a beaucoup plus d'impact sur les trains à 20 que
ceux à 10.
Le paramétrage manuel des trains
Pour un fonctionnement optimal, il faut trouver les paramètres de
chaque trains, ce qui prend 2 minutes par locomotive.
Lancer UTS et faire tourner un train en rond.
Après cette minute de rodage, aller dans le menu 'Tables >
Caractéristiques des Trains'.
Cliquer sur la case 'Profile : Vmin, Vmax', sur le train en
fonctionnement..
Cliquer sur la case [DEFAUT].
Tourner la manette au minimum pour que le train soit alimenté et que
la colonne 'Vites' n'indique plus 0, mais une valeur faible
< 4.
Sur la ligne 'VMIN', cliquer sur les cases '-' et '+'
pour que le train avance le plus lentement possible (Il ne faut pas
qu'il reste immobile). Noter 'VMIN'.
Ensuite mettre la manette au maximum et régler 'VMAX' pour
une vitesse réaliste.
Noter 'VMAX' et passer à la locomotive suivante.
Si tous les trains vont trop vite et qu'aucun train n'est réglé à
'VMAX' = 64, il faut sans doute réduire la tension d'alimentation
des voies (Entre12 et 15 volts).
Exemple de paramétrage de locomotives pour une alimentation de +15
Volts :
Marque
|
Modèle
|
VMIN
|
VMAX
|
ROCO
|
DB 215 083-7
|
5
|
20
|
TRIX
|
RailChem
|
5
|
64
|
TRIX
|
115052
|
7
|
50
|
TRIX
|
67381
|
9
|
64
|
MABAR
|
ABJ Renault
|
13
|
46
|
FLEISHMANN
|
7161 - NS851
|
12
|
40
|
ROCO
|
150-X
|
8
|
40
|
PIKO
|
66097
|
2
|
45
|
ARNOLD
|
131 TX404
|
4
|
55
|
Recopier ces valeurs dans la section '#train' de 'config.txt', sur
les lignes 'train:' et 'reserve:', comme indiqué
ci-dessus.
Les menus d'UTS
La touche 'Esc' permet de
revenir au TCO depuis un affichage de 'Debug' de 'Tables' ou
d'édition.
Les écrans modifiables sont rangés sous le menu 'Tables'.
Les écrans de consultation ou de débug sont rangés sous le menu
'Debug'.
Un clic-droit sur ces écrans permet de passer à la page suivante.
Si une table possède une colonne désignable, elle a un petit trait
en diagonal dans le titre de la colonne.
Les touches à accès
direct
En appuyant sur ces touches, on affiche directement
un TCO ou une fenêtre d'un tableau.
Les touches [0] à [7] affichent le TCO correspondant. La touche [²]
située au bout du clavier affiche aussi le TCO 0.
Les touches :
[²] = TCO 0
[8] = Caractéristiques des trains
[9] = Tableau de la liste des événements
horodatés
[)] = Tableau des déplacements
[=] = Tableau des itinéraires
Les fenêtres d'édition des TCO
On accède à ces fenêtres par le menu 'Modification > ...' ou
directement en appuyant sur la touche ' + '.
La touche ' + ' permet d'afficher la fenêtre d'édition. Si
l'on appuie encore sur la touche ' + ', cette fenêtre se déplace,
ensuite la fenêtre d'aide s'affiche, puis la fenêtre de rendu
s'affiche, puis on ferme cette fenêtre.
La palette de couleur dans les fenêtres d'édition n'est pas
désignable, mais sert d'information sur le défilement des couleurs.
Clic-droit = Coller, Clic-gauche = Copier. Cela permet de faire du
Copier/Coller, même entre TCO différents.
L'aide
contextuelle sur l'édition des blocs de TCO
Dans
la fenêtre d'édition de TCO, une aide s'affiche en bas quand l'on
sélectionne un bloc de TCO.
Ceci permet de connaître les paramètres utilisés par ce bloc de
TCO.
Par exemple, quand on sélectionne un bloc d'aiguillage, on
affiche :
L'affichage sur les TCO
Des points noirs sur la voie indiquent la limite entre deux
cantons de numéros différents.
Les flèches indiquent le sens de parcours du train sur tous
les éléments de voie.
Des
éléments de voies en pointillés symbolisent une voie souterraine
ou l'entrée d'un tunnel.
Les blocs pour les
croisements de voies
L'aspect des blocs du TCO de pleine voie sont modifiables, en
renseignant les champs '#1', '#2' et 'opt'.
Attention : Si les croisements peuvent
être représentés, ils ne sont pas gérés nativement par UTS (Risque
de collision).
Les croisements peuvent être gérés dans les déplacements à
condition de réserver le canton coupé par un déplacement. Voir un cas pratique en fin de paragraphe.
Les croisements peuvent être gérés en mode BAL (Bloc Automatique)
à condition de bloquer le train si le canton coupé est occupé.
Il n'y a bien sûr pas de problème si les croisements sont sur deux
niveaux distincts.
Une TJD (Traverse de Jonction Double) peut être affichée par deux
aiguillages tête bêche dont un avec le même n° d'aiguillage ou sans
n° d'aiguillage.
Remarque : Sur un ancien TCO, il faut que les paramètres
'#1', '#2' et 'opt' des blocs de pleine voies soient par défaut à
-1, sinon des
dessins supplémentaires vont apparaître. Il faut donc parfois
reprendre l'édition des blocs de voie pour mettre'-1' dans
'#1', '#2' et 'opt'.
Seul les
blocs simples de pleines voies peuvent être complétés
graphiquement.
Les blocs avec des aiguillages,
feux, butoir ou contact ne sont pas enrichissables.
Pour ajouter une voie secondaire (ici en rouge) sur un bloc
simple, il faut renseigner les champs '#1' et '#2' :
'#1' avec la
valeur = 0,1, 2, 3, ... 16 pour obtenir le dessin ci-dessous.
'#2' avec le n° de
canton de la voie secondaire ajoutée.
On obtient le dessin de l'ajout
de la voie secondaire suivante, en fonction de '#1' :
Pour ajouter des traits symbolisant un pont, il faut renseigner le champ
'#1' avec la valeur = 100, 200, 300 ...800.
On obtient
l'ajout des traits noirs suivants, en fonction de '#1'. Exemple :
On peut combiner ces ajouts en additionnant les valeurs. Ajouter
une voie secondaire et un pont en mettant dans '#1' la somme des
deux choix. Exemple '#1' = 200+2 = 202.
Pour les éléments de voies ci-dessous, on peut donner un
aspect en pointillé pour symboliser le passage sous le décor, avec
la variable 'OPT'.
'opt' = -1 ou 0 : la voie est pleine.
'opt' = 1 : la voie est dessinée en pointillées.
On obtient
les traits suivants, en fonction de 'opt' =-1(ou0) et 1:
Si l'on a une voie principale plus une voie secondaire dans le même
bloc,
'opt' = -1 ou 0 : voie principale pleine et voie secondaire
pleine.
'opt' = 1 : voie principale en pointillée et voie secondaire
pleine.
'opt' = 2 : voie principale pleine et voie secondaire en
pointillée.
'opt' = 3 : voie principale en pointillée et voie secondaire
en pointillée.
On obtient
les traits suivants, en fonction de 'opt' :
.
Uniquement pour les éléments de voies horizontales ou verticales, on
ajoute un pictogramme si opt = 4 à 29 (voir
bouton poussoir).
Exemple de pictogramme pour opt = 4 à 9 :
Voici des exemples d'utilisation. Voie n°
0 = voie rouge et voie n° 1 = voie bleue.
Limitations:
Sur le trait de la voie secondaire, il n'y aura pas de flèche
indiquant le sens du train.
Dans certains
cas des points noirs pour séparer les cantons, seront en
trop ou manquants.
Si ce cas se présente, ajouter un élément vertical, horizontal ou
en diagonal pour par exemple séparer un aiguillage et un
croisement.
Les croisements :
Voici une méthode pour configurer un croisement comme indiqué dans
les illustrations ci-dessous, pour assurer la sécurité des
convois.
On utilise 2 variables dans 'config.txt' pour gérer le conflit au
croisement. Ceci pour bloquer un train que lorsque l'autre train
est sur le canton du croisement.
Dans #balauto, on utilise une variable 'var_12.1' plutôt que
'det_2.1', pour bloquer un train que si le canton du croisement
est occupé et non pas simplement réservé.
Sinon en utilisation habituelle, une ligne 'cant:' bloque un train
sur un prochain canton occupé ou réservé.
#balauto
cant:c1:+ ral:32 dec:11
plusur: blocage: det_2.1 |
var_14.1 a1.1
cant:c3:+ ral:32 dec:11
plusur: blocage: det_4.1 |
var_12.1 a1.1
#depl
d0 c1+30 c2+40 c4+1 c5+60
a1.0 start:c1
libe:det_1
fin:det_5 taf0 tsf0
name: D1
d1 c1+30 c2+40 c4+1 c7+60
a1.1 start:c1
libe:det_1
fin:det_7 taf0 tsf0
name: D2
d2 c3+30 c4+40 c2+1 c6+60
a1.0 start:c3
libe:det_3
fin:det_6 taf0 tsf0
name: D3
#tdv
equ: l det_2 = var_12
equ: l det_4 = var_14
On obtient le fonctionnement suivant :
Les deux trains avancent, car aucun n'est sur les cantons de
croisement (n°3 et n°4).
Si le train vert est le premier (et aiguillage dévié) le train rouge
est bloqué.
Si le train rouge est le premier (et aiguillage dévié) le train vert
est bloqué.
Quand les trains sont engagés sur les cantons n° 2 ou n°4, il ne
faut pas actionner l'aiguillage 'a1'.
Les déplacements automatiques sont aussi protégés, par les directive
dans '#depl'.
Il est néanmoins possible qu'une autre configuration dans
'config.txt' donne de meilleurs résultats.
Je vous encourage à simuler ces
comportements.
Les boucles de retournement :
Voici un exemple avec les cantons n° 0, 1 et 2.
Il est conseillé d'avoir au moins 5 cm de voie entre l'aiguillage et
la boucle de retournement, qui fassent parti du canton n° 1. Ceci
évite les faux contacts
du dernier wagon sur l'aiguillage, afin de ne pas libérer par erreur
le canton n° 1. Cela évite aussi d'actionner l'aiguillage
automatiquement avec encore des wagons dessus.
Configuration dans le fichier 'config.txt'.
Déclaration de l'alimentation des cantons en fonction de la
positions des aiguillages :
#selectif
[
c1:+ c0+
c0:- c1-
c2:+ c1+
a1.0 c2:-
c1+ a1.1
c1:- c2+
a1.1 c1:-
c2- a1.0
]
Utilisation de la fonction de commande automatique des aiguillages,
quand le train avance sur le canton n° 2 en manuel :
On peut ajouter une barrière infra-rouge facultative (entrée
'in_43') aux frontières du canton n° 1 et n° 2, pour ne pas
commander l'aiguillage si il y a encore des wagons dessus.
On pourrait ajouter une ligne pour commander l'aiguillage quand on
arrive sur le canton n° 1 en vitesse positive, pour passer toujours
dans le même sens dans la boucle.
#aigauto
[
cant: c2:+5 plusur:
c1 condi:
in_43.0
actions: a1.1
cant: c2:-5 plusur:
c1 condi:
in_43.0
actions: a1.0
]
Utilisation de la fonction de limitation de vitesse et de
cantonnement automatique :
'vitmax' facultatif, pour limiter la vitesse d'un train sur cette
boucle.
On protège les cantons d'entrée et de sortie.
#balauto
[
vitmax:c2:-30
vitmax:c2:+30
cant:c1:- plusur:
c2 blocage: det_0.1
cant:c1:+ plusur:
c0 blocage: det_2.1
cant:c2:-
plusur:
blocage: det_1.1
cant:c2:+
plusur:
blocage: det_1.1
]
Déclaration des déplacements :
Un déplacement 'd0' pour partir du canton n° 0 vers le canton n° 2
(Exemple de boucle sens horaire).
Un déplacement 'd1' pour partir du canton n° 0, parcourir la boucle
(sens horaire) et enchainer avec un second déplacement pour revenir
sur le canton n° 0.
Un déplacement 'd2' pour partir du canton n° 2 (boucle sens
horaire), vers le canton n° 0.
Si l'on veut un déplacement pour parcourir la boucle, il faut un
déplacement pour entrer dans la boucle puis activer automatique un
second déplacement pour sortir de la boucle.
On peut commander les déplacements depuis un clic sur les rectangles
rouge (Active les déplacements n° 0 (1er dépl de la liste pour
C0->C2) et n° 2).
Un clic sur les rectangles [C0] puis [C2] active le déplacement
'd0'.
Pour commander un retournement complet du train au départ sur le
canton n° 0, on place un bouton [DPL C0 BOUCLE] qui active la
variable 6501 = Déplacement n° 1.
#depl
[
acc-dec: 14-14
d0 c0+30 c1+40 c2+20
a1.0 start:c0 libe:det_1
fin:det_2 taf0 tsf0
name:C0___BOUCLE_RETRN_HAUT
d1 c0+30 c1+40 c2+20
a1.0 start:c0 libe:det_1
fin:det_2 taf0 tsf0
name:C0___BOUCLE_RETRN_C0
sfin:depl_start_run_2
d2 c2+30 c1-40 c0-20
a1.1 start:c2 libe:det_1
fin:det_0 taf0 tsf0
name:BOUCLE_RETRN___C0
]
Si le canton n° 2 est assez grand, on peut
placer une barrière infra rouge à mi-parcours pour arrêter les
déplacements 'd0' et 'd1'. Dans ce cas, on est sûr qu'il n'y a plus
de wagons sur le canton précédent.
Animation du TCO :
On peut visualiser l'état de la barrière infrarouge facultative avec
un élément de voie prévu pour.
Si le réseau comprend une boucle de retournement, ajouter au TCO un
bloc de fonction multiple 'INV' avec 'opt' = 8.
Quand un train sort d'un boucle de retournement, le sens de sa
commande est inversé.
Ce bloc de fonction sert à remettre les cantons inversés à l'état
initial, pour retrouver le sens original de la commande de vitesse
de ce train.
Les blocs - Feux de
passage à niveau routier
En plus d'afficher
des
feux
ferroviaires
classiques (OPT=1, 2, 3, ou 4), ce bloc permet de
visualiser un passage à niveaux.
Il faut utiliser un bloc TCO de type 'Feu' avec l'option 'OPT:' = 5 ,
Pour animer ce bloc, il faut renseigner V1 = variable
d'entrée (Exemple : 'det2_4' pour un clignotement si le canton n° 4
est occupé).
La variable det2_xx est temporisée par rapport à la
variable brute det_xx, ce qui évite des clignotements
intempestifs des feux.
On affiche un bloc avec feux clignotants, si la variable = 1.
Exemples : V1='det_xx'= 0 V1='det_xx' =1
Pour animer un passage à niveau au milieu d'un canton, avec un
servomoteur, on peut utiliser les équations (ici au milieu du
canton n° 7)
#tdv
[
@ Barrières du passage à niveau placées sur le canton n° 7,
activées par le servo n° 0.
@ Vitesse de fermeture rapide = 50 Position
fermée = 950.
@ Vitesse de d'ouverture lente = 20 Position ouverte
= 80.
equ: l det2_7 =val srv_cmd_000 950 =val
srv_cmd_010 50
equ: ln det2_7 =val srv_cmd_000 80 =val
srv_cmd_010 20
Pour animer un passage à niveau au début d'un canton, avec des
diodes leds rouge, on peut utiliser les équations (ici au
début du canton n° 5, à la suite du canton n° 4)
avec les variables det2p_xxx et det2m_xxx. On
fait clignoter les leds si le train est sur le canton n° 5 ou si il
avance sur le canton précédent n° 4.
#tdv
[
@ Feux clignotants activées par les leds n° 45, si le train est
sur le canton n° 5.
@ Si un train avance sur le canton précédent n° 4, on active
aussi ces feux.
equ: l det2_5 o det2p_4 = led_45
equ: l det2_5 o det2p_4 = led_cli_45
Pour animer les servo avec du retard, voir le
paragraphe "Pour obtenir des délais de quelques secondes dans les
actions"
Les blocs - Affichage
de la détection d'un train au droit d'une barrière infrarouge
Ce bloc informatif est différent du bloc
'Etat de l'occupation du canton'.
Si le train coupe une barrière infrarouge ou passe sur un contact,
ce bloc animé permet de savoir si la détection fonctionne.
Pour animer ce bloc, il faut renseigner V1 = variable d'entrée
(Exemple : 'in_42').
Exemples : V1='in_xx'= 0 V1='in_xx' =1
Ces
blocs permettent un gain de place sur le TCO.
Les butoirs peuvent afficher en plus un détecteur fin de parcours,
si la variable 'V1' est définie.
Si 'V1' est à -1, le symbole du détecteur n'est pas affiché.
Ceci permet de savoir si le train est proche du butoir.
C'est utile pour vérifier le fonctionnement des déplacements qui se
terminent sur cette variable.
Pour animer ce bloc, il faut renseigner V1 = variable
d'entrée (Exemple : 'in_42').
Un détecteur placé 10 cm avant un butoir, permet de rentrer
complètement un train sur une voie de garage.
Exemples : V1=-1 V1='in_xx'= 0
V1='in_xx' =1
Pour les déplacements
automatiques :
- Si un garage se
termine par un butoir, il est indispensable d'avoir un capteur en
fin de course (de 5 à 10 cm du butoir),
pour donner le signal de fin à un déplacement
automatique.
- Si un canton se
termine par un butoir, il n'est pas nécessaire d'installer un
capteur, le train s'arrêtera
automatiquement quand le canton précédent sera
libre (Avec l'instruction 'libe:').
Les blocs -
Dételeurs
Ces blocs affichent l'état d'un dételeur sur
la voie. L'affichage dépend de l'état de la variable 'V1'.
Pour le moment, ces blocs sont simplement animés, sans être
désignables.
Exemples : V1='in_xx'= 0 V1='in_xx' =1 :
Les blocs - Servos-moteurs
Il ne faut pas définir des boutons de commandes sur un TCO, et une
équation dans "config.txt" pour le même servo. Cela reviendrait à
donner des ordres contradictoires à ce servo.
Les servos-moteurs servent à motoriser un pont tournant, des
barrières de passage à niveaux ou des automates.
La course et la vitesse de chaque servo est configurable. (5 servos
maximum par carte).
La consigne est comprise entre 0 et 1023 et la position médiane =
512.
La consigne est divisée par 4 avant d'être envoyée à la carte
électronique, ce qui donne 256 positions effectives à un servo.
Remarque : La vitesse affichée dans la table 'Menu : Débug>
Servo-moteur' ne correspond pas à la variable 'OPT' du bloc
de TCO 'Servo', mais au nombre de pas de déplacement du servo par
'tic' de base.
La carte UTS délivre un créneau vers les servo, compris entre 1
msec et 2 msec, avec un neutre à 1,5 msec.
Certains servo récents sont prévus pour fonctionner entre 0,7 msec
et 2,3 msec pour obtenir 180 ° de battement.
Donc, avec ce type de servo, on a un déplacement de +/- 45° soit
90°. C’est ce que j’observe sur mon train, 90° de débattement.
Dans tous les cas un créneau de 1,5 msec est la position médiane,
soit 512 dans UTS.
Il existe aussi des servomoteur de type spécial, par exemple pour
animer un treuil.
C’est le servo 360°, donc sans buté, avec un fonctionnement prévu
en continu. Un servo à rotation continue fonctionne :
- dans un sens avec les largeurs d'impulsion
entre 1ms et 1,5ms
- à l'arrêt à 1,5ms
- dans l'autre sens entre 1,5ms et 2ms
Avec UTS, on
pourrait avoir un problème de servo qui tourne sans fin, si l'on
croit utiliser un servo standard 90° ou 180°.
Pour des essais, prendre un micro servo à 3 euro pour
faire des tests (pas un modèle 360°).
Les servos se commande aussi dans la section '#tdv' à partir des
variables :
srv_cmd_xxx = consigne de position du servo de 0 à
1023. (xxx = numéro de variable de 000 à 004,
100 à 104...).
srv_cmd_xxx+10 = pas de déplacement du servo de 0 (lent) à
1023 (rapide) à chaque tic (80 ms). (xxx = numéro de
variable de 010 à 014, 110 à 114...).
Exemples :
srv_cmd_000 = 512 => le servo n°0 doit être en position
médiane. (de 0 à 1023).
srv_cmd_010 = 20 => la vitesse de déplacement du servo
n° 0 est de 20 pas toutes les 80 ms.
Ceci ne sert que dans 'config.txt' pour faire bouger un
servo suivant l'état d'une variable (de 1 à 1023).
On peut ainsi fermer lentement un passage à niveau par un
servo, si un train est détecté.
(si var_511 est toujours égale à 0)
equ: l var_511 =val
srv_cmd_0 0 Envoi de la
consigne '0' au servo n° 0.
equ: l var_511 =val srv_cmd_10
20 Vitesse de déplacement du servo =
20 (1=lent, 1023=rapide)
ou
equ: l in_0 =val
srv_cmd_0 0
Passage fermé
equ: l in_0 =val
srv_cmd_10 50 Vitesse
fermeture
equ: ln in_0 =val srv_cmd_0
1023 Passage ouvert
equ: ln in_0 =val
srv_cmd_10 100 Vitesse ouverture
Pour utiliser ces servo, de nouveaux boutons
poussoirs ont été définis, exemples :
1 / Pour un
déplacement ponctuel dans un sens ou l'autre, exemple :
une orientation d'un objet tant que le bouton reste enfoncé,
avec comme configuration, #1=-1 et #2=-1 :
#1
: -1
#2 : -1
S+ : = [+] ou [-] = sens du déplacement
V1 : Variable du servo = 8000-8004, 8100-8104
V2 : -1
OPT : temps de rotation (0-255 max=25secondes) en
1/10 de secondes
TEXTE : texte
2 / Pour
plusieurs positions du servo (#2) avec plusieurs boutons
poussoirs, un BP par position, exemple : pont tournant,
avec comme configuration, #1=-1 et #2 <>-1 :
#1
: -1
#2 : (0-1023) Valeur à
atteindre, si le bouton poussoir a été actionné
V1
: Variable du servo = 8000-8004, 8100-8104
V2 : -1
OPT : temps de rotation (0-255 max=25secondes) en
1/10 de secondes
TEXTE : texte
3 / Pour
un déplacement incrémentale à pas fixe (+-#1), à chaque action
d'un bouton poussoir, exemple : une orientation d'un
objet, avec comme configuration, #1<>-1 et #2=-1 :
#1
: (0-1023) Valeur du pas
#2
: -1
S+ : = [+] ou [-] = sens du déplacement
V1 : Variable du servo = 8000-8004, 8100-8104
V2 : -1
OPT : temps de rotation (0-255 max=25secondes) en
1/10 de secondes
TEXTE : texte
4 / Pour
deux positions, avec un bouton poussoir change de position à
chaque action, exemple : une animation, avec comme
configuration, #1<>-1 et #2<>-1 et V2=-1 :
#1
: Valeur bouton poussoir au départ (0-1023)
#2 : Valeur bouton poussoir autre position
(0-1023)
V1 : Variable du servo = 8000-8004, 8100-8104
V2 : -1
OPT : temps de rotation (0-255 max=25secondes) en
1/10 de secondes
TEXTE : texte
5 / Pour
deux positions commandées par une variable ou une entrée
numérique, exemple : une barrière de passage à niveau,
configurer une équation dans 'config.txt' :
#tdv
[
@
Barrières du passage à niveau placées sur le canton n° 7,
activées par le servo n° 0.
@
Vitesse de fermeture rapide = 50 Position
fermée = 950.
@
Vitesse de d'ouverture lente = 20 Position ouverte
= 80.
equ: l det_7 =val srv_cmd_000 950 =val srv_cmd_010 50
equ: ln det_7 =val srv_cmd_000 80 =val srv_cmd_010 20
]
Dans le
fichier 'config.txt', on peut manipuler les variables d'UTS. Les
servos se commande dans la partie '#tdv'à partir des variables :
-
srv_cmd_xxx = consigne de position du servo de 0 à 1023.
-
srv_cmd_xxx+10 = pas de déplacement du servo de 1 à 1023 à
chaque tic (80 ms).
Remarque : Ne pas oublier de donner une vitesse
de déplacement non nulle, sinon le servo ne bougera pas.
Pour animer les servo avec du retard, voir le paragraphe "Pour
obtenir des délais de quelques secondes dans les actions"
Les
blocs - Texte
Dans
la fenêtre d'édition, choisir le bloc avec "text" en
bas.
On affiche 4 lignes de 4 caractères.
La couleur du texte par défaut est celle définie dans la fenêtre
de rendu, à la ligne "Bloc d'écran du TCO / Couleur texte".
Texte = Caractères 0-9 a-z
A-Z [ ] < >
( ) * - _ et espace.
Si la variable 'C1' est définie, elle donne la couleur du texte.
Si 'OPT' = -1 ou 0, on affiche le texte simple sur 4 lignes.
Si 'OPT' = 1 à 29, on ajoute le pictogramme correspondant au
numéro (voir Bouton Poussoir).
Si 'OPT' = 27 ou 28, la variable 'C1' donne la couleur du
rectangle (voir Bouton Poussoir).
La couleur du texte est alors celle par défaut.
Si 'OPT' = 29 et si les variables 'C1' et 'C2' sont définies,
elles donnent la couleur des rectangles haut et bas. Les variables
'C3' et 'C4' donnent la couleur des rectangles gauche et droit (voir Bouton Poussoir).
Il est possible de mixer les rectangles horizontaux et verticaux,
sachant que les rectangles verticaux sont affichés par dessus les
rectangles horizontaux. La couleur du texte est alors celle par
défaut.
Exemples avec la couleur par défaut ou imposée :
Les blocs - Texte &
Numérique - Variable analogique.
Dans
la fenêtre d'édition, choisir le bloc avec "0000" en
bas, disponible à coté du bloc de texte.
Ce bloc
permet d'afficher 3 lignes de texte + une valeur
comprise entre 0 et 1024 sur 4 digits.
Un trait symbolisant un bargraphe animé est affiché au dessus
des chiffres. (0 à 1024).
Texte = caractères
0-9 a-z A-Z [ ] <
> ( ) * - _ et
espace.
V1 = Variable à afficher.
Si la variable 'C1' est définie, elle donne la couleur du texte.
Si la variable 'C2' est définie, elle donne la couleur du
trait.
Si la variable 'C3' est définie, elle donne la couleur du nombre.
Exemples :
- pour afficher la position
réelle
du servo-moteur 0, 'V1' = 280x, (La position réelle suit la
consigne en fonction de la vitesse demandée).
- pour afficher la consigne
du servo-moteur 0, 'V1' = 800x.
Le bloc - Horloge
Un pied est
ajouté quand l'horloge est en marche, il est de
couleur jaune quand le train de nettoyage est actif.
Affiche le jour de 0 à 6, l'heure et les minutes.
Les couleurs
sont paramétrables par C1, C2 et C3.
L'horloge se bloque, quand un déplacement ne s'est pas fini dans un
temps imparti, suite à un déraillement ou faux contacts sur la loco.
Après remise en route du train l'horloge repart. Ceci permet de
synchroniser les trains qui n'arrivent pas à l'heure.
Exemples, voyant rouge et
"bloc" = horloge en marche mais bloquée, voyant vert =
horloge en marche, "off" = horloge à l'arrêt, "bloc" et "off"
= horloge à l'arrêt et bloquée :
Voir le paramétrage ici.
Le bloc - Bouton Poussoir
Ce bloc
'Bouton-Poussoir' est utilisé pour changer l'état d'une variable.
La couleur du voyant est celle définie par défaut dans la fenêtre de
rendu, à la ligne "Voyant interrupt/bp".
L'aspect de ce
bloc varie en fonction de la variable 'OPT'. Exemples de
pictogramme ajouté pour 'OPT' = -1 à 29.
Texte = Caractères 0-9 a-z A-Z
[ ] < > ( )
* - _ et espace.
La variable 'V1' est mise à 1, tant que l'on appuie sur le bouton.
La variable 'V2' est mise à 1, au moment d'appuyer sur le bouton.
La variable 'V3' est mise à 0, au moment d'appuyer sur le bouton.
Si 'V2' (ou 'V3') est renseignée le bouton reste enfoncé tant que la
variable vaut 1 (ou 0).
Si l'on veut que le bouton ne reste que momentanément visiblement
enfoncé en utilisant V2 ou V3, il faut renseigner une variable bidon
(non utilisée) en 'V1'.
Si 'OPT' = -1 ou 0, on affiche le bouton poussoir classique avec un
voyant.
Si 'OPT' = 1 à 29, on ajoute le pictogramme correspondant à ce
numéro.
Si 'OPT' = 27 ou 28, la variable 'C1' donne la couleur du rectangle.
Si 'OPT' = 29 et si les variables 'C1' et 'C2' sont définies,
elles donnent la couleur des rectangles haut et bas. Les variables
'C3' et 'C4' donnent la couleur des rectangles gauche et droit.
Il est possible de mixer les rectangles horizontaux et verticaux,
sachant que les rectangles verticaux sont affichés par dessus les
rectangles horizontaux.
Exemples avec : C1=violet, C1=violet et C2=vert,
C3= rose et C4 =vert foncé, C1=jaune et C3=rouge.
Le voyant en haut à gauche est affiché par défaut si opt = -1, mais
plus quand l'on affiche un pictogramme.
Si l'on ajoute +100 à 'OPT', on affiche ce petit voyant en haut à
gauche.
Exemples avec opt = 101 à 104.
Le bloc - Interrupteur
Ce bloc est
utilisé pour changer l'état d'une variable.
La couleur du
voyant est celle définie par défaut dans la fenêtre de rendu, à
la ligne "Voyant interrupt/bp".
L'aspect de ce
bloc varie en fonction de la variable 'OPT'. Exemples de
pictogramme ajouté pour 'OPT' = -1 à 29.
Texte = Caractères 0-9 a-z A-Z
[ ] < > ( ) *
- _ et espace.
La variable 'V1' change d'état (0/1) à chaque pression sur ce
bouton.
Si 'OPT' = -1 ou 0, on affiche l'interrupteur classique avec voyant.
Si 'OPT' = 1 à 29, on ajoute le pictogramme correspondant à ce
numéro.
Si 'OPT' = 27 ou 28, la variable 'C1' donne la couleur du rectangle.
Si 'OPT' = 29 et si les variables 'C1' et 'C2' sont définies,
elles donnent la couleur des rectangles haut et bas. Les variables
'C3' et 'C4' donnent la couleur des rectangles gauche et droit.
Il est possible de mixer les rectangles horizontaux et verticaux,
sachant que les rectangles verticaux sont affichés par dessus les
rectangles horizontaux.
Exemples avec : C1=violet, C1=violet et C2=vert,
C3= rose et C4 =vert foncé, C1=jaune et C3=rouge.
Le voyant en haut à gauche est affiché par défaut si opt = -1, mais
plus quand l'on affiche un pictogramme.
Si l'on ajoute +100 à 'OPT', on affiche ce petit voyant en haut à
gauche.
Exemples avec opt = 101 à 104.
Les blocs - Multifonctions
Pour
exploiter facilement UTS, disposer ces blocs de fonction sur les
TCO.
Depuis la fenêtre d'édition du TCO, utiliser le bloc marqué 'DPL' pour créer tous
ces blocs.
Il faut mettre les 8 blocs ci-dessous sur le TCO principal, pour
faciliter l'exploitation du réseau.
Blocs : 'Stop', 'Commandes', 'Déplacements',
'Itinéraires', 'Halte', 'Blocage', 'Affectation
automatique Loco->Canton' et 'Raz cantons inversés' .
Renseigner
la valeur 'OPT' du bloc pour définir la fonction d'un bloc.
Liste des
fonctions possibles :
OPT = 4 :
'STP'
-
Stop. Arrêt d'urgence pour stopper tous les trains en cas de
problème.
- Un
clic sur ce bloc stoppe tous les trains. Un second clic remet tout
sous tension progressivement.
On peut aussi activer l'arrêt d'urgence depuis
un bouton poussoir installé sur le
réseau, qui alimentera la variable "arret_urg_on".
Ce bouton sur le réseau fonctionne en
parallèle avec le bouton du TCO, Ils ont la même fonction.
Dans ce cas, on branche un bouton poussoir
sur une entrée "in_xxx", et dans la partie "#tdv" l'on décrit
l'équation "equ: l in_xxx = arret_urg_on".
Si l'on veut connaitre l'état de
l'arrêt d'urgence, il faut lire la variable "arret_urg_state"
(1=UTS est en arrêt d'urgence).
OPT = 7 :
'CMD'
-
Commandes actives. Affiche la consigne de vitesse des trains.
- Utile avant de remettre tout sous tension par le bloc 'STP'.
OPT = 1 : 'DPL'
-
Affiche la liste des déplacements en cours.
- Un
clic sur ce bloc annule tous les déplacements en cours.
OPT = 2 :
'ITI'
-
Affiche la liste des itinéraires en cours.
- Un
clic sur ce bloc annule tous les itinéraires en cours.
OPT = 5 :
'HLT'
- Affiche
la liste des cantons en 'halt:' stoppés par les directives 'halt:'
de '#balauto'.
- Si
l'on clic sur ce bloc, la fonction 'halt:' est inhibée et les trains
pourront continuer à avancer.
OPT = 6 :
'BLC'
- Affiche
la liste des cantons en 'blocage:' bloqués par les directives
'cant:' de '#balauto'.
- Si
l'on clic sur ce bloc, la fonction 'cant:' est inhibée et les trains
pourront continuer à avancer.
OPT = 3 :
'AFF'
- Bloc
d'affectation automatique 'Train > Canton'. Dans le cas où un
canton n'a pas de train et un train
est sans canton, ce bloc affiche le nom du train et
le numéro du canton.
- Un
clic sur ce bloc va affecter ce train à ce canton. Sert à replacer
un train quand UTS l'a perdu.
- Résout 2 fois sur 3 un problème de captage ou de
perte de synchronisme entre UTS et le réseau.
- Fonctionne rarement si une locomotive est arrêtée avec
chaque bogie sur un canton différent.
OPT = 8 : 'INV'
- N'est utile
que si le réseau comprend une boucle de retournement.
- Bloc permettant de remettre les cantons
à l'état initial. Quand un train parcourt une boucle de
retournement, en sortie la commande du train est inversée.
Un clic sur ce bloc fait un raz des états "Cantons
inversés", à condition que les trains soient à l'arrêt.
Utilisation des Blocs
Multifonctions
En temps normal, les blocs ont l'allure suivante :
En cours de fonctionnement, ils peuvent changer comme ci-dessous.
|
Sert de bouton 'Panic'.
Si l'on clique sur ce bloc, les trains s'immobilisent et le
bloc devient rouge. Utilisé en cas de déraillement.
Changer aussi d'état, quand on appuie sur un bouton poussoir
qui affecté à la variable "arret_urg_on".
|
|
Affiche la valeur de consigne
de vitesse des trains. Correspond à la position des manettes
ou la vitesse donnée depuis le clavier. Utile quand l'on a
arrêté les trains avec le bouton 'STOP', avant de remettre
sous tension. dans ce cas les barres clignotent en rouge.
Bloc moins utile depuis que la remise sous tension des
trains est progressif.
|
|
Si des déplacements sont
prévus ou en cours, les n° des déplacements sont affichés
(ici n° 4 et n° 60).
Si l'on clic sur ce bloc, tous les déplacements sont
annulés. |
|
Si des itinéraires sont
prévus ou actifs, les n° des itinéraires sont affichés (ici
n° 8 et n° 10).
Si l'on clic sur ce bloc, tous les itinéraires sont annulés.
|
|
Des trains sont stoppés par
les directives '#balauto'+'halt:' et les n° des cantons sont
affichés (ici n° 8 et n° 10).
La fonction 'halt' évite à un train de toucher un butoir.
Si l'on clic sur ce bloc, il deviendra orange. La fonction
'halt:' sera inhibée et les trains pourront continuer à
avancer.
|
|
La fonction 'halt:' est
inhibée. Les trains peuvent continuer à avancer, même si le
canton est en 'halt:'.
Cela permet à une locomotive d'aller chercher des wagons
placés devant un butoir équipé d'une barrière infrarouge.
Si l'on clic sur ce bloc, la fonction 'halt:' redeviendra
active. |
|
La fonction 'halt:' est
inhibée. Les trains peuvent continuer à avancer, même si le
canton est en 'halt:'.
Le texte 'INHB' signifie que des trains auraient du être
stoppés par la directive 'halt:', si elle n'était pas
inhibée.
Si l'on clique sur ce bloc la liste des cantons stoppés
apparaîtra et la fonction 'halt:' redeviendra active. |
|
Des trains sont bloqués par
les directives '#balauto'+'cant:' (ou 'blocage:') et les n°
des cantons sont affichés (ici n° 4 et n° 20). La fonction
'cant:' (ou 'blocage:') évite à un train de rencontrer un
aiguillage fermé ou de rejoindre le train précédent.
Si l'on clic sur ce bloc, il deviendra orange. La fonction
'cant:' (ou 'blocage:') sera inhibée et les trains pourront
continuer à avancer.
|
|
La fonction 'cant:' (ou
'blocage:') est inhibée. Les trains peuvent continuer à
avancer, même si le canton est en 'cant:' (ou 'blocage:').
Ceci permet d'aller chercher des wagons qui sont détectés
comme un train, si ils ont les essieux résistifs.
Si l'on clic sur ce bloc, la fonction 'cant:' (ou
'blocage:') redeviendra active. |
|
La fonction 'cant:' (ou
'blocage:') est inhibée. Les trains pourront continuer à
avancer, même si le canton est en 'cant:' (ou 'blocage:').
Le texte 'INHB' signifie que des trains auraient du être
bloqués par la directive 'cant:' (ou 'blocage:'), si elle
n'était pas inhibée.
Si l'on clique sur ce bloc la liste des cantons bloqués
apparaîtra et la fonction 'cant:' (ou 'blocage:')
redeviendra active. |
|
La
fonction d'affectation automatique a détecté et affiché un
cas ou un train et un canton sont en défaut.
Si l'on clic sur ce bloc le train en défaut est affecté au
canton en défaut.
Résout 2 fois sur 3 un problème de captage ou de perte de
synchronisme entre UTS et le réseau. |
|
Si l'on utilise ce bloc avec
l'option=56, on a un bloc 'B-H' qui regroupe les
fonctions des blocs 'BLC' et 'HLT'.
Dans ce cas, avec ce seul bouton, on inhibe les blocages et
les haltes des trains.
ATTENTION, ce bloc ne peut être utilisé que si les blocs de
type 'BLC' ou 'HLT' ne sont pas utilisés sur les TCO (sur
aucun TCO !). Dans le cas contraire, le fonctionnement de
ces blocs sera erratique.
|
|
N'est utile que si le réseau
comprend une boucle de retournement.
Bloc permettant de remettre à les cantons à l'état
initial. Quand un train parcourt une boucle de
retournement, en sortie la commande du train est
inversée. Un clic sur ce bloc fait un raz des
états "Cantons inversés", si le train est à l'arrêt.
|
Les blocs - Pour afficher un
autre écran
Ce bloc est
utilisé pour afficher depuis un TCO, directement l'écran
demandé.
Texte =
Caractères 0-9 a-z A-Z [
] < > ( )
* - _ et espace.
OPT = Numéro d'écran à afficher.
Si la variable
'C1' est définie, elle donne la couleur du texte.
Si la variable '#1' est définie, elle donne
la forme du bloc.
Exemples pour '#1' = -1, 1, 2, 3 et 4.
La valeur de la variable 'OPT indique le numéro d'écran à
afficher. Valeurs possibles pour la variable 'OPT' : Liste modifiée en V3.7i.
tco0 = 0, tco1 = 1,
tco2 = 2, tco3 =
3, tco4 = 4,
tco5 = 5, tco6 = 6,
tco7 = 7,
train = 8, posloc = 9, depl1 =
10, depl2 = 11, depl3 = 12,
depl4 = 13, depl5 = 14, depl6 =
15, depl7 = 16,
horo = 17, vib = 18, iti1 =
19, iti2 = 20, garage
= 21, aig1 = 22, aig2 = 23,
RS232-serial = 24,
var1 = 25, var2 = 26, var3 = 27,
canton1 = 28, canton2 = 29, servo =
30, tdvérité = 31,
select1 = 32, select2 = 33, select3 = 34, aigauto1 = 35,
aigauto2 = 36, aigauto3 = 37, balauto-vitmax1 = 38,
balauto-vitmax2 = 39, balauto-halt1 = 40, balauto-halt2 = 41,
balauto-cant1 = 42, balauto-cant2 =
43, balauto-cant3 =
44,
exe2 = 46, exe3 = 47, tdv2 =
48, horo1 = 49, horo2 =
50, horo3 = 51, horo4 = 52, horo5
= 53,
horo6 = 54, horo7 = 55, horo8 = 56,
train2 = 57, posloc2 = 58, separe1= 59, separe2 =
60.
Les Variables 'var_xxx'
Les variables 'var_450' à 'var_599' sont réservées au
fonctionnement du programme pour débugage. Ne pas les utiliser pour
l'exploitation du réseau.
Les variables 'var_450' à 'var_599' permettent de simuler la
présence d'un train sur un canton et ainsi de tester les
déplacement, les tables de vérités, les feux...
Ne pas oublier de mettre la variable 'var_499' à 1 pour activer ce
mode 'Débug'.
Les variables utilisables sont les suivantes
pour simuler l'occupation des cantons :
var_450 : Canton n° 00
var_462 : Canton n°
12 var_474 : Canton n° 108
var_451 : Canton n°
01 var_463 :
Canton n° 13
var_475 : Canton n° 109
var_452 : Canton n°
02 var_464 :
Canton n° 14
var_476 : Canton n° 110
var_453 : Canton n°
03 var_465 :
Canton n° 15
var_477 : Canton n° 111
var_454 : Canton n°
04 var_466 :
Canton n° 100 var_478 : Canton
n° 112
var_455 : Canton n°
05 var_467 :
Canton n° 101 var_479 : Canton
n° 113
var_456 : Canton n°
06 var_468 :
Canton n° 102 var_480 : Canton
n° 114
var_457 : Canton n°
07 var_469 :
Canton n° 103 var_481 :
Canton n° 115
var_458 : Canton n°
08 var_470 :
Canton n° 104
var_459 : Canton n°
09 var_471 :
Canton n° 105 var_482 à var_498 ne pas les
utiliser, me sert au débugage du programme en interne.
var_460 : Canton n°
10 var_472 :
Canton n° 106
var_461 : Canton n°
11 var_473 :
Canton n° 107 var_499 :
Si = 1, le mode débug est activé.
Utilisation
:
Le fichier 'config_tco.txt' fourni en exemple comporte ces blocs
sur le coté droit du TCO[0]. Voir la page [SIMULATION].
Sur le coté du TCO, ajouter un bloc interrupteur
avec le texte = "FORCDETCCANT" et V1 = 5899 = var_499.
Ajouter ensuite les blocs interrupteur avec les textes = "CANT 00"
et V1 = 5850 = var_450,
"CANT 01" et V1 = 5851 = var_451, "CANT 02" et V1 = 5852 = var_452
. . . etc.
Quand on veut passer en mode débug, cliquer sur le bloc
"FORCDETCCANT", puis sur un des blocs 'CANT xx'.
On force ainsi la valeur 'det_xx' à 0 ou à 1 pour faire croire au
programme qu'un train est détecté sur ces cantons.
TDV - Tables de vérité et
équations pour les variables dans 'config.txt'
Les commandes utilisables dans les tables de
vérité 'tdv:', les équations 'equ:' ou les pulsations 'pulse:' dans
le fichier 'config.txt' sont décrites
en détails sur la page "config.txt".
Les équations : equ: <opérande1> <var1>
<opérande2> <var2> ...
Ces équations commencent par le texte "equ:". Permet suivant le
résultat d'un test de renseigner des variables.
Les tables de vérité : tdv:
Table de vérité pour initialiser des variables. Le programme
commence par initialiser ces variables.
Table de vérité pour renseigner des variables de sortie en fonction
des variables d'entrée.
Les pulsations : pulse:
pulse<0-31>:<tic_off1>-<tic_on>-<tic_off2>-<tic_on2>-<tic_off3>
[<var_out1>] [<var_out2>]
Une pulsation est décrite par une ligne commençant par "pulse:".
Permet d'activer une variable ou une sortie en mode
"off/on/off/on/off" avec des délais paramétrables. Le délais est
égal à N fois la durée en "tics" de 0.095 sec.
La sortie est activée pendant la période "on".
Pour obtenir des délais de quelques secondes dans les
actions.
On a besoin parfois d'un délai, pour établir un retard de quelques
secondes, par exemple entre la mise en route des feux du PN et la
fermeture des barrières, quand on détecte un train.
On souhaite retarder des actions. Il faut ajouter un délai dans
l'activation des variables dans les équations.
Comme astuce, on utilise les variables servant à commander
normalement les servos de la dernière carte n°3, car ils ne sont
généralement pas câblés, ni utilisés.
De ce fait, on déplace fictivement ce servo en lui imposant des
consignes de positions et vitesses, et l'on compare sa position
temps-réel pour alimenter une variable de sortie.
Exemple de délais en pratique :
On veut un retard de 6 secondes quand
le train est détecté sur un canton avant de fermer les barrières
d'un passage à niveau, et un retard d'une seconde avant d'ouvrir les
barrières quand le train a quitté le canton 3.
On veut un retard de 6 secondes dans
un sens et 1 seconde dans l'autre
sens, soit un temps total de 7
secondes.
On prend la plus grande amplitude possible avec des consignes du
servo = 1 et 1022.
La durée "Tic" = 95 msec et le servo
se déplace du paramètre vitesse du servo à chaque "Tic".
Autre exemple : Si la vitesse du servo = 10, la
position de départ =1 et la consigne = 100, à T+0,1 sec position =
11, à T+0,2 sec position = 21,à T+0,3 sec position = 31,à T+0,4 sec
position = 41...
La position du servo est
incrémentée de "10" toutes les 1/10 de
secondes. On arrive à la position 100 au bout d'une seconde.
Pour nos 7
secondes, on en déduit une vitesse de déplacement du servo
((1022-1)*0.095)/(6+1)
= 14 (A cette
vitesse, le servo mettra 7 secondes
pour aller de 1 à 1022).
Si l'on veut un temps plus long à la fermeture qu'à l'ouverture, il
faut comparer la position du servo à un "Pas de comparaison" :
6 secondes => (Pas*0.095)/vitesse =
temps => (Pas*0.095)/14 = 6 => Pas = (14*6)/0.095 = 884
1 seconde =>
(Pas*0.095)/vitesse
= temps =>
(Pas*0.095)/14 =
1 => Pas = (14*1)/0.095 = 147
Si l'on utilise les variables du servo n°4, les variables à utiliser
sont : srv_cmd_304 = Consigne (0-1023), srv_cmd_314
= Vitesse (1-1023), srv_pos_304 = Position temps réel
(0-1023).
On en déduit les équations à placer dans la partie "tdv:" :
equ: l det2_3 =val srv_cmd_304 1022 =val
srv_cmd_314 14
equ: ln det2_3 =val srv_cmd_304 1
=val srv_cmd_314 14
equ: l srv_pos_304>147 =
out_42
Les deux lignes suivantes sont facultatives. Elles
permettent de forcer la position en butée dés le dépassement du
point de comparaison.
Les temporisations sont ainsi respectées, même quand l'on vient
juste de dépasser la position 147 et
de changer l'état de "det2_3".
Evite d'attendre 1 ou 6 secondes avant que que le servo atteigne la
position en butée.
Par contre, pour un changement intempestif de "det2_3", la
temporisation de 1 ou 6 secondes repart de 0. Commencer par faire
des tests sans ces deux lignes facultatives.
equ: l srv_pos_304>147 a
det2_3 =val srv_cmd_314 1023
equ: l srv_pos_304<147 an
det2_3 =val srv_cmd_314 0
Selon l'état que l'on veut donner à la variable de
sortie et suivant le sens de temporisation désiré, on peut changer "147" par "884" ou inverser "1022" et "1".
Pour aider à la compréhension, vous pouvez provisoirement placer des
blocs d'aide sur le TCO.
3 Blocs pour afficher un texte et une valeur numérique et un
bargraphe (bloc : text + 0000) avec :
- 1er bloc V1=8304 = srv_cmd_304 = Consigne
(0-1023)
- 2éme bloc V1=8314 = srv_cmd_314 = Vitesse (1-1023)
- 3éme bloc V1=3104 = srv_pos_304 = Position temps réel
= (0-1023)
Variables
'special_var_xx'
Ces variables sont affichées par le menu : "Debug > Variables
480 - 599 et Variables spéciales".
UTS
modifie ces variables en temps réel pour animer vos divers
automatismes.
Elles se
nomment special_var_0 à special_var_99
pour un numéro interne de 9100 à 9199.
Elles sont
utilisables dans l'édition des TCO et dans 'config.txt',
dans les tables de vérité et les équations.
La plupart sont en lecture seule, mais les
variables de type "Vitesse" peuvent être modifiées comme 'special_var_20'.
On peut
utiliser des combinaisons de variables pour produire des
clignotements fixe ou pseudo-aléatoire.
Exemple dans la partie '#tdv' pour allumer une lampe une fois
sur quatre :
equ: l special_var_15 a
special_var_16 = out_42 (out_42 = lampe)
Variables
issues d'un compteur interne. Elles changent
d'état régulièrement (0-1). Au démarrage, elles sont toutes à
'0'.
special_var_0
= 80 msec
special_var_1
= 160 msec
special_var_2
= 320 msec
special_var_3
= 640 msec ( 0,6
seconde)
special_var_4
= 1.280 msec ( 1,3 seconde)
special_var_5
= 2.560 msec ( 2,6 secondes)
special_var_6
= 5.120 msec ( 5,1 secondes)
special_var_7 =
10.240 msec (10 secondes)
special_var_8 =
20.480 msec (20 secondes)
special_var_9 =
40.960 msec (40 secondes)
special_var_10 = 81.920
msec (1 minute et 20 secondes)
special_var_11 = 163.840
msec (2 minutes et 40 secondes)
special_var_12 = 327.680
msec (5 minutes et 27 secondes)
special_var_13 = 655.360
msec (11 minutes)
special_var_14 = 1310.720 msec
(22 minutes)
special_var_15 = 2621.440 msec
(44 minutes)
Variables
pour commander des feux de carrefour routier.
special_var_20 = feux 1&2 vitesse de séquencement.
Valeur modifiable = ( 1 à 99) 15=
feux normaux (1 = très rapide).
(101 à 199) 105= feux orange clignotants (101 =
très rapide).
special_var_23 = feux 1 - lampe rouge = 0 ou 1
special_var_22 = feux 1 - lampe orange
special_var_21 = feux 1 - lampe vert
special_var_26 = feux 2 - lampe rouge
special_var_25 = feux 2 - lampe orange
special_var_24 = feux 2 - lampe verte
Peut servir à
plusieurs carrefours, mais ils seront tous synchrones.
Exemple pour alimenter directement les feux tricolores routier
d'un carrefour dans 'config.txt' : (equ: l =
lettre 'L' minuscule pour load).
@
Feux du carrefour routier.
@
var_003 : Calcul plage horaire éclairage.
@
var_004 : Cmde feux routiers orange clignotants.
@
special_var_21,22,23 = Feux 1 : Vert Orange Rouge.
@
special_var_24,25,26 = Feux 2 : Vert Orange Rouge.
@
Commande manuelle des feux clignotants par un interrupteur
depuis le TCO qui commande la variable n° 4.
@
special_var_20 = Vitesse des feux de 1 à 99 (par défaut
prendre 20). Feux orange clignotants de 101 à 199 = (par
défaut prendre 105).
@
Quand l'horloge UTS est entre 23 et 6 heure (>23 ou
<6), les feux passent en orange clignotant.
@
var_3=variable intermédiaire.
equ:
l special_var_21 = led_38
equ:
l special_var_22 = led_37
equ:
l special_var_23 = led_36
equ:
l special_var_24 = led_41
equ:
l special_var_25 = led_40
equ:
l special_var_26 = led_39
equ:
ln var_4 =val special_var_20 15
equ:
l var_4 =val special_var_20 105
equ:
l special_var_93>=23 = var_3
equ:
l special_var_93<6 o var_3 =val special_var_20 105
@
Quand l'horloge UTS est entre 22 et 7 heure, mettre
l'éclairage Gare + Municipal en marche.
@
Forçage de la mise en marche de l'éclairage Gare ou
Municipal depuis un interrupteur du TCO[1].
equ:
l special_var_93>=22 = var_3
equ:
l special_var_93<7 o var_3 o var_5 = out_37
equ:
l special_var_93<7 o var_3 o var_6 = out_40
Variables
pour commander divers automates. Allumage de type
chenillard. Peut servir à allumer une barrière lumineuse de
chantier.
Une seule variable est à '1' à la fois. Les autres sont à
'0'.
On dispose de 6 chenillards de 2, 3, 4, 5, 6 et 10 sorties,
ayant chacun une vitesse indépendante et modifiable.
special_var_30 = vitesse de séquencement (Valeur modifiable de
1 à 99) 1=rapide.
special_var_31 = lampe 1
special_var_32 = lampe 2
special_var_33 = vitesse de séquencement (Valeur
modifiable de 1 à 99)
1=rapide.
special_var_34 = lampe 1
special_var_35 = lampe 2
special_var_36 = lampe 3
special_var_37 = vitesse de séquencement (Valeur
modifiable de 1 à 99)
1=rapide.
special_var_38 = lampe 1
special_var_39 = lampe 2
special_var_40 = lampe 3
special_var_41 = lampe 4
special_var_42 = vitesse de séquencement (valeur
modifiable de 1 à 99)
1=rapide.
special_var_43 = lampe 1
special_var_44 = lampe 2
special_var_45 = lampe 3
special_var_46 = lampe 4
special_var_47 = lampe 5
special_var_48 = vitesse de séquencement (Valeur
modifiable de 1 à 99)
1=rapide.
special_var_49 = lampe 1
special_var_50 = lampe 2
special_var_51 = lampe 3
special_var_52 = lampe 4
special_var_53 = lampe 5
special_var_54 = lampe 6
special_var_55 = vitesse de séquencement (valeur
modifiable de 1 à 99)
1=rapide.
special_var_56 = lampe 1
special_var_57 = lampe 2
special_var_58 = lampe 3
special_var_59 = lampe 4
special_var_60 = lampe 5
special_var_61 = lampe 6
special_var_62 = lampe 7
special_var_63 = lampe 8
special_var_64 = lampe 9
special_var_65 = lampe 10
Variables
numériques (0-255 et 0-1023) en boucle. Si pas définie, par
défaut vitesse = 1.
Quatre variables, signaux en dent de scie lent, la valeur
augmente et repasse à zéro :
special_var_66
= vitesse de séquencement lent (Valeur
modifiable de 1 à 99)
1=rapide, 2=+lent...
special_var_67 = variable s'incrémentant automatiquement de 0
à 255 et repasse à 0.
special_var_68 = variable s'incrémentant
automatiquement de 0 à
1023 et repasse à 0.
special_var_69 = vitesse de séquencement
lent (Valeur modifiable de 1 à 99)
1=rapide, 2=+lent...
special_var_70 = variable s'incrémentant automatiquement de 0
à 255 et repasse à 0.
special_var_71 = variable s'incrémentant
automatiquement de 0 à
1023 et repasse à 0.
Variables
numériques (0-255 et 0-1023) en boucle. Si
pas définie, par défaut vitesse =
1.
Quatre variables, signaux en dent de scie rapide, la valeur
augmente et repasse à zéro :
special_var_72 = vitesse de séquencement rapide (Valeur
modifiable de 1 à 99) 1=lent,
2=+rapide...
special_var_73 = variable s'incrémentant
automatiquement de 0
à 255 et repasse à 0.
special_var_74 = variable s'incrémentant
automatiquement de 0 à
1023 et repasse à 0.
special_var_75 = vitesse de séquencement
rapide (Valeur modifiable de 1 à 99) 1=lent,
2=+rapide...
special_var_76 = variable s'incrémentant
automatiquement de 0
à 255 et repasse à 0.
special_var_77 = variable s'incrémentant
automatiquement de 0 à
1023 et repasse à 0.
Variables numériques
(0-255 et 0-1023) en boucle. Si pas définie, par
défaut vitesse = 1.
Quatre variables, signaux en dent de scie triangulaire
lent, la valeur augmente puis diminue :
special_var_78 = vitesse de séquencement lent (Valeur
modifiable de 1 à 99)
1=rapide, 2=+lent...
special_var_79 = variable s'incrémentant
automatiquement de 0
à 255 puis de 255 à 0.
special_var_80 = variable s'incrémentant
automatiquement de 0 à
1023 puis de 1023 à 0.
special_var_81 = vitesse de séquencement
lent (Valeur modifiable de 1 à 99)
1=rapide, 2=+lent...
special_var_82 = variable s'incrémentant
automatiquement de 0
à 255 puis de 255 à 0.
special_var_83 = variable s'incrémentant
automatiquement de 0 à
1023 puis de 1023 à 0.
Variables
numériques (0-255 et 0-1023) en boucle. Si pas définie, par
défaut vitesse = 1.
Quatre variables, signaux en dent de scie triangulaire
rapide, la valeur augmente puis diminue :
special_var_84 = vitesse de séquencement rapide (Valeur
modifiable de 1 à 99) 1=lent,
2=+rapide...
special_var_85 = variable s'incrémentant
automatiquement de 0
à 255 puis de 255 à 0.
special_var_86 = variable s'incrémentant
automatiquement de 0 à
1023 puis de 1023 à 0.
special_var_87 =
vitesse de séquencement rapide (Valeur
modifiable de 1 à 99) 1=lent,
2=+rapide...
special_var_88 = variable s'incrémentant
automatiquement de 0
à 255 puis de 255 à 0.
special_var_89 = variable s'incrémentant
automatiquement de 0 à
1023 puis de 1023 à 0.
Variables en lecture pour obtenir les
informations sur l'heure UTS (Pas celle de Windows !).
special_var_90
= horloge en marche=1.
special_var_91 = horloge bloquée=1.
special_var_92 = jour courant=0 à 6.
special_var_93 = heure courante=00 à 23.
special_var_94 = minute courante=00 à 59.
special_var_95 = 60*heure courante + minute courante = 0 à
1439.
Exemple :
Quand l'horloge UTS est entre 22 et 7 heure (>22 ou
<7), mettre l'éclairage municipal en marche (Sortie =
'out_40' et variable intermédiaire = 'var_3').
et les feux passent en orange clignotant.
equ: l special_var_93>=22 =
var_3
equ: l special_var_93<7 o var_3 =
out_40
Remarque
sur le dernier exemple :
Il n'est pas possible de combiner ces tests numériques,
comme ici : equ: l special_var_93>=22 o
special_var_93<7 = var_3 (Ne
fonctionne pas !).
Par
contre ceci fonctionne : equ:
l special_var_93>=22 a
in_1 =val var_25 5
Le premier test peut être sur des variables numériques, mais
les tests suivants doivent être sur des états binaires (0 ou
1).
Fonction de commande automatique d'aiguillage : Aigauto
Actionne automatiquement les prochains aiguillages rencontrés par un
train en mouvement.
Quand l'on conduit un train depuis le clavier ou une manette, cela
facilite le déplacement du train en évitant de rencontrer un
aiguillage fermé.
Les aiguillages sont activés qu'une seule fois. Pour réinitialiser
l'action, il faut que le train ait quitté le canton ou qu'il
s'arrête. (Vitesse et Consigne = 0).
Pour paramétrer cette fonction, il faut ajouter une section
'#aigauto' dans 'config.txt'.
Pour activer cette fonction, dans la section '#general' du fichier
'config.txt', ajouter la directive 'train_aigauto on'.
La configuration lue par UTS est affichable et animée dans le menu :
'Debug > Aigautoxx'.
Exemple :
#aigauto
[
cant: c0:+10 plusur:
c7
condi:
det_1.0
actions: a3.0
cant: c1:-10 plusur:
c2
c13
condi:
det_9.0
a3.1
actions: a2.1
cant: c6:+10 plusur:
c5
condi:
det_7.0
actions: a9.1 a8.1
cant: c7:-10 plusur:
c0
c1
condi: det_6.0 pos1_aig_8.1
pos1_aig_9.1 actions: a6.0 a7.0
cant: c7:+10 plusur:
c6 c14 c15
condi: det_9.0
pos1_aig_0.1
actions: a1.1
cant: c1:-10
plusur:
condi: in_49.1
garage_lock_status_0.0
actions: a4.0 a5.0
cant: c11:+10
plusur:
condi: in_51.1
garage_lock_status_1.0
actions: a11.0 a12.1
]
cant:<0-315>:<+-vitesse> plusur:
c<0-315>.<0|1> c<0-315>.<0|1>
c<0-315>.<0|1> condi: <var>.<0|1>
<var>.<0|1> <var>.<0-1> actions:
a<1-63>.<0|1> a<1-63>.<0|1>
a<1-63>.<0|1>
Exemple:
cant:
c1:-10
plusur:
c3 c4 condi: det_5.0 in_49.1
garage_lock_status_0.0
actions: a4.0 a5.0
Dans la section '#aigauto', on peut placer au
maximum 100 lignes et par ligne, 6 cantons 'plusur:', 6 conditions
'condi:' et 6 actions sur les aiguillages.
IMPORTANT : Par ligne, il faut
obligatoirement déclarer tous les termes "cant:",
"plusur:", "condi:" et "actions:" même si
aucun paramètre ne les suit.
cant:
c<0-315>:<+-vitesse>
c<0-315>:<+-vitesse> = Canton où est le train en
mouvement : Sens de parcours et vitesse minimum pour déclencher les
actions. (Le signe "+-" est obligatoire, la vitesse '0' est
interdite)
La vitesse est comprise entre -64 à -1 et +1 à
+64. Si la vitesse = +30 ou -30, le train devra rouler rapidement
pour déclencher les aiguillages. Ceci permet de faire des manoeuvres
sans action sur les aiguillages.
Cette fonction se base sur la vitesse du train, mais
aussi de la valeur de la consigne (potentiomètre ou clavier).
Exemple : cant: c0:+10
plusur: c<0-315> c<0-315>
c<0-315> = Cantons devant être libérés par ce train pour déclencher les
actions.
6 cantons au maximum.
Les cantons devrons être tous libérés pour
commander les aiguillages.
Ceci permet de déclencher les aiguillages, quand le
train est entièrement sur le canton 'cant:' et qu'il n'est plus sur les cantons précédents.
A la différence d'une occupation de canton, si un
autre train est sur ces cantons, les actions peuvent être
déclenchées.
Ne rien mettre après 'plusur:' si le canton est petit
et que le train pourrait ne pas avoir quitté entièrement le canton
précédent.
Exemple : plusur: c2 c13
condi:
<var>.<0|1> <var>.<0|1>
<var>.<0|1> = Toutes les conditions doivent être
réalisées pour déclencher les actions.
6 conditions au maximum.
Les variables doivent être égales aux valeurs
indiquées.
Les conditions devrons être toutes valides pour
commander les aiguillages.
En
général utiliser 'det_xx.0'
pour vérifier que le canton où se dirige le train est libre.
Si on place des termes 'det_xx.0', on vérifie aussi
que les canton 'xx' où se dirige le train ne sont pas réservés, ni
en manuel ni en déplacement automatique.
On peut modifier avec un interrupteur, le parcours
depuis le TCO, en testant une variable de type 'var_xxx'.
Attention
de ne pas confondre dans les conditions :
pos0_aig_3.1 =
L'aiguillage n° 3 doit être en position '0'.
pos1_aig_4.1
= L'aiguillage n° 4 doit être en position '1'.
garage_lock_status_5.0 =
Le garage n° 5 doit être connecté au canton.
Exceptionnellement dans cette directive 'condi:',
pour réduire la place utilisée, le programme traduit 'aX.Y' en
'posY_aig_X.1'.
On peut donc écrire : 'a8.1 a9.0'
à la place de 'pos1_aig_8.1 pos0_aig_9.1'.
Exemple : condi: in_49.1
garage_lock_status_0.0 a9.0
actions:
a<1-63>.<0|1> a<1-63>.<0|1>
a<1-63>.<0|1> = Aiguillages devant être
positionnés lors du déclenchement des actions.
6 actions sur les aiguillages au maximum.
Les
aiguillages sont positionnés à l'état indiqué, sauf si ils sont
réservés.
Exemple : actions: a9.1
a8.1
Quand un train sur le canton avance dans le sens précisé et à une
vitesse supérieure à celle indiquée, et que les conditions sont
réunies, on active les aiguillages.
Les cantons "plusur:" doivent être libérés par le train en
mouvement. Il faut lister tous les cantons d'où peut provenir le
train.
Les conditions "condi:" doivent être utilisées pour interdire
l'action en cas de présence d'un train sur le canton suivant, et
pour autoriser l'action en fonction de la position des aiguillages.
Les actions "actions:" ne concernent que des aiguillages à activer
et pas d'autre type de variables.
Les valeurs des conditions ou actions ne peuvent être égales que à
"0" ou à "1".
Il peut y avoir plusieurs lignes avec le même canton d'origine
"cant:" et même sens de parcours, les actions pouvant être
différentes suivant les conditions demandées.
Utilisation (Les exemples
correspondent à mon TCO)
cant: c0:+10 plusur:
c7.0
condi: det_1.0
actions: a3.0
Un train avance sur le canton n° 9, il a quitté le canton précédent n° 7. Le
prochain canton n° 1 est libre. On
actionne alors l'aiguillage 3 en position 0.
cant: c1:-10 plusur: c2.0 c13.0
condi: det_9.0
pos1_aig_3.1
actions: a2.1
Un train recule sur le canton n° 1, il a quitté les cantons précédent n° 2 et n° 13.
Le prochain canton n° 9 est libre et
l'aiguillage n°3 est en position '1'. On actionne alors l'aiguillage
2 en position 1.
cant: c1:-3
plusur:
condi: in_49.1
garage_lock_status_0.0 actions: a4.0
a5.0
Un train recule sur le canton n° 1. Il était sur le
garage n° 0, car le garage n° 0 est relié au canton 'garage_lock_status_0.0'
et la barrière infrarouge 'in_49.1' l'a
détecté.
On actionne alors l'aiguillage n° 4 et n° 5 en position 0. La
vitesse (-3) est faible, car le train
quittant rapidement la barrière IR, il faut que cela fonctionne dès
qu'il démarre.
Conseils sur la fonction de commande automatique d'aiguillage Aigauto
Si un train semble coincé devant un aiguillage, c'est surement qu'il
avançait et qu'un aiguillage a été déplacé devant lui.
Quand la voie redevient libre, penser à mettre la manette à 0,
pour réinitialiser cette fonction.
Pour alimenter les cantons de la meilleur manière, paramétrer
correctement la section '#selectif' avec la description des
aiguillages comme dans cet exemple :
c1:+
c0+ a3.0
c1:+ c9+ a2.1 a3.1 c1:- c2-
a4.1
Exemple pour le cas particulier un train sort du garage G1
Sur mon réseau qui est équipé de capteurs de fin de course sur les
garages, on peut ajouter une directive #aigauto pour sortir des
garages.
Il n'y a aucune difficulté à utiliser #aigauto pour les garages.
- Soit ils sont isolés et UTS s'attend à avoir une train
stocké dessus.
- Soit ils sont reliés au canton, et considérés comme une
portion ordinaire d’un canton.
Effectivement tous mes garages ont des détecteurs en fin de
course, mais c'était au départ pour signaler la fin des
déplacements automatiques,
car mes garages sont très courts et il faut que le train aille
jusqu'au bout.
Exemple d'utilisation de la directive "garage_lock_status_1.0"
- J’ai un train sur le garage G1.
- Le train est encore sur ce garage car l'entrée n° 51
est active (contact ou barrière infrarouge en fin de garage G1, à
gauche du garage).
- Le garage est relié au canton n° 11. (sinon le train
serait isolé sur son garage et ne se déplacerait pas)
- Le train qui est sur le garage avance et va rencontrer
les aiguillages n° 11 et n° 12 (train à une certaine vitesse
pour pour activer la fonction #aigauto)
Je voudrais donc dans ce cas particulier, activer les
aiguillages n° 11 et n° 12.
> Si le train sur G1 avance >
J’ai donc décrit la ligne :
cant: c11:+3
plusur:
condi: in_51.1
garage_lock_status_1.0
actions: a11.0 a12.1
cant:c11:+3
est une valeur de vitesse très faible , mais c'est pour détecter
rapidement le départ du train, avant qu'il ne quitte la barrière
infrarouge.
garage_lock_status_1.0
indique que le garage est relié au canton, sinon je n’aurais pas à
m'occuper d'un train hors tension sur un garage isolé.
in_51.1
me donne l'information comme quoi, le train détecté sur le canton
est bien sur le garage G1.
Si je n’ai pas d’information sur l'entrée n° 51 qui me dit
qu’un train est sur le garage G1, je ne pourrais pas activer
l'aiguillage n° 12, car je ne saurais pas où est le train sur le
canton n° 11 ?
Si les garages ne sont pas en cul de sac, et si le train peut
provenir de plusieurs endroits qu’UTS en peut pas deviner, il faut
un (ou plusieurs) détecteur (barrière infrarouge) pour avoir ces
informations.
Cela rejoint le problème décrit dans la section #balauto avec
des configurations complexes ou inconnues d'UTS.
Fonction de Bloc Automatique :
Balauto
Permet de conduire d'un train en toute sécurité avec le clavier ou
une manette.
Il est préférable de placer les aiguillages près des frontières
entre deux cantons mais de laisser peu d'espace (5 à 10 cm) entre
cet aiguillage et cette frontière.
Dans ce cas, les conditions de blocage sont plus faciles à écrire,
car le train sera rarement bloqué entre un aiguillage et la
frontière du canton.
Le fonctionnement est prévu avec des wagons aux essieux graphités ou
avec le dernier wagon du train qui provoque la détection
d'occupation de canton.
Les 5 à 10 cm de rails entre un aiguillage et la fin du canton évite
les faux contacts du wagon de queue au passage de l'aiguillage.
Pour paramétrer cette fonction, il faut ajouter une section
'#balauto' dans 'config.txt'.
La configuration lue par UTS est affichable dans les menus de 'Debug
> Vitmax_xx' ou 'Halt_xx' ou 'Balauto_xx'.
Cette fonction se base sur la vitesse du train, mais aussi de la
valeur de la consigne (Potentiomètre ou clavier).
Cette fonctionnalité est l'intégration d'un système de Bloc
Automatique Logiciel dans UTS, pour assurer l'espacement des trains.
Dans la section '#balauto', il faut décrire quatre directives :
'tempo-libe-cant:', 'vitmax:', 'halt:' et 'cant:'.
- 'tempo-libe-cant:' => Pour définir une temporisation
avant de libérer les cantons plus occupés par le train précédent.
- 'vitmax:' => Pour limiter la vitesse d'un train sur une
voie en cul de sac ou en descente.
- 'halt:' => Pour stopper un train qui dépasserait une
barrière infrarouge devant un butoir, ou un train qui s'engagerait
vers un garage déjà occupé.
Cette directive est aussi utile quand la directive 'cant:' n'est pas
utilisable.
- 'cant:' => Pour bloquer un train sur un canton quand les
conditions de sortie ne sont pas réunies. Ce peut être la position
des aiguillages ou l'occupation du canton suivant.
Principe de configuration
Sur l'exemple ci-dessus, on va empêcher le train de quitter le
canton c5 par la droite, en donnant trois groupes de
conditions :
- bloqué si aiguillage a4 direct et a5 est dévié
- bloqué si aiguillage a4 direct et c8 occupé
- bloqué si aiguillage a4 dévié et c6 occupé
Ce qui se traduit par la ligne avec trois groupes de conditions de
blocage séparés par un '|'
qui signifie 'ou':
cant:c5:+ plusur:
c2
blocage: a4.0 a5.1 | a4.0 det_8.1 | a4.1 det_6.1
Si les conditions ne tiennent pas sur une seule ligne, on peut les
écrire sur plusieurs lignes.
La ligne ci-dessus est équivalente aux 3 lignes ci-dessous, mais il
est plus performant de regrouper tout sur une ligne.
cant:c5:+ plusur:
c2
blocage: a4.0 det_8.0
cant:c5:+ plusur:
c2
blocage: a4.1 det_6.1
cant:c5:+ plusur:
c2
blocage: a4.0 a5.1
Exemple de configuration :
#balauto
[
tempo-libe-cant:10
vitmax:c1:+11 condi: a4.0
a5.0
vitmax:c6:+11 condi: a7.1
vitmax:c7:-11 condi: a9.0 a14.0
vitmax:c8:-11
halt:c1:+ condi: a4.0 a5.0 in_49.1
garage_lock_status_0.0
halt:c11:-
condi:
in_51.1 garage_lock_status_1.0
halt:c6:+ condi:
a7.1 in_41.1
garage_lock_status_3.0
halt:c7:- condi: a9.0 a14.0 in_40.1
garage_lock_status_4.0
cant:c5:+
plusur:
c4
blocage: det_6.1 a6.0 | det_11.1 a6.1 | a6.1 a10.0 det_12.1 |
a6.0 a7.1 garage_lock_status_3.1
cant:c6:+ ral:32 dec:11
plusur: c5
blocage: det_7.1 | a8.0 | a9.0
cant:c7:+ ral:32 dec:11
plusur: c6 c14 c15 blocage: det_0.1 a0.0 | a0.1 a1.0 |
a0.1 a1.1 det_9.1
cant:c8:+
dec:11
plusur:
blocage: det_9.1 | a1.1
cant:c9:+
dec:11 plusur:
c7
blocage: det_1.1 a2.1 a3.1 | det_10.1 a2.0 | a2.1 a3.0
cant:c11:+
dec:11
plusur:
blocage: a12.0 in_51.1 garage_lock_status_1.0 | a12.1 in_50.1
garage_lock_status_2.0
]
tempo-libe-cant:
Directive optionnelle pour temporiser la libération d'un canton
quand un train n'est plus détecté. En absence de directive, le
canton est libéré immédiatement.
Si un faux contact ne permet plus de détecter un train, on attend un
peu pour voir si le contact revient, sinon le train suivant
s'engagerait dés
que le canton devant lui est libre, au moins faux contacts du train
devant lui.
Pour une utilisation plus sûre d'UTS, ne pas oublier cette directive
et l'utiliser avec la valeur 10 par défaut (= 1 seconde), puis
l'adapter si nécessaire.
Exemple: tempo_libe_cant:10
tempo-libe-cant:<0-99>
<0-99> = temporisation en dixièmes de
secondes (0 = Pas de temporisation, 10 = 1 seconde, 99 = 10
secondes).
vitmax :
Directive pour limiter la vitesse sur une voie en cul de sac ou
descendant trop rapidement. N'a pas d'effet sur les déplacements
automatiques.
Si le même numéro de canton est sur présent sur plusieurs lignes, il
suffit qu'une des lignes remplisse les conditions pour ralentir le
train.
Exemple: vitmax:c1:+10 condi:a1.0
a2.1
vitmax:c:<0-315>:<+-vitesse>
c:<0-315> = Canton ou s'applique la vitesse
maximum.
:<+-vitesse> = Vitesse maximum de parcours
dans le sens indiqué -64 à +64 (0 interdit).
condi: <var>.<0|1> <var>.<0|1>
6 conditions au maximum.
Les variables doivent être égales aux valeurs
indiquées.
Les conditions devront être toutes valides pour
limiter la vitesse.
Cette fonction limite la valeur de la consigne
(potentiomètre ou clavier).
Exceptionnellement dans cette directive 'condi:',
pour réduire la place utilisée , le programme traduit 'aX.Y' en
'posY_aig_X.1'.
On peut donc écrire : 'a8.1 a9.0'
à la place de 'pos1_aig_8.1 pos0_aig_9.1'.
Si l'on n'a pas de condition, on peut omettre le
paramètre 'condi:'.
halt:
Directive pour stopper net un train en fin de voie, par exemple
quand il franchi une barrière infrarouge placé 5 à 10 cm avant un
heurtoir.
Pour rechercher des wagons isolés placés devant un heurtoir, cette
protection est désactivable depuis le TCO avec le bloc à fonctions multiples 'HLT' ('OPT'=5).
Si un n° de canton est sur présent sur plusieurs lignes de texte, il
suffit qu'une des lignes remplisse les conditions de blocage pour
stopper le train.
Exemple: halt:c1:+ condi: a4.0
a5.0 in_49.1 garage_lock_status_3.0
halt:c:<0-315>:<+->
c:<0-315> = Canton ou s'applique l'arrêt
immédiat.
:<+-> = Sens de parcours.
condi: <var>.<0|1> <var>.<0|1>
6 conditions maximum.
Les variables doivent être égales à leurs
valeurs.
Les conditions doivent être toutes valides pour
stopper le train.
Exceptionnellement dans cette directive 'condi:',
pour réduire la place utilisée , le programme traduit 'aX.Y' en
'posY_aig_X.1'.
On peut donc écrire : 'a8.1 a9.0'
à la place de 'pos1_aig_8.1 pos0_aig_9.1'.
Attention, on utilisera
'garage_lock_status_3.0'
pour arrêter le train qui roule sur un garage, et qui atteint la fin
de la voie. '0'= Garage
libre relié au canton, c'est le train que l'on déplace sur ce
garage.
cant:
Directive pour bloquer un train sur son canton, car les conditions
ne lui permettent pas de passer au canton suivant. C'est une sorte
de Bloc Automatique.
Pour rechercher des wagons isolés sur un canton, cette protection
est désactivable depuis le TCO avec le bloc à fonctions multiples 'HLT'
('OPT'=6).
Il faut interdire au train de rentrer sur le prochain canton occupé,
de rencontrer un aiguillage fermé ou de se diriger vers un garage
occupé.
Si le même numéro de canton est présent sur plusieurs lignes, il
suffit qu'une des lignes remplisse les conditions de blocage pour
bloquer le train.
Exemple: cant:c6:+ ral:32
dec:11 plusur: c5 blocage: det_7.1
| a8.0 | a9.0
cant:c<0-315>:<+->
:c<0-315> = Le canton que le train n'a pas
le droit de quitter.
<+-> = Sens de parcours du canton.
ral:<1-64>
Consigne de vitesse en cas de ralentissement. C'est
une sorte de régulation sur feu orange (Optionnel, mais conseillé).
Si la partie 'plusur:' n'est pas encore valide, mais
qu'un groupe de condition 'blocage:' est déjà valide, cela signifie
que
le prochain canton est occupé, mais comme le train
n'est pas encore totalement entré sur le canton en cours, il
continue son trajet.
Quand tous les wagons seront sur le canton, le
train va s'arrêter avec une certaine inertie. Pour éviter de
dépasser le canton, on peut imposer une vitesse maximum
sur ce canton quand on détecte qu'un groupe de
condition 'blocage:' est vérifié (et pas la directive 'plusur:') sur
le prochain canton. Le passage en mode ralenti se fait avec inertie.
Si la directive 'ral:' n'est définie, cette fonction
de ralenti ne sera pas utilisé pour ce canton.
Cette valeur n'est pas signée, car l'on connaît
déjà le sens de parcours.
Exemple : ral:32
dec:<1-28>
Valeur d'inertie pour la décélération sur ce
canton (Optionnel). Voir la correspondance en secondes dans la section '#train'.
La valeur utilisée sera la plus faible entre cette
valeur et celle propre au train situé sur le canton. Utile avec un
canton court, pour décélérer rapidement.
Exemple : dec:11
plusur:c<0-315>.<0|1> = Cantons devant être libérés par
CE train pour vérifier si il peut sortir du canton.
6 cantons au maximum.
Les cantons devrons être tous libérés pour
bloquer le train.
Permet de bloquer le train quand il est entièrement
entré sur ce canton. Le dernier wagon a quitté le canton précédent.
A la différence d'une occupation de canton, si un
autre train est sur ces cantons, ce n'est pas une condition de
blocage.
Si le canton est trop petit pour contenir le
train le plus long, on ne configurera pas cette directive.
Exemple : plusur: c6 c14 c15
blocage:<var>.<0|1> = Conditions devant être réalisées
pour bloquer le train sur le canton.
22 conditions au maximum, y compris le sigle '|'.
Les variables doivent être égales aux valeurs
indiquées.
Un ou = '|' sépare les groupes de variables. Un
groupe de variables doivent être à l'état indiqué pour bloquer le
train.
Exceptionnellement dans cette directive 'condi:', pour
réduire la place utilisée , le programme traduit 'aX.Y' en
'posY_aig_X.1'.
On peut donc écrire : 'a8.1 a9.0'
à la place de 'pos1_aig_8.1 pos0_aig_9.1'.
Si un aiguillage cité est en mouvement, il est
considéré comme bloquant pour le train. Cela évite au train
d'avancer quand on bouge des aiguillages.
Attention,
on utilisera 'garage_lock_status_3.1' pour arrêter le
train qui s'engagerait vers un garage
occupé. '1'= Garage
isolé du canton, donc avec un autre train déjà dessus.
Attention,
on utilisera 'garage_lock_status_3.0' pour arrêter le
train qui sortirait du garage. '0'=
Garage libre relié au canton, c'est le train que l'on déplace de ce
garage vers
le canton, alors que les aiguillages de sortie sont
mal positionnés.
Exemple :
blocage: det_6.1 a6.0 | det_11.1 a6.1
Dans des cas complexes, il est impossible de bloquer avec certitude
un train qui sort d'un canton.
Sur cet exemple, un train peut venir du canton c4, s'arrêter au
milieu du canton c3 et d'aller vers le canton c5 alors que
l'aiguillage a1 est dirigé vers le bas.
On ne sait pas si il va sortir par c2 ou c5.
Pour l'exemple ci dessus on peut tenter la configuration suivante :
cant:c3+ plusur:
c1
blocage: det_2.1 a1.1 | det_41 a1.0 a2.1 |det_5.1 a1.0 a2.0
Sur le schéma ci-dessus le train peut très bien être en haut, alors
que les aiguillages ont changés de place entre-temps.
Dans ces conditions, pour établir un bloc automatique il faut
installer des barrières infrarouges.
Si les aiguillages sont en sortie de canton, suivant le sens de
parcours, le problème ne se pose pas, car on sait par où le train va
quitter ce canton.
Pour notre exemple, on peut améliorer le système en ajoutant une
deuxième ligne :
cant:c3+ plusur:
c1
blocage: det_2.1 a1.1 | det_41 a1.0 a2.1 |det_5.1 a1.0 a2.0
cant:c3+ plusur:
c1
blocage: det_4.1 in_1.1 | det_5.1 in_2.1 |det_2.1 in_3.1
où si la place est trop courte pour freiner progressivement ou le
train trop court pour rester encore sur la barrière infrarouge après
son freinage :
cant:c3+ plusur:
c1
blocage: det_2.1 a1.1 | det_41 a1.0 a2.1 |det_5.1 a1.0 a2.0
halt:c3+ condi: det_4.1 in_1.1
halt:c3+ condi: det_5.1 in_2.1
halt:c3+ condi: det_2.1 in_3.1
On peut aussi diriger les aiguillages avec des barrières infrarouge
et la fonction '#aigauto'.
Les deux fonctions 'aigauto' et 'balauto' sont alors interactives.
Utilisation de la fonction de
Bloc Automatique : Balauto
Sur le TCO, on affiche les blocs d'occupation des cantons avec le
texte 'HT', 'BL', 'VM' ou 'RA' si le canton est en halte,
bloqué, en vitesse maximum ou en mode ralenti.
Exemple d'utilisation n° 1
#balauto
[
vitmax:c8:-11
halt:c8:- condi: in_48.1
]
Le train roule vers la droite et atteint la
vitesse de '-11'. Il reste limité à cette vitesse. On affiche 'VM'
(Vitesse Maximum) sur le bloc d'occupation.
Le train roule vers la droite et atteint la barrière infrarouge
(Entrée n° 48) devant le butoir. Il est stoppé net. On affiche 'HT'
(HalTe) sur le bloc d'occupation.
Exemple d'utilisation n° 2
#balauto
[
cant:c0:+ plusur:
c7
blocage: det_1.1 | a3.1
cant:c9:+ plusur:
c7
blocage: det_1.1 a2.1 a3.1 | det_10.1 a2.0 | a2.1 a3.0
]
Le train vert qui roule vers la gauche est bloqué
'BL', car le train rouge roule déjà vers la gauche vers ce canton n°
1.
Le train rouge qui roule vers la gauche est bloqué 'BL', car le
train vert roule déjà vers la gauche vers ce canton n° 1.
Exemple d'utilisation n° 3
#balauto
[
vitmax:c6:+11 condi: a7.1
halt:c6:+ condi:
a7.1 in_41.1 garage_lock_status_3.0
cant:c5:+ plusur:
c4 blocage: a6.1 a10.0 det_12.1 | a6.0 a7.1
garage_lock_status_3.1
cant:c6:+
plusur: c5 blocage: det_7.1 | a8.0 | a9.0
]
Le train qui roule vers la droite est limité en
vitesse à +11, car l'aiguillage (a7.1) le dirige vers un garage
relié au canton (garage_lock_status_3.0).
Le train roule sur la voie du haut vers la droite. Le train est
stoppé net, car il a atteint la barrière infrarouge devant le
butoir (in_41) et le garage est relié au canton
(garage_lock_status_3.0).
Utiliser la directive 'halt:' avec 'garage_lock_status_3.0'.
Le train rouge est sur le garage, isolé du canton.
(garage_lock_status_3=1)
Le train vert qui roule vers la droite est bloqué 'BL' sur le canton
n°5, car l'aiguillage (a7.1) le dirige vers un
garage déjà occupé (garage_lock_status_3.1). '.1' =
Isolé du canton, donc avec un autre train dessus.
Utiliser la directive 'cant:' avec 'garage_lock_status_3.1'.
Exemple d'utilisation n° 4
Utilisation de 'cant: + 'ral:'. En une seul directive, on ralenti le
train et on le bloque sur un canton.
#balauto
[
cant:c9:+ ral:10 dec:11
plusur: c7 c8 blocage: det_1.1 a2.1 a3.1 |
det_10.1 a2.0 | a2.1 a3.0
]
On utilise la directive 'ral:' pour ralentir le train quand
il s'engage sur le canton n9, car il va être bloqué quand il aura
quitté entièrement le canton n° 8.
Sur cet exemple, on voit la différence entre [RA] et [BL]. Dans le
premier cas le train qui roule vers la gauche est ralenti à +10,
après il est bloqué, car il n'est plus sur c8.
Exemple d'utilisation n° 5
Utilisation de 'vitmax:'
Si l'on utilise des équations ou tables de vérités pour allumer les
feux de signalisation ferroviaires, les variables commandant les
leds orange ou rouge peuvent être utilisées
dans les conditions 'cant:' ou 'vitmax:'.
tdv:
in: led_3 det_1 pos1_aig_3 | out:
led_2 led_14 led_26 @ Out = leds rouge, jaune et verte
(feux voie n°0 à gauche)
eq: x
x
1
| 1
0 0
eq: x
1
0
| 1
0 0
eq: 1
0
0
| 0
1 0
eq: 0
0
0
| 0
0 1
On peut faire ralentir le train, si la led n° 14 est allumée
vitmax:c1:+11 condi: led_14.1
Conseils sur la
fonction de Bloc Automatique : Balauto
Utiliser la directive 'tempo-libe-cant:10'.
Prendre par défaut la valeur '10' pour temporiser d'une seconde la
libération des cantons. Après usage modifier si-besoin ce paramètre.
Cela évite de rendre par erreur un canton libre au moindre faux
contacts du wagon de queue encore présent sur ce canton.
Il est préférable de placer les aiguillages près des frontières
entre deux cantons et de laisser peu d'espace (entre 5 et 10 cm)
entre cet aiguillage et cette frontière.
Il y a toujours un risque de dysfonctionnement quand on arrête une
locomotive à cheval entre deux cantons. Elle risque de n'être
reconnue que sur un seul canton et de plus être alimentée.
Le fonctionnement de 'balauto' est prévu avec des wagons aux essieux
graphités ou avec le dernier wagon du train qui provoque la
détection d'occupation de canton.
Si l'on déplace une locomotive seule, la fonction 'RA'
(ralentissement) ne fonctionne pas, car elle passe instantanément
d'un canton à l'autre, et passe donc directement
en mode blocage, mais quand même avec de l'inertie. Il n'existe pas
de temps intermédiaire où une partie du train est sur un canton et
où le canton précédent n'est pas encore libéré.
Pour alimenter correctement les cantons, paramétrer la section
'#selectif' avec la description des aiguillages comme ceci :
c1:+
c0+ a3.0
c1:+ c9+ a2.1 a3.1 c1:- c2-
a4.1
Amélioration ::
Si l'on utilise le paramètre 'ral: xx' (avec une valeur), le
fonctionnement des trains est plus fluide, car cela simule le
ralentissement du convoi au passage d'un feu orange virtuel.
Utiliser une configuration des trains dans la partie '#train' qui
fait doit faire avancer lentement les trains pour des vitesses de
'01' à '03' (ils ne doivent pas rester immobiles),
et à la vitesse maximum souhaitable pour une vitesse de 64. Si une
locomotive va trop vite n'hésiter pas à lui donner '32' ou même '20'
comme vitesse maximum.
Le paramètre d'accélération peut être important, mais en
décélération il ne doit pas dépasser une certaine valeur, au risque
de bruler les feux rouges des conditions de blocage.
Le paramètre 'frein' ne sert pas dans 'balauto'.
Perte de wagons :
Si un wagon se détache du convoi, il reste détecté sur le canton
précédent et le train va donc continuer à entrer sur le canton
suivant,
car UTS croit que le convoi n'est toujours pas entièrement sur le
canton et le train reste en mode 'ralenti'.
Dans ce cas le trains ne passera pas en mode 'blocage' et va heurter
le train précédent.
Une possibilité est de donner à 'ral:xx' une valeur très faible
(Exemple : 05), pour ne pas heurter trop violemment le train
précédent en cas de perte de wagons.
Dans ce cas, le train risque de ne pas entrer sur le canton et
d'occuper deux cantons.
Il faut alors 2 fois plus de canton que de trains sur une même voie,
plus un canton de libre pour que les train tournent.
Si l'on ne met pas de directive 'ral:xx' le problème est aggravé,
car le train ne ralentira même pas en cas de perte de wagons.
Si l'on a vraiment peur, mettre 'ral:01', mais 'ral:20' est plus
réaliste.
Avec la fonction aigauto:
La fonction 'aigauto' fonctionne parfaitement avec 'balauto'.
La seul remarque est que si un train est arrêté devant un aiguillage
par la fonction 'balauto', parfois,
il faut repasser sa vitesse à 0 pour réinitialiser la fonction
'aigauto' et ainsi commander les aiguillages automatiquement.
Gestion de la séparation et regroupement des wagons et
locomotives :
Cette fonctionnalité permet de gérer de manière semi-automatique les
wagons.
Les déplacements des trains sont plus précis et plus sûrs quand les wagons ont des essieux
résistifs.
L'inconvénient des essieux résistifs et que si l'on sépare une
locomotive de ses wagons, le canton avec les wagons reste occupé
pour UTS.
Pour gérer ces wagons, la nouvelle fonction d'UTS permet de séparer
ou regrouper les wagons d'un simple clic de souris.
Si des wagons n'ont pas d'essieux résistifs, ils ne sont ni connus,
ni gérés par UTS.
On peut alors séparer les locomotives des wagons quand l'on veut,
mais en déplacement automatique un train risque de s'arrêter
sur le canton d'arrivée avec des wagons encore sur le canton
précédent, et la fonction 'balauto' n'assure pas la sécurité des
convois.
Pour cela, il est conseillé d'avoir des essieux résistifs sur tous
les wagons.
La fenêtre d'affichage des caractéristiques des trains comporte une
page pour les locomotives et une nouvelle page pour les wagons.
UTS gère les wagons comme des locomotives, ainsi un train ne
va par heurter des wagons avec la fonction 'balauto'.
Le programme fait la différence entre une locomotive et des wagons
uniquement par son numéro (<16 ou >16).
UTS ne sait pas gérer deux locomotives en UM, à moins de les garder
constamment associées.
On peut découper un train en gardant une partie des wagons avec la
locomotives.
Les wagons séparés doivent tenir sur un canton et ne doivent pas
dépasser de ce canton.
On peut déposer une partie des wagons sur un canton et ensuite une
autre partie sur un autre canton.
Il faut que les blocs d'occupation des cantons du TCO soient
bien renseigné avec le n° de canton et que les essieux des wagons
soient résistifs..
Manipulation à réaliser sur le TCO pour séparer une locomotive de
ses wagons.
On a séparé la locomotive de ses wagons et l'on a déplacé la
locomotive sur le canton n° 9 en laissant les wagons sur le canton
n° 8.
Pour le moment, malgré la séparation physique, UTS ne voit qu'un
seul train.
Appuyer sur le bouton gauche de la souris sur le bloc d'occupation
rouge de la future position de la locomotive.
En gardant ce bouton appuyé, déplacer le curseur sur le bloc
d'occupation rouge du train des futurs wagons.
Lâcher le bouton. Si l'opération peut être réalisée, un cadre
magenta s'affiche pendant une seconde.
Un fois la séparation effective, un nouveau train est créé pour les
wagons.
Un nouveau train a été créé sous le nom : 'WGON[xx]' (xx = du numéro 16 au 31).
On peut aussi séparer un train entre un canton et un garage
en laissant les wagons sur le garage ou
la locomotive sur le garage.
Manipulation à réaliser sur le TCO
pour regrouper une locomotive et des wagons.
La locomotive et les wagons sont sur des cantons adjacents, ici les
cantons n° 9 et n° 8.
Avec la fonction 'balauto', la locomotive vert ne peut pas rejoindre
les wagons.
Il faut regrouper la locomotive et ses wagons sous le même numéro de
train, avant de raccrocher physiquement la
locomotive et ses wagons.
Appuyer sur le bouton gauche de la souris sur le bloc d'occupation
rouge de la locomotive ou des wagons.
En gardant ce bouton appuyé, déplacer le curseur sur le deuxième
bloc d'occupation rouge.
Lâcher le bouton. Si l'opération peut être réalisée, un cadre
magenta s'affiche pendant une seconde.
Un fois le regroupement effectif, le train des wagons est supprimé.
La locomotive peut se rapprocher des wagons.
On peut aussi regrouper un train entre un canton et un garage.
Il n'est pas encore possible de découper un trains de wagons en deux
d'un clic de souris. Il faut passer par le menu "Table >
Caractéristiques de Trains".
Quand un nouveau train est créé automatiquement, il porte un nom de
type : 'WGON[xx]'.
On retrouve ce train dans la fenêtre de caractéristique des trains,
menu 'Tables > Caractéristiques des Trains'.
La fenêtre contient les trains du numéro 0 à 15. Quand on clique sur
le bouton [TRAINS], on affiche les WAGONS.
La fenêtre contient les trains du numéro 16 à 31 qui sont des
wagons. On peut modifier ces trains comme ceux de la page
précédente.
Les variables liées aux
séparation et regroupement des
wagons et locomotives
Comme expliqué ci-dessus, quand on clique sur deux cases pour
regrouper une locomotive et des wagons, on regroupe en fait deux
cantons.
Cette action manuelle peut se faire automatiquement en mettant une
variable de type "regroupe_xx" à 1.
Dans l'exemple du paragraphe précédent, on regroupait une locomotive
sur le canton n° 9 et des wagons sur le canton n° 8.
Pour faire cela automatiquement, dans la section #iti, déclarer une
ligne comme dans l'exemple ci-dessous :
#iti
regroupe0: c8 c9
regroupe0:
c1 g4
Quand une locomotive et des wagons sont sur les cantons n° 8 et n°
9, en mettant cette variable à 1, on réunis les deux éléments situés
sur
ces cantons pour former un seul train, comme si l'on l'avait fait en
cliquant sur les deux cases.
Fonctionne avec des numéro de canton ou de garage.
Pour une question de présentation uniforme dans la section #iti, on
n'utilise pas le terme "regroupe_XX>"
mais "regroupeXX".
Quand on voudra utiliser les variables "regroupe_xxx", il faut
mettre un '_' dans le nom de la variable.
Exemple d'utilisation : Sur le TCO, on configure un bouton poussoir
pour mettre à 1 cette variable (V1=9500). Quand on l'active, on
active ce regroupement.
On visualise la configuration lue par UTS, par le menu : Débug >
"Sépare - Regroupe".
On peut mettre à 1 ces variables dans le cadre d'actions générées
par l'horloge pour automatiser des regroupements.
De la même façon, il existe des variable de type "separe_xx" que
l'on peut mettre à 1, pour séparer un train en une locomotive et des
wagons.
Quand l'on met ces variables à 1, UTS tente ces actions comme si on
le faisait manuellement.
Que cette action soit réalisée ou pas réalisée, la variable est
remise automatiquement à 0.
separe_xx (xx = 0 à 99), numéro interne = 9400 à 9499.
regroupe_xx (xx = 0 à 99), numéro interne = 9500 à 9599.
Les déplacements
Si l'on annule un déplacement en cours et que
le train n'est plus détecté, le train sera placé par défaut sur le
canton d'arrivé.
La vitesse des déplacements est la moyenne des vitesses des
cantons occupés. Si le train occcupe les cantons c1=20 et c2 = 30,
la vitesse du train sera de 25.
Dans le cas du dernier canton, dés que le train arrive sur ce
canton, c'est la vitesse de ce dernier canton qui est imposé, même
si il reste un bout du train sur le canton n-1,
ceci pour éviter que le train aille trop vite sur le dernier
canton.
Si aucun train n'est détecté sur les cantons du déplacement en
cours, la vitesse est temporairement réduite à 10.
En V3.7e, ajout ici du paramètre tempo:xxx et amélioration des annonces sonores dans la partie
exe#.
Pour écouter une annonce sonore complète, avant le
déplacement effectif du train, utiliser ces deux directives
: sdeb:exe_xx tempo:xxx
Dans ce cas, quand on lance un déplacement, UTS réserve les
cantons et les aiguillages, positionne les variables de début,
puis attend xxx secondes avant de faire avancer train.
Cela permet d'attendre la fin de l'annonce sonore, avant de
commencer à déplacer le train. Exemple de configuration, si
l'annonce sonore n° 00 dure 20 secondes : sdeb:exe_00 tempo:20
Pour visualiser le décompte de cette temporisation en nombre de
'tics', lancer le menu : Tables > Déplacements.
On peut aussi activer une variable 'var_xxx', puis par une
équation activer une annonce sonore suivant la valeur d'autres
variables.
Directive = 'acc-dec
<1-28>-<1-28>' pour configurer l'inertie des
déplacements.
On peut décrire 200 déplacements maximum dans
la section '#depl'.
Les anciennes directives pour les déplacements. 'fin0:' et 'fin1:'
en V2, sont devenues 'pass:', 'libe:' et 'fin:' en V3.
Voir les
exemples dans le fichier 'config.txt' :
depl
[
acc-dec: 14-15
d49 c9-20
c8-15
a1.0
start:c9
libe:det_9
fin:det_8
halt:in_62
taf2
tsf0 name:C9__C8
d88 c14+30 c7+40 c0+60 a14.1 a9.0
a0.0
start:c14
libe:det_7
fin:in_42
stop:c0
taf0 tsf1 name:C14__C11_G1 sfin:depl_start_run_77
d91 c0+30 c7+40 c0+60 a14.1 a9.0 a0.0 a3.0
start:c14 pass:det_7 libe:det_7 fin:det_0
taf0 tsf0
name:C14__C14_P
d134
c14-30
c13-30
a13.0
start:c14
libe:det_14
fin:det_13
taf1 tsf0
name:C14__C13
sfin:depl_start_run_137
d147
c12-15
c11-30 c5-40 a10.0 a6.1 a4.1
start:c12
fin:in_40
stop:g4
sdeb:exe_00 tempo:20 taf0 tsf1 name:C12__Garage4
]
acc-dec:
acc-dec: <1-28>-<1-28>
Valeur d'inertie pour l'accélération et décélération
des trains pour tous les déplacements. Voir la correspondance en secondes dans la section '#train'.
La valeur utilisée sera la plus faible entre cette
valeur et celle du train situé sur le canton.
Si l'on indique 'acc-dec xx-xx' ou pas de directive, on
prendra la valeur d'inertie des trains.
Exemple : acc-dec: 14-15
d<xx>:
d<0-199> = N° de déplacement dans la liste. Il peut y avoir
des numéros inutilisés.
c<n° de canton><+-Vitesse> = N° des cantons
parcourus suivi de la consigne de vitesse <+-0-64>. (10
cantons maxi)
a<n° d'aiguillage>.<n° position> =N° des
aiguillages à manœuvrer avant le départ pour établir l'itinéraire.
(10 aiguillages maxi).
start:c<0-15,100-115,200-215,300-315> = Canton de départ
(Obligatoire).
pass:det_<0-15,100-115,200-215,300-315> = Canton de passage
pour accéder à la condition de fin, indispensable si le canton de
début et de fin sont identiques.
libe:det_<0-15,100-115,200-215,300-315> = Canton que le train
doit libérer pour que la condition de fin soit réalisée.
Généralement c'est l'avant dernier canton parcouru.
fin:<var> ou
fin:det_<0-15,100-115,200-215,300-315> = Condition de fin
(Obligatoire). Généralement 'fin:det_xx' ou 'fin:in_xx', sur arrivé
sur un canton ou sur détection par barrière IR.
stop:<var> = Si la condition de fin est un contact
'fin:in_xx', il faut ajouter 'stop:cx' pour que ce déplacement
puisse être sélectionné sur le TCO par clic sur deux voyants
d'occupation.
halt:<var> = Condition de halte. Arrête immédiatement le train
sans inertie, utile pour un contact de fin de voie prés d'un butoir.
taf<0-999> = Temps en secondes entre la détection de fin et la
mise hors tension des cantons. (Par défaut mettre 0 ou 1).
tsf<0-999> = Temps en secondes entre la détection de fin et la
libération des cantons. (Par défaut mettre 0 ou 1).
name <nom_du_parcours> = Nom du parcours sur 40 caractères
maximum. Pas d'espace ou de "+-" dans le nom, mais '_' autorisé.
Modification de variables avant ou après le déplacement. Par
exemple, pour lancer des annonces sonores ou pour activer un second
déplacement à la suite.
sdeb:<var> = Met la variable à 1 au début du déplacement.
cdeb:<var> = Met la variable à 0 au début du déplacement.
tempo:<0-999> = Attend xxx secondes après avoir activé les
variables de début et avant de mettre le train sous tension. Utile
si une annonce sonore est confi
sfin:<var> = Met la variable à 1 à la fin du déplacement.
Exemple "sfin:depl_start_run_137" = Lance un second déplacement
après la fin du premier déplacement.
cfin:<var> = Met la variable à 0 à la fin du déplacement.
sc:<var> = Met la variable à 1 au début du déplacement et à 0
à la fin.
Remarques :
La directive 'libe:' permet de libérer complètement le canton
précédent quel que soit la longueur du train et sans temporisation.
Par contre,
il faut que les wagons ou tout du moins le dernier aient ses
essieux résistifs pour faire fonctionner la détection d'occupation
des cantons.
Ceci permet de garer un train sur un canton terminus d'une ligne.
Exemples dans 'config.txt' pour aller d'un canton à un autre ou pour
aller d'un canton à un garage.
Condition de fin du déplacement = libérer le
canton 7 et un train détecté sur le canton 15.
d60 c9-30 c7-40
c15-20 a1.1 a0.1 a9.1
a8.0 start:c9
libe:det_7
fin:det_15
taf1 tsf0 name:C9__C15_M
Condition de fin du déplacement = libérer le canton 9 et un
train détecté par la barrière infra rouge câblée sur l'entrée
49.
d61 c9+30
c1+15
a2.1 a3.1 a4.0 a5.0
start:c9 libe:det_9 fin:in_49
stop:g0 taf0 tsf0 name:C9__Garage0
Condition de fin du déplacement = libérer
le canton 9 et un train détecté sur le canton n°10, ou arrêt
immédiat du train par la barrière infra rouge câblée sur
l'entrée 48.
d54 c9+30
c10+15
a2.0
start:c9 libe:det_9 fin:det_10
halt:in_48 taf0 tsf0 name:C9__C10
Exemple dans 'config.txt' le déplacement 26 quand il terminé,
active à la suite le déplacement 78, pour effectuer d'un seul clic une
série de déplacements.
Ceci est
particulièrement utile, si un déplacement complexe oblige à
changer plusieurs fois le sens de parcours d'un train. Comme ça on
pourra garer directement un train dans sa zone de garage.
Ceci permet de sortir une locomotive du dépôt en deux manoeuvres
pour la placer automatiquement sur la voie principale.
d26
c5+20
c11+10 a6.1 a10.1
a11.1
start:c5 libe:det_5
fin:in_42 stop:c11 taf0 tsf1
name:C5__C11_G2
sfin:depl_start_run_78
d78
c11-10
a11.0
a12.0
start:c11
fin:in_50 stop:g2 taf0 tsf1 name:C11__Garage2
Remarques :
Si l'on annule un déplacement en cours et que le train n'est
plus détecté, le train sera placé par défaut sur le canton d'arrivé.
Les
déplacements par simple clic de souris
Il est possible de lancer un déplacement, en cliquant
sur le voyant d'occupation d'un canton occupé, puis sur celui d'un
canton libre.
Si ce déplacement est déclaré dans 'config.txt', alors il est
lancé. Dans ce cas, les deux cases sont entourées d'un cadre vert
clignotant.
Si le déplacement n'existe pas, ces cadres clignotent en
rouge.
Le logiciel parcours les itinéraires à la
recherche de 'start:cX'
pour le canton de départ et 'fin:det_Y'
ou 'stop:cY' pour le
canton de fin (Déclarés dans 'config.txt').
Si plusieurs déplacements satisfont à cette condition, le
programme choisi le premier dans l'ordre numérique.
Ce système fonctionne aussi avec les garages. Pour un garage, si
la condition de fin est le contact d'entrée d'une barrière
infrarouge 'fin:in_xx', il
faut ajouter une directive 'stop:cY'
à ce déplacement.
Exemple, on clic sur le voyant de gauche, le
voyant sélectionné clignote en rouge et les autres voyants
sélectionnables passent en jaune.
Il faut que les déplacements demandés soient déjà saisies
dans 'config.txt' !
Exemple
#depl
[
d60
c8+30 c9+15 a1.0 a2.0 start:c8
libe:det_8 fin:det_9
halt:in_48 taf0 tsf0 name:C8__C9
]
En situation initiale le train est à droite sur le canton c8.
On clique sur le rectangle rouge qui passe au jaune. Tous les blocs
d'occupation décrits dans '#depl' et ayant comme origine le canton
c8 clignotent, ici le c9 clignote.
On clique sur le bloc d'occupation c9.
Les bloc d'occupations sont entourés d'un cadre vert, signalant que
ce déplacement est enregistré, sinon le cadre est rouge.
Ce déplacement n°60 est ajouté sur le bouton multifonction 'DPL' et
le train se déplace.
Les profils des trains sont
valables pour les déplacements
Dans un déplacement, si l'on indique une vitesse de 'cX+32' ou
qu'avec la manette on fixe
une consigne de '+32', la vitesse du train est calculée de
la même manière en fonction du profil du train.
Ceci permet de définir des vitesses de canton
correctes. Ainsi, si l'on donne sur un canton la vitesse '+32',
tous les trains iront à la moitié de leur vitesse maximum.
Le gros avantage est que pour arriver sur un butoir, avec un
détecteur de position infrarouge placé juste à la fin de parcours,
on peut donner la consigne de vitesse à +10',
tous les trains iront lentement, approximativement tous à la même
vitesse, même pour le même déplacement programmé.
- Si vitesse du canton ou position de la manette =
+01, la vitesse du train = Vminimum. (La loco doit
bouger, mais le plus lentement possible).
- Si vitesse du canton ou position de la manette =
+32, la vitesse du train = Vminimum + (Vmaximum-Vminimum)/2.
- Si vitesse du canton ou position de la manette =
+64, la vitesse du train = Vmaximum. (Vitesse maximum
autorisée).
Les déplacements et
itinéraires
Les tableaux
des déplacements et des itinéraires (menu : Tables >
Déplacements ou Itinéraires) ont un texte de libellé dans leur
colonnes 'Etat'.
Quand l'état
est inactif, le libellé est remplacé par :
" - .
- .
- ".
Les libellés pour les déplacements :
- EN ATTENTE RÉSERVE CANT ET AIG
- POSITIONNE VARIABLES DEBUT_DÉPLACEMENT
- TEMPO EN COURS AVANT DÉPLACEMENT
- ÉTABLI POSITIONS D'AIGUILLAGES
- EN ATTENTE POSITION AIGUILLAGES
- RÉSERVATION+ALIMENTATION CANTON
- EN ATTENTE PASSAGE CANTON PASS:
- EN ATTENTE ARRIVÉE CANTON/GARAGE
- ÉTABLI LA TEMPO D'ARRÊT TRAIN
- TEMPO EN COURS ARRÊT DU TRAIN
- FIN DÉPLACEMENT,RAZ DES CANTONS
- ÉTABLI LA TEMPO LIBÉRATION CANTON
- TEMPO EN COURS LIBÉRATION CANTON
- POSITIONNE VARIABLES FIN_DEPLACEMENT
- FIN RÉSERVATION CANTONS,AIG,SRV
Les libellés
pour les itinéraires :
-
EN ATTENTE LOCO SUR CANT
- EN ATTENTE RESERVE AIG
- EN ATTENTE POSITION AIG
- EN ATTENTE LOCO CANT FIN
- EN ATTENTE FIN TEMPO
- ITINERAIRE ETABLI
- LIBERATION
Les aiguillages
peuvent être positionnés au lancement d'UTS
Pour positionner un ou plusieurs aiguillages en position '1' au
lancement d'UTS, il faut ajouter une directive 'position_depart:'
dans la partie '#aig'.
Les aiguillages peuvent être ainsi positionnés par défaut
sur la voie principale.
Si dans les paramètres généraux, la directive "memorisation_aig
= on" est présente, la directive "position_depart:"
sera ignorée et les aiguillages seront remis à leurs positions
lors de la dernière mise sous tension.
Exemple pour positionner les aiguillages n° 1, 5 et 14 à '1' :
#aig
[
@default_tic:préparation0, go0, libération0
,préparation1, go1, libération1
default_tic:0,0,1,0,0,1
position_depart:a1.1 a5.1 a14.1
repos:out0=0 out1=0 out2=0 out4=0 out5=0
out6=0
aig0: prep0: out6=0
out0=1 out1=0 out4=1 out5=1 out2=0
go0: out6=1
prep1: out6=0 out0=1 out1=0 out4=1 out5=1
out2=1
go1: out6=1
Les cantons
Les
cantons (Menu : Débug > Cantons) ont maintenant une
colonne supplémentaire libellée 'Vitesse réelle', qui correspond à
la tension envoyée sur les rails.
Cette tension prend en compte le profil du train (Vminimum,
Vmaximum).
La colonne
'Vitesse' correspond à la vitesse désirée. Si elle est de 10,
n'importe quel train doit avancer lentement.
Si une loco demande la moitié de la tension d'alimentation pour
commencer à avancer, il faudra que le paramètre 'Vmin' de son
profil soit d'environ 20 à 30.
Les actions horodatées
Il est
possible de programmer des actions comme des déplacements,
éclairage, animation à heure fixe ou par période.
La configuration de la section '#horo' est décrite dans la
documentation d'Ulysse et dans le fichier 'config.txt'.
Il est possible de définir une suite d'actions spécifiques pour
déplacer un train de nettoyage.
Il est possible de modifier la configuration de l'horloge. Afficher
la page de réglage en passant par le menu : 'Tables > Horloge -
Réglage'.
On peut changer le jour, l'heure et la vitesse de défilement de
l'heure UTS.
Si l'on clique sur le bouton [INITIALISATION], on remet l'horloge à
l'heure de départ prévue dans config.txt.
Si l'on clique sur le bouton [A l'ARRÊT]/[EN MARCHE], on change
l'état de marche de l'horloge.
Si l'on clique sur le bouton [NETTOYAGE OFF]/[NETTOYAGE ON], on
change l'état de marche de l'horloge et l'on active les actions de
type "j:n" prévues pour le nettoyage du réseau.
Si l'on clique sur le bouton [PAS BLOQUEE]/[BLOQUEE], on affiche la
page des actions en cours.
On affiche en dessous les 5 lignes de commentaires décrits dans la
section #horo.
Pour avoir la liste des actions déclenchées par l'horloge, afficher
la page des actions en cours en passant par le menu : 'Tables >
Horloge - Liste'.
Si l'on clique sur le bouton [PAS BLOQUEE]/[BLOQUEE], on affiche la page de
modification de l'horloge.
Nouveautés en
V7.i :
Amélioration du programme UTS, et passage de
200 à 250 actions d'horodatage.
Nouveautés en V7.d :
La colonne "Départ" est devenue interactive. Si l'on clique dessus,
on position l'horloge à l'heure-1mn, pour démarrer sur ce premier
événement.
La codification "Jour de de semaine"
ou "Jour de week-end" a changé. Au
lieu de 'e' ou 'w',
il faut maintenant saisir 's' ou 'w'.
On n'affiche plus les pages vides, quand l'on fait un clic-droit. On
revient automatiquement à la première page.
Quand l'heure est dépassée, elle est affichée en rouge dans la colonne départ.
On peut lancer 1 à 6 actions par ligne. Comme les actions sont
souvent des déplacements, pour faciliter la lecture,
j'ai remplacé le nom de la variable "depl_srat_run_85.1" par
le nom du déplacement = "Garage_3_ vers_ gare_principale".
Remarques :
Si l'on clique sur une case de la colonne 'Inh', on inhibe l'action
passée, présente ou future.
Si l'action bloquait l'horloge, et que cette action est un
déplacement, l'inhibition de l'action supprime aussi le déplacement
en cours.
Une ligne verte ('At-Bl'=Attente
Blocage) signifie qu'une action en cours pourra éventuellement
bloquer l'horloge à l'heure prévue (Colonne Blocage).
Une ligne orange signifie qu'une
action en cours bloque l'horloge.
Une action sans condition de blocage restera de couleur blanche,
même quand l'action est déclenchée.
Une action inhibée passe en bleu ciel.
Parcours de nettoyage des voies.
Il est parfois utile de faire passer un train de nettoyage sur
toutes les voies.
Dans config.txt, on decrit en début ou fin de table, les actions de
type "hd j:n" qui décrit les déplacements pour passer sur tout
le réseau :
#horo
[
hd 08:00 hb +0:10
vf:!depl_start_run_3 s:depl_start_run_3
@ c0 c0 haut +
hd 08:07 hb +0:15
vf:!depl_start_run_50 s:depl_start_run_50
@ c9 c9 haut -
hd 08:20 hb +0:08
vf:!depl_start_run_59 s:depl_start_run_59
@ c9 c14 +
hd 08:21 hb +0:08
vf:!depl_start_run_10 s:depl_start_run_10
@ c0 c15 -
hd j:2:08:27 hb +0:08
vf:!depl_start_run_85 s:depl_start_run_85 @
c14 c9 +
hd j:w:08:28
hb +0:08 vf:!depl_start_run_95
s:depl_start_run_95 @ c15 c0 -
hd j:n:08:00 hb +0:01
vf:!depl_start_run_11
s:depl_start_run_11 @ Nettoyage des voies -
Départ en C0
hd j:n:08:02 hb +0:01
vf:!depl_start_run_104 s:depl_start_run_104
@ Nettoyage des voies - G0 C8
hd j:n:08:04 hb +0:01
vf:!depl_start_run_37
s:depl_start_run_37 @ Nettoyage des voies
- C8 C10
hd j:n:08:08 hb +0:01
vf:!depl_start_run_69
s:depl_start_run_69 @ Nettoyage des voies -
C10 G4
hd j:n:08:10 hb +0:01
vf:!depl_start_run_122 s:depl_start_run_122
@ Nettoyage des voies - G4 C0
Utilisation et limitation pour le parcours de nettoyage :
Ne pas utiliser de déplacement qui enchaine à sa fin un
autre déplacement (Se terminant par "sfin:depl_start_run_xx").
Ne pas utiliser d'action avec des paramètres "hi" ou
"hf" (horaire intervalle ou de fin).
Il est pratique de définir les déplacements de
nettoyage espacés de 2 mn et de définir le blocage à 1 mn (hb
+0:01).
Ajouter une ligne commentaire_5 : Train de nettoyage au
départ sur le canton n° 0
On place un train de nettoyage sur le canton de départ, en retirant
tous les autres trains du réseau.
On clic sur [NETTOYAGE OFF] pour activer les actions de nettoyage.
Le train parcours alors toutes les voies.
On clic sur [NETTOYAGE ON] pour clore les actions de nettoyage.
Pour utiliser ensuite les actions habituelles, on clic sur
[INITIALISATION] puis sur [A L'ARRET] pour lancer les actions autres
que celles en "hd j:n".
En V7.d, nouvelle syntaxe pour les
actions horodatées, jour de la semaine = 's',
jour du week-end = 'w'.
Le
lancement d'actions externes comme les 'Sons'
On vérifie la syntaxe des lignes dans la section '#exe' et l'on
affiche un message en cas d'erreur de syntaxe.
On peut configurer au maximum 100 actions, de 200 caractères
chacune.
En V3.7e, il est possible d'ajouter des paramètres à une commande,
et ainsi de lancer VLC
(logiciel gratuit) en arrière plan.
Il faudra placer les paramètres en fin de ligne entre caractères ".
On peut ainsi lancer VLC, pour qu'il ne s'affiche que sur la barre
de tâche, avec le paramètre : "--qt-start-minimized"
VLC se fermera automatiquement à la fin de la piste
sonore, avec le paramètre : "--play-and-exit"
ou combiner les deux paramètres : "--play-and-exit"
"--qt-start-minimized"
Le chemin d'accès de "vlc.exe" varie selon les versions de Windows,
il faut alors adapter la chaîne de caractères pour lancer "vlc.exe".
Il faut rechercher l'emplacement de "vlc.exe" sur la partition C:.
Cette configuration permet aussi, de jouer plusieurs sons à la fois.
La configuration lue est affichable et activable par le menu :
'Tables > ExeXX'.
La syntaxe dans 'config;txt' est la suivante :
#exe
[
exe01: "Départ_TER_01.mp3"
exe02:
"E:\projet\dev_c++\projet\train5\sons\arreter_montagne.wav"
exe10: "C:\Program Files\VideoLAN\VLC\vlc.exe C:\Users\mon_compte\Documents\UTS2000\Sons\Départ_TER_01.mp3"
exe11: "C:\Program Files\VideoLAN\VLC\vlc.exe C:\Users\mon_compte\Documents\UTS2000\Sons\Départ_TER_02.mp3"
exe12: "C:\Program Files\VideoLAN\VLC\vlc.exe D:\Users\mon_compte\Documents\UTS2000\Sons\Départ_TER_04.mp3"
"--qt-start-minimized"
exe13: "C:\Program Files\VideoLAN\VLC\vlc.exe D:\Users\mon_compte\Documents\UTS2000\Sons\Départ_TER_05.mp3"
"--play-and-exit" "--qt-start-minimized"
exe14: "C:\APPLI\VLC_PLAYER.020105\vlc.exe"
D:\UTS2000\Sons\Départ_TER_05.mp3" "--play-and-exit"
"--qt-start-minimized"
]
La ligne doit commencer par 'exeXX: ', de 'exe00: '
à 'exe99:
'.
L'espace entre exeXX:
et le texte de l'action est obligatoire.
Le dernier caractère doit être un ". Éviter les espaces en fin de
ligne.
Le texte de l'action doit
être entouré de caractère ", peut comporter des caractères
accentués et des espaces, mais pas de caractères "
La chaîne "C:\Program Files\VideoLAN\VLC\vlc.exe"
est à adapter à l'installation locale de "vlc.exe".
La chaîne "D:\Users\mon_compte\Documents..."
dépend de l'installation locale d'UTS et du nom du compte
utilisateur courant. D'autres configurations sont possibles.
On peut lancer un message sonore, en choisissant des fichiers de
type '.mp3', '.wav', '.wma' ou 'ogg'.
Un seul son peut être joué à la fois par le programme externe, à
moins d'affecter les '.mp3' à Winamp, les '.wma' au player de
Windows et les 'wav' à VLC.
Dans ce cas on peut jouer simultanément des sons, ayant une
extension différentes.
Dans les déplacements, on peut ajouter une
temporisation au départ du train, pour qu'une annonce sonore soir
lue entièrement avant que la loco ne démarre.
Palette
de couleur
Voici la palette de couleur par défaut prévue pour UTS, avec un
affichage en relief.
Si l'on a choisi le mode relief, certaines couleurs ne sont pas
prises en compte, notamment pour les blocs d'écran de tco.
D'autre couleurs sont possibles, mais l'effet de relief ne sera peut
être pas aussi bien. Cela concerne notamment la couleur grise 'OFF'
des voyants et des positions d'aiguillages.
La palette sur le coté droit n'est pas désignable, mais sert de
repère dans le défilement des couleurs. [T] = Couleur du
train, [C] = Couleur du canton, [O] = Oui] et [N] = Non,
Pour changer les couleurs, faire un clic-droit ou un clic-gauche sur
les rectangles, pour incrémenter ou décrémenter la couleur.
La numérotation des variables
|
Numéro
début |
Numéro
fin |
carte 0 |
carte 1 |
carte 2 |
carte 3 |
Nombre
(ou xx)
|
Raz auto
|
Valeur
|
|
det_ |
|
|
00xx |
01xx |
02xx |
03xx |
4x16 |
|
0-1 |
Détections sur n° de cantons
(ex det_0, det_15, det_315) |
in_ |
|
|
04xx |
05xx |
06xx |
07xx |
4x80 |
|
0-1 |
Entrées matricées
et directes |
can_ |
|
|
08xx |
09xx |
10xx |
11xx |
4x5 |
|
0-255 |
Valeurs des entrées analogiques |
out_ |
|
|
12xx |
13xx |
14xx |
15xx |
4x80 |
|
0-1 |
Sorties |
led_ |
|
|
16xx |
17xx |
18xx |
19xx |
4x48 |
|
0-1 |
Allumage leds |
led_cli_ |
|
|
20xx |
21xx |
22xx |
23xx |
4x48 |
|
0-1 |
Mode clignotement |
led_phase_ |
|
|
24xx |
25xx |
26xx |
27xx |
4x48 |
|
0-1 |
Inversion de la phase du clignotement |
srv_pos_ |
|
|
280x |
290x |
300x |
310x |
4x5 |
|
0-1023 |
Position réel du servomoteur |
bal_cant_p_
|
|
|
32xx
|
33xx
|
34xx
|
35xx
|
4x16
|
|
0-1
|
Bloc automatique - Canton bloqué dans
le sens Plus
|
bal_cant_m_
|
|
|
36xx
|
37xx
|
38xx
|
39xx
|
4x16
|
|
0-1
|
Bloc automatique - Canton
bloqué dans le sens Moins
|
det2_
|
|
|
4000+xx
|
4100+xx
|
4200+xx
|
4300+xx
|
4x16
|
|
0-1
|
Canton occupé, détection
avec temporisation
|
det2p_ |
|
|
4020+xx |
4120+xx |
4220+xx |
4320+xx |
4x16 |
|
0-1 |
Canton occupé, détection avec
temporisation et Vitesse > 3
|
det2m_ |
|
|
4040+xx |
4140+xx |
4240+xx |
4340+xx |
4x16 |
|
0-1 |
Canton occupé, détection avec
temporisation et Vitesse < -3
|
|
|
|
44xx
|
45xx
|
46xx
|
47xx
|
|
|
|
Libre |
|
4800
|
4999
|
|
|
|
|
|
|
|
Libre
|
aig_cmd |
5000 |
5063 |
|
|
|
|
64 |
|
0-1 |
Commandes des aiguillages |
pos0_aig_ |
5100 |
5163 |
|
|
|
|
64 |
|
0-1 |
Aiguillages en position 0 et
verrouillés (pas en mouvement) |
pos1_aig_ |
5200 |
5263 |
|
|
|
|
64 |
|
0-1 |
Aiguillages en position 1 et
verrouillés (pas en mouvement) |
var_ |
5400 |
5999 |
|
|
|
|
600 |
|
0-1023 |
Libre pour l’utilisateur |
Iti_start_ |
6000 |
6049 |
|
|
|
|
50 |
Oui |
0-1
Z |
Activation d’un itinéraire |
Iti_stop_ |
6100 |
6149 |
|
|
|
|
50 |
Oui |
0-1
Z |
Désactivation d’un itinéraire |
Iti_wait_ |
6200 |
6249 |
|
|
|
|
50 |
|
0-1 |
Itinéraire en attente |
Iti_ok |
6300 |
6349 |
|
|
|
|
50 |
|
0-1 |
Itinéraire établit |
iti_step_
|
6350 |
6499 |
|
|
|
|
50
|
|
|
Pas séquence
d'itinéraire. (pas encore implanté)
|
depl_start_run_ |
6500 |
6699 |
|
|
|
|
200 |
Oui |
0-1 Z2 |
Lance un déplacement |
depl_stop_ |
6700 |
6899 |
|
|
|
|
200 |
Oui |
0-1
Z |
Arrêt prématuré d’un déplacement |
garage_lock_cmd_ |
6900 |
6931 |
|
|
|
|
32 |
|
0-1 |
Commandes de verrouillage des garages |
garage_lock_status_ |
6950 |
6981 |
|
|
|
|
32 |
|
0-1 |
Etats de verrouillage des garages |
vib_on |
7000 |
|
|
|
|
|
1
|
|
0-1 |
Activation de la fonction vibreur |
vib_state |
7002 |
|
|
|
|
|
1
|
|
0-1 |
Etat du vibreur |
screen_mode
|
7003 |
|
|
|
|
|
1
|
|
1-40 |
Numéro
d'écran affiché
|
arret_urg_on |
7004 |
|
|
|
|
|
1 |
|
0-1 |
Activation de l'arrêt d'urgence
|
arret_urg_state |
7005 |
|
|
|
|
|
1 |
|
0-1 |
Etat de l'arrêt d'urgence
|
|
7050 |
7999 |
|
|
|
|
|
|
|
Libre |
srv_cmd_ |
|
|
800x |
810x |
820x |
830x |
4x5 |
|
0-1023 |
Consigne du servomoteur |
srv_cmd_ |
|
|
801x |
811x |
821x |
831x |
4x5 |
|
0-1023 |
Consigne de vitesse du servo |
exe_ |
8400 |
8499 |
|
|
|
|
100 |
Oui |
0-1
Z |
Lance un programme (surtout utile pour
des sons) |
pulse_cmd_ |
8500 |
8531 |
|
|
|
|
32 |
Oui |
0-1
Z |
Déclenchement d’une impulsion |
pb_capt_c_ |
|
|
86xx |
87xx |
88xx |
89xx |
4x16 |
|
0-1 |
Problème de captage sur les cantons |
pb_capt_t_ |
9000 |
9015 |
|
|
|
|
16 |
|
0-1 |
Problème de captage sur les trains |
special_var_ |
9100 |
9199 |
|
|
|
|
100 |
|
0-1023 |
Variables renseignées par UTS |
separe_
|
9400
|
9499
|
|
|
|
|
100
|
Oui
|
0-1
|
Sépare les trains en
locomotives + wagons
|
regroupe_
|
9500
|
9599
|
|
|
|
|
100
|
Oui
|
0-1
|
Regroupe les
locomotives + wagons en trains
|
Z = Automatiquement remis à zéro, après prise en compte.
Z2 = Automatiquement remis à zéro, après en fin de déplacement.
La documentation dUlysse explique l'utilisation des équations et
tables de vérité en détail. Voir aussi les explications détaillées
sur la page décrivant le fichier "Config.txt".
Les variables det2_xxx = 1, si le canton xxx est
occupé avec une petite temporisation, pour la conduite manuelle ou
les déplacements automatiques.
Il existe aussi les variables det2p_xxx et det2m_xxx
qui sont à 1, si le train a une vitesse positive "(p)lus" ou
négative "(m)oins".
Pour palier au manque de numéros libres, la numérotation de ces
variables est la suivante : Exemples pour la carte n ° 0 :
det2_0 = 4000, det2_1 = 4001,
det2_2 = 4002,,, det2_15 = 4015
det2p_0 = 4020, det2p_1 = 4021, det2p_2 =
4022,,, det2p_15 = 4035
det2m_0 = 4040, det2m_1 =
4041, det2m_2 = 4042,,, det2m_15 = 4055
Pour connaitre l'état de l'horloge, allez voir les
variables special_var_xxx.
special_var_90
= horloge en marche=1
special_var_91 = horloge bloquée=1
La variable screen_mode renvoie la valeur suivante, en
fonction de l'écran affiché :
Aiguillage_1 |
23 |
|
Exécutable_3 |
48 |
|
SERVO |
31 |
Aiguillage_2 |
24 |
|
GARAGE |
22 |
|
TCO_0 |
1 |
AIGAUTO_1 |
36 |
|
HALTE_1 |
41 |
|
TCO_1 |
2 |
AIGAUTO_2 |
37 |
|
HALTE_2 |
42 |
|
TCO_2 |
3 |
AIGAUTO_3 |
38 |
|
HORO_1 |
50 |
|
TCO_3 |
4 |
BALAUTO_1 |
43 |
|
HORO_2 |
51 |
|
TCO_4 |
5 |
BALAUTO_2 |
44 |
|
HORO_3 |
52 |
|
TCO_5 |
6 |
BALAUTO_3 |
45 |
|
HORO_4 |
53 |
|
TCO_6 |
7 |
Canton_1 |
29 |
|
HORO_5 |
54 |
|
TCO_7 |
8 |
Canton_2 |
30 |
|
HORO_6 |
55 |
|
TDV_1 |
32 |
Déplacement_1 |
11 |
|
HORO_7 |
56 |
|
TDV_2 |
49 |
Déplacement_2 |
12 |
|
HORO_Réglage |
18 |
|
TRAIN_1 |
9 |
Déplacement_3 |
13 |
|
Itinéraire_1 |
20 |
|
TRAIN_2 |
59 |
Déplacement_4 |
14 |
|
Itinéraire_2 |
21 |
|
Variable_1 |
26 |
Déplacement_5 |
15 |
|
POSLOC_1 |
10 |
|
Variable_2 |
27 |
Déplacement_6 |
16 |
|
SELECT_1 |
33 |
|
Variable_3 |
28 |
Déplacement_7 |
17 |
|
SELECT_2 |
34 |
|
Vibreur |
19 |
Exécutable_1 |
46 |
|
SELECT_3 |
35 |
|
VITMAX_1 |
39 |
Exécutable_2 |
47 |
|
SERIAL_Débug |
25 |
|
VITMAX_2 |
40 |
HORO_8 |
57 |
|
POSLOC_2 |
59 |
|
SEPARE1 |
60 |
Remarque : Dans la section '#tdv', regrouper les équations 'equ:' au
début et les tables 'tdv' en fin de description (C'est plus sûr).
La connexion RS232
vers la carte UTS
Si l'on coupe la liaison série pendant moins de 10 secondes,
elle se rétablie toute seule à la reconnexion. Contrairement à la la
liaison RS232, la liaison USB ne doit pas être coupée.
Un parasite sur la liaison provoquant la perte d'un octet ou
l'arrivée d'un octet supplémentaire peut provoquer un défaut
passager, éliminé à la réception de la trame suivante.
Si la liaison est coupée plus de 10 secondes, une fenêtre
d'avertissement s'affiche. Si le clic sur 'Oui' ne règle pas le
problème, il faut couper l'alimentation de la carte à PIC
pendant 10 secondes pour
être sur que la carte à PIC se réinitialise à remise sous tension.
Vérifier que la led témoin clignote, puis relancer la connexion en
cliquant sur 'Oui'.
2 - Présentation de la
partie programmation en C++
Les sources
du programmes sont fournies, mais aussi l'exécutable pour Windows.
Cette page
présente le programme du PC sous Projet Visual C++. Windows Visual
C++ Express est une version gratuite de Microsoft.
Le programme
disponible sur ce site est compilé sous C++ 2013 Express et n'est
pas compatible avec Win98 ni avec W2000.
Framework.net
doit
être présent pour installer, pensez y avant d'essayer d'installer
le logiciel.
Source de
téléchargement : (3 ans de prison et 150.000 euro d'amende, non je
plaisante ça c'est uniquement pour un fichier .mp3)
http://www.commentcamarche.net/telecharger/telecharger-34056350-visual-c-express
http://microsoft-visual-c.softonic.fr/
http://www.clubic.com/telecharger-fiche17875-visual-c-express-edition.html
Une fois
Visual C++ installé, il faut recopier les fichiers du projet UTS
dans le répertoire.
C:\Documents
and Settings\.....\Mes documents\Visual
Studio\Projects\Train_UTS_V3.7
Pour ouvrir
ce projet UTS, il faut lancer "Train_UTS_V3.7.sln".
Liste des fichiers pour UTS, utilisés par
Visual C++:
aff_bloc.cpp
= Affiche d'un bloc dans un TCO
aig.cpp =
Gère les aiguillages
aigauto.h + aigauto.cpp
= Gère la commande automatique des aiguillages devant les trains
en mouvement.
balauto.h + balauto.cpp
= Gère le bloc automatique logiciel.
bmp.cpp
= Gère les variables et sous-programmes pour les couleurs
canton.h + canton.cpp
= Gère les occupations, réservations, libérations des cantons
conf_gen.cpp
= Lecture des variables générales dans le fichier de configuration
debug_RS232.cpp
=
Affiche l'écran de debug avec la carte
deplacement.h
+ deplacement.cpp = Gère les déplacements programmés des
trains
exe.h + exe.cpp
= Lecture des variables pour lancer des exécutables dans le
fichier de configuration et gestion de ces exécutables
fond.cpp =
Affichage d'un fond de plan - (fonction pas implantée)
garage.h + garage.cpp
= Lecture des variables pour les garages dans le fichier de
configuration et gestion de ces garages
horo.cpp =
Lecture des variables pour la gestion de l'heure dans le fichier
de configuration et gestion de l'heure
ir.cpp =
Gestion d'une télécommande infrarouge
iti.h + iti.cpp
= Lecture des variables pour la gestion des itinéraires dans
le fichier de configuration et gestion de ces itinéraires
pio.cpp =
Conversion des noms de variables UTS en n° de variables
posloc.cpp =
Positions théorique des locomotives au lancement de UTS
selectif.h + selectif.cpp
= Lecture des variables pour la conduite en mode sélectif dans le
fichier de configuration et gestion de ce mode
serial_port.h
+ serial_port.cpp = Gestion du port série et des trames
échangées
servo.cpp
= Gestion des servo moteur
ss_pgr.cpp =
Divers Sous-Programmes
ss_pgr_aff.cpp
=
Divers Sous-Programmes pour la partie graphique
tdv.h + tdv.cpp
= Lecture des variables pour la table de vérité dans le fichier de
configuration et gestion de cette table
train.h + train.cpp
= Lecture des variables pour les trains dans le fichier de
configuration et gestion de ces trains
Train_UTS.h
+ Train_UTS.cpp = Programme principal
var.cpp =
Gère les variables utilisateur
vib.cpp =
Lecture des variables pour le vibreur dans le fichier de
configuration et gestion de ce vibreur
Rsrc.rc =
Fichier des menus d'UTS, à modifier avec Wordpad.
Train_UTS.ico = Icone du programme
Train_UTS_V3.7.ncb
= Fichier Visual C++
Train_UTS_V3.7.sln
= Fichier Visual C++ (C'est le fichier utilisé pour ouvrir
le projet)
Train_UTS_V3.7.vcproj
= Fichier Visual C++
config.txt =
Fichier UTS à placer ici, pour lancer le programme en mode
débuggage
config_tco.txt
=
Fichier UTS à placer ici, pour lancer le programme en mode
débuggage
debug_train.txt = Fichier généré quand UTS fonctionne.
log.txt =
Fichier généré quand UTS fonctionne.
Dans le sous répertoire \Debug :
Debug\config.txt
= Fichier UTS à placer ici, pour lancer le programme
Debug\config_tco.txt
= Fichier UTS à placer ici, pour lancer le programme
Debug\Train_UTS_V3.7.exe
= Exécutable généré après la compilation
Paramétrage et compilation du programme (Au
08/09/2024)
Compilation
sous Windows Visual C++ Express 2013 (version gratuite)
Attention pour être aussi compatible avec Windows XP dans
Visual Studio Express 2013,
menu : PROJET > Propriétés de Train_UTS_V3.7 > Propriétés de
Configuration > Générale > Ensemble d'outils de plateforme =
"Visual Studio 2013 - Windows XP (v120_xp)".
Paramétrage
de Visual C++ Express :
-
Application Console = Application sous interface DOS
-
Application Windows = APIWIN32 avec interface graphique
Le programme
fonctionne en mode Windows APIWIN32 Graphique
Pas de prise
en charge de MFC (Microsoft class Library) ni ACTL
Configuration
spéciale
et obligatoire pour accepter le code 'C' d'UTS :
Menu : Projet > Propriétés
Propriétés de configuration > Général
Paramètres par défaut du projet > Jeu de caractères = Non
défini
Par défaut,
Visual C++ 2013 linke dynamiquement l'exécutable contre la C
Runtime Library
(La
bibliothèque C de Visual Studio). Il en résulte que le programme
obtenu a besoins des DLL de Visual Studio pour fonctionner.
Vous pouvez
configurer votre projet pour que votre exécutable soit linké
statiquement contre la C Runtime Library :
(Project
properties
-> Configuration -> C/C++ -> Code generation ->
Runtime Library -> sélectionner "Multithread (/MT)" au lien de
"Multithread DLL (/MD)").
3 - Utilitaires
Pour
visualiser les trames RS323, il faut utiliser le programme Portmon.exe (gratuit) (XP et W7)
Copyright ©
1999 Mark Russinovich - Adresse du site : http://technet.microsoft.com
Cela
permet de débugger les échanges entre la carte UTS et le PC.