Dans cet exemple de notre circuit de modélisme ferroviaire, une balise est située à l’entrée d’une gare. Si les aiguillages sont positionnés pour permettre l’entrée sur la voie 2, ils devront être couplés à son signal.
La carte des voies montre les deux aiguillages, le signal et la balise concernés.
Voici comment doit fonctionner la balise :
- Voie libre (balise verte) lorsque l’aiguillage “PI-Dev-LH5” est en position droite.
- Freinage à vitesse minimale (balise orange) si l’aiguillage “PI-Dev-LH5” est à droite et “PI-Dev-LH4” à gauche, et que le signal “PI-Dev-SB2r” est rouge.
- Vitesse réduite (balise jaune) dans tous les autres cas.
Il semble évident que la balise aura besoin de trois déclencheurs, un pour chaque aiguillage “PI-Dev-LH4” et “PI-Dev-LH5”, ainsi que pour le signal. Les déclencheurs sont nommés de manière à inclure le nom de leur déclencheur respectif :
Les déclencheurs n’envoient la commande (“cmd”) à la balise que dans les cas où il n’y a pas de dépendance vis-à-vis de l’état des autres éléments impliqués. Pour tous les autres cas, une nouvelle fonction “AB3-fkt” a été ajoutée, qui décide comment la commande doit être envoyée.
Le déclencheur qui réagit à l’aiguillage “PI-Dev-LH5” donne donc la commande Voie libre (balise verte) lorsqu’il est en position droite (‘s’). Quand il est à droite (‘r’), il appelle la fonction “AB3-fkt” :
Le déclencheur qui réagit sur l’aiguillage “PI-Dev-LH4” donne donc l’instruction Vitesse réduite (balise jaune) lorsqu’il est en position droite (‘s’). Quand il est à gauche (‘l’), il appelle la fonction “AB3-fkt” :
Le déclencheur qui réagit au signal “PI-Dev-SB2r” appelle toujours la fonction “AB3-fkt” :
La magie se produit en réalité dans la fonction “AB3-ftk”. Elle utilise le truc que l’état d’un déclencheur est toujours la valeur de son déclencheur.
Donc, si l’aiguillage LH5 est mis à droite (‘r’), l’application CTC déclenche le déclencheur “AB3-on-LH5” et lui transmet la nouvelle valeur de l’aiguillage (‘r’). La valeur (l’état) du déclencheur est également mise à ‘r’. Cela permet à la fonction “AB3-fkt” de vérifier l’état des aiguillages “PI-Dev-LH4” et “PI-Dev-LH5” ainsi que du signal “PI-Dev-SB2r” et de donner la commande adéquate à la balise :