Jump to content
  • Sky
  • Blueberry
  • Slate
  • Blackcurrant
  • Watermelon
  • Strawberry
  • Orange
  • Banana
  • Apple
  • Emerald
  • Chocolate
  • Charcoal
JML

Signalisation SNCB

Recommended Posts

Spud    144

Salut,

 

Très intéressant tout cela, et vrai bien fait les signaux pour une première. B)

 

J'en connais qui sont intéressés par les gares d'Erquelinnes et de Quévy :P

 

Par contre je pense que les cibles des signaux mériteraient un tout petit peu plus d'épaisseur... sinon bon courage pour la suite...

 

Bye

Share this post


Link to post
Share on other sites
JML    19

Salut,

 

Très intéressant tout cela, et vrai bien fait les signaux pour une première. B)

 

J'en connais qui sont intéressés par les gares d'Erquelinnes et de Quévy :P

 

Par contre je pense que les cibles des signaux mériteraient un tout petit peu plus d'épaisseur... sinon bon courage pour la suite...

 

Bye

 

Bonsoir Spud,

 

En fait il manque les renforts verticaux au mat de signal, je pensais pouvoir les "sucrer", que ça ne se remarquerait pas, damned c'est raté!. la cible en elle même ce n'est qu'une bête tôle de 2mm d'épaisseur fixée sur des cornières en u ici elle fait 4 mm car j'avais des problèmes de "clignotements" face avant face arrière.

Grâce à l'aide de Bernard, ça avance pas mal pour le premier script il y a déjà un signal de block qui fonctionne conformément au modèle Vert, double jaune, vert/jaune vertical, rouge dans sa séquence il faut maintenant lui ajouter le chevron sur un lien bien défini dans ce cas ci le N°2, (troisième lien vu que le premier porte le N°0).

Edited by JML

Share this post


Link to post
Share on other sites
henrion    101

Bonjour

 

En lisant la documentation, le chevron est présenté lorsque l'on est dirigé sur une voie à contre sens. Il peut donc être présenté conjointement avec le feu rouge (à confirmer), l'avertissement ou la voie libre voire le jaune cli. Ce qui au point de vue script, multiplie le nombre d'états et de messages par deux.

 

En effet, par exemple, pour la voie libre il faudra un nom d'état vers la voie directe et un nom d'état différent vers la voie à contresens pour que la fonction SetLights comprenne qu'il faille afficher le V seulement vers la voie à contre-sens. Cela est valable pour chacune des possibilités de présentation des feux.

 

C'est faisable mais on est limité à 40 messages (TIV et PN inclus). Il faut donc bien réfléchir pour voir si l'ensemble de la signalisation belge permet cela. Sinon, il reste la solution de dissocier le V lumineux du signal et de le programmer comme un TIV d'exécution en le plaçant au-dessus du signal.

 

Bernard

Edited by henrion

Share this post


Link to post
Share on other sites
JML    19

Bonjour

 

En lisant la documentation, le chevron est présenté lorsque l'on est dirigé sur une voie à contre sens. Il peut donc être présenté conjointement avec le feu rouge (à confirmer), l'avertissement ou la voie libre voire le jaune cli. Ce qui au point de vue script, multiplie le nombre d'états et de messages par deux.

 

En effet, par exemple, pour la voie libre il faudra un nom d'état vers la voie directe et un nom d'état différent vers la voie à contresens pour que la fonction SetLights comprenne qu'il faille afficher le V seulement vers la voie à contre-sens. Cela est valable pour chacune des possibilités de présentation des feux.

 

C'est faisable mais on est limité à 40 messages (TIV et PN inclus). Il faut donc bien réfléchir pour voir si l'ensemble de la signalisation belge permet cela. Sinon, il reste la solution de dissocier le V lumineux du signal et de le programmer comme un TIV d'exécution en le plaçant au-dessus du signal.

 

Bernard

 

Bonjour Bernard, et bonjour à tous,

 

Le chevron indique que l'on passe du régime normal au régime de contrevoie ou inversement, il n'est jamais présenté conjointement au signal d'arrêt, il n'a aucune influence sur les autres signaux si ce n'est dans le cas ou la jonction est à vitesse réduite mais ce cas se régle au niveau du signal précédent qui affichera un vert/jaune horizontal avec restriction de vitesse. Les autres signaux ne sont pas influencés par le chevron, donc, à mon sens, pas besoins de message. J'ai modifié le script B13 comme suit

 

Déclaration d'une variable globale gSwitchChevron = false

dans la fonction OnJunctionStateChange en rapport avec le lien connecté(pour 1 voie pouvant être prise à contrevoie le lien 2) je fait passer gSwitchChevron = true dans les autres cas il reste (devient) false.

dans la fonction SetLight le chevron est allumé si gSwitchChevron = true.

 

En principe, on ne devrait pas rencontré de cas ou il faudrait plus de deux liens spécialisé chevrons ( Peut être Bruxelles midi ou 3 liens seraient nécessaires, mais je pense que le plan de voie ne le permet pas).

 

Le script B13 correspond parfaitement au grand signal combiné pouvant présenter Vert, Rouge, double jaunes et jaune-vert-vertical. Je l'ai testé à fond hier soir et ça fonctionne parfaitement. De plus ce script est très clair donc facilement adaptable.

Je voudrais ne pas modifier les message pour garder l'interaction correcte entre les signaux aux points frontières et ne pas avoir des affichages fantaisistes (comme c'est le cas sur Sambre & Meuse).

 

De plus Spud aura besoins des PN de Geluc, entre Jeumont et Erquelinnes il y en à plusieur dont un juste sur la frontière. ;)

 

 

Share this post


Link to post
Share on other sites
JML    19

Bonjour

 

Cut

 

La seule difficulté ne concerne que la signalisation italienne avec son ralentissement 100 où les feux clignotent alternativement au lieu de simultanément et là c'est à priori pas possible dans un même script.

 

Cut

 

En cas de difficulté, ne pas hésiter à me contacter.

 

Bernard

 

Bonjour Bernard, et bonjour à tous,

 

En cherchant le moyen de faire clignoter ce foutu vert dès le début, j'ai obtenu, par hazard, un clignotement alternatif en modifiant ta fonction update comme suit.

 

----------------------------------------------------------------------------------------------------------------

-- UPDATE

----------------------------------------------------------------------------------------------------------------

 

function Update (time)

 

 

if gFlashingLightActive then

 

if gFirstLightFlash then

 

gTimeSinceLastFlash = 0

gFirstLightFlash = false

gLightFlashOn = false

 

else

 

gTimeSinceLastFlash = gTimeSinceLastFlash + time

 

if (not gLightFlashOn) and gTimeSinceLastFlash >= LIGHT_FLASH_OFF_SECS then

 

for i, v in ipairs(gFlashingLight) do

Call ("ActivateNode", v, 1)

end --For

 

Call ( "ActivateNode", "mod_u", 0 ) --Pour clignotement alternatif

gLightFlashOn = true

gTimeSinceLastFlash = 0

 

end --if

 

if gLightFlashOn and gTimeSinceLastFlash >= LIGHT_FLASH_ON_SECS then

 

for i, v in ipairs(gFlashingLight) do

Call ("ActivateNode", v, 0)

end --for

 

Call ( "ActivateNode", "mod_u", 1 ) --Pour clignotement alternatif

gLightFlashOn = false

gTimeSinceLastFlash = 0

 

end --if

 

end --if

end --if

 

DefaultUpdate()

 

end --function Update

 

Dans ce cas le panneau indicateur de voie en impasse (le U) s'allume quand le feux clignotant s'éteint et s'éteint quand le feux s'allume. MAIS quand le feux est au vert (voie libre) ce U reste éteint ???

 

Suposition, quand le feux est au vert, tout se passe comme si le clignotement était désactivé par le moteur du jeux ou encore comme si quand le feux est au vert la fonction update n'est pas parcourue... :angry: trois jours que je tourne en rond la dessus :(

Edited by JML

Share this post


Link to post
Share on other sites
henrion    101

Bonjour

 

C'est intéressant le clignotement alternatif. Je note cela précieusement. Il faut dire que je ne me suis pas vraiment penché sur le problème.

 

Pour rendre un feu clignotant à l'initialisation, je n'y suis arrivé qu'en créant un état vertcli qui n'est utilisé qu'à l'initialisation comme je l'ai mis dans un post ci-dessus. Cela me semble pour l'instant la seule solution car il n'y a pas d'explication concrète sur la fonction clignotante dans la doc. Mais cela ne va pas résoudre ton problème car là ce n'est pas juste un problème d'initialisation.

 

En fait pour ton cas, je ne pense pas que modifier le clignotement du feu dans la fonction update soit nécessaire. Cela me semble utile uniquement lorsque deux feux différents doivent clignoter alternativement. Dans ton cas, il s'agit apparemment d'un seul feu. Donc le clignotement peut être directement géré dans la fonction SetLights().

 

Essaye de m'expliquer le fonctionnement de ton feu avec tous ses états et montre ta fonction setlights.

 

Bernard

Edited by henrion

Share this post


Link to post
Share on other sites
JML    19

Bonjour

 

C'est intéressant le clignotement alternatif. Je note cela précieusement. Il faut dire que je ne me suis pas vraiment penché sur le problème.

 

Pour rendre un feu clignotant à l'initialisation, je n'y suis arrivé qu'en créant un état vertcli qui n'est utilisé qu'à l'initialisation comme je l'ai mis dans un post ci-dessus. Cela me semble pour l'instant la seule solution car il n'y a pas d'explication concrète sur la fonction clignotante dans la doc. Mais cela ne va pas résoudre ton problème car là ce n'est pas juste un problème d'initialisation.

 

En fait pour ton cas, je ne pense pas que modifier le clignotement du feu dans la fonction update soit nécessaire. Cela me semble utile uniquement lorsque deux feux différents doivent clignoter alternativement. Dans ton cas, il s'agit apparemment d'un seul feu. Donc le clignotement peut être directement géré dans la fonction SetLights().

 

Essaye de m'expliquer le fonctionnement de ton feu avec tous ses états et montre ta fonction setlights.

 

Bernard

 

Bonjour Bernard,

 

Je triture le script dans tous les sens pour en comprendre le fonctionement en posant des balises (Je n'arrive pas à afficher quelque chose dans LogMate), et mes conclusions actuelles sont: Primo que le clignotement n'est pas une fonction du jeu mais est gérée par la fonction Update(time). Secondo Quand le feux affiche vert, la fonction Update(Time) n'est pas parcourrue. [/color].

 

Le script sur lequel je me suis basé pour mes "études" est le script B13 que tu m'as envoyé. J'y ai aporté quelques petites modifications pour affiché le Chevron si le lien 2 est connecté. En voie normale ce script correspond parfaitement au signal combiné "Avertisseur courte section" + Signal de block avec chevron.

la séquence de feux est Vert, Rouge, double Jaune, Vert jaune vertical ( VJV ), Vert. Le problème à résoudre est simple, les feux rouges, vert , VJH, et double jaune doivent clignoter en permanence sur le signal de contrevoie. Actuellement tous les feux clignotent sauf le vert. Quand le feux est au vert la fonction

Update(time) n'est pas parcourrue (Preuve: Le panneau U activé dans la fonction Update(Time), comme balise, ne s'affiche pas avec le vert mais bien dans tous les autres cas. Je joint le script modifié à ce message

 

 

 

[attachmentid=2663]

Script5etatsCV.zip

Share this post


Link to post
Share on other sites
henrion    101

Bonjour

 

Je t'ai envoyé par mail un script très légèrement modifié. Regarde si cela marche.

 

Bernard

Share this post


Link to post
Share on other sites
JML    19

Bonjour

 

Je t'ai envoyé par mail un script très légèrement modifié. Regarde si cela marche.

 

Bernard

 

Bonsoir Bernard,

 

A l'initialisation tout est allumé en fixe (les deux Jaunes, le vert, le rouge le blanc et le chevron.

Après le passage d'un train, quand le signal revient au vert le clignotement se fait. Mais si j'active une autre ampoule dans Setlights VERTCli, celle ci ne s'active pas mais le "U" balise clignotte bien alternativement ce qui confirme bien le passage dans Update(Time).

Par contre si je remet l'ampoule blanche à 1 dans SetLigts VERT et que je la remet à 0 dans Setlights VERTCli, l'ampoule blanche s'allume et l'ampoule verte clignotte :blink: .

Que se passe t'il si je n'active aucune ampoule dans SetLigts VERT? Le comportement ne change pas. sauf pour le blanc qui maintenant est à 0 partout et donc ne s'allume pas.

Si je remet egalement l'ampoule verte à 0 dans SetLigts VERTCli, là non plus le comportement ne change pas, c'est donc bien la fonction Update(time) qui provoque le clignotement en fonction des variables gFlashingLightActive = true, gFlashingLight = { "mod_vert" }, gFirstLightFlash = true. Je reste perplexe face à ces constatations. :huh:

Edited by JML

Share this post


Link to post
Share on other sites
henrion    101

Bonsoir

 

Là malheureusement je ne peux pas t'en dire plus pour l'instant.

 

Il m'est venu une petite idée sur la fonction update() qui gère le clignotement mais il faut que je vérifie cela demain.

 

Bernard

Share this post


Link to post
Share on other sites
JML    19

Bonsoir

 

Là malheureusement je ne peux pas t'en dire plus pour l'instant.

 

Il m'est venu une petite idée sur la fonction update() qui gère le clignotement mais il faut que je vérifie cela demain.

 

Bernard

 

J'ai trouvé une solution, qui semble donné entière satisfaction, je continue quelques essais et ensuite j'explique. En gros c'est "Puisque je ne peux pas empècher les différents feux de s'allumer à l'initialisation, je les éteins. En block pur ça fonctionne je vais vérifier maintenant sur les aiguillages mais à priori c'est tout bon.

Share this post


Link to post
Share on other sites
JML    19

J'ai trouvé une solution, qui semble donné entière satisfaction, je continue quelques essais et ensuite j'explique. En gros c'est "Puisque je ne peux pas empècher les différents feux de s'allumer à l'initialisation, je les éteinds. En block pur ça fonctionne je vais vérifier maintenant sur les aiguillages mais à priori c'est tout bon.

 

Effectivement, c'est tout bon

 

En éteignant les lampes qui sont allumées erronément par le programme, le signal affiche maintenant un superbe vert clignotant dès le départ, mais par contre le chevron lui ne s'initialise pas correctement. Le problème etant maintenant identifier, j'ai contourné le bug en modifiant la fonction DefaultUpdate comme suit.

 

----------------------------------------------------------------------------------------------------------------

-- DEFAULT UPDATE

----------------------------------------------------------------------------------------------------------------

 

function DefaultUpdate( time )

 

gInitialised = true

 

if gLinkCount > 1 then

 

OnJunctionStateChange( 0, "", 1, 0 )

 

end --if

 

if gSignalState == SIGNAL_VERT then

 

SetState(SIGNAL_VERTcli) -- J'eteint tous les feux qui sont allumé lors de l'initialisation

 

Call ( "ActivateNode", "mod_vert", 0 )

Call ( "ActivateNode", "mod_jaune_haut", 0 )

Call ( "ActivateNode", "mod_jaune_bas", 0 )

Call ( "ActivateNode", "mod_rouge", 0 )

Call ( "ActivateNode", "mod_blanc", 0 )

Call ( "ActivateNode", "mod_u", 0 )

gFlashingLightActive = true

gFlashingLight = { "mod_vert" }

gFirstLightFlash = true

OnJunctionStateChange() --Je simule un changement d'aiguillage si ceci n'est pas fait le chevron ne s'initialise pas correctement

OnConsistPass() -- Je simule le passage d'un train si ceci n'est pas fait le chevron ne s'initialise pas correctement

if gSwitch_Chevron then

 

Call ( "ActivateNode", "mod_chevron", 1 )

 

else

 

Call ( "ActivateNode", "mod_chevron", 0 )

 

end --if

 

end --if

 

end --function DefaultUpdate

 

Avec ce code le chevron s'afficheraits à l'initialisation sur un signal de block sans voie déviée, mais si il n'y a pas de voie déviée il n'y a pas de chevron donc le problème ne se pose pas. Ce n'est pas très propre comme solution, mais ça fonctionne.

 

Un des cas les plus compliqués est résolu, je vais pouvoir avancé ...

Edited by JML

Share this post


Link to post
Share on other sites
clopperken    0

Bonjour,

 

Car j'habite en Belgique, je suis intéressé à savoir si vous avez eu d'avancement sur ce sujet , la signalisation belge avec les feux illuminés?

 

slts

Share this post


Link to post
Share on other sites
GertMeering    7

Salut, je suis originaire des pays-bas, mais suis intéressé par les signaux de la SNCB... Vous travaillez toujours sur elle, ou est le projet calme.

Salutations de pays-bas

 

PS: toutes mes excuses pour mon mauvais Français

Share this post


Link to post
Share on other sites
GertMeering    7

Hoi, ik wil echt. Of project

om een nieuw project te starten.
Of werken samen om dit project af te ronden tot een succes.

Mijn vraag is of er interesse in hebben, en als er mensen bereid om te helpen.

 

ebqi.jpg

Edited by GertMeering

Share this post


Link to post
Share on other sites
jibeh    4,522

Comme il ne doit pas y avoir beaucoup de membres ici qui comprennent le néerlandais,

j'improvise un petite traduction de notre nouveau membre GertMeering (du moins c'est l'esprit de sa question.)

 

"j'aimerais réellement, ou projet (!)

Pour commencer un nouveau projet

Pour travailler ensemble sur ce projet, pour le clôturer avec succès

Ma question est: existe-t-il des personnes intéressées et prêtes à aider "

 

(@ Gert, veel leden begrijpen liever Engels hier)

Share this post


Link to post
Share on other sites
GertMeering    7

Allright , then i will try to typ Englisch.

 

I tried to translate Dutch to France with Google translate , but it isnt always right.

Sorry for that.

 

But thank you , for translate it..

 

Greetz Gert

Edited by GertMeering

Share this post


Link to post
Share on other sites
ipmano    16

Salut,

 

Il y a un Gert qui travaille chez Alstom Charleroi, ce ne serait pas toi ?

Share this post


Link to post
Share on other sites
nono8190    0

Bonjour je remonte le topic car j'ai télécharger les signaux SNCB, et je remercie JML pour son travail :) , et donc les signaux lumineux ou en sont-il?, Tien nous au courant JML, a+nono8190 B)

Share this post


Link to post
Share on other sites

×