9- l'affichage de la position du train: trois conditions IF et ELSE


L'exemple précédent , la manette de train, était relativement simple, le train est rentré ou sorti. Une seule condition IF et ELSE était attachée à la variable.

 

Nous avons préparé les variables 020 à 022 concernant les diodes LED d'affichage de la position du train, nous allons maintenant nous en servir.

 

Nous ajouterons maintenant une commande indiquant que le train est en transit, commande liée à une diode rouge, mais sans création d'une nouvelle variable, l'état ne sera déterminé que par l'état des autres variables. Pour simplifier les choses, nous n'allons créer qu'une seule variable LED Rouge, et non un voyant par train. L'unique voyant "en transit" s'allumera lorsqu'un quelconque des trois trains sera en mouvement (c'est à dire que sa variable de position sera inférieure à 16383, mais supérieure à 0).

 

Nous aurons ainsi:

 

Var 0012 ou LEFT_GEAR_POS, position du train gauche ($0BF4) associée à Var 0020 ou LEFT_GEAR_LED, diode verte du train gauche, agissant sur la nouvelle variable Var 0025 ou GEAR_TRANS_LED du transit.

 

Var 0014 ou RIGHT_GEAR_POS, position du train droit ($0BF0) + Var 0022 ou RIGHT_GEAR_LED, diode verte du train droit, agissant également sur la variable Var 0025 ou GEAR_TRANS_LED du transit.

 

Var 0013 ou NOSE_GEAR_POS, position du train avant ($0BEC) + Var 0021ou NOSE_GEAR_LED, diode verte du train avant, agissant sur la variable Var 0025 ou GEAR_TRANS_LED du transit.

 

Il nous reste à créer la variable 0025 GEAR_TRANS_LED.

 

Définition de ce qu'on veut obtenir, pour le train avant:

en langage courant
traduction
en langage courant
traduction
en langage courant
traduction
Si
IF


   
le train avant est sorti,
NOSE_GEAR_POS
         =16383




la sortie OUT de la
Master est active
NOSE_GEAR_LED
          =1




ET la diode transit est
éteinte
GEAR_TRANS_LED
          =0




autrement,
ELSE






Si
IF




la position du train
avant est plus grande
ou égale à 1, (le train
est entre 0=rentré et
16383=sorti
NOSE_GEAR_POS
         >=1




la sortie OUT de la
Master est inactive
NOSE_GEAR_LED
           =0




et la diode de transit est allumée
GEAR_TRANS_LED
            =1




autrement,
ELSE






Si
IF




le train avant est rentré
NOSE_GEAR_POS
           +0




la sortie Out de la Master est éteinte
NOSE_GEAR_LED
           =0




et la diode de transit est éteinte
GEAR_TRANS_LED
           =0


ce qui fait trois conditions IF, d'où un décalage de l'arborescence à chaque fois qu'une condition nouvelle est exposée, décalage symbolisé sur le tableau ci-dessus par un changement de colonnes.

 

On remarque qu'on peut avoir plusieurs ASSIGN sous un même IF. Bien noter surtout que à un IF correspond un ELSE (mais ce n'est pas obligatoire), et que le ELSE est aligné avec son IF. D'ailleurs, en cas d'erreur, Config SIOC ne veut pas aller plus loin.

 

Pour ajouter plusieurs attributions (Assign) à la suite, il suffit de faire plusieurs fois un clic droit sur la condition IF, et de choisir les ASSIGN nécessaires.

 

Transposons donc dans les commandes SIOC les fonctions définies par le tableau ci-dessus.

 

Voila ce que cela donne dans Config SIOC pour le train avant:

Il n'y a plus qu'à faire la même chose pour les variables de position train droit et gauche.

 

Au premier abord cela peut paraître assez complexe, mais quand on a bien compris cela, tout le reste de SIOC devient limpide...

 

Qu'est-ce que cela donnerait en mode texte ? Cliquez sur File / Export to TXT, choisissez le nom essai_1.txt et enregistrez.

 

Nota: nous avons utilisé dans cet exemple des signes comme >=, ce sont des "opérateurs logiques". Vous en trouverez le détail un peu plus loin.

 

 Enregistrez ce nouveau sioc.ssi et essayez-le dans FS/P3D (en faisant RELOAD dans SIOC) . C'est magique !

 

Variante: on peut aussi dire des choses comme "SI l'inter de batterie est ON, ET SI le moteur 1 est en marche, ET SI la génératrice 1 est sur OFF, ALORS l'alarme de charge batterie est sur ON. Cela fait trois IF pour une seule assignation, et cela s'écrit en décalant d'un cran à chaque fois chaque condition vers la droite.


CHAPITRE SUIVANT: 10- qui commande ?