=====================================================================================================================
=  Fichier 'config.txt' = Fichier de configuration chargé par UTS lors de son démarrage.
=====================================================================================================================
=  Description V3.6a : Pour le réseau 'N' de JEAN-LUC au 12/10/2017
=====================================================================================================================

 Syntax:
 #<nom_section>
 [
     instructions spécifiques à la section (250 caractères maximum par ligne / 70 blocs maximum par ligne)
     @ commentaires dans une section
 ]

 Tout ce qui est hors section ou dans une section non reconnue est ignoré, mais éviter d'écrire
 dans les commentaires, un nom de section valide (avec un #).

 Une aide sous la section détaille généralement les instructions spécifiques à la section.
 L'aide reprend les notations informatiques :
   <var> : à remplacer par un nom de variable
   [ ]   : option facultative
   0|1   : à remplacer par 0 ou 1
   0-255 : à remplacer par 0 à 255

=====================================================================================================================
 
Toutes les sections sont chargées par UTS au démarrage.
En cas de rechargement en cours d'utilisation, seule les sections 'Y' seront rechargées.

Les sections UTS :
 - general  : : configuration d'ordre général des cartes UTS
 - aig      : : configuration (connexions et commandes) des aiguillages
 - selectif : : définition du suivit des trains sur les cantons (trains en manuel)
 - train    : : définition des trains (nom, vitesses, commande ...) + position au démarrage d'UTS
 - garage   : : configuration des voies de garage
 - horo     :Y: paramétrage de l'horloge + horodateur pour déclencher des équations (exemples :  les déplacements automatiques)
 - iti      :Y: itinéraires (commande une suite d'aiguillages)
 - depl     :Y: définition des déplacements automatique
 - tdv      :Y: opérations logiques (table de vérité, équations, impulsions)
 - exe      :Y: fichiers à exécuter
 - vib      :Y: configuration du vibreur en cas de mauvais contacts
 - aigauto  :N: active les prochains aiguillages rencontrés par un train
 - balauto  :N: active le système de bloc automatique logiciel

=====================================================================================================================
= general: Section chargée uniquement au démarrage d'UTS.
=          Configuration d'ordre général.
=====================================================================================================================

#general
[
    relief on
    resolution_ecran 1290 1050	
    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
]


---- aide ----

    relief <on|off> 
      on  = Effet de relief sur les blocs du TCO.  (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> 
      Au démarrage du programme, dimension en pixel de la fenêtre Windows pour UTS. (Par défaut = 800 700)
      Taille maximum en pratique = 32*25 cases = 1290 x 1050, minimum utilisable = 800 x 700 

    show_cards_found <on|off> 
      off = Au démarrage du programme, affiche une fenêtre avec les numéros des cartes UTS détectées (Par défaut = off) 
      on  = Démarre le programme directement, n'affiche pas de fenêtre si l'on trouve des cartes UTS.

    leds_card_<0-4> <on|off>
      on  = Active    les leds (Les leds led0  .. 47 sont activées) (Par défaut = on)
      off = Désactive les leds (Les sorties out24 .. 39 sont utilisables en tant que sorties)

    ir_aig_digit <1|2>
      Nombre de chiffre nécessaire pour commander les aiguillages = 1 ou 2. (Par défaut = 2)

    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

    train_aigauto <on|off> 
      on  = Au démarrage du programme, utilise la configuration de la section "aigauto", aiguillages automatiques (Par défaut = on) 
      off = Au démarrage du programme, n'utilise pas la configuration "aigauto".

---- exemples ----
    leds_card_0 on 
    show_cards_found off 
    inv_canton_12 on
    inv_pot_3 on 
    ir_aig_digit 2
    resolution_ecran 1024 768
    relief 1


=================================================================================================
= aig: Section chargée uniquement au démarrage d'UTS.
=      Configuration (connexions et commandes) des aiguillages. 
=      64 aiguillages maximum. 
==================================================================================================
@ La commande des aiguillages a1 et a10 est inversée sur mon réseau au niveau du relais n°2.
@   J'ai câblé ces aiguillages normalement, mais sur le TCO, ils sont représentés différemment.
@   J'ai dessiné un aiguillage droit au lieu d'un gauche pour une question esthétique. 
@   Il faut donc inverser les commandes depuis le TCO.
@ La directive "default_tic:0,0,1,0,0,1" permet de commander rapidement les aiguillages, mais
@   il faut retarder l'action du relais n°6 avec une résistance et un condensateur.
@ La directive "position_depart" permet de placer au démarrage les aiguillages en position usuelle.

#aig
[
    default_tic:0,0,2,0,0,2
    repos:out0=0 out1=0 out2=0 out4=0 out5=0 out6=0
    position_depart:a1.1 a2.1 a5.1 a14.1

    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

    aig1: prep0:    out6=0 out0=1 out1=0 out4=1 out5=0 out2=1
          go0:      out6=1
          prep1:    out6=0 out0=1 out1=0 out4=1 out5=0 out2=0
          go1:      out6=1

    aig2: prep0:    out6=0 out0=1 out1=0 out4=0 out5=1 out2=0
          go0:      out6=1
          prep1:    out6=0 out0=1 out1=0 out4=0 out5=1 out2=1
          go1:      out6=1

    aig3: prep0:    out6=0 out0=1 out1=0 out4=0 out5=0 out2=0
          go0:      out6=1
          prep1:    out6=0 out0=1 out1=0 out4=0 out5=0 out2=1
          go1:      out6=1

    aig4: prep0:    out6=0 out0=0 out1=0 out4=1 out5=1 out2=0
          go0:      out6=1
          prep1:    out6=0 out0=0 out1=0 out4=1 out5=1 out2=1
          go1:      out6=1

    aig5: prep0:    out6=0 out0=0 out1=0 out4=1 out5=0 out2=0
          go0:      out6=1
          prep1:    out6=0 out0=0 out1=0 out4=1 out5=0 out2=1
          go1:      out6=1

    aig6: prep0:    out6=0 out0=0 out1=0 out4=0 out5=1 out2=0
          go0:      out6=1
          prep1:    out6=0 out0=0 out1=0 out4=0 out5=1 out2=1
          go1:      out6=1

    aig7: prep0:    out6=0 out0=0 out1=0 out4=0 out5=0 out2=0
          go0:      out6=1
          prep1:    out6=0 out0=0 out1=0 out4=0 out5=0 out2=1
          go1:      out6=1

    aig8: prep0:    out6=0 out0=1 out1=1 out4=1 out5=1 out2=0
          go0:      out6=1
          prep1:    out6=0 out0=1 out1=1 out4=1 out5=1 out2=1
          go1:      out6=1

    aig9: prep0:    out6=0 out0=1 out1=1 out4=1 out5=0 out2=0
          go0:      out6=1
          prep1:    out6=0 out0=1 out1=1 out4=1 out5=0 out2=1
          go1:      out6=1

    aig10: prep0:    out6=0 out0=1 out1=1 out4=0 out5=1 out2=1
           go0:      out6=1
           prep1:    out6=0 out0=1 out1=1 out4=0 out5=1 out2=0
           go1:      out6=1

    aig11: prep0:    out6=0 out0=1 out1=1 out4=0 out5=0 out2=0
           go0:      out6=1
           prep1:    out6=0 out0=1 out1=1 out4=0 out5=0 out2=1
           go1:      out6=1

    aig12: prep0:    out6=0 out0=0 out1=1 out4=1 out5=1 out2=0
           go0:      out6=1
           prep1:    out6=0 out0=0 out1=1 out4=1 out5=1 out2=1
           go1:      out6=1

    aig13: prep0:    out6=0 out0=0 out1=1 out4=1 out5=0 out2=0
           go0:      out6=1
           prep1:    out6=0 out0=0 out1=1 out4=1 out5=0 out2=1
           go1:      out6=1

    aig14: prep0:    out6=0 out0=0 out1=1 out4=0 out5=1 out2=0
           go0:      out6=1
           prep1:    out6=0 out0=0 out1=1 out4=0 out5=1 out2=1
           go1:      out6=1
]

---- aide ----
    default_tic:préparation0, go0, libération0 ,préparation1, go1, libération1
    default_tic:<0-64>,<0-64>,<0-64>,<0-64>,<0-64>,<0-64>
      préparation0 = temps en tic d'attente après la directive prep0
      go0          =                   //                      go0
      libération0  =                   //                      lib0
      idem pour préparation1, go1, libération1
      Configuration préconisée = default_tic:0,0,1,0,0,1

    repos:out0=0 out1=0 out2=0 out4=0 out5=0 out6=0
      UTS envoi une commande pour positionner les relais après une commande d'aiguillage.
      Permet de mettre les relais hors tension, après une commande d'aiguillage.
      repos:out<n°_relais>=<0|1> position_des_relais.   

    position_depart:a<0-63>.<0|1> a<0-63>.<0|1> a<0-63>.<0|1> a<0-63>.<0|1> a<0-63>.<0|1>
      Au démarrage d'UTS, par défaut tous les aiguillages sont positionnés à '0'.
      Cette directive permet de positionner certains aiguillages à '1'.
      Permet de placer les aiguillages en position usuelle.

---- exemples ----
    default_tic:0,0,1,0,0,1
    repos:out0=0 out1=0 out2=0 out4=0 out5=0 out6=0
    position_depart:a1.1 a5.1 a14.1

    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



=====================================================================================================================
= iti:  Itinéraires pour configurer une suite d'aiguillages automatiquement.
=       50 itinéraires maximum. 10 aiguillages maximum par déplacement.
=       Nom du déplacement sur 40 caractères maximum.
=       Déclaration des variables de séparation et regroupement automatique des locos et wagons.
=====================================================================================================================

#iti
[
	iti0:  direct a3.0  a0.0                                          name: voie_0
	iti1:  direct a3.1  a2.1  a1.1  a0.1                              name: voie_9
	iti2:  onoff  a4.1  a6.0  a7.0  a8.1  a9.1                        name: tour_h

	iti3:  onoff  a4.0  a5.1  a13.0 a14.1 a9.0                        name: tour_b1
	iti4:  onoff  a4.0  a5.1  a13.1 a8.0  a9.1                        name: tour_b2
	iti5:  onoff  a2.1  a0.1                                          name: tour

	iti6:  onoff  a0.0 a1.0 a2.0  a3.0 a4.0 a5.0 a6.0 a7.0 a8.0 a9.0  name:aig1_0
	iti7:  onoff  a10.0 a11.0 a12.0 a13.0 a14.0                       name:aig2_0
	iti9:  onoff  a0.1 a1.1 a2.1  a3.1 a4.1 a5.1 a6.1 a7.1 a8.1 a9.1  name:aig1_1

	iti10: onoff  a10.1 a11.1 a12.1 a13.1 a14.1                       name:aig2_1

	separe5:    c0    c1
	separe1:    c1    c2
	separe2:    c4    c3
	separe3:    c5    g6
	separe4:    g8    c9

	regroupe0:  c10  c11
	regroupe1:  c11  c12
	regroupe2:  c13  g11
	regroupe3:  c15  g14
	regroupe14:  g15  c10

]

---- aide ----
 iti<0-49>: <onoff|direct> a<0-63>.<0|1> ... name: <nom_sur_40_caractères_maximum>

    direct: Cette directive demande aux aiguillages de se mettre dans la position requise
            Les aiguillages réservés ne réagiront pas.
            Cet itinéraire se désactive immédiatement après son lancement.
    onoff:  Cette directive commence par réserver les aiguillages. Lorsque tous les aiguillages sont libres,
            ils ont mis en position et réserves jusqu'à la demande d'arrêt de l'itinéraire.
            Les itinéraires 'onoff' doivent être arrêtés manuellement une fois qu'on n'en a plus besoin.
            Ils peuvent également être déclenchés manuellement puis attendre une locomotive sur un canton et désactiver 
            l’itinéraire lorsque la locomotive est sur un autre canton spécifié.
    a<0-63>.<0|1>  = Aiguillage à positionner.
    start:c<0-315> = Attend une locomotive sur le canton x pour activer l'itinéraire.
    stop:c<0-315>  = Attend une locomotive sur le canton x pour désactiver l'itinéraire.
    name:<texte>   = Nom de l'itinéraire sur 40 caractères maximum, sans espace ni caractères spéciaux.

 separe<0-99>: c<0-315> c<0-315>
    Décrit les variable de type "separe_xxx".
    Separe un train en une locomotive sur le premier canton et des wagons sur le deuxième canton.
    Fonctionne avec des cantons ou des garages.

 regroupe<0-99>: c<0-315> c<0-315>
    Décrit les variable de type "regoupe_xxx".
    Regroupe une locomotive et des wagons sur les deux cantons passés en paramètre.
    Fonctionne avec des cantons ou des garages.

---- exemple ----
    iti10: onoff  a0.0 a1.1 a3.0 a6.0                 name: A_2_M
    iti20: direct a8.1 a9.0                           name: 4_C
    iti30: onoff  a9.1 a4.0 a5.1     start c2 stop c4 name: Canton_2_vers_canton_3
    separe1:   c1   c2
    separe1:   c7   g4
    regroupe0: c0   c1
    regroupe0: g1   c1


=====================================================================================================================
= Selectif : Section chargée uniquement au démarrage d'UTS.
=            Définition du suivi des trains en manuel sur les cantons.
=            100 éléments maximum.
=            Utiliser la partie avec ou sans aiguillage en déplaçant le nom de section.  
=====================================================================================================================

@ # s e l e c t i f sans aiguillages
[
	 c0:+ c7+     c0:- c1-
	 c1:+ c0+     c1:- c9:+    c1:- c2-    c1:- c13-
	 c2:+ c1+     c2:- c3-
	 c3:+ c2+     c3:- c4-

	 c4:+ c3+     c4:- c5-
	 c5:+ c4+     c5:- c6-     c5:- c11-
	 c6:+ c5+     c6:- c7-
	 c7:+ c6+     c7:+ c14+    c7:+ c15+   c7:- c0-   c7:- c9-

	 c8:- c9-
	 c9:+ c8+     c9:+ c7+     c9:- c1-    c9:- c10-
	c10:+ c9+
	c11:+ c5+    c11:- c12-

	c12:+ c11+
	c13:+ c1+    c13:- c14-   c13:- c15-
	c14:+ c13+   c14:- c7-
	c15:+ c13+   c15:- c7-
]

@ # s e l e c t i f avec aiguillages
#selectif
[
	 c0:+ c7+ a0.0          c0:- c1- a3.0
	 c1:+ c0+ a3.0          c1:+ c9+ a2.1 a3.1       c1:- c2- a4.1          c1:- c13- a4.0 a5.1
	 c2:+ c1+ a4.1          c2:- c3-
	 c3:+ c2+               c3:- c4-

	 c4:+ c3+               c4:- c5- 
	 c5:+ c4+               c5:- c6- a6.0            c5:- c11- a6.1
	 c6:+ c5+ a6.0          c6:- c7- a8.1 a9.1
	 c7:+ c6+ a8.1 a9.1     c7:+ c14+ a9.0 a14.1     c7:+ c15+ a8.0 a9.1    c7:- c0- a0.0        c7:- c9- a0.1 a1.1

	 c8:- c9- a1.0
	 c9:+ c8+ a1.0          c9:+ c7+ a0.1 a1.1       c9:- c1- a2.1 a3.1     c9:- c10- a2.0
	 c10:+ c9+ a2.0
	 c11:+ c5+ a6.1        c11:- c12- a10.0

	 c12:+ c11+ a10.0
	 c13:+ c1+  a4.0 a5.1  c13:- c14- a13.0         c13:- c15- a13.1
	 c14:+ c13+ a13.0      c14:- c7- a9.0 a14.1
	 c15:+ c13+ a13.1      c15:- c7- a8.0 a9.1
]

---- aide ----
    c<0-315>:<+|->  c<0-315><+|->  a<0-63>.<0|1>  a<0-63>.<0|1>  a<0-63>.<0|1>
    c_destination:sens    c_source:sens  position des aiguillages (maximum = 6 aiguillages)
      Ecrire qu'une seule ligne pour n° de canton donné.
      Donne les directives pour alimenter le canton en fonction du train sur le canton précédant.
      Le canton cX sera alimenté en <+ou-> si le canton cY est alimenté en <+ou-> et l'aiguillage a.Z en position Z

---- conseil ----
    Faire une configuration avec et sans les aiguillages suivant l'utilisation.
    Seule la section #selectif est prise en compte. Pour prendre en compte l'autre, la renommer ...

---- ex ----
    c6:+ c7-             c6:- c0- a0.1             c6:- c1- a0.0 a1.0   c6:- c2- a0.0 a1.1



=====================================================================================================================
= aigauto : Section chargée uniquement au démarrage d'UTS.
=           Active les prochains aiguillages rencontrés par un train en mouvement.
=           Permet de commander automatiquement des aiguillages, quand on conduit un train en manuel.
=           N'a pas d'influence sur les trains en déplacements automatique.
=           Facilite le déplacement des trains manuels, pour éviter de rencontrer un aiguillage fermé.
=           Pour activer cette fonction, utiliser la directive "train_aigauto <on|off>" dans la section "general".
=           100 lignes au maximum, 6 cantons libérés par le train au maximum, 6 conditions au maximum, 6 aiguillages au maximum.
=====================================================================================================================

#aigauto
[
	cant:  c0:+9    plusur: c7                  condi:  det_1.0                                 actions:  a3.0
	cant:  c0:-10   plusur: c1                  condi:  det_7.0                                 actions:  a0.0
	cant:  c1:-10   plusur: c2  c13             condi:  det_9.0  a3.1                           actions:  a2.1
	cant:  c2:-10   plusur: c3                  condi:  det_1.0                                 actions:  a4.1
	cant:  c5:+10   plusur: c4                  condi:  det_11.0 a6.1  a10.1                    actions:  a11.1
	cant:  c6:+10   plusur: c5                  condi:  det_7.0                                 actions:  a9.1   a8.1
	cant:  c6:-10   plusur: c7  c11             condi:  det_5.0                                 actions:  a6.0
	cant:  c7:-10   plusur: c0  c1              condi:  det_6.0  a8.1  a9.1                     actions:  a6.0   a7.0
	cant:  c7:+10   plusur: c6  c14  c15        condi:  det_9.0  a0.1                           actions:  a1.1
	cant:  c8:+10   plusur:                     condi:  det_9.0                                 actions:  a1.0
	cant:  c9:+10   plusur: c7  c8              condi:  det_1.0  a2.1                           actions:  a3.1
	cant:  c9:-10   plusur: c1  c10             condi:  det_7.0  a1.1                           actions:  a0.1
	cant: c10:-10   plusur:                     condi:  det_9.0                                 actions:  a2.0
	cant: c11:-3    plusur:                     condi:  det_5.0  a11.1                          actions:  a6.1  a10.1
	cant: c12:-10   plusur:                     condi:  det_11.0                                actions:  a10.0
	cant: c13:-10   plusur: c14 c15             condi:  det_1.0                                 actions:  a4.0  a5.1
	cant: c14:+10   plusur: c13                 condi:  det_7.0                                 actions:  a9.0  a14.1
	cant: c14:-10   plusur: c7                  condi:  det_13.0                                actions:  a13.0
	cant: c15:+10   plusur: c13                 condi:  det_7.0                                 actions:  a9.1  a8.0
	cant: c15:-10   plusur: c7                  condi:  det_13.0                                actions:  a13.1

	cant: c1:-3     plusur:                     condi:  in_49.1 garage_lock_status_0.0          actions:  a4.0  a5.0
	cant: c11:+3    plusur:                     condi:  in_51.1 garage_lock_status_1.0          actions:  a11.0 a12.1
	cant: c11:+3    plusur:                     condi:  in_50.1 garage_lock_status_2.0          actions:  a11.0 a12.0
	cant: c6:-3     plusur:                     condi:  in_41.1 garage_lock_status_3.0          actions:  a7.1
	cant: c6:-3     plusur:                     condi:  det_5.0 in_41.1 garage_lock_status_3.0  actions:  a6.0
	cant: c7:+3     plusur:                     condi:  in_40.1 garage_lock_status_4.0          actions:  a9.0  a14.0
]

--- aide ----
c<0-315>:<+|->  plusur:  c<0-315> c<0-315> c<0-315>    condi: <var>.<0|1> <var>.<0|1> <var>.<0|1>    actions: a<0-63>.<0|1> a<0-63>.<0|1> a<0-63>.<0|1>
Exemple : 	cant: c1:-10    plusur: c3 c4          condi:  in_49.1  garage_lock_status_0.0       actions: a4.0  a5.0


IMPORTANT : Par ligne, il faut obligatoirement déclarer tous les termes "cant:",  "plusur:",  "condi:"  et  "actions:"  même si aucun paramètres ne les suit.

cant: 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 (-64 à -1 ou 1 à +64) .
  Si l'on met 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.

plusur: c<0-315>.<0|1> = Cantons devant être libérés par CE train pour déclencher les actions.
   Pour vérifier que le train a quitté tous les cantons précédents possibles. 
  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.

condi: <var>.<0|1> = Toutes les conditions doivent être réalisées pour déclencher les actions.
  En général utiliser 'det_xx.0' pour vérifier que le canton où se dirige le train est libre.
  Si le terme est 'det_xx.0', on vérifie aussi que le canton 'xx' où se dirige le train n'est pas réservé, ni en manuel ni en déplacement automatique.
  Les variables doivent être à l'état indiqué pour déclencher les actions.
  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 , on traduit 'aX.Y' en 'posY_aig_X.1'.
    on peut donc écrire : 'condi: det_6.0 pos1_aig_8.1 pos0_aig_9.1' ou 'condi: det_6.0 a8.1 a9.0'.

actions: a<0-63>.<0|1> = Aiguillages devant être positionnés lors du déclenchement des actions. (Exemple = a3.1 a12.0)
  Les aiguillages sont positionnés à l'état indiqué, sauf si ils sont réservés.

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.
Les valeurs des conditions ou actions ne peuvent être égale 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.

---- Exemple ----

   cant:c7:+10    plusur: c4.0 c5.0 c6.0     condi: det_8.0 pos0_aig_8.1     actions: a0.0  a1.1

Un train avec une vitesse de +10 avance sur le canton n°7. Les cantons précédent n°4 5 et 6 ont été libérés par CE train, le canton suivant n°8 est libre 
et l'aiguillage n°8 en position 0, alors on active les aiguillages n°0 et n°1 avec les valeurs indiquées.

=====================================================================================================================
= balauto : Section chargée uniquement au démarrage d'UTS.
=           Système de Bloc Automatique Logiciel.
=           Permet d'espacer automatqiuement les trains conduits en manuel.
=            30 vitmax: lignes au maximum, 6 conditions au maximum
=            60   halt: lignes au maximum, 6 conditions au maximum
=           100   cant: lignes au maximum, 6 cantons libérés par le train au maximum, 22 conditions au maximum
=====================================================================================================================

#balauto
[
  tempo-libe-cant:10

  vitmax:c1:+11     condi: a4.0 a5.0   
  vitmax:c6:+11     condi: a7.1
  vitmax:c7:-20     condi: led_12.1
  vitmax:c7:-11     condi: a9.0 a14.0
  vitmax:c8:-11
  vitmax:c9:-22     condi: a1.0
  vitmax:c9:+22     condi: a2.0
  vitmax:c10:+11
  vitmax:c11:-22
  vitmax:c11:+22
  vitmax:c12:+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:c11:-  condi:            in_50.1 garage_lock_status_2.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
  halt:c8:-   condi:            in_62.1
  halt:c10:+  condi:            in_48.1
  halt:c11:+  condi:            in_42.1
 
  cant:c0:+   ral:32 dec:11   plusur: c7          blocage: det_1.1 | a3.1
  cant:c1:+   ral:32 dec:11   plusur: c0 c9       blocage: det_2.1 a4.1 | det_13.1 a4.0 a5.1 | a4.0 a5.0 garage_lock_status_0.1
  cant:c2:+   ral:32 dec:11   plusur: c1          blocage: det_3.1
  cant:c3:+   ral:32 dec:11   plusur: c2          blocage: det_4.1
  cant:c4:+   ral:32 dec:11   plusur: c3          blocage: det_5.1
  cant:c5:+   ral:32 dec:11   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:+   ral:32 dec:11   plusur:             blocage: det_9.1 | a1.1
  cant:c9:+   ral:32 dec:11   plusur: c7          blocage: det_1.1 a2.1 a3.1 | det_10.1 a2.0 | a2.1 a3.0
  cant:c11:+  ral:32 dec:11   plusur:             blocage: a12.0 in_51.1 garage_lock_status_1.0 | a12.1 in_50.1 garage_lock_status_2.0
  cant:c13:+  ral:32 dec:11   plusur: c1          blocage: det_14.1 a13.0 | det_15.1 a13.1
  cant:c14:+  ral:32 dec:11   plusur: c13         blocage: det_7.1 | a9.1 | a14.0
  cant:c15:+  ral:32 dec:11   plusur: c13         blocage: det_7.1 | a8.1 | a9.0

  cant:c0:-   ral:32 dec:11   plusur: c1          blocage: a0.1 | det_7.1
  cant:c1:-   ral:32 dec:11   plusur: c2 c13      blocage: det_0.1 a3.0 | det_9.1 a3.1 a2.1 | a3.1 a2.0
  cant:c2:-   ral:32 dec:11   plusur: c3          blocage: det_1.1 | a4.0
  cant:c3:-   ral:32 dec:11   plusur: c4          blocage: det_2.1
  cant:c4:-   ral:32 dec:11   plusur: c5          blocage: det_3.1
  cant:c5:-   ral:32 dec:11   plusur: c6          blocage: det_4.1
  cant:c6:-   ral:32 dec:11   plusur: c7          blocage: det_5.1 | a6.1
  cant:c7:-   ral:32 dec:11   plusur: c0 c9       blocage: det_6.1 a8.1 a9.1 | a7.1 a8.1 a9.1 | det_15.1 a8.0 a9.1 | det_14.1 a14.1 a9.0 | a9.0 a14.0 garage_lock_status_4.1
  cant:c9:-   ral:32 dec:11   plusur: c1 c10      blocage: det_7.1 a0.1 a1.1 | a1.0 det_8.1 | a0.0 a1.1
  cant:c10:-  ral:32 dec:11   plusur:             blocage: a2.1 | det_9.1
  cant:c12:-  ral:32 dec:11   plusur:             blocage: det_11.1 | det_5.1 | a10.1 | a6.0
  cant:c13:-  ral:32 dec:11   plusur: c14 c15     blocage: det_1.1 | a4.1 | a5.0
  cant:c14:-  ral:32 dec:11   plusur: c7          blocage: det_13.1 | a13.1
  cant:c15:-  ral:32 dec:11   plusur: c7          blocage: det_13.1 |a13.0
]

- - - - - - - - - - - - 
Directive pour temporiser la libération d'un canton quand un train n'est plus détecté.
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.
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).

- - - - - - - - - - - - 
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.
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>
  Paramètre optionnel. Les conditions doivent être toutes réunies pour limiter la vitesse.
  Les variables doivent être égale à leurs valeurs. 6 conditions maximum.
  Exemple :  vitmax:c3:-5     condi: a5.0 a12.1

- - - - - - - - - - - - 
Directive pour stopper net un train en fin de voie, quand il franchi une barrière infra-rouge placé 5 cm avant un heurtoir.
Pour rechercher des wagons isolés placés devant un heurtoir, cette protection est désactivable avec le bloc 'Fonctions multiples' et 'OPT'=6.
Exemple: halt:c1:+ condi:in_5.1
halt:c:<0-315>:<+->  
  c:<0-315> = Canton ou s'applique l'arrêt imédiat.
  :<+-> = Sens de parcours.
condi: <var>.<0|1>  <var>.<0|1>
  Paramètre obligatoire. Les conditions doivent être toutes réunies pour stopper le train.
  Les variables doivent être égale à leurs valeurs. 6 conditions maximum.
  Il faut interdire au train de rentrer sur un canton occupé, de rencontrer un aiguillage fermé et de rentrer sur un garage occupé.

 - - - - - - - - - - - 
Directive pour arrêter un train sur son canton, car les conditions ne lui permettent pas de passer au canton suivant. C'est une sorte de BAL.
Si un n° de canton est sur présent sur plusieurs lignes, il suffit qu'une des lignes remplisse les conditions de blocage pour bloquer le train.

Exemple: cant:c0:+ dec:11 plusur: c6 c7 blocage: det_1.0 in_5.1 | pos1_aig_3.1 in_6.1
cant:c<0-315>:<+-> dec:<1-28>
  :c<0-315> = 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. (Optionnel)
  Si la partie 'plusur:' n'est pas validé, mais si un groupe de condition 'blocage:' est validé, cela signifie que
  le prochain canton est occupé, mais que le train n'est pas encore totalement entré sur le canton en cours.
  Quand tous les wagons seront sur le canton, le train va s'arrêter avec un 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é.
dec:<1-28>
  Valeur d'inertie optionnelle pour tous les déplacements. Voir la correspondance en secondes dans la section 'train'.
  La valeur utilisée est la plus faible entre cette valeur et celle du train.

plusur:c<0-315>.<0|1> = Cantons devant être libérés par CE train pour vérifier si il peut sortir du canton.
  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.
blocage: <var>.<0|1> = Conditions devant être réalisées pour bloquer le train sur le canton.
  Toutes les variables doivent être à l'état indiqué pour bloquer le train.


=====================================================================================================================
= train: Section chargée uniquement au démarrage d'UTS.
=        Définition des trains(nom, vitesses, commande ...) + position au démarrage d'UTS. 
=        16 trains au maximum. 
=        Il est possible de modifier la position des trains depuis UTS, menu : Affectation Loco
=====================================================================================================================

#train
[
	train0 : RAILCHEM c0   color : 2 pot0   06-64-13-13-xx en_auto
	train1 : DB_ROUGE c9   color : 4 pot1   01-40-11-07-xx en_auto
	train2 : BB660037 c8   color : 1 clav0  10-64-13-13-xx en_auto
	clav_conf_0  : +a !q -w
	clav_conf_1  : +z !s -x    
	clav_conf_2  : +e !d -c
	acc_progressif : 2 4 6 8 10 12 14 16
	dec_progressif : 5 10 15 
	reserve : RAILCHEM 05-64-13-13-xx color :  2 name : Trix_verte_R4C1201
	reserve : DB_VIOLT 05-20-13-05-xx color :  5 name : Roco_rouge_BD_215_083_7
	reserve : BB_67381 09-64-13-11-xx color :  1 name : Trix_diesel_bleu
	reserve : BB115052 07-50-13-11-xx color :  8 name : Trix_electrique_grise_filet_rouge
	reserve : BB660097 02-45-13-11-xx color : 13 name : Loco_piko_diesel_bleue 
	reserve : ABJRENAU 13-46-13-11-xx color : 10 name : Autorail_Mabar_beige_rouge
	reserve : VAPNOIR1 12-40-13-11-xx color :  0 name : Fleishmann_Piccolo_7161_NS851_noire
	reserve : VAPE150X 08-40-13-11-xx color : 16 name : Roco_vapeur_150_X_noire
	reserve : VAPE131_ 04-55-13-11-xx color : 14 name : Arnold_131_TX404_noire
	reserve : VAPE1030 11-50-13-11-xx color : 15 name : Fleishmann_7030_33_verte
	reserve : DB_ROUGE 10-37-13-11-xx color :  4 name : Fleishmann_DB_218_407_5_rouge
]

	clav_conf_0  : +a !q -w
	clav_conf_1  : +z !s -x    
	clav_conf_2  : +e !d -c
	clav_conf_3  : +r !f -v
	clav_conf_4  : +t !g -b


---- aide ----
 train<0-15>        : <nom_du_train> c<0-315>|g<0-15>    color:<0|15x> [clav<0-4>/pot<0-304>] [<1-50>-<6-64>-<1-28|xx>-<1-28|xx>-<1-28|xx>] inv en_auto
 train<n° du train> : <nom_du_train> c<canton>|g<garage> color:<color> [clav<0-4>/pot<0-304>] [min-max-acc-dec-frein] en_auto
      n° du train = 0 à 15. Donne aussi la couleur du train.
      nom_du_train = Nom du train obligatoirement sur 8 caractères. Compléter si nécessaire avec des '_'.
      c<canton>|g<garage> = Emplacement du train au lancement d'UTS.
      color : <0-16> = Couleur optionnelle du train.
         Noir=0,    Bleu=1,    Vert=2,    Cyan=3,    Rouge=4,   Violet=5,    Jaune=6,    Blanc=7,    Gris=8, 
         GrisFoncé=9,  Orange=10,  Marron=11,  Kaki=12,  BleuFoncé=13, GrisVert=14, VertFoncé=15,  GrisTrésFoncé=16.
      clav<0-4>/pot<0-304>] = Commandes pour diriger le train. Au clavier du PC ou par potentiomètre.
      Caractéristiques du train [min-max-acc-dec-frein] = valeurs ou mettre 'xx' pour les valeurs par défaut.
      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 à vitsse 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 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.
        Le programme limite aux valeurs suivantes : 64>=VMAX>=6, 50>=VMIN>=1, VMAX>VMIN, 28>=ACC>=1, 28>=DEC>=1, 28>=FREIN>=1.
      inv = Inverse l'alimentation de ce train.
      en_auto = Le train peut être commandé automatiquement par un déplacement.

 clav_conf_<0-4> : +<touche_minuscule_sens0+_sens1-> !<touche_minuscule_stop> -<touche_minuscule_sens0-_sens+->
     5 commandes par clavier au maximum. 5 commandes par potentiometre au maximum par carte électronique.


 reserve : <nom_du_train> [<1-28>-<1-28>-<1-28>-<1-28>-<1-28>] color:<1-16> inv name : <commentaires>
     17 lignes au maximum. Sert à configurer un train d'avance pour le placer facilement sur le réseau.
     nom_du_train = Nom du train obligatoirement 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.
     inv = Inverse l'alimentation de ce train.
     name : Commentaire sur 40 caractères maximum sans espace ni caractères particuliers. Utiliser des '_'  à la place des espaces.
---- exemples ----
    train0 : exp_mont c10 clav0 30-55-xx-xx-xx en_auto    
    train2 : BB660037 c8   color : 1 clav0  10-64-13-13-xx en_auto
    reserve : RAILCHEM 05-64-13-13-xx color :  2 name : Trix_verte_R4C1201
    clav_conf_0  : +a !q -w 
    clav_conf_1  : !s -x +z    
    clav_conf_2  : +e !d -c    
    clav_conf_3  : +r !f -v    
    clav_conf_4  : +t !g -b    



=====================================================================================================================
= garage:  Section chargée uniquement au démarrage d'UTS.
=          Configuration des voies de garage.
=          16 garages au maximum.
=====================================================================================================================

#garage
[
	g0:  c1   out8  pol0
	g1: c11   out9  pol0
	g2: c11  out10  pol0
	g3:  c6  out11  pol0
	g4:  c7  out12  pol0
]

---- aide ----
   g<0-15>: c<0-315> out<0-379> pol<0|1>
   g<numéro du garage>: c<numéro du canton relié au garage> out<numéro de sortie du relais> pol<position du relais>
     c<0-135>   = Canton auquel le garage est relié électriquement.
     out<0-379> = Numéro de sortie pour activer le relais qui met en contact les rails du garage et du canton.
     pol<0|1>   = Position du relais pour isoler le garage (sortie à 1 = relais sous tension).

---- exemples ----
    g0: c1 out3 pol1



=====================================================================================================================
= horo:     Paramétrage de l'horloge + horodateur pour déclencher des équations.
=           Utile pour lancer les déplacements automatiques à une heure donnée.
=           Permet d'automatiser entièrement le réseau.
=====================================================================================================================

#horo
[
    depart j:0 7:55 tic_par_min:15
@ Séquence avec au départ des trains en C0 et C9.
    commentaire_1 : Un train au départ sur le canton n° 0
    commentaire_2 : Un train au départ sur le canton n° 9
    commentaire_3 : Un train au départ sur le canton n° 33
    commentaire_4 : Un train au départ sur le canton n° 44
    commentaire_5 : Un train au départ sur le canton n° 55
    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 08:27  hb +0:08  vf:!depl_start_run_85  s:depl_start_run_85   @ c14  c9 +
    hd 08:28  hb +0:08  vf:!depl_start_run_95  s:depl_start_run_95   @ c15  c0 -

    hd j:1:07:59  hb +0:08  vf:!depl_start_run_10  s:depl_start_run_10   @  c0 c15 -
    hd j:1:08:00  hb +0:08  vf:!depl_start_run_85  s:depl_start_run_85   @ c14  c9 +
    hd j:1:08:01  hb +0:08  vf:!depl_start_run_95  s:depl_start_run_95   @ c15  c0 -

    hd j:3:08:21  hb +0:08  vf:!depl_start_run_10  s:depl_start_run_10   @  c0 c15 -
    hd j:3:08:22  hb +0:08  vf:!depl_start_run_85  s:depl_start_run_85   @ c14  c9 +
    hd j:3:08:23  hb +0:08  vf:!depl_start_run_95  s:depl_start_run_95   @ c15  c0 -

    hd j:4:08:21  hb +0:08  vf:!depl_start_run_10  s:depl_start_run_10   @  c0 c15 -
    hd j:4:08:22  hb +0:08  vf:!depl_start_run_85  s:depl_start_run_85   @ c14  c9 +
    hd j:4:08:23  hb +0:08  vf:!depl_start_run_95  s:depl_start_run_95   @ c15  c0 -

    hd j:s:08:21  hb +0:08  vf:!depl_start_run_85  s:depl_start_run_85   @ c14  c9 +
    hd j:s:08:22  hb +0:08  vf:!depl_start_run_95  s:depl_start_run_95   @ c15  c0 -

    hd j:w:08:21  hb +0:08  vf:!depl_start_run_85  s:depl_start_run_85   @ c14  c9 +
    hd j:w:08:22  hb +0:08  vf:!depl_start_run_95  s:depl_start_run_1   s:depl_start_run_2 s:depl_start_run_3 s:depl_start_run_4  s:depl_start_run_5 s:depl_start_run_6


    hd j:n:08:01  hb +0:01  vf:!depl_start_run_11   s:depl_start_run_11    @ Horaire de nettoyage. Départ en C0. C0 G0
    hd j:n:08:02  hb +0:01  vf:!depl_start_run_104  s:depl_start_run_104   @  G0  C8 Ne pas utiliser d'ininéraire multiple
    hd j:n:08:03  hb +0:01  vf:!depl_start_run_37   s:depl_start_run_37    @  C8 C10
    hd j:n:08:04  hb +0:01  vf:!depl_start_run_69   s:depl_start_run_69    @ C10  G4
    hd j:n:08:05  hb +0:01  vf:!depl_start_run_122  s:depl_start_run_122   @  G4  C0
    hd j:n:08:06  hb +0:01  vf:!depl_start_run_9    s:depl_start_run_9     @  C0 C14 +
    hd j:n:08:07  hb +0:01  vf:!depl_start_run_85   s:depl_start_run_85    @ C14  C9 +
    hd j:n:08:08  hb +0:01  vf:!depl_start_run_60   s:depl_start_run_60    @  C9 C15 -
    hd j:n:08:09  hb +0:01  vf:!depl_start_run_95   s:depl_start_run_95    @ C15  C0 +
    hd j:n:08:10  hb +0:01  vf:!depl_start_run_4    s:depl_start_run_4     @  C0  C5 +
    hd j:n:08:11  hb +0:01  vf:!depl_start_run_31   s:depl_start_run_31    @  C5  G3
    hd j:n:08:12  hb +0:01  vf:!depl_start_run_116  s:depl_start_run_116   @  G3  C5
    hd j:n:08:13  hb +0:01  vf:!depl_start_run_27   s:depl_start_run_27    @  C5 C12 
    hd j:n:08:14  hb +0:01  vf:!depl_start_run_141  s:depl_start_run_141   @ C12  C5
    hd j:n:08:15  hb +0:01  vf:!depl_start_run_24   s:var_24    @  C5 C11
    hd j:n:08:16  hb +0:01  vf:!depl_start_run_77   s:out_77    @ C11  G1
    hd j:n:08:17  hb +0:01  vf:!depl_start_run_109  s:exe_25   @  G1 C11
    hd j:n:08:18  hb +0:01  vf:!depl_start_run_78   s:depl_start_run_78    @ C11  G2
    hd j:n:08:19  hb +0:01  vf:!depl_start_run_111  s:depl_start_run_111   @  G2 C11
    hd j:n:08:20  hb +0:01  vf:!depl_start_run_73   s:depl_start_run_73    @ C11  C5
    hd j:n:08:21  hb +0:01  vf:!depl_start_run_16   s:depl_start_run_16    @  C5  C0 +
    hd j:n:08:22  hb +0:01  vf:!depl_start_run_0    s:depl_start_run_0     @  C0  C0 HAUT +
    hd j:n:08:23  hb +0:01  vf:!depl_start_run_2    s:depl_start_run_2     @  C0  C0 BAS +

    hd j:n:08:21  hb +0:01  vf:!depl_start_run_16   s:depl_start_run_16    @  C5  C0 +
    hd j:n:08:22  hb +0:01  vf:!depl_start_run_0    s:depl_start_run_0     @  C0  C0 HAUT +
    hd j:n:08:23  hb +0:01  vf:!depl_start_run_2    s:depl_start_run_2     @  C0  C0 BAS +
    hd j:n:08:21  hb +0:01  vf:!depl_start_run_16   s:depl_start_run_16    @  C5  C0 +
    hd j:n:08:22  hb +0:01  vf:!depl_start_run_0    s:depl_start_run_0     @  C0  C0 HAUT +
    hd j:n:08:23  hb +0:01  vf:!depl_start_run_2    s:depl_start_run_2     @  C0  C0 BAS +
    hd j:n:08:21  hb +0:01  vf:!depl_start_run_16   s:depl_start_run_16    @  C5  C0 +
    hd j:n:08:22  hb +0:01  vf:!depl_start_run_0    s:depl_start_run_0     @  C0  C0 HAUT +
    hd j:n:08:23  hb +0:01  vf:!depl_start_run_2    s:depl_start_run_2     @  C0  C0 BAS +

    hd j:n:08:21  hb +0:01  vf:!depl_start_run_16   s:depl_start_run_16    @  C5  C0 +
    hd j:n:08:22  hb +0:01  vf:!depl_start_run_0    s:depl_start_run_0     @  C0  C0 HAUT +
    hd j:n:08:23  hb +0:01  vf:!depl_start_run_2    s:depl_start_run_2     @  C0  C0 BAS +
    hd j:n:08:21  hb +0:01  vf:!depl_start_run_16   s:depl_start_run_16    @  C5  C0 +
    hd j:n:08:22  hb +0:01  vf:!depl_start_run_0    s:depl_start_run_0     @  C0  C0 HAUT +
    hd j:n:08:23  hb +0:01  vf:!depl_start_run_2    s:depl_start_run_2     @  C0  C0 BAS +
    hd j:n:08:21  hb +0:01  vf:!depl_start_run_16   s:depl_start_run_16    @  C5  C0 +
    hd j:n:08:22  hb +0:01  vf:!depl_start_run_0    s:depl_start_run_0     @  C0  C0 HAUT +
    hd j:n:08:23  hb +0:01  vf:!depl_start_run_2    s:depl_start_run_2     @  C0  C0 BAS +

    hd j:n:08:20  hb +0:01  vf:!depl_start_run_2    s:depl_start_run_2     @  C0  C0 BAS +
    hd j:n:08:21  hb +0:01  vf:!depl_start_run_2    s:depl_start_run_2     @  C0  C0 BAS +
    hd j:n:08:22  hb +0:01  vf:!depl_start_run_2    s:depl_start_run_2     @  C0  C0 BAS +

]
@    hd 6:40  hb +0:04  vf:!depl_start_run_5   s:depl_start_run_5  s:exe_2
@    hd 6:42  hb +0:03  vf:!depl_start_run_3   s:depl_start_run_3
 

---- aide ----
    depart j:<0-6> <0-23>:<0-59> tic_par_min:<1-240>
      Initialisation de l'horloge au jour et heure donné.
      j:<0-6>       = Jour de la semaine au lancement de l'horloge.
      <0-23>:<0-59> = Heure et minute au lancement de l'horloge.
      tic_par_min:<1-240> = Rapidité de l'horloge UTS, = nombre de 'tick' pour une minute d'horloge.
        750 tic/minute =   1 minute   = 1 minute UTS   et    1 heure   = 1  heure UTS. (pour un tic à 80 msec)
        250 tic/minute =  20 secondes = 1 minute UTS   et   20 minutes = 1  heure UTS.
        125 tic/minute =  10 secondes = 1 minute UTS   et   10 minutes = 1  heure UTS.
         50 tic/minute =   4 secondes = 1 minute UTS   et    4 minutes = 1  heure UTS et 24 heures = 1h36 mn.

    hd <[j:<0-6|w|e>:]0-23:0-59> [hb <0-23:0-59>|hb +<0-23:0-59>] [hi <0-23:0-59> hf <0-23:0-59>][ vf:[!] <var> ]    [ <s|c>:<var> ]   
    hd <Heure_de_Départ>          hb <>  hi<période>  hf<heure_de_Fin_d'action_périodique> hb <temps_d'attente_maxi_avant_blocage_par_variable> vf:<variable_bloquant_l'horloge>
      Pour modifier des variables ou lancer des déplacements.
      hd <[j:<0-6|w|e>:]0-23:0-59> = Jour et heure:minute de départ de l'action.
      Cas d'action périodique : Possibilité de faire des actions répétitives entre hd et hf,toute les hi.
        hf <0-23:0-59> = heure:minute de fin d'une action périodique qui commence à 'hd'.
        hi <0-23:0-59> = heure;minute de prériode d'une action périodique qui commence à 'hd' et fini à 'hf'.
      Quand on veut bloquer l'horloge, le temps de re-enrailler un train...
      La variable vf max peut bloquer l'horloge sur hb si la condition n'est pas vérifiée. 
      Utile lorsqu'un déplacement ne se fait pas (par ex suite à un pb de captage).
        hb +<0-23:0-59> = Temps maximum autorisé pour faire l'action ou le déplacement. Après bloque l'horloge.
        vf:[!] <var>    = Variable conditionnant le blocage de l'horloge (ex vf:!depl_start_run_xx) (Une seule variable vf maximum).
      Actions à lancer quand l'heure de départ est arrivée, ou si l'heure périodique revient.
       <s|c>:<var> = Positionne la variable 'var' à 1 (s=Set) ou 0 (c=Clear), (6 s/c:variables maximum par ligne).

---- conseil ----
   Au lancement d'UTS, l'horloge est à l'arrêt. Il faut la mettre en marche si nécessaire

---- exemples ----
    depart j:0 7:55 tic_par_min:16
    hd 6:40 hb +0:04 vf:!depl_start_run_5 s:depl_start_run_5 s:exe_2


=====================================================================================================================
= depl: Définition des déplacements.    
=       200 déplacements au maximum.
=       10  cantons maximum par déplacement + 10 aiguillages maximum par déplacement.
=       Nom du déplacement sur 40 caractères maximum.
=       Depuis le TCO, pour lancer un déplacement par un clic sur deux voyants d'occupation, si la condition de 'fin:'
=       est un contact 'in_xx', il faut ajouter une condition 'stop:cY' pour que ce déplacement puisse être sélectionné.
=====================================================================================================================
@ Paramètres pour mon réseau avec peu d'inertie sur les trains, et vitesse d'arrivée faible car les cantons sont très courts.
@   Vitesse de départ depuis le premier canton = 30, depuis butoir ou zone d'aiguillage = 20.
@   Vitesse d'arrivée vers dernier canton = 20, vers canton sans issue =15, vers butoir avec barrière infrarouge = 10.

#depl
[
  acc-dec: 14-14
  d0   c0+30  c1+40  c2+60  c3+60  c4+60  c5+60  c6+60  c7+20 a3.0 a4.1 a6.0 a7.0 a8.1 a9.1 a0.0           start:c0  pass:det_5  libe:det_7  fin:det_0           taf0 tsf0 name:1234567980123456798012345679801234567980
  d1   c0-30  c7-40  c6-60  c5-60  c4-60  c3-60  c2-60  c1-20 a3.0 a4.1 a6.0 a7.0 a8.1 a9.1 a0.0           start:c0  pass:det_5  libe:det_1  fin:det_0           taf0 tsf0 name:C0__C0_HAUT_M
  d2   c0+30  c1+40 c13+60 c14+60  c7+40                      a3.0 a4.0 a5.1 a13.0 a14.1 a9.0 a0.0         start:c0  pass:det_14 libe:det_7  fin:det_0           taf0 tsf0 name:C0__C0_BAS_P
  d3   c0-30  c7-40 c15-60 c13-60  c1-40                      a0.0 a9.1 a8.0 a13.1 a5.1 a4.0 a3.0          start:c0  pass:det_15 libe:det_1  fin:det_0           taf0 tsf0 name:C0__C0_BAS_M
  d4   c0+30  c1+40  c2+60  c3+60  c4+50  c5+20               a3.0 a4.1                                    start:c0  tempo:999 sdeb:exe_00 libe:det_4  fin:det_5           taf20 tsf20 name:C0__C5_P  
  d5   c0-30  c7-40  c6-60  c5-20                             a0.0 a9.1 a8.1 a7.0 a6.0                     start:c0              libe:det_6  fin:det_5           taf3 tsf0 name:C0__C5_M
  d6   c0+30  c1+40  c2+60  c3+60  c4+60  c5+30 c11+10        a3.0 a4.1 a6.1 a10.1 a11.1                   start:c0              libe:det_5  fin:in_42  stop:c11 taf0 tsf0 name:C0__C11 
  d7   c0+30  c1+40  c2+60  c3+60  c4+60  c5+30 c11+10        a3.0 a4.1 a6.1 a10.1 a11.1                   start:c0              libe:det_5  fin:in_42  stop:c11 taf1 tsf9 name:C0__C11_G1    sfin:depl_start_run_77
  d8   c0+30  c1+40  c2+60  c3+60  c4+60  c5+30 c11+10        a3.0 a4.1 a6.1 a10.1 a11.1                   start:c0              libe:det_5  fin:in_42  stop:c11 taf1 tsf9 name:C0__C11_G2    sfin:depl_start_run_78
  d9   c0+30  c1+40 c13+60 c14+20                             a3.0 a4.0 a5.1 a13.0                         start:c0              libe:det_13 fin:det_14          taf1 tsf0 name:C0__C14_P
  d10  c0-30  c7-40 c15-20                                    a0.0 a9.1 a8.0                               start:c0              libe:det_7  fin:det_15          taf1 tsf0 name:C0__C15_M
  d11  c0+30  c1+15                                           a3.0 a4.0 a5.0                               start:c0              libe:det_0  fin:in_49  stop:g0  taf0 tsf0 name:C0__Garage0
  d12  c0+30  c1+40  c2+60  c3+60 c4+60 c5+40 c6+10           a3.0 a4.1 a6.0 a7.1                          start:c0              libe:det_5  fin:in_41  stop:g3  taf0 tsf1 name:C0__Garage3
  d13  c0-30  c7-10                                           a0.0 a9.0 a14.0                              start:c0              libe:det_0  fin:in_40  stop:g4  taf0 tsf0 name:C0__Garage4

  d16  c5+30  c6+40  c7+60  c0+20                             a6.0 a7.0 a8.1 a9.1 a0.0                     start:c5              libe:det_7  fin:det_0           taf1 tsf0 name:C5__C0_P
  d17  c5-30  c4-40  c3-60  c2-60  c1-40  c0-20               a4.1 a3.0                                    start:c5              libe:det_1  fin:det_0           taf1 tsf0 name:C5__C0_M
  d18  c5+30  c6+40  c7+60  c0+60  c1+60  c2+60  c3+40  c4+20 a6.0 a7.0 a8.1 a9.1 a0.0 a3.0 a4.1           start:c5  pass:det_0  libe:det_4  fin:det_5           taf1 tsf0 name:C5__C5_P
  d19  c5-30  c4-40  c3-60  c2-60  c1-60  c0-60  c7-40  c6-20 a4.1 a3.0 a0.0 a9.1 a8.1 a7.0 a6.0           start:c5  pass:det_0  libe:det_6  fin:det_5           taf1 tsf0 name:C5__C5_M
  d20  c5-30  c4-40  c3-60  c2-60  c1-60  c0-40  c8-15        a4.1 a3.1 a2.1 a1.0                          start:c5              libe:det_1  fin:det_8           taf2 tsf0 name:C5__C8
  d21  c5+30  c6+40  c7+40  c9+20                             a6.0 a7.0 a8.1 a9.1 a0.1 a1.1                start:c5              libe:det_7  fin:det_9           taf1 tsf0 name:C5__C9_P
  d22  c5-30  c4-40  c3-60  c2-60  c1-40  c9-20               a4.1 a3.1 a2.1 a1.1                          start:c5              libe:det_1  fin:det_9           taf1 tsf0 name:C5__C9_M
  d23  c5+30  c6+40  c7+60  c9+40 c10+15                      a6.0 a7.0 a8.1 a9.1 a0.1 a1.1 a2.0           start:c5              libe:det_9  fin:det_10          taf1 tsf0 name:C5__C10
  d24  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
  d25  c5+20 c11+10                                           a6.1 a10.1 a11.1                             start:c5              libe:det_5  fin:in_42  stop:c11 taf1 tsf9 name:C5__C11_G1      sfin:depl_start_run_77
  d26  c5+20 c11+10                                           a6.1 a10.1 a11.1                             start:c5              libe:det_5  fin:in_42  stop:c11 taf1 tsf9 name:C5__C11_G2      sfin:depl_start_run_78
  d27  c5+20 c11+20  c12+20                                   a6.1 a10.0                                   start:c5              libe:det_11 fin:det_12          taf0 tsf1 name:C5__C12
  d28  c5+30  c6+40  c7+60  c0+60  c1+60 c13+40 c14+20        a6.0 a7.0 a8.1 a9.1 a0.0 a3.0 a4.0 a5.1 a13.0 start:c5             libe:det_13 fin:det_14          taf0 tsf1 name:C5__C14_P
  d39  c5-30  c4-40  c3-60  c2-60  c1-60  c0-60  c7-40 c15-20 a4.1 a3.0 a0.0 a9.1 a8.0                     start:c5              libe:det_7  fin:det_15          taf0 tsf1 name:C5__C15_M
  d30  c5+30  c6+40  c7+60  c0+40  c1+10                      a6.0 a7.0 a8.1 a9.1 a0.0 a3.0 a4.0 a5.0      start:c5              libe:det_0  fin:in_49  stop:g0  taf0 tsf1 name:C5__Garage0
  d31  c5+30  c6+10                                           a6.0 a7.1                                    start:c5              libe:det_5  fin:in_41  stop:g3  taf0 tsf1 name:C5__Garage3
  d32  c5-30  c4-40  c3-60  c2-60  c1-60  c0-30  c7-10        a4.1 a3.0 a0.0 a9.0 a14.0                    start:c5              libe:det_0  fin:in_40  stop:g4  taf0 tsf1 name:C5__Garage4

  d35  c8+30  c9+40  c1+50  c2+60  c3+60  c4+40  c5+20        a1.0 a2.1 a3.1 a4.1                          start:c8              libe:det_4  fin:det_5           taf0 tsf0 name:C8__C5   
  d36  c8+30  c9+20                                           a1.0                                         start:c8              libe:det_8  fin:det_9           taf2 tsf0 name:C8__C9
  d37  c8+20  c9+20 c10+15                                    a1.0 a2.0                                    start:c8              libe:det_9  fin:det_10          taf0 tsf0 name:C8__C10 
  d38  c8+30  c9+20  c1+40  c2+60  c3+60  c4+50  c5+30 c11+10 a1.0 a2.1 a3.1 a4.1 a6.1 a10.1 a11.1         start:c8              libe:det_5  fin:in_42  stop:c11 taf0 tsf0 name:C8__C11  
  d39  c8+30  c9+40  c1+60  c2+60  c3+60  c4+60  c5+40 c11+10 a1.0 a2.1 a3.1 a4.1 a6.1 a10.1 a11.1         start:c8              libe:det_5  fin:in_42  stop:c11 taf0 tsf1 name:C8__C11_G1  sfin:depl_start_run_77
  d40  c8+30  c9+40  c1+60  c2+60  c3+60  c4+60  c5+40 c11+10 a1.0 a2.1 a3.1 a4.1 a6.1 a10.1 a11.1         start:c8              libe:det_5  fin:in_42  stop:c11 taf0 tsf1 name:C8__C11_G2  sfin:depl_start_run_78
  d41 c8+30 c9+40 c1+60 c2+60 c3+60 c4+60 c5+40 c11+15 c12+15 a1.0 a2.1 a3.1 a4.1 a6.1 a10.0               start:c8              libe:det_11 fin:det_12          taf0 tsf0 name:C8__C12
  d42  c8+30  c9+40  c1+60 c13+40 c14+20                      a1.0 a2.1 a3.1 a4.0 a5.1 a13.0               start:c8              libe:det_13 fin:det_14          taf0 tsf0 name:C8__C14_P
  d43  c8+30  c9+40  c1+10                                    a1.0 a2.1 a3.1 a4.0 a5.0                     start:c8              libe:det_0  fin:in_49  stop:g0  taf0 tsf0 name:C8__Garage0
  d44  c8+30  c9+40  c1+60  c2+60  c3+60  c4+60  c5+40 c6+15  a1.0 a2.1 a3.1 a4.1 a6.0 a7.1                start:c8              libe:det_5  fin:in_41  stop:g3  taf0 tsf0 name:C8__Garage3

  d47  c9+30  c1+40  c2+60  c3+60  c4+40  c5+20               a2.1 a3.1 a4.1                               start:c9              libe:det_4  fin:det_5           taf1 tsf0 name:C9__C5_P
  d48  c9-30  c7-40  c6-60  c5-20                             a1.1 a0.1 a9.1 a8.1 a7.0 a6.0                start:c9              libe:det_6  fin:det_5           taf3 tsf0 name:C9__C5_M
  d49  c9-20  c8-15                                           a1.0                                         start:c9              libe:det_9  fin:det_8 halt:in_62 taf2 tsf0 name:C9__C8
  d50  c9+30  c1+40  c2+60  c3+60  c4+60  c5+60  c6+40  c7+20 a2.1 a3.1 a4.1 a6.0 a7.0 a8.1 a9.1 a0.1 a1.1 start:c9  pass:det_4  libe:det_7  fin:det_9           taf0 tsf0 name:C9__C9_HAUT_P
  d51  c9-30  c7-40  c6-60  c5-60  c4-60  c3-60  c2-40  c1-20 a2.1 a3.1 a4.1 a6.0 a7.0 a8.1 a9.1 a0.1 a1.1 start:c9  pass:det_4  libe:det_1  fin:det_9           taf0 tsf0 name:C9__C9_HAUT_M
  d52  c9+30  c1+40 c13+60 c14+40  c7+20                    a2.1 a3.1 a4.0 a5.1 a13.0 a14.1 a9.0 a0.1 a1.1 start:c9  pass:det_14 libe:det_7  fin:det_9           taf0 tsf0 name:C9__C9_BAS_P
  d53  c9-30  c7-40 c15-60 c13-40  c1-20                     a1.1 a0.1 a9.1 a8.1 a13.1 a5.1 a4.0 a3.1 a2.1 start:c9  pass:det_15 libe:det_1  fin:det_9           taf0 tsf0 name:C9__C9_BAS_M
  d54  c9+30 c10+15                                           a2.0                                         start:c9              libe:det_9  fin:det_10 halt:in_48 taf0 tsf0 name:C9__C10
  d55  c9+30  c1+40  c2+60  c3+60  c4+60  c5+30 c11+10        a2.1 a3.1 a4.1 a6.1 a10.1 a11.1              start:c9              libe:det_5  fin:in_42  stop:c11 taf0 tsf0 name:C9__C11  
  d56  c9+30  c1+40  c2+60  c3+60  c4+60  c5+30 c11+10        a2.1 a3.1 a4.1 a6.1 a10.1 a11.1              start:c9              libe:det_5  fin:in_42  stop:c11 taf0 tsf1 name:C9__C11_G1    sfin:depl_start_run_77
  d57  c9+30  c1+40  c2+60  c3+60  c4+60  c5+30 c11+10        a2.1 a3.1 a4.1 a6.1 a10.1 a11.1              start:c9              libe:det_5  fin:in_42  stop:c11 taf0 tsf1 name:C9__C11_G2    sfin:depl_start_run_78
  d58  c9+30  c1+40  c2+60  c3+60  c4+60  c5+40 c11+30 c12+15 a2.1 a3.1 a4.1 a6.1 a10.0                    start:c9              libe:det_11 fin:det_12          taf0 tsf0 name:C9__C12
  d59  c9+30  c1+40 c13+40 c14+20                             a2.1 a3.1 a4.0 a5.1 a13.0                    start:c9              libe:det_13 fin:det_14          taf1 tsf0 name:C9__C14_P
  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
  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
  d62  c9+30  c1+40  c2+60  c3+60 c4+60 c5+30 c6+10           a2.1 a3.1 a4.1 a6.0 a7.1                     start:c9              libe:det_5  fin:in_41  stop:g3  taf0 tsf1 name:C9__Garage3
  d63  c9-30  c7-10                                           a0.1 a1.1 a9.0 a14.0                         start:c9              libe:det_9  fin:in_40  stop:g4  taf0 tsf0 name:C9__Garage4

  d65 c10-20  c9-20  c7-60  c6-40  c5-20                      a2.0 a1.1 a0.0 a9.1 a8.1 a7.0 a6.0           start:c10             libe:det_6  fin:det_5           taf3 tsf0 name:C10__C5_M
  d66 c10-20  c9-20  c8-15                                    a2.0 a1.0                                    start:c10             libe:det_9  fin:det_8           taf2 tsf0 name:C10__C8
  d67 c10-20  c9-20                                           a2.0                                         start:c10             libe:det_10 fin:det_9           taf0 tsf0 name:C10__C9  
  d68 c10-20  c9-20  c7-40 c15-20                             a2.0 a1.1 a0.1 a9.1 a8.0                     start:c10             libe:det_7  fin:det_15          taf1 tsf0 name:C10__C15_M
  d69 c10-20  c9-30  c7-10                                    a2.0 a1.1 a0.1 a9.0 a14.0                    start:c10             libe:det_9  fin:in_40  stop:g4  taf0 tsf0 
    
  d72 c11-30  c5-30  c4-50  c3-60  c2-60  c1-40  c0-20        a11.1 a10.1 a6.1 a4.1 a3.0                   start:c11             libe:det_1  fin:det_0           taf1 tsf1  name:C11__C0
  d73 c11-15  c5-20                                           a11.1 a10.1 a6.1                             start:c11             libe:det_11 fin:det_5           taf2 tsf1  name:C11__C5
  d74 c11-30  c5-40  c4-60  c3-60  c2-60  c1-60  c9-40 c8-15  a11.1 a10.1 a6.1 a4.1 a3.1 a2.1 a1.0         start:c11             libe:det_9  fin:det_8           taf2 tsf1  name:C11__C8
  d75 c11-30  c5-40  c4-50  c3-60  c2-60  c1-40  c9-20        a11.1 a10.1 a6.1 a4.1 a3.1 a1.1              start:c11             libe:det_1  fin:det_9           taf1 tsf1  name:C11__C9
  d76 c11-30 c5-40 c4-60 c3-60 c2-60 c1-60 c0-60 c7-40 c15-20 a11.1 a10.1 a6.1 a4.1 a3.0 a0.0 a9.1 a8.0    start:c11             libe:det_7  fin:det_15          taf1 tsf1  name:C11__C15_M
  d77 c11-13                                                  a11.0 a12.1                                  start:c11                         fin:in_51  stop:g1  taf0 tsf1  name:C11__Garage1
  d78 c11-13                                                  a11.0 a12.0                                  start:c11                         fin:in_50  stop:g2  taf0 tsf1  name:C11__Garage2
  d79 c11-30  c5-40  c4-60  c3-60  c2-60  c1-60  c0-40 c7-15  a11.1 a10.1 a6.1 a4.1 a3.0 a0.0 a9.0 a14.0   start:c11                         fin:in_40  stop:g4  taf0 tsf1  name:C11__Garage4

  d83 c14+30  c7+40  c0+20                                    a14.1 a9.0 a0.0                              start:c14             libe:det_7  fin:det_0           taf1 tsf0 name:C14__C0_P
  d84 c14+30  c7+40  c0+50  c1+50  c2+60  c3+60  c4+40 c5+20  a14.1 a9.0 a0.0 a3.0 a4.1                    start:c14             libe:det_4  fin:det_5           taf1 tsf0 name:C14__C5_P
  d85 c14+30  c7+40  c9+20                                    a14.1 a9.0 a0.1 a1.1                         start:c14             libe:det_7  fin:det_9           taf1 tsf0 name:C14__C9_P
  d86 c14+30  c7+40  c9+40 c10+15                             a14.1 a9.0 a0.1 a1.1 a2.0                    start:c14             libe:det_9  fin:det_10          taf1 tsf0 name:C14__C10_P
  d87 c14+30 c7+40 c0+60 c1+60 c2+60 c3+60 c4+50 c5+30 c11+10 a14.1 a9.0 a0.0 a3.0 a4.1 a6.1 a10.1 a11.1   start:c14             libe:det_5  fin:in_42  stop:c11 taf0 tsf0 name:C14__C11  
  d88 c14+30 c7+40 c0+60 c1+60 c2+60 c3+60 c4+50 c5+30 c11+10 a14.1 a9.0 a0.0 a3.0 a4.1 a6.1 a10.1 a11.1   start:c14             libe:det_5  fin:in_42  stop:c11 taf0 tsf1 name:C14__C11_G1  sfin:depl_start_run_77
  d89 c14+30 c7+40 c0+60 c1+60 c2+60 c3+60 c4+50 c5+30 c11+10 a14.1 a9.0 a0.0 a3.0 a4.1 a6.1 a10.1 a11.1   start:c14             libe:det_5  fin:in_42  stop:c11 taf0 tsf1 name:C14__C11_G2  sfin:depl_start_run_78
  d90 c14+30 c7+40 c0+60 c1+60 c2+60 c3+60 c4+50 c5+30 c11+20 c12+15 a14.1 a9.0 a0.0 a3.0 a4.1 a6.1 a10.0  start:c14             libe:det_11 fin:det_12          taf0 tsf0 name:C14__C12
  d91 c14+30  c7+40  c0+60  c1+40  c13+20                     a14.1 a9.0 a0.0 a3.0 a4.0 a5.1 a13.0         start:c14  pass:det_0 libe:det_13 fin:det_14          taf0 tsf0 name:C14__C14_P
  d92 c14+30  c7+40  c0+40  c1+10                             a14.1 a9.0 a0.0 a3.0 a4.0 a5.0               start:c14             libe:det_0  fin:in_49  stop:g0  taf0 tsf0 name:C14__Garage0
  d93 c14+30  c7+40  c1+60  c2+60  c3+60 c4+50 c5+30 c6+10    a14.1 a9.0 a0.0 a3.0 a4.1 a6.0 a7.1          start:c14             libe:det_5  fin:in_41  stop:g3  taf0 tsf0 name:C14__Garage3

  d95 c15-30 c13-40  c1-50  c0-20                             a13.1 a5.1 a4.0 a3.0                         start:c15             libe:det_1  fin:det_0           taf1 tsf0 name:C15__C0
  d96 c15-30 c13-40  c1-60  c0-60  c7-60  c6-40  c5-20       a13.1 a5.1 a4.0 a3.0 a0.0 a9.1 a8.1 a7.0 a6.0 start:c15             libe:det_6  fin:det_5           taf3 tsf0 name:C15__C5
  d97 c15-30 c13-40  c1-40  c9-20                             a13.1 a5.1 a4.0 a3.1 a2.1 a1.1               start:c15             libe:det_1  fin:det_9           taf1 tsf0 name:C15__C9_M
  d98 c15-30 c13-40  c1-60  c9-40  c8-15                      a13.1 a5.1 a4.0 a3.1 a2.1 a1.0               start:c15             libe:det_9  fin:det_8           taf2 tsf0 name:C15__C8_M
  d99 c15-30 c13-40  c1-60  c0-40  c7-20                      a13.1 a5.1 a4.0 a3.0 a0.0 a9.1 a8.0          start:c15  pass:det_0 libe:det_7  fin:det_15          taf1 tsf0 name:C15__C15
 d100 c15-30 c13-40  c1-60  c0-40  c7-10                      a13.1 a5.1 a4.0 a3.0 a0.0 a9.0 a14.0         start:c15             libe:det_0  fin:in_40  stop:g4  taf0 tsf0 name:C15__Garage4

 d102  c1-30  c0-20                                           a5.0 a4.0 a3.0                               start:g0              libe:det_1  fin:det_0           taf0 tsf0 name:Garage0__C0
 d103  c1-30  c0-40  c7-60  c6-40  c5-20                      a5.0 a4.0 a3.0 a0.0 a9.1 a8.1 a7.0 a6.0      start:g0              libe:det_6  fin:det_5           taf3 tsf0 name:Garage0__C5
 d104  c1-30  c9-30  c8-15                                    a5.0 a4.0 a3.1 a2.1 a1.0                     start:g0              libe:det_9  fin:det_8           taf2 tsf0 name:Garage0__C8
 d105  c1-30  c9-20                                           a5.0 a4.0 a3.1 a2.1                          start:g0              libe:det_1  fin:det_9           taf0 tsf0 name:Garage0__C9
 d106  c1-30  c0-40  c7-40 c15-20                             a5.0 a4.0 a3.0 a0.0 a9.1 a8.0                start:g0              libe:det_7  fin:det_15          taf0 tsf0 name:Garage0__C15
 d107  c1-30  c0-40  c7-10                                    a5.0 a4.0 a3.0 a0.0 a9.0 a14.0               start:g0              libe:det_0  fin:in_40  stop:g4  taf0 tsf0 name:Garage0__Garage4

 d109 c11+13                                                  a11.0 a12.1                                  start:g1                          fin:in_42  stop:c11 taf0 tsf1 name:Garage1__C11
 d110 c11+13                                                  a11.0 a12.1                                  start:g1                          fin:in_42  stop:c11 taf0 tsf1 name:Garage1__C11_G2 sfin:depl_start_run_73

 d111 c11+13                                                  a11.0 a12.0                                  start:g2                          fin:in_42  stop:c11 taf0 tsf1 name:Garage2__C11
 d112 c11+13                                                  a11.0 a12.0                                  start:g2                          fin:in_42  stop:c11 taf0 tsf1 name:Garage2__C11_G1 sfin:depl_start_run_73

 d115  c6-30  c5-40  c4-60  c3-60  c2-60  c1-40  c0-20        a7.1 a6.0 a4.1 a3.0                          start:g3              libe:det_1  fin:det_0           taf1 tsf1 name:Garage3__C0
 d116  c6-30  c5-20                                           a7.1 a6.0                                    start:g3              libe:det_6  fin:det_5           taf3 tsf1 name:Garage3__C5
 d117  c6-30  c5-40  c4-60  c3-60  c2-60  c1-60  c9-30 c8-15  a7.1 a6.0 a4.1 a3.1 a2.1 a1.0                start:g3              libe:det_9  fin:det_8           taf2 tsf1 name:Garage3__C8
 d118  c6-30  c5-40  c4-60  c3-60  c2-60  c1-40  c9-20        a7.1 a6.0 a4.1 a3.1 a2.1 a1.1                start:g3              libe:det_1  fin:det_9           taf1 tsf1 name:Garage3__C9
 d119  c6-30 c5-40 c4-60 c3-60 c2-60 c1-60 c0-60 c7-40 c15-20 a7.1 a6.0 a4.1 a3.0 a0.0 a9.1 a8.0           start:g3              libe:det_7  fin:det_15          taf1 tsf1 name:Garage3__C15
 d120  c6-30  c5-40  c4-60  c3-60  c2-60  c1-60  c0-40  c7-10 a7.1 a6.0 a4.1 a3.0 a0.0 a9.0 a14.0          start:g3                          fin:in_40  stop:g4  taf0 tsf1 name:Garage3__Garage4

 d122  c7+30  c0+20                                           a14.0 a9.0 a0.0                              start:g4              libe:det_7  fin:det_0           taf0 tsf0 name:Garage4__C0
 d123  c7+30  c0+40  c1+60  c2+60  c3+60  c4+40  c5+20        a14.0 a9.0 a0.0 a3.0 a4.1                    start:g4              libe:det_4  fin:det_5           taf1 tsf0 name:Garage4__C5
 d124  c7+30  c9+20                                           a14.0 a9.0 a0.1 a1.1                         start:g4              libe:det_7  fin:det_9           taf0 tsf0 name:Garage4__C9
 d125  c7+30  c9+40 c10+10                                    a14.0 a9.0 a0.1 a1.1 a2.0                    start:g4              libe:det_9  fin:det_10          taf0 tsf0 name:Garage4__C10
 d126  c7+30  c0+40  c1+60  c2+60  c3+60  c4+50  c5+30 c11+10 a14.0 a9.0 a0.0 a3.0 a4.1 a6.1 a10.1 a11.1   start:g4              libe:det_5  fin:in_42  stop:c11 taf0 tsf0 name:Garage4__C11  
 d127  c7+30  c0+40  c1+60  c2+60  c3+60  c4+50  c5+30 c11+10 a14.0 a9.0 a0.0 a3.0 a4.1 a6.1 a10.1 a11.1   start:g4              libe:det_5  fin:in_42  stop:c11 taf0 tsf1 name:Garage4__C11_G1  sfin:depl_start_run_77
 d128  c7+30  c0+40  c1+60  c2+60  c3+60  c4+50  c5+30 c11+10 a14.0 a9.0 a0.0 a3.0 a4.1 a6.1 a10.1 a11.1   start:c4              libe:det_5  fin:in_42  stop:c11 taf0 tsf1 name:Garage4__C11_G2  sfin:depl_start_run_78
 d129 c7+30 c0+50 c1+60 c2+60 c3+60 c4+60 c5+50 c11+30 c12+15 a14.0 a9.0 a0.0 a3.0 a4.1 a6.1 a10.0         start:g4              libe:det_11 fin:det_12          taf0 tsf0 name:Garage4__C12
 d130  c7+30  c0+40 c1+10                                     a14.0 a9.0 a0.0 a3.0 a4.0 a5.0               start:g4              libe:det_0  fin:in_49  stop:g0  taf0 tsf0 name:Garage4__Garage0
 d131  c7+30  c0+40 c1+60  c2+60  c3+60 c4+60 c5+40 c6+10     a14.0 a9.0 a0.0 a3.0 a4.1 a6.0 a7.1          start:g4              libe:det_5  fin:in_41  stop:g3  taf0 tsf0 name:Garage4__Garage3

 d132 c7+30 c0+50 c1+60 c13+60 c14+20                         a14.0 a9.0 a0.0 a3.0 a4.0 a5.1 a13.0         start:g4              libe:det_13 fin:det_14          taf0 tsf0 name:Garage4__C14


 d134  c14-30 c13-30                                          a13.0                                        start:c14             libe:det_14 fin:det_13          taf1 tsf0 name:C14__C13 
 d135  c15-30 c13-30                                          a13.1                                        start:c15             libe:det_15 fin:det_13          taf2 tsf0 name:C15__C13 
 d136  c14+30 c13+30                                          a13.0                                        start:c13             libe:det_13 fin:det_14          taf0 tsf0 name:C13__C14
 d137  c15+30 c13+30                                          a13.1                                        start:c13             libe:det_13 fin:det_15          taf0 tsf0 name:C13__C15


 d140 c12-15 c11-30  c5-30  c4-50  c3-60  c2-60  c1-40  c0-20        a10.0 a6.1 a4.1 a3.0                  start:c12             libe:det_1  fin:det_0           taf1 tsf1  name:C12__C0
 d141 c12-15 c11-30  c5-20                                           a10.0 a6.1                            start:c12             libe:det_11 fin:det_5           taf3 tsf1  name:C12__C5
 d142 c12-15 c11-30  c5-40  c4-60  c3-60  c2-60  c1-60  c9-30 c8-15  a10.0 a6.1 a4.1 a3.1 a2.1 a1.0        start:c12             libe:det_9  fin:det_8           taf2 tsf1  name:C12__C8
 d143 c12-15 c11-30  c5-40  c4-50  c3-60  c2-60  c1-40  c9-20        a10.0 a6.1 a4.1 a3.1 a1.1             start:c12             libe:det_1  fin:det_9           taf2 tsf1  name:C12__C9
 d144 c12-15 c11-30 c5-40 c4-60 c3-60 c2-60 c1-60 c0-60 c7-40 c15-20 a10.0 a6.1 a4.1 a3.0 a0.0 a9.1 a8.0   start:c12             libe:det_7  fin:det_15          taf1 tsf1  name:C12__C15_M
 d147 c12-15 c11-30  c5-40  c4-60  c3-60  c2-60  c1-60  c0-40 c7-20  a10.0 a6.1 a4.1 a3.0 a0.0 a9.0 a14.0  start:c12                         fin:in_40  stop:g4  taf0 tsf1  name:C12__Garage4
]


---- aide ----
    acc-dec <1-28>-<1-28>
      Valeur d'inertie pour tous les déplacements. Voir la correspondance en secondes dans la section 'train'.
      La valeur utilisée est la plus faible entre cette valeur et celle du train.
      Si 'acc-dec xx-xx', on utilise la valeurs des trains.

    d<0-199> = Numéro de déplacement.

    c<n°canton><+-Vitesse>     = N° des cantons parcourus suivi de la consigne de vitesse =-64 à -1 et +1 à +64. Déclaration de 10 cantons à la suite au maximum
    a<n°aiguillage>.<Position> = N° des aiguillages à manoeuvrer avant le départ suivi de leur position. Déclaration de 10 aiguillages à la suite au maximum

    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, (Facultatif) paramètre facultatif mais obligatoire si le n° du canton de début et de fin de parcours est le même.
    libe:det_<0-15,100-115,200-215,300-315> = Canton à libérer complètement pour que la condition de fin soit réalisée (Facultatif), utilisé si les essieux de tous les wagons sont résistifs.

    fin:<var>  = Généralement 'fin:det_xx' ou 'fin:in_xx' = Condition de fin (Obligatoire) sur détection du train sur le canton de fin de parcours ou sur 
                 détection par barrière IR en fin de parcours. Si on utilise 'fin:in_xx' avec un contact d'entrée, il faut ajouter 'stop:<var> sur la ligne.
    stop:<var> = Permet de lancer un déplacement par clic sur deux voyants du TCO (Facultatif), 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é depuis le TCO.
    halt:<var> = Condition de fin (Facultatif), arrête immédiatement le train sans inertie, utilisé avec une barrière IR de voie située juste avant un butoir.

    taf<0-999> = Temps en secondes entre la détection de fin et la mise hors tension des cantons.
                 Utilisé si les essieux des wagons ne sont pas résistifs, afin que le train soit entièrement sur le canton de fin.
                 Si les essieux sont résistifs, à la place d'une tempo, il faut mieux utiliser la directive "libe:_det_xx".
    tsf<0-999> = Temps en secondes entre la détection de fin et la libération des cantons.
    name:<nom> = Nom du parcours sur 40 caractères maximum (Pas de "+-" ou d'espace dans le nom, mais le caractère '_' est 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.
    sfin:<var> = Met la variable à 1 à la fin du déplacement.
    cfin:<var> = Met la variable à 0 à la fin du déplacement. Exemple "sfin:depl_start_run_137" = Lance un second déplacement après la fin du premier déplacement.
      sc:<var> = Met la variable à 1 au début du déplacement et à 0 à la fin.

    Possibilité de partir et d'arriver sur une voie de garage. Le garage de départ doit être verrouillé et celui d'arrivé libre pour que le déplacement démarre.
    Après déplacement, le garage de départ est libre et celui d'arrivée est verrouillé. Exemple = start:g3  fin:in_40  stop:g4
    start:g<0-15> = N° du garage de départ.
    fin:<in_xxx>  = Contact d'entrée = Barrière infrarouge placée juste avant le butoir. Faculatif mais fortement recommandé pour se garer sur une voie de garage, surtout si elle est courte.
    stop:g<0-15>  = N° du garage d'arrivée.

    train:<numéro_du_train> = Le déplacement commencera uniquement si le train portant ce numéro se présente sur le canton de départ.

---- exemples ----
    d0  c0+30 c8+40  c10+30  a5.1 a4.0 a10.0  fin0:det_10  taf7  tsf0  name:dV0_n  start:c0
    d1  c7+30 c0+40  c1+60  a14.0 a6.0  a7.1  start:g4  libe:det_5  fin:in_41  stop:g3  taf0 tsf0 name:Garage4__Garage3


 
=====================================================================================================================
= t d v :    Opération logiques (table de vérité, équations, impulsions)
=            Depuis la V3.5b, pour les TVD des feux, utiliser les variables "det2_xxx" à la place des "det_xxx".
=====================================================================================================================
@ === Pense-bête pour les entrées (00-39 Multiplexées, 40-79 Directes) === :
@ in_00 : aig_00                                 in_30 :                                        in_60 :
@ in_01 :                                        in_31 :                                        in_61 :
@ in_02 :                                        in_32 :                                        in_62 : Détection IR canton n°  8
@ in_03 :                                        in_33 :                                        in_63 :
@ in_04 :                                        in_34 :                                        in_64 :
@ in_05 :                                        in_35 :                                        in_65 :
@ in_06 :                                        in_36 :                                        in_66 :
@ in_07 :                                        in_37 :                                        in_67 :
@ in_08 :                                        in_38 :                                        in_68 :
@ in_09 :                                        in_39 :                                        in_69 :
@
@ in_10 :                                        in_40 : Détection IR garage n°  4              in_70 :
@ in_11 :                                        in_41 : Détection IR garage n°  3              in_71 :
@ in_12 :                                        in_42 : Détection IR canton n° 11              in_72 :
@ in_13 :                                        in_43 :                                        in_73 :
@ in_14 :                                        in_44 :                                        in_74 :
@ in_15 :                                        in_45 :                                        in_75 :
@ in_16 :                                        in_46 :                                        in_76 :
@ in_17 :                                        in_47 :                                        in_77 :
@ in_18 :                                        in_48 : Détection IR canton n° 10              in_78 :
@ in_19 :                                        in_49 : Détection IR garage n°  0              in_79 :
@ 
@ in_20 :                                        in_50 : Détection IR garage n°  2
@ in_21 :                                        in_51 : Détection IR garage n°  1
@ in_22 :                                        in_52 :
@ in_23 :                                        in_53 :
@ in_24 :                                        in_54 :
@ in_25 :                                        in_55 :
@ in_26 :                                        in_56 :
@ in_27 :                                        in_57 :
@ in_28 :                                        in_58 :
@ in_29 :                                        in_59 :
@ 
@ 
@ 
@ === Pense-bête pour les sorties === :
@ out_00 : Relais de commande d'aiguillages      out_30 : X                                     out_60 :
@ out_01 : Relais de commande d'aiguillages      out_31 : X                                     out_61 :
@ out_02 : Relais de commande d'aiguillages      out_32 : X                                     out_62 :
@ out_03 : Sortie réservée pour 2° carte aig     out_33 : X                                     out_63 :
@ out_04 : Relais de commande d'aiguillages      out_34 : X                                     out_64 :
@ out_05 : Relais de commande d'aiguillages      out_35 : X                                     out_65 :
@ out_06 : Relais de commande d'aiguillages      out_36 : X                                     out_66 :
@ out_07 : Sortie réservée pour 3° carte aig     out_37 : X                                     out_67 :
@ out_08 : Relais cmde garage n° 0               out_38 : X                                     out_68 :
@ out_09 : Relais cmde garage n° 1               out_39 : X                                     out_69 :
@
@ out_10 : Relais cmde garage n° 2               out_40 : Eclairage de la gare                  out_70 :
@ out_11 : Relais cmde garage n° 3               out_41 : Eclairage Municipal                   out_71 :
@ out_12 : Relais cmde garage n° 4               out_42 : Eclairage Maison1                     out_72 :
@ out_13 : Vibreur n°1 coté est                  out_43 : Eclairage Maison2                     out_73 :
@ out_14 :                                       out_44 : Vibreur n°2 coté ouest                out_74 :
@ out_15 :                                       out_45 : Eclairage Maison3                     out_75 :
@ out_16 :                                       out_46 : Eclairage Maison4                     out_76 :
@ out_17 :                                       out_47 : Eclairage Maison5                     out_77 :
@ out_18 :                                       out_48 : Eclairage Maison6                     out_78 :
@ out_19 :                                       out_49 :                                       out_79 :
@
@ out_20 :                                       out_50 :
@ out_21 :                                       out_51 :
@ out_22 :                                       out_52 :
@ out_23 :                                       out_53 :
@ out_24 : X  Les sorties out_24 à 39            out_54 :
@ out_25 : X  sont utilisées par les leds        out_55 :
@ out_26 : X  et donc indisponibles en tant      out_56 :
@ out_27 : X  que sorties directes.              out_57 :
@ out_28 : X                                     out_58 :
@ out_29 : X                                     out_59 :
@
@
@
@
@ === Pense-bête pour les leds === : 
@ Les feux pour le train ont le (+) commun, les feux pour les automobiles ont le (-) communs. Ceci permet de récupérer les
@ leds 36 à 47 inutilisées par les feux ferroviaires, mais d'autre configurations sont possibles.
@
@ Feux train n°: 1         2         3         4         5         6         7         8         9        10        11        ?
@      rouge  led_00    led_01    led_02    led_03    led_04    led_05    led_06    led_07    led_08    led_09    led_10    led_11
@      jaune  led_12    led_13    led_14    led_15    led_16    led_17    led_18    led_19    led_20    led_21    led_22    led_23
@      vert   led_24    led_25    led_26    led_27    led_28    led_29    led_30    led_31    led_32    led_33    led_34    led_35
@
@ Feux routiers  1         2         ?         ?
@      rouge  led_36    led_39    led_42    led_45
@      jaune  led_37    led_40    led_43    led_46
@      vert   led_38    led_41    led_44    led_47
@
@ 
@ === Pense-bête pour les servos === :
@ srv_cmd_00 + srv_cmd_10 : Barrières de passage à niveau sur le canton n° 7
@ srv_cmd_01 + srv_cmd_11 :
@ srv_cmd_02 + srv_cmd_12 :
@ srv_cmd_03 + srv_cmd_13 : 
@ srv_cmd_04 + srv_cmd_14 :
@
@
@ === Pense-bête pour les variables === :
@ var_000 :                                         var_030 :                                      var_060 :                                          var_090 : 
@ var_001 :                                         var_031 :                                      var_061 :                                          var_091 : 
@ var_002 : Cmde éclairage aléatoire depuis le TCO  var_032 :                                      var_062 :                                          var_092 : 
@ var_003 : Calcul plage horaire éclairage          var_033 :                                      var_063 :                                          var_093 : 
@ var_004 : Cmde feux routiers orange clignotants   var_034 :                                      var_064 :                                          var_094 : 
@ var_005 : Cmde éclairage Gare depuis le TCO       var_035 :                                      var_065 :                                          var_095 : 
@ var_006 : Cmde éclairage Municipal depuis le TCO  var_036 :                                      var_066 :                                          var_096 : 
@ var_007 : Cmde éclairage Maison1 depuis le TCO    var_037 :                                      var_067 :                                          var_097 : 
@ var_008 : Cmde éclairage Maison2 depuis le TCO    var_038 :                                      var_068 :                                          var_098 : 
@ var_009 : Cmde éclairage Maison3 depuis le TCO    var_039 :                                      var_069 :                                          var_099 : 
@ var_010 : Cmde éclairage Maison4 depuis le TCO    var_040 :                                      var_070 :                                          var_100 : 
@ var_011 : Cmde éclairage Maison5 depuis le TCO    var_041 :                                      var_071 :                                          var_101 : 
@ var_012 : Cmde éclairage Maison6 depuis le TCO    var_042 :                                      var_072 :                                          var_102 : 
@ var_013 : Cmde variable éclairage global          var_043 :                                      var_073 :                                          var_103 : 
@ var_014 :                                         var_044 :                                      var_074 :                                          var_104 : 
@ var_015 :                                         var_045 :                                      var_075 :                                          var_105 : 
@ var_016 :                                         var_046 :                                      var_076 :                                          var_106 : 
@ var_017 :                                         var_047 :                                      var_077 :                                          var_107 : 
@ var_018 :                                         var_048 :                                      var_078 :                                          var_108 : 
@ var_019 :                                         var_049 :                                      var_079 :                                          var_109 : 
@ var_020 :                                         var_050 :                                      var_080 :                                          var_110 : 
@ var_021 :                                         var_051 :                                      var_081 :                                          var_111 : 
@ var_022 :                                         var_052 :                                      var_082 :                                          var_112 : 
@ var_023 :                                         var_053 :                                      var_083 :                                          var_113 : 
@ var_024 :                                         var_054 :                                      var_084 :                                          var_114 : 
@ var_025 :                                         var_055 :                                      var_085 :                                          var_115 : 
@ var_026 :                                         var_056 :                                      var_086 :                                          var_116 : 
@ var_027 :                                         var_057 :                                      var_087 :                                          var_117 : 
@ var_028 :                                         var_058 :                                      var_088 :                                          var_118 : 
@ var_029 :                                         var_059 :                                      var_089 :                                          var_119 : 

@ var_450 à _var499 : Cette liste de variable permet en simulant la présence d'un train sur un canton de tester le programme et les tables de vérités.
@ Pour ce mode soit actif, il faut mettre la variable 'var_45649' à 1. Ce mode et le forçage de la détection de canton peut se faire à partir de boutons poussoirs.
@ var_450 : Détection = 1 sur le canton n°00        @ var_462 : Détection = 1 sur le canton n°12        @ var_474 : Détection = 1 sur le canton n°24
@ var_451 : Détection = 1 sur le canton n°01        @ var_463 : Détection = 1 sur le canton n°13        @ var_475 : Détection = 1 sur le canton n°25
@ var_452 : Détection = 1 sur le canton n°02        @ var_464 : Détection = 1 sur le canton n°14        @ var_476 : Détection = 1 sur le canton n°26
@ var_453 : Détection = 1 sur le canton n°03        @ var_465 : Détection = 1 sur le canton n°15        @ var_477 : Détection = 1 sur le canton n°27
@ var_454 : Détection = 1 sur le canton n°04        @ var_466 : Détection = 1 sur le canton n°16        @ var_478 : Détection = 1 sur le canton n°28
@ var_455 : Détection = 1 sur le canton n°05        @ var_467 : Détection = 1 sur le canton n°17        @ var_479 : Détection = 1 sur le canton n°29
@ var_456 : Détection = 1 sur le canton n°06        @ var_468 : Détection = 1 sur le canton n°18        @ var_480 : Détection = 1 sur le canton n°30
@ var_457 : Détection = 1 sur le canton n°07        @ var_469 : Détection = 1 sur le canton n°19        @ var_481 : Détection = 1 sur le canton n°31
@ var_458 : Détection = 1 sur le canton n°08        @ var_470 : Détection = 1 sur le canton n°20
@ var_459 : Détection = 1 sur le canton n°09        @ var_471 : Détection = 1 sur le canton n°21        
@ var_460 : Détection = 1 sur le canton n°10        @ var_472 : Détection = 1 sur le canton n°22        
@ var_461 : Détection = 1 sur le canton n°11        @ var_473 : Détection = 1 sur le canton n°23        @ var_499 : Si = 1, ce mode débug est activé.




#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

@ Feux du carrefour routier.
@ 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 oranges clignotants de 101 à 199 = (par défaut prendre 105).
@ Quand l'horloge UTS est entre 23 et 6 heure, les feux passent en orange clignotant.
@ var_3=variable intermédiaire.


@   equ: l det_2 = led_cli_45
@   equ: l det_2 = led_45


    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

@ Mise en marche de l'éclairage des maisons 1 à 6 de manière pseudo-aléatoire depuis un interrupteur du TCO[1].
@ Possibilité de forcer l'éclairage par un interrupteur depuis le TCO.
    equ: l  special_var_11 x special_var_10 x special_var_9 a var_2 o var_7  = out_42
    equ: l  special_var_11 x special_var_9  x special_var_8 a var_2 o var_8  = out_43
    equ: l  special_var_11 x special_var_8  x special_var_7 a var_2 o var_9  = out_45
    equ: l  special_var_10 x special_var_9  x special_var_8 a var_2 o var_10 = out_46
    equ: l  special_var_10 x special_var_8  x special_var_7 a var_2 o var_11 = out_47
    equ: l  special_var_10 x special_var_7  x special_var_6 a var_2 o var_12 = out_48  

@ Deux vibreurs installés. Ils vibrent selon le canton en défaut (Voir section :tdv).
@   out_13 = Vibreur n° 1 - Est   = Pb captage sur un des cantons n° 0 3 4 6 7 8 9  11 12 14 15 
@   out_44 = Vibreur n° 2 - Ouest = Pb captage sur un des cantons n° 0 1 2 4 5 9 10 11 12 13
     equ: l  pb_capt_c_0 o pb_capt_c_3 o pb_capt_c_4 o pb_capt_c_6 o pb_capt_c_7 o pb_capt_c_8 o pb_capt_c_9  o pb_capt_c_11 o pb_capt_c_12 o pb_capt_c_14 o pb_capt_c_15 a vib_state a vib_on = out_13
     equ: l  pb_capt_c_0 o pb_capt_c_1 o pb_capt_c_2 o pb_capt_c_4 o pb_capt_c_5 o pb_capt_c_9 o pb_capt_c_10 o pb_capt_c_11 o pb_capt_c_12 o pb_capt_c_13 a vib_state a vib_on = out_44


@ Pour allumer tout l'éclairage var_13 = 1 => allumer tout
    equ: l var_13 =set out_42 =set out_43 =set out_45 =set out_46 =set out_47 =set out_48

@ Pour commander les aiguillages depuis un clavier de touches
    equ: l in_0  an in_19 a pos0_aig_0  =set aig_cmd_0
    equ: l in_0  a  in_19 a pos1_aig_0  =clr aig_cmd_0
    equ: l in_4  an in_19 a pos0_aig_1  =set aig_cmd_1
    equ: l in_4  a  in_19 a pos1_aig_1  =clr aig_cmd_1
    equ: l in_8  an in_19 a pos0_aig_2  =set aig_cmd_2
    equ: l in_8  a  in_19 a pos1_aig_2  =clr aig_cmd_2
    equ: l in_12 an in_19 a pos0_aig_3  =set aig_cmd_3
    equ: l in_12 a  in_19 a pos1_aig_3  =clr aig_cmd_3
    equ: l in_16 an in_19 a pos0_aig_4  =set aig_cmd_4
    equ: l in_16 a  in_19 a pos1_aig_4  =clr aig_cmd_4

    equ: l in_1  an in_19 a pos0_aig_5  =set aig_cmd_5
    equ: l in_1  a  in_19 a pos1_aig_5  =clr aig_cmd_5
    equ: l in_5  an in_19 a pos0_aig_6  =set aig_cmd_6
    equ: l in_5  a  in_19 a pos1_aig_6  =clr aig_cmd_6
    equ: l in_9  an in_19 a pos0_aig_7  =set aig_cmd_7
    equ: l in_9  a  in_19 a pos1_aig_7  =clr aig_cmd_7
    equ: l in_13 an in_19 a pos0_aig_8  =set aig_cmd_8
    equ: l in_13 a  in_19 a pos1_aig_8  =clr aig_cmd_8
    equ: l in_17 an in_19 a pos0_aig_9  =set aig_cmd_9
    equ: l in_17 a  in_19 a pos1_aig_9  =clr aig_cmd_9

    equ: l in_2  an in_19 a pos0_aig_10 =set aig_cmd_10
    equ: l in_2  a  in_19 a pos1_aig_10 =clr aig_cmd_10
    equ: l in_6  an in_19 a pos0_aig_11 =set aig_cmd_11
    equ: l in_6  a  in_19 a pos1_aig_11 =clr aig_cmd_11
    equ: l in_10 an in_19 a pos0_aig_12 =set aig_cmd_12
    equ: l in_10 a  in_19 a pos1_aig_12 =clr aig_cmd_12
    equ: l in_14 an in_19 a pos0_aig_13 =set aig_cmd_13
    equ: l in_14 a  in_19 a pos1_aig_13 =clr aig_cmd_13
    equ: l in_18 an in_19 a pos0_aig_14 =set aig_cmd_14
    equ: l in_18 a  in_19 a pos1_aig_14 =clr aig_cmd_14

    equ: l in_24 = arret_urg_on

	tdv:
		in: det_2 | out: led_cli_45 led_45 
		eq: 0         |         0      0
		eq: 1         |         1      1



	tdv:
		in:   det2_5 det2_6 det2_13 det2_14 det2_15 pos1_aig_6 pos1_aig_7 pos1_aig_8 pos1_aig_9 pos1_aig_13 pos1_aig_14 | out: led_0 led_12 led_24  @  Out = leds rouge, jaune et verte (feux entrée tunnel droite)
		eq:   x      x      x       x       x       x          x          x          0          x           0           |      0     1      0
		eq:   x      1      x       x       x       x          x          1          1          x           x           |      1     0      0
		eq:   x      x      x       x       x       1          x          1          1          x           x           |      1     0      0
		eq:   x      x      x       x       x       x          1          1          1          x           x           |      1     0      0
		eq:   1      0      x       x       x       0          0          1          1          x           x           |      0     1      0
		eq:   0      0      x       x       x       0          0          1          1          x           x           |      0     0      1
		eq:   x      x      x       x       1       x          x          0          1          x           x           |      1     0      0
		eq:   x      x      x       x       0       x          x          0          1          0           x           |      0     1      0
		eq:   x      x      1       x       0       x          x          0          1          1           x           |      0     1      0
		eq:   x      x      0       x       0       x          x          0          1          1           x           |      0     0      1
		eq:   x      x      x       1       x       x          x          x          0          x           1           |      1     0      0
		eq:   x      x      x       0       x       x          x          x          0          1           1           |      0     1      0
		eq:   x      x      1       0       x       x          x          x          0          0           1           |      0     1      0
		eq:   x      x      0       0       x       x          x          x          0          0           1           |      0     0      1

	tdv:
		in:   led_0 det2_7 pos1_aig_0 | out: led_1 led_13 led_25 @  Out = leds rouge, jaune et verte (feux voie n°0 à droite)
		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

	tdv:
		in:   det2_2 det2_3 det2_13 det2_14 det2_15 pos1_aig_4 pos1_aig_5 pos1_aig_13 | out: led_3 led_15 led_27 @  Out = leds rouge, jaune et verte (feux entrée tunnel gauche)
		eq:   x      x      x       x       x       0          0          x           |      0     1      0
		eq:   1      x      x       x       x       1          x          x           |      1     0      0
		eq:   0      1      x       x       x       1          x          x           |      0     1      0
		eq:   0      0      x       x       x       1          x          x           |      0     0      1
		eq:   x      x      1       x       x       0          1          x           |      1     0      0
		eq:   x      x      0       x       x       0          1          x           |      1     0      0
		eq:   x      x      0       1       x       0          1          0           |      0     1      0
		eq:   x      x      0       0       x       0          1          0           |      0     0      1
		eq:   x      x      0       x       1       0          1          1           |      0     1      0
		eq:   x      x      0       x       0       0          1          1           |      0     0      1

	tdv:
		in:   led_3 det2_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

	tdv:
		in:   det2_0 det2_1 det2_9 pos1_aig_2 pos1_aig_3 pos1_aig_4 | out: led_4 led_16 led_28 @  Out = leds rouge, jaune et verte (feux voie n°0 à gauche)
		eq:   x      x      x      x          x          0          |      1     0      0
		eq:   x      1      x      x          x          1          |      1     0      0
		eq:   1      0      x      x          0          1          |      0     1      0
		eq:   0      0      x      x          0          1          |      0     0      1
		eq:   x      0      x      0          1          1          |      0     1      0
		eq:   x      0      1      1          1          1          |      0     1      0
		eq:   x      0      0      1          1          1          |      0     0      1

	tdv:
		in:   det2_1 det2_10 det2_9 pos1_aig_1 pos1_aig_2 pos1_aig_3 | out: led_6 led_18 led_30 @  Out = leds rouge, jaune et verte (feux n°6 voie n°8 à droite)
		eq:   x      x       x      1          x          x          |      1     0      0
		eq:   x      x       1      x          x          x          |      1     0      0
		eq:   x      x       0      0          1          0          |      0     1      0
		eq:   1      x       0      0          1          1          |      0     1      0
		eq:   0      x       0      0          1          1          |      0     0      1
		eq:   x      1       0      0          0          x          |      0     1      0
		eq:   x      0       0      0          0          x          |      0     0      1

	tdv:
		in:   led_0 det2_7 det2_8 pos1_aig_1 pos1_aig_0 | out: led_7 led_19 led_31 @  Out = leds rouge, jaune et verte (feux n°7 voie n°9 à droite)
		eq:   x     x      1      0          x          |      1     0      0
		eq:   x     x      0      0          x          |      0     0      1
		eq:   x     x      x      1          0          |      1     0      0
		eq:   x     1      x      1          1          |      1     0      0
		eq:   1     0      x      1          1          |      0     1      0
		eq:   0     0      x      1          1          |      0     0      1

	tdv:
		in:   led_3 det2_1 det2_10 pos1_aig_2 pos1_aig_3 | out: led_8 led_20 led_32 @  Out = leds rouge, jaune et verte (feux n°8 voie n°9 à gauche)
		eq:   x     x      1       0          x          |      1     0      0
		eq:   x     x      0       0          x          |      0     0      1
		eq:   x     x      x       1          0          |      1     0      0
		eq:   x     1      x       1          1          |      1     0      0
		eq:   1     0      x       1          1          |      0     1      0
		eq:   0     0      x       1          1          |      0     0      1

	tdv:
		in:   det2_7 det2_8 det2_9 pos1_aig_2 pos1_aig_1 pos1_aig_0 | out: led_9 led_21 led_33 @  Out = leds rouge, jaune et verte (feux n°9 voie n°10 à gauche)
		eq:   x      x      x      1          x          x          |      1     0      0
		eq:   x      x      1      x          x          x          |      1     0      0
		eq:   x      x      0      0          1          0          |      0     1      0
		eq:   1      x      0      0          1          1          |      0     1      0
		eq:   0      x      0      0          1          1          |      0     0      1
		eq:   x      1      0      0          0          x          |      0     1      0
		eq:   x      0      0      0          0          x          |      0     0      1

	tdv:
		in:   det2_6 det2_7 det2_11 det2_12 pos1_aig_6 pos1_aig_7 pos1_aig_8 pos1_aig_9 pos1_aig_10 pos1_aig_11 | out: led_10 led_22 led_34 @  Out = leds rouge, jaune et verte (feux n°10 voie n°5)
		eq:   1      x      x       x       0          x          x          x          x           x           |      1      0      0
		eq:   0      x      x       x       0          1          x          x          x           x           |      0      1      0
		eq:   0      x      x       x       0          0          0          x          x           x           |      0      1      0
		eq:   0      x      x       x       0          0          0          x          x           x           |      0      1      0
		eq:   0      x      x       x       0          0          x          0          x           x           |      0      1      0
		eq:   0      1      x       x       0          0          1          1          x           x           |      0      1      0
		eq:   0      0      x       x       0          0          1          1          x           x           |      0      0      1
		eq:   x      x      1       x       1          x          x          x          x           x           |      1      0      0
		eq:   x      x      0       1       1          x          x          x          0           x           |      0      1      0
		eq:   x      x      0       0       1          x          x          x          0           x           |      0      0      1
		eq:   x      x      0       x       1          x          x          x          1           0           |      1      0      0
		eq:   x      x      0       x       1          x          x          x          1           1           |      0      0      1

    pulse0:12-16-2-8-20 out_22
    pulse1:4-16-2-8-20  out_20 
    pulse3:4-8-16-8-20  out_22 out_23
    pulse31:4-8-16-8-20 out_22


]
@    tdv:
@    init: set led_cli_11 
@          set led_cli_22  
@          set led_phase_22

@    tdv: 
@    on:   1
@    in:   det_9 | out: led_11 led_22
@    eq:   0     |      0      0
@    eq:   1     |      1      1

    @ou
    @l det_9 = led_11 = led_22

@    tdv:  
@    in:   det_6 det_7 pos0_aig_1 pos0_aig_0 | out: led_28 led_29 led_30 led_31 @ r rh j v
@    eq:   1     x     x          x          |      1      1      0      0 
@    eq:   x     x     0          x          |      1      1      0      0
@    eq:   x     x     x          0          |      1      1      0      0
@    eq:   0     1     1          1          |      0      0      1      0
@    eq:   0     0     1          1          |      0      0      0      1

@    pulse0:12-16-2-8-20 out_22
@    pulse1:4-16-2-8-20  out_20 
@    pulse3:4-8-16-8-20  out_22 out_23
@    pulse31:4-8-16-8-20 out_22

@ equ: l a o x = ln an on xn =set =clr det_0
@ equ: ln det_1 a det_2 o det_3 x det_4 an det_5 =set out_11 =clr out_12


---- aide ---- + ---- exemples ----  
--------- Syntax PULSE ----------
    pulse<0-31>:<tic_off>-<tic_on>-<tic_off2>-<tic_on2>-<tic_off3> [<var_out1>] [<var_out2>]

    ex:
    pulse0:12-16-2-8-20 io_out_22

---------- Syntax TDV ----------
    tdv:
    [on: <0|1>]
    [init: <set|clr> <var> ...]
    in: <var_in1> <var_in2> ... | out: <var_out1> <var_out2> ...
    eq: <val_in1> <val_in2> ... |      <val_out1> <val_out2> ...

    tdv:  
    in:   det_6 det_7 pos0_aig_1 pos0_aig_0 | out: led_28 led_29 led_30 led_31 @ r rh j v
    eq:   1     x     x          x          |      1      1      0      0 
    eq:   x     x     0          x          |      1      1      0      0
    eq:   x     x     x          0          |      1      1      0      0
    eq:   0     1     1          1          |      0      0      1      0
    eq:   0     0     1          1          |      0      0      0      1

    50 tdv max

---------- Syntaxe des EQUATIONS ----------
    equ: <op1> <var1> <op2> <var2> ...
 
    avec op
    l ln
    a an
    o on
    x xn
    =
    =set            attention de tout coller
    =clr            attention de tout coller
    = <var>=<val>   attention de coller var = val

    avec var
    <var0-1>
    <var0-255><==|<>|<=|>=|>|<><CST> attention de tout coller

    Exemple, affecte la valeur '5' à la variable 'var_25'5 si le test est positif. 
     equ: l var_5==10  =val var_25 5
     equ: l var_5<>10  =val var_25 5
     equ: l var_5>10   =val var_25 5
     equ: l var_5>=10  =val var_25 5
     equ: l var_5<10   =val var_25 5
     equ: l var_5<=10  =val var_25 5
    Il n'est pas possible de combiner ces tests numériques, comme ici : equ: l var_5==2 a var6==3 =val var_25 5 (ne fonctionne pas !).
    Par contre ceci fonctionne :  equ: l var_5<=10 a in_1 =val var_25 5  (Le premier test peut être numérique).


    ex:
    l can_0<20 a det_0 = out_3 = var=5 =set var1 =clr out_302
    l det_0 a det_1 = led_0

    pour désactiver une équation, la mettre en commentaire (avec @)


--- Nom des variables UTS V3.5b --- 

+----------------------+------+------+------+------+------+------+-------+-----+--------+-----+--------------------------------------------------------------------------------
|                      |Numéro|Numéro| carte| carte| carte| carte| Nombre| Raz | Valeur | Read| 
|                      | début|  fin |   0  |   1  |   2  |   3  |(ou xx)| auto|        |Write| 
+----------------------+------+------+------+------+------+------+-------+-----+--------+-----+--------------------------------------------------------------------------------
|det_xxx               |      |      | 00xx | 01xx | 02xx | 03xx | 4*16  |     | 0-1    |  R  | Détections sur cantons (ex det_0, det_15, det_315)
|in_xxx                |      |      | 04xx | 05xx | 06xx | 07xx | 4*80  |     | 0-1    |  R  | Entrées matricées  et directes
|can_xxx               |      |      | 08xx | 09xx | 10xx | 11xx | 4*5   |     | 0-255  |  R  | Valeurs des entrées analogiques
|out_xxx               |      |      | 12xx | 13xx | 14xx | 15xx | 4*80  | Oui | 0-1    |  W  | Sorties
|led_xxx               |      |      | 16xx | 17xx | 18xx | 19xx | 4*48  | Oui | 0-1    |  W  | Allumage leds
|led_cli_xxx           |      |      | 20xx | 21xx | 22xx | 23xx | 4*48  | Oui | 0-1    |  W  | Leds Mode clignotement
|led_phase_xxx         |      |      | 24xx | 25xx | 26xx | 27xx | 4*48  | Oui | 0-1    |  W  | leds Inversion de la phase du clignotement
|srv_pos_xxx           |      |      | 280x | 290x | 300x | 310x | 4*5   |     | 0-1023 |  W  | Position réel du servomoteur
|bal_cant_p_           |      |      | 32xx | 33xx | 34xx | 35xx | 4*16  |     | 0-1    |  R  | Bloc automatique - Canton bloqué dans le sens Plus
|bal_cant_m_           |      |      | 36xx | 37xx | 38xx | 39xx | 4*16  |     | 0-1    |  R  |Bloc automatique - Canton bloqué dans le sens Moins
|det2_xxx              |      |      | 40xx | 41xx | 42xx | 43xx | 4*16  |     | 0-1023 |  R  | Canton occupé, détection ou canton reservé par un déplacement (utile pour les feux)
|                      |      |      | 4400 | 45xx | 46xx | 47xx | 4*16  |     |        |     | !Libre!
|                      | 4800 | 4999 |      |      |      |      |  200  |     |        |     | !Libre!
+----------------------+------+------+------+------+------+------+-------+-----+--------+-----+--------------------------------------------------------------------------------
|aig_cmd_xxx           | 5000 | 5063 |      |      |      |      |   64  | Oui | 0-1    |  W  | Commandes des aiguillages
|pos0_aig_xxx          | 5100 | 5163 |      |      |      |      |   64  |     | 0-1    |  R  | Aiguillages en position 0
|pos1_aig_xxx          | 5200 | 5263 |      |      |      |      |   64  |     | 0-1    |  R  | Aiguillages en position 1
|var_xxx               | 5400 | 5911 |      |      |      |      |  512  | Oui | 0-1023 | R/W | Libre pour l’utilisateur. Si > 450 réservées au débug des cantons (voir doc)
|iti_start_xxx         | 6000 | 6049 |      |      |      |      |   50  | Oui | 0-1  Z*|  W  | Activation d’un itinéraire (*automatiquement remis à zéro après prise en compte)
|iti_stop_xxx          | 6100 | 6149 |      |      |      |      |   50  | Oui | 0-1  Z*|  W  | Désactivation d’un itinéraire (*automatiquement remis à zéro après prise en compte)
|iti_wait_xxx          | 6200 | 6249 |      |      |      |      |   50  |     | 0-1    |  R  | Itinéraire en attente
|iti_ok_xxx            | 6300 | 6349 |      |      |      |      |   50  |     | 0-1    |  R  | Itinéraire établit
|                      | 6400 | 6499 |      |      |      |      |   100 |     |        |     | !Libre!
+----------------------+------+------+------+------+------+------+-------+-----+--------+-----+--------------------------------------------------------------------------------
|depl_start_run_xxx    | 6500 | 6699 |      |      |      |      |  200  | Oui | 0-1  Z*| R/W | Lance un déplacement (*automatiquement remis à zéro après en fin de déplacement)
|depl_stop_xxx         | 6700 | 6899 |      |      |      |      |  200  | Oui | 0-1  Z*|  W  | Arrêt prématuré d’un déplacement (*automatiquement remis à zéro après prise en compte)
|garage_lock_cmd_xxx   | 6900 | 6915 |      |      |      |      |   16  | Oui | 0-1    |  W  | Commandes de verrouillage des garages
|garage_lock_status_xxx| 6950 | 6965 |      |      |      |      |   16  |     | 0-1    |  R  | Etats de verrouillage des garages
|vib_on                | 7000 |      |      |      |      |      |    1  | Oui | 0-1    |  W  | Activation du vibreur
|vib_state             | 7002 |      |      |      |      |      |    1  |     | 0-1    |  R  | Etat du vibreur
|screen_mode           | 7003 |      |      |      |      |      |    1  |     | 0-1    |  R  | Numéro d'écran affiché (1 à 7 = tco...)
+----------------------+------+------+------+------+------+------+-------+-----+--------+-----+--------------------------------------------------------------------------------
|srv_cmd_xxx           |      |      | 800x | 810x | 820x | 830x |  4*5  | Oui | 0-1023 |  W  | Consigne du servomoteur
|srv_cmd_xxx           |      |      | 801x | 811x | 821x | 831x |  4*5  | Oui | 0-1023 |  W  | Consigne de vitesse du servo = n° servo + 10.
|exe_xxx               | 8400 | 8499 |      |      |      |      |  100  | Oui | 0-1  Z*|  W  | Lance un programme,utile pour les sons (*automatiquement remis à zéro après prise en compte)
|pulse_cmd_xxx         | 8500 | 8531 |      |      |      |      |   32  | Oui | 0-1  Z*|  W  | Déclenchement d’une impulsion  (*automatiquement remis à zéro après prise en compte)
|pb_capt_c_xxx         |      |      | 86xx | 87xx | 88xx | 89xx |  4*16 |     | 0-1    |  R  | Problème de captage sur les cantons
|pb_capt_t_xxx         | 9000 | 9015 |      |      |      |      |   16  |     | 0-1    |  R  | Problème de captage sur les trains
|special_var_xxx       | 9100 | 9199 |      |      |      |      |  100  | Non | 0-1023 | R/W | Variables renseignées par UTS (Certaines variables peuvent être aussi en écriture)
|                      | 9200 | 9399 |      |      |      |      |  200  |     |        |     | !Libre!
|separe_               | 9400 | 9499 |      |      |      |      |  100  | Oui | 0-1 Z* | R/W |Separe les trains en locomotives -wagons
|regroupe_             | 9500 | 9599 |      |      |      |      |  100  | Oui | 0-1 Z* | R/W |Regroupe les locomotives -wagons en trains
|                      | 9600 | 9799 |      |      |      |      |  200  |     |        |     | !Libre!
|                      | 9800 | 9999 |      |      |      |      |  200  |     |        |     | !Libre!
+----------------------+------+------+------+------+------+------+-------+-----+--------+-----+--------------------------------------------------------------------------------

Pour afficher un écran particulier. screen_mode = 0 à 34
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, 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, aigauto1 = 36, aigauto1 = 37 balauto-vitmax1 = 38, balauto-vitmax1 = 39, balauto-halt1 = 40, balauto-halt2 = 41, 
balauto-cant1 = 42, balauto-cant2 = 43, balauto-cant3 = 44.


=====================================================================================================================
= exe:  Fichiers à exécuter 
=       100 commandes maximum de 200 caractères maximum.
=====================================================================================================================

#exe
[
   exe00: "Départ_TER_01.mp3"
   exe01: "C:\Program Files\VideoLAN\VLC\vlc.exe"
   exe02: "C:\Program Files\VideoLAN\VLC\vlc.exe"  "C:\Users\JL\Documents\Visual Studio 2013\Projects\Train_UTS_V3.7\Debug\Départ_TER_01.mp3"

]

---- aide ----
exe<0-99>: <"chemin du fichier à exécuter">
Sert la plupart du temps pour diffuser des sons, annonces ...

---- exemples ----
  exe00: "E:\projet\dev_c++\projet\train5\sons\sonnerie.wav"
  exe01: "E:\projet\dev_c++\projet\train5\sons\arreter_montagne.mp3"
  exe02: "E:\projet\dev_c++\projet\train5\sons\arreter_vert_de_conte.ogg"
  exe99: "wazzza.wma"

Placer un espace entre exe:XX et la commande.
Mettre la commande entre deux caractères ".
Dans la commande, les accents et espaces sont autorisés, mais le caractère " est interdit.



=====================================================================================================================
= vib:
=      Configuration du vibreur en cas de faux contacts
=====================================================================================================================
@
@ J'ai installé deux vibreurs à l'opposé l'un de l'autre sur le plateau. Ils Vibrent selon le canton en défaut (Voir section :tdv).
@   out_6 = Vibreur n° 1 - Est   = Pb captage sur un des cantons n° 0 3 4 6 7 8 9  11 12 14 15 
@   out_7 = Vibreur n° 2 - Ouest = Pb captage sur un des cantons n° 0 1 2 4 5 9 10 11 12 13
@   On activera le vibreur par une commande depuis le TCO.
@
#vib
[
   off
   time_before:15
   time_after:10
]

---- aide ----
 on              Active le vibreur au démarrage. (Il peut être désactivé par la suite avec l’écran du vibreur ou avec off).
 Time_before:xx  Indique la durée minimal du problème de détection nécessaire afin d’éviter les déclenchements intempestifs.
 Time_after:xx   Indique le temps durant lequel le vibreur doit continuer à fonctionner après contact rétablit. Exemple 10 tics = 10*0.08=0,8s.
 out:var_xx      Permet d’indiquer la sortie à activer si vous utiliser une sortie.
 out:!var_xx     Permet d’indiquer la sortie à désactiver si vous utiliser une sortie.

 Il est aussi possible de remplacer la sortie (ou la compléter) en utilisant une sortie 'pwm' de canton. 
 Dans ce cas il faut utiliser la directive 'out_pwm:xx,xx'  (out_pwm:<n°canton>,<vitesse>). 
 Pour info, si une sortie pwm est utilisée alors l’écran RS232 ne pourra pas modifier cette sortie. 
	
 Variables du vibreur
    La variable 'vib_on' permet d’activer ou de désactiver le vibreur.
    La variable 'vib_state' indique l’état du vibreur;

Il est également possible de faire vibrer seulement la partie du réseau incriminé en utilisant les variables 'pb_capt_c'
  Par exemple pour une section comprenant les cantons 8,10,13 et un vibreur sur la sortie 14, dans la section # tdv :
  l pb_capt_c_8 o pb_capt_c_10 o pb_capt_c_13 a vib_state = out_14

---- exemples ----
    on
    off
    time_before:15
    time_after:10
    out:out_21
    out:!out_21
    out_pwm:8,32