315 lines
13 KiB
Plaintext
315 lines
13 KiB
Plaintext
<!DOCTYPE html>
|
|
<html lang="fr">
|
|
<!-- Updated by Blorec Hervé le 2013-09-30-->
|
|
<head>
|
|
<!-- Copyright Bob Jacobsen 2008 -->
|
|
<title>JMRI: Simple Signal Logic</title>
|
|
<!--#include virtual="/help/fr/parts/Style.shtml" -->
|
|
</head>
|
|
|
|
<body>
|
|
<!--#include virtual="/help/fr/parts/Header_fr.shtml" -->
|
|
<div id="mBody">
|
|
<!--#include virtual="Sidebar.shtml" -->
|
|
<div id="mainContent">
|
|
<!-- Page Body -->
|
|
<h1>JMRI: Logique Simple Signal</h1>
|
|
|
|
<p class="subtitle">Informations générales sur la
|
|
logique utilisée pour la commande de signaux simples</p>
|
|
|
|
<div class="para">
|
|
<p>Cette page décrit la logique utilisée par le
|
|
panneau JMRI Simple Signal pour commandes les signaux .</p>
|
|
|
|
<p>Nous affichons le code réel, il n'y a donc aucune
|
|
ambiguïté sur ce qu'il fait. C'est à
|
|
partir des test de libération de JMRI 2.9.1.</p>
|
|
</div>
|
|
|
|
<div class="single">
|
|
<h2><a class="section">Sur le Canton Simple</a></h2>
|
|
|
|
<div class="para">
|
|
<a class="section"></a>
|
|
|
|
<p>Ce signal protège l'extrémité d'une
|
|
droite passant par le canton, sans aiguillage
|
|
signalé.</p>
|
|
</div>
|
|
|
|
<div class="para">
|
|
<div class="wide">
|
|
<pre class="code">
|
|
doSingleBlock () {
|
|
int = apparence SignalHead.GREEN;
|
|
int oldAppearance = ((SignalHead)outputs [0]) getAppearance ().;
|
|
// Cochez pour le jaune, jaune clignotant écrase le vert
|
|
if (protectWithFlashing & & fastestColor1 () == SignalHead.YELLOW)
|
|
aspect = SignalHead.FLASHYELLOW;
|
|
if (fastestColor1 () == SignalHead.RED | | fastestColor1 () == SignalHead.FLASHRED)
|
|
aspect = SignalHead.YELLOW;
|
|
|
|
// Si signal distant montrer exactement ce que le signal local fait
|
|
if (distantSignal)
|
|
aspect = fastestColor1 ();
|
|
|
|
// Si la vitesse limitée et vert, réduire au jaune
|
|
if (limitSpeed1)
|
|
aspect = slowerOf (apparence, SignalHead.YELLOW);
|
|
|
|
// Cochez rouge primordiale sur jaune ou vert
|
|
if (watchSensor1! = null & & watchSensor1.getBean (). getKnownState ()! Sensor.INACTIVE =)
|
|
aspect = SignalHead.RED;
|
|
if (watchSensor2! = null & & watchSensor2.getBean (). getKnownState ()! Sensor.INACTIVE =)
|
|
aspect = SignalHead.RED;
|
|
if (watchSensor3! = null & & watchSensor3.getBean (). getKnownState ()! Sensor.INACTIVE =)
|
|
aspect = SignalHead.RED,
|
|
if (watchSensor4! = null & & watchSensor4.getBean (). getKnownState ()! Sensor.INACTIVE =)
|
|
 aspect = SignalHead.RED;
|
|
|
|
// Cochez si le signal est maintenu, en forçant un aspect rouge par ce calcul
|
|
if (((SignalHead) sorties [0]). getHeld ())
|
|
aspect = SignalHead.RED;
|
|
|
|
// Gestion des feux d'approche
|
|
doApproach ();
|
|
// montrer Résultat si changé
|
|
if (apparence! oldAppearance =) {
|
|
((SignalHead) sorties [0]) setAppearance (apparence).;
|
|
if (log.isDebugEnabled ()) Log.DEBUG ("Change appearance of "+name+" to "+appearance";
|
|
}
|
|
}
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="trailmain">
|
|
<h2><a class="section">Sur la Branche Droite d'un
|
|
Aiguillage prit en Talon</a></h2>
|
|
|
|
<div class="para">
|
|
<a class="section"></a>
|
|
|
|
<p>Ce signal est le long de l'itinéraire principale
|
|
à travers un aiguillage, qui est définie comme
|
|
la direction prise par les trains lorsque l'aiguillage
|
|
est droit. C'est la protection de la partie mobile de
|
|
l'aiguillage de sorte que les trains s'arrêtent
|
|
avant de circuler à travers une série
|
|
d'aiguillages.</p>
|
|
</div>
|
|
|
|
<div class="para">
|
|
<div class="wide">
|
|
<pre class="code">
|
|
doTrailingMain void () {
|
|
int = apparence SignalHead.GREEN;
|
|
int oldAppearance = ((SignalHead) sorties [0]) getAppearance ().;
|
|
// Cochez pour le jaune, jaune clignotant supérieur au vert
|
|
if (protectWithFlashing & & fastestColor1 () == SignalHead.YELLOW)
|
|
aspect = SignalHead.FLASHYELLOW;
|
|
if (fastestColor1 () == SignalHead.RED | | fastestColor1 () == SignalHead.FLASHRED)
|
|
aspect = SignalHead.YELLOW;
|
|
|
|
// Si signal distant, montrer exactement ce que le signal distant fait
|
|
if (distantSignal)
|
|
aspect = fastestColor1 ();
|
|
|
|
// Si la vitesse limitée et vert, réduire au jaune
|
|
if (limitSpeed1)
|
|
aspect = slowerOf (apparence, SignalHead.YELLOW);
|
|
|
|
// cochez rouge primordiale sur jaune ou vert
|
|
if (watchSensor1! = null & & watchSensor1.getBean (). getKnownState ()! Sensor.INACTIVE =)
|
|
aspect = SignalHead.RED;
|
|
if (watchSensor2! = null & & watchSensor2.getBean (). getKnownState ()! Sensor.INACTIVE =)
|
|
aspect = SignalHead.RED;
|
|
if (watchSensor3! = null & & watchSensor3.getBean (). getKnownState ()! Sensor.INACTIVE =)
|
|
aspect = SignalHead.RED;
|
|
if (watchSensor4! = null & & watchSensor4.getBean (). getKnownState ()! Sensor.INACTIVE =)
|
|
aspect = SignalHead.RED;
|
|
|
|
if (watchTurnout! = null & & watchTurnout.getBean (). getKnownState ()! = Turnout.CLOSED)
|
|
            aspect = SignalHead.RED;
|
|
        if (watchTurnout! = null & & watchTurnout.getBean (). getCommandedState ()! = Turnout.CLOSED)
|
|
            aspect = SignalHead.RED;
|
|
|
|
        // cochezr si le signal est maintenu, en forçant un aspect rouge par ce calcul
|
|
        if (((SignalHead) sorties [0]). getHeld ())
|
|
            aspect = SignalHead.RED;
|
|
           Â
|
|
        // Gestion des feux d'approche
|
|
        doApproach ();
|
|
       Â
|
|
        // montrer Résultat si changé
|
|
        if (apparence! oldAppearance =) {
|
|
            ((SignalHead) sorties [0]) setAppearance (apparence).;
|
|
            if (log.isDebugEnabled ()) Log.DEBUG ("Change appearance of "+name+" to "+appearance);
|
|
        }
|
|
    }
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="traildiv">
|
|
<h2><a class="section">Sur Branche Déviée d'un
|
|
Aiguillage en Talon</a></h2>
|
|
|
|
<div class="para">
|
|
<a class="section"></a>
|
|
|
|
<p>Ce signal est le long de la voie déviée d'
|
|
un aiguillage, qui est définie comme la direction
|
|
prise par les trains lorsque l'aiguillage est défini
|
|
à "dévié». C'est la protection
|
|
de la partie mobile de l'aiguillage afin que les trains
|
|
s'arrêtent avant de traverser une série
|
|
d'aiguillages .</p>
|
|
</div>
|
|
|
|
<div class="para">
|
|
<div class="wide">
|
|
<pre class="code">
|
|
nulle doTrailingDiverging () {
|
|
int = apparence SignalHead.GREEN;
|
|
int oldAppearance = ((SignalHead) sorties [0]) getAppearance ().;
|
|
// Cochez pour le jaune, jaune clignotant primordiale sur le vert
|
|
if (protectWithFlashing & & fastestColor1 () == SignalHead.YELLOW)
|
|
aspect = SignalHead.FLASHYELLOW;
|
|
if (fastestColor1 () == SignalHead.RED | | fastestColor1 () == SignalHead.FLASHRED)
|
|
aspect = SignalHead.YELLOW;
|
|
|
|
// Si le signal est distant, montrer exactement ce que le signal distant fait
|
|
if (distantSignal)
|
|
aspect = fastestColor1 ();
|
|
|
|
// Si la vitesse limitée et vert, réduire au jaune
|
|
if (limitSpeed2)
|
|
aspect = slowerOf (apparence, SignalHead.YELLOW);
|
|
|
|
// cochez rouge primordiale sur jaune ou vert
|
|
if (watchSensor1! = null & & watchSensor1.getBean (). getKnownState ()! Sensor.INACTIVE =)
|
|
aspect = SignalHead.RED;
|
|
if (watchSensor2! = null & & watchSensor2.getBean (). getKnownState ()! Sensor.INACTIVE =)
|
|
aspect = SignalHead.RED;
|
|
if (watchSensor3! = null & & watchSensor3.getBean (). getKnownState ()! Sensor.INACTIVE =)
|
|
aspect = SignalHead.RED;
|
|
if (watchSensor4! = null & & watchSensor4.getBean (). getKnownState ()! Sensor.INACTIVE =)
|
|
aspect = SignalHead.RED;
|
|
|
|
if (watchTurnout! = null & & watchTurnout.getBean (). getKnownState ()! = Turnout.THROWN)
|
|
aspect = SignalHead.RED;
|
|
if (watchTurnout! = null & & watchTurnout.getBean (). getCommandedState ()! = Turnout.THROWN)
|
|
aspect = SignalHead.RED;
|
|
|
|
// cochez si le signal est maintenu, en forçant un aspect rouge par ce calcul
|
|
if (((SignalHead) sorties [0]). getHeld ())
|
|
aspect = SignalHead.RED;
|
|
|
|
// Gestion des feux d'approche
|
|
doApproach ();
|
|
|
|
// montrer Résultat si changé
|
|
if (apparence! oldAppearance =) {
|
|
((SignalHead) sorties [0]) setAppearance (apparence).;
|
|
if (log.isDebugEnabled ()) Log.DEBUG ("Change appearance of "+name+" to "+appearance");
|
|
}
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<h2><a class="section">Aiguillage en Pointe</a></h2>
|
|
|
|
<div class="para">
|
|
<a class="section"></a>
|
|
|
|
<p>Ce signal est pour protéger les sorties du talon
|
|
d'un aiguillage. Selon que l'aiguillage est dévié
|
|
ou direct, le train prend deux voies différentes, et
|
|
le signal doit protéger les différents cantons
|
|
suivants.</p>
|
|
</div>
|
|
|
|
<div class="para">
|
|
<div class="wide">
|
|
<pre class="code">
|
|
void doFacing() {
|
|
int appearance = SignalHead.GREEN;
|
|
int oldAppearance = ((SignalHead)outputs[0]).getAppearance();
|
|
|
|
// trouver l'apparence en aval, étant pessimiste, si nous ne sommes changepas sûrs de l'état
|
|
int s = SignalHead.GREEN;
|
|
if (watchTurnout!=null && watchTurnout.getBean().getKnownState() != Turnout.THROWN)
|
|
s = slowerOf(s, fastestColor1());
|
|
if (watchTurnout!=null && watchTurnout.getBean().getKnownState() != Turnout.CLOSED)
|
|
s = slowerOf(s, fastestColor2());
|
|
|
|
// cochez pour jaune, jaune clignotant primordiale sur le vert
|
|
if (protectWithFlashing && s==SignalHead.YELLOW)
|
|
appearance = SignalHead.FLASHYELLOW;
|
|
if (s==SignalHead.RED || s==SignalHead.FLASHRED)
|
|
appearance = SignalHead.YELLOW;change
|
|
// Si signal distant, montrer exactement ce que le signal local fait
|
|
if (distantSignal)
|
|
appearance = s;
|
|
|
|
// si vitesse limitée et vert ou jaune clignotant, réduire à jaune,
|
|
if (watchTurnout!=null && limitSpeed1 && watchTurnout.getBean().getKnownState()!=Turnout.THROWN)
|
|
appearance = slowerOf(appearance, SignalHead.YELLOW);
|
|
|
|
if (watchTurnout!=null && limitSpeed2 && watchTurnout.getBean().getKnownState()!=Turnout.CLOSED)
|
|
appearance = slowerOf(appearance, SignalHead.YELLOW);
|
|
change
|
|
|
|
// Cochez pour rouge primordiale sur jaune et vert
|
|
if (watchSensor1!=null && watchSensor1.getBean().getKnownState() != Sensor.INACTIVE)
|
|
appearance = SignalHead.RED;
|
|
if (watchSensor2!=null && watchSensor2.getBean().getKnownState() != Sensor.INACTIVE)
|
|
appearance = SignalHead.RED;
|
|
if (watchSensor3!=null && watchSensor3.getBean().getKnownState() != Sensor.INACTIVE)
|
|
appearance = SignalHead.RED;
|
|
if (watchSensor4!=null && watchSensor4.getBean().getKnownState() != Sensor.INACTIVE)
|
|
appearance = SignalHead.RED;
|
|
|
|
if ((watchTurnout!=null && watchTurnout.getBean().getKnownState() == Turnout.CLOSED)
|
|
&& ((watchedSensor1!=null && watchedSensor1.getBean().getKnownState() != Sensor.INACTIVE)))
|
|
appearance = SignalHead.RED;
|
|
if ((watchTurnout!=null && watchTurnout.getBean().getKnownState() == Turnout.CLOSED) && ((watchedSensor1Alt!=null && watchedSensor1Alt.getBean().getKnownState() != Sensor.INACTIVE)))
|
|
appearance = SignalHead.RED;
|
|
if ((watchTurnout!=null && watchTurnout.getBean().getKnownState() == Turnout.THROWN) && ((watchedSensor2!=null && watchedSensor2.getBean().getKnownState() != Sensor.INACTIVE)))
|
|
appearance = SignalHead.RED;
|
|
if ((watchTurnout!=null && watchTurnout.getBean().getKnownState() == Turnout.THROWN) && ((watchedSensor2Alt!=null && watchedSensor2Alt.getBean().getKnownState() != Sensor.INACTIVE)))
|
|
appearance = SignalHead.RED;
|
|
|
|
// vérifier si l'aiguillage est en mouvement, le cas échéant forcer au rouge
|
|
|
|
if (watchTurnout!=null && (watchTurnout.getBean().getKnownState() != watchTurnout.getBean().getCommandedState()) )
|
|
appearance = SignalHead.RED;
|
|
if (watchTurnout!=null && (watchTurnout.getBean().getKnownState() != Turnout.THROWN) && (watchTurnout.getBean().getKnownState() != Turnout.CLOSED) ) // checking for other states
|
|
appearance = SignalHead.RED;
|
|
|
|
// vérifiez si le signal est maintenu, forcer à l'aspect rouge par ce calcul
|
|
if (((SignalHead)outputs[0]).getHeld())
|
|
appearance = SignalHead.RED;
|
|
|
|
// gérer l'éclairage d'approche
|
|
doApproach();
|
|
change
|
|
// show result if changed
|
|
if (appearance != oldAppearance)
|
|
((SignalHead)outputs[0]).setAppearance(appearance);
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
|
|
<!--#include virtual="/help/fr/parts/Footer_fr.shtml" -->
|
|
</div>
|
|
</div>
|
|
<script src="/js/help.js"></script>
|
|
</body>
|
|
</html>
|