8- écriture: une commande de train avec IF et ELSE


Cet exemple va nous permettre de revoir les notions importantes exposées ci-dessus, et d'y ajouter la commande de LEDs de signalisation.

 

 Nous allons ajouter à notre fichier de test une variable pour le train d'atterrissage, et les diodes vertes associées.

 

Pour ajouter une nouvelle variable à la fin de la liste, il suffit de cliquer sur Edit / New Var. Nous nous proposons de donner le numéro 010 à notre nouvelle variable, par conséquent on va la mettre après la variable 0004. Cliquons sur le carré blanc, (flèche sur la capture ci-dessous), la page des paramètres apparaît:

Dans Link To, choisir: Fsuipc In/Out, Var num: 010, Name: GEAR, description Commande du train, Initial Value: on ne met rien, et en dessous ,VAR LINKED DATA, Var $0BE8 de longueur 4 pour l'offset de commande de train. OK . La variable de commande, toujours précédées de $, se trouve dans la liste de Peter Dowson (voir les documents chargés dans Modules avec FSUIPC).

Il serait souhaitable que le train soit sorti lorsqu'on démarre un vol, en principe au sol... Nous allons donc créer une variable d'initialisation, numéro 000, au dessus de la variable 001, avec Edit/Insert Var . Quand on choisit Insert, la nouvelle variable se place au dessus de la variable actuellement sélectionnée.

On a choisi NOT LINKED, Variable n° 000, nom "INI" ou "INIT" comme vous voulez , description "variable d'initialisation" , OK.

 

Nous allons maintenant mettre une commande dans cette variable, pour obliger la variable de train à avoir la valeur 16383 au démarrage de SIOC.


La ligne Var 000 étant sélectionnée, Edit, New Command, double clic dans le cadre d'icône, et dans la fenêtre des paramètres, Command/ Type : Assign pour attribuer une action, puis dans le cadre Assign, Var: choisir dans la liste déroulante la variable GEAR que nous venons de créer et lui donner une valeur = 16383, qui correspond à la valeur de l'offset $0BE8 quand le train est entièrement sorti. Ce qui donne:

Il nous faut maintenant définir des variables SIOC pour les fonctions suivantes:

 

- attribution d'une variable à l'interrupteur de la manette de train: Edit, New Var , numéro 011, nom "GEAR_SW" entrée 15 par exemple,

 

Nous voulons aussi qu'une LED verte s'allume quand chaque jambe de train est sortie. Cela sous-entend que nous connaissions la position de chaque jambe de train. Il y a des offsets FSUIPC pour cela, c'est le $0BF0, longueur 4, pour le train avant, le $0BF4 longueur 4 pour le train gauche, et le $0BEC longueur 4 pour le train droit.

 

Nous allons donc créer 3 variables supplémentaires, vous connaissez la procédure: Edit/New var, etc...

 

et bien entendu, nous allons créer 3 nouvelles variables également, pour les LEDs cette fois, qui seront connectées à une sortie de la carte Master (Link to: IOCard Output)

 

Ce qui donne:

Vous remarquerez au passage que si vous oubliez d'indiquer le n° de sortie de la carte Master, ou si vous voulez donner le même numéro à deux variables, la fenêtre refusera de se fermer. Des sécurités de ce genre sont nombreuses dans ce mode d'enregistrement d'un fichier .ssi, et c'est une raison majeure pour le préférer à l'enregistrement direct sous forme de texte. Par contre, vous pouvez enregistrer deux fois la sortie 36 par exemple, il est tout à fait possible de commander une même LED par deux variables différentes.

 

Bon, maintenant il nous faut ajouter des commandes à ces nouvelles variables. Occupons nous d'abord de la variable 0011 ou GEAR_SW, la manette de train.

 

Que voulons-nous ? Un petit tableau pour clarifier:

en langage courant
traduction
 Si  IF
l'interrupteur de train est fermé,
GEAR_SW=1
la variable $0BE8 sera égale à 16383  (train sorti)
GEAR=16383
autrement,
ELSE
la variable $0BE8 sera égale à 0 (train rentré)
GEAR=0


Passons à SIOC, attention aux clics :

 

1° sélectionner la ligne de la variable GEAR_SW

2° clic droit dessus et sélectionner New Command, et un nouveau carré d'icône est créé, dont l'arborescence en pointillés indique bien que la condition que nous allons entrer concerne la variable GEAR_SW

3° double clic gauche dans le cadre d'icône et on a la page Parameters:

4° dans cette page, case "Type", choisir CONDITION IF, puis dans le paragraphe CONDITION, aller chercher dans la première liste déroulante GEAR_SW, puis dans la case suivante, mettons = , et enfin dans la dernière case, taper 1 puis OK

 

Ceci est la première condition "si l'inter de train est fermé ".

 

5° sélectionner cette nouvelle ligne "IF GEAR_SW=1" et faites un clic DROIT dessus : un nouveau cadre d'icône est créé, et l'arborescence en pointillés indique cette fois que ce que nous allons ajouter concerne bien la ligne IF GEAR_SW=1 (important à vérifier), et non par exemple la ligne de la variable 0011 GEAR_SW

 

6° double clic sur le cadre d'icône, et choisir dans Type: ASSIGN et dans le paragraphe ASSIGN, aller chercher la GEAR et indiquer après = 16383

 

Nous avons écrit " si l'inter de train est sorti, la variable $0BE8 est égale à 16383"

 

Nous allons maintenant entrer la deuxième condition: ELSE. Cette condition est rattachée à la variable GEAR_SW, tout comme l'était la condition IF, c'est logique : si.... autrement.

 

7° sélectionner de nouveau la ligne de la variable GEAR_SW et faites un clic DROIT dessus: un nouveau cadre d'icône est créé, et l'arborescence en pointillés indique bien qu'il est relié à la variable GEAR_SW.

 

8° double clic sur le cadre d'icône, et choisir dans les paramètres CONDITION ELSE. Avec le paramètre ELSE on ne peut choisir aucune des cases de la fenêtre. Cliquons donc directement sur OK

 

9° clic DROIT sur ELSE et un nouveau cadre d'icône est créé, rattaché à ELSE

 

10° double clic dessus et choisir Type: ASSIGN , puis aller chercher dans la liste la variable GEAR et lui donner la valeur 0.

 

Nous avons écrit la deuxième partie de la phrase "autrement la variable $0BE8 sera égale à 0".

 

Ce genre de raisonnement, volontairement très détaillé ici, devient vite une habitude et la programmation est très rapide.

Nota: vous aurez remarqué dans les fenêtres de paramètres que le travail est bien préparé, quand une condition concerne une variable, la liste de toutes les variables créées dans votre .ssi figure dans une liste déroulante, il n'y a plus qu'à cliquer. De même pour les signes = ou > etc...

Par contre dans la case suivante, là où nous devons écrire 1, ou 0 ou n'importe quelle valeur numérique, il faut évidemment la taper nous-mêmes, SIOC ne peut pas deviner ... Les valeurs préparées, L0, L1, C1 etc... seront utilisées plus tard.

 

Enregistrez ces modifications au .ssi, relancez SIOC avec le bouton RELOAD, et essayez cette commande de train dans P3D.


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