inter panneau pilote


MIC Normal

 Pas de chance, celui-la ne correspond vraiment à rien sur notre cockpit …
Dans la réalité, cet interrupteur permet au pilote d’utiliser le micro incorporé au masque à oxygène lorsque celui-ci est en fonction.
Si quelqu’un a une idée de la manière de rendre réaliste cet inter …


Avionics

Met en marche ou éteint la plupart des instruments.
Le code SIOC:

Var 0402, name AVNCS_SW, Link IOCARD_SW, Input 10 // Inter Avionique
{
IF &AVNCS_SW = 1
{
&AVNCS = 1
}
ELSE
{
&AVNCS = 0
}
}

ou plus simplement:

Var 0402, name AVNCS_SW, Link IOCARD_SW, Input 1 // Inter Avionique
{
&AVNCS = &AVNCS_SW
}

Note 1: La variable de commande AVNCS « SUIT » l’état de la variable interrupteur AVNCS_SW. Cette commande est à mettre dans la variable interrupteur et non pas dans la variable AVNCS, car c’est l’interrupteur qui commande la variable et non l’inverse (voir tutorial SIOC « Qui commande ? « )
Note 2 : il est inutile de prévoir des subroutines pour les gauges « si avionique=1 , la gauge fonctionne », cette condition étant incluse dans toutes les gauges de Flight Simulator et P3D, sans avionique rien ne marche.


Inverter

Le sélecteur des convertisseurs (Inverter)
Le Beech 200 est équipé de deux convertisseurs, fournissant du courant alternatif 115 volts 400 Hz. Ce courant est indispensable sur le Beech 200 d’Aeroworx, en particulier pour faire fonctionner les gauges de mesure du couple des moteurs (Torque). Mais bien entendu, rien ne correspond à cela dans Flight Simulator ni P3D. Dans le cas de l’utilisation du Beech 200 d’Aeroworx, le mieux est de laisser l’Inverter sur ON, et d’enregistrer la situation de départ avec cette position… Dans le cas du Beech Duke, la variable L:var est disponible, il est facile de lui attribuer avec LINDA une commande Joystick, virtuel ou non.
Dans la réalité il y a deux convertisseurs, et pour répartir l’usure, on utilise le n°1 les jours impairs et le n°2 les jours pairs. Sur notre cockpit, on ne fait pas la différence, quand on clique sur l’interrupteur, c’est la même commande qui est envoyée.
L’interrupteur Inverter est un trois positions stables : ON OFF ON


Engine Auto Ignition

Les deux interrupteurs LEFT et RIGHT ENG AUTO IGNITION du panneau inférieur pilote ont deux positions : ARM et OFF.
L’auto-allumage intervient lorsque :
– l’inter correspondant est sur ARM
– et que le couple ou Torque du moteur est inférieur à 400 ft/lbs.
Dans ce cas, l’alarme verte L ou R IGNITION ON s’allume.
Les inters d’auto allumage doivent rester sur ARM du taxi à l’atterrissage.
On pourrait agir sur les variables 0892/092A (allumage des moteurs) en les faisant passer à la valeur 1 lorsque le torque diminue, mais alors le générateur correspondant est débranché (valeur 2 de ces variables). Il semble préférable de commander l’allumage des alarmes uniquement en fonction de l’inter Auto-Ignition et du Torque.
Le Torque est mesuré par $ 08F4 et $098C.
Le Torque maximum affiché est de l’ordre de 2000, il correspond à la valeur 16384 de la variable.
Par conséquent un Torque de 400 équivaudra à une valeur de variable de 3276.
Si on place ces conditions dans le script de l’interrupteur, le script interfère avec celui de l’allumage.
La solution est d’écrire une Subroutine définissant les conditions, et d’y faire appel par un CALL placé à la fois dans le script de l’interrupteur et dans celui du Torque.
La Subroutine , pour l’alarme moteur gauche:

Var 0301, name L_AUTO_IGNI, Link SUBRUTINE
{
IF &L_AUTO_IGNI_SW = 1
{
IF &L_ENG_TORQUE < 3276 // valeur pour torque=400
{
&L_IGNITION_LED = 1 // alarme verte L IGNITION ON
}
ELSE // si Torque >400
{
&L_IGNITION_LED = 0
}
}
ELSE // si switch=0
{
&L_IGNITION_LED = 0
}
}

Et, par exemple, la variable du Torque, avec son CALL :

Var 0048, name L_ENG_TORQUE, Link FSUIPC_INOUT, Offset $08F4, Length 4 // Couple du moteur gauche
{
ALL &L_AUTO_IGNI
}

Même CALL dans l’interrupteur
Il n’y a plus qu’à faire la même chose pour le moteur droit.


Battery Switch

C’est évidemment un des interrupteurs les plus importants. Son action a été détaillée dans le chapitre Electricité.
Il commande la variable $3102 et une collection de sub-routines, également détaillées au même chapitre:

Var 0001, name BATTERY, Link FSUIPC_INOUT, Offset $3102, Length 1, Value 0 // Commande Master Battery
{
&AC_DC_LED = &BATTERY
CALL &22_28_LEFT_LED // tension affichée bus gauche
CALL &22_28_R_LED
CALL &DISCHLED_TEST }


Gen 1 et Gen 2

Quand on donne la valeur 2 aux variables $0892 et $092A, le générateur correspondant est mis en marche.
Au niveau des interrupteurs GEN 1 et GEN 2, le code SIOC est tout simple:

Var 0428, name L_GEN_SW, Link IOCARD_SW, Input 7 // Inter générateur gauche
{
IF &L_GEN_SW = 1
{
&L_ENG_START = 2 // Géné 1 ON
}
}
Var 0429, name R_GEN_SW, Link IOCARD_SW, Input 8 // Inter générateur droit
{
IF &R_GEN_SW = 1
{
&R_ENG_START = 2 // Géné 2 ON
}
}

La mise en marche des génératrices a bien entendu une influence sur le réseau électrique et sur les alarmes jaunes L et R DC GEN (voir le chapitre Electricité. )


Ice Vane Extend

Les vannes anti-glace (fonction Delay ON et OFF)
Ces interrupteurs sont –sur notre dernière version- sur le panneau inférieur gauche pilote. Normalement, la sortie des volets anti-glace des moteurs (Ice Vanes) se fait électriquement, en mettant les interrupteurs ICE VANE sur EXTEND. Dès que l’interrupteur est sur EXTEND, les alarmes jaunes L ou R ICE VANE s’allument , ce sont en quelque sorte des alarmes de transit. Dans les 15 secondes, les vannes doivent être sorties entièrement, et alors les alarmes vertes L ou R ICE VANE EXT s’allument, avec un allumage légèrement différé, les vannes ne sortant pas nécessairement à la même vitesse, et les alarmes jaunes s’éteignent. Cette fonction nécessite 4 sorties Output.
Le code SIOC pour la vanne gauche:

Var 0908, name L_ICE_VANE // Volet anti-glace moteur gauche
{
IF &L_ICE_VANE = 1
{
&L_VANE_LED = 1 // Alarme jaune L ICE VANE en transit
&L_ICE_VANE_LED = DELAY 1 ,1500 // Allumage après 15s L ICE VANE EXT verte
&L_VANE_LED = DELAY 0 ,1600 // extinction de la jaune après 16 secondes
}
ELSE // si l’inter ICE VANE est sur OFF
{
&L_VANE_LED = 1 // jaune (transit) allumée
&L_ICE_VANE_LED = DELAY 0 ,1400 // la verte s’éteint après 14 sec
&L_VANE_LED = DELAY 0 ,1500 // la jaune s’éteint après 15 sec
}
}

La variable alarme jaune pourrait aussi être commandée par la fonction TIMER.
Ce qui signifie que lorsque les inters ou les poignées ICE VANE sdont activés, les voyants jaunes et verts sont allumés successivement. Les poignées sous le panneau inférieur pilote doublent les interrupteurs ICE VANE, et sont montées en parallèle.
Note 1 : normalement le fait de sortir les vannes anti-glace devrait se traduire par une augmentation de l’ITT et une diminution du Torque.
Note 2 : On sort les vannes lorsque la température OAT est inférieure à 5°C et qu’il y a des signes visibles d’humidité (nuages, pluie, neige …)


Parking Brake

Rien d’exceptionnel pour cette commande, la tirette Frein de Parking actionne un interrupteur à levier plastique installé derrière le tableau, le dit interrupteur commandant à la fois la variable $0BC8 et l’alarme jaune PARKING BRAKE.
Le code SIOC:

Var 0414, name PKG_BRK_SW, Link IOCARD_SW, Input 3 // Inter Parking Brake
{
IF &PKG_BRK_SW = 1
{
&PKG_BRK = 32767 // Frein de parking ON
&PKG_BRK_LED = 1 // Alarme jaune PARKING BRAKE
}
ELSE
{
&PKG_BRK = 0
&PKG_BRK_LED = 0
}
}


Engine Start

Les interrupteurs Engine Start, comme on s’en doute, permettent le démarrage des moteurs… Dans un premier temps, le moteur est mis en rotation, mais la mise sous tension des bougies d’allumage n’intervient pas immédiatement, elle ne se déclenche qu’après 5 secondes. Par contre, si l’interrupteur Engine Start est remis sur OFF (position centrale), l’arrêt de l’allumage est immédiat.
La position ON des interrupteurs est fugitive (ON) OFF (ON) , il faut donc maintenir l’interrupteur en position allumage jusqu’à ce que que N1 atteigne 10% minimum.
Code SIOC partiel pour l’inter Engine Start:

Var 0426, name R_ENG_START_SW, Link IOCARD_SW, Input 9 // Inter démarrage moteur droit (2)
{
IF &R_ENG_START_SW = 1
{
&R_ENG_START = 1 // Démarrage moteur droit
&R_IGNITION_LED = DELAY 1 ,500 // retard de 5 sec avant allumage
}
ELSE
{
&R_ENG_START = 0
&R_IGNITION_LED = 0 // alarme verte L IGNITION ON
}
}

Par la suite, on ajoutera les commandes concernant le voyant Fuel Transfer Pressure (panneau Fuel)
Sur le Beech réel, la séquence de démarrage normale est la suivante:
On démarre d’abord le moteur droit :
– Les deux manettes Fuel Condition sont sur CutOff
– Starter du moteur droit sur ON
-Attendre que N1 atteigne 10 % minimum
-Mettre la manette Fuel Condition droite sur LOW IDLE
– Quand N1 atteint 60%, relâcher l’inter de démarrage droit
-Vérifier que l’ITT revient dans la plage normale
– Mettre GEN 2 sur ON
– Vérifier sur l’Overhead que la GEN 2 charge bien
-Mettre GEN 2 sur OFF *
– Mettre la manette FuelCondition droite sur HIGH IDLE **
Démarrage du moteur gauche :
– Starter du moteur gauche sur ON
– Attendre que N1 atteigne 10 % minimum
– Mettre GEN 1 sur ON
– Mettre la manette Fuel Condition gauche sur LOW IDLE
-A 60% de N1, relâcher l’inter de démarrage gauche
-Vérifier que l’ITT revient dans la plage normale
-Mettre GEN 1 sur ON
-Mettre la manette Fuel Condition gauche sur LOW IDLE

* parce que la génératrice 1 peut griller le limiteur de courant des bus. Défaut corrigé sur les Beech 200 récents.
** pour que le moteur tourne plus vite, quand on remettra la GEN2 en marche lors du démarrage du n°1, un maximum de courant viendra épauler la batterie (fatiguée par le démarrage du 2 puis du 1)
Quand on remet les inters Engine Start sur Off, les voyants IGNITION ON s’éteignent et restent éteints tant que le Torque reste supérieur à 400 lbs.
L’allumage peut se remettre en marche automatiquement avec la fonction Auto Ignition En position « Starter Only », (interrupteur vers le bas), le démarreur va faire tourner le moteur, mais aucun allumage n’est possible.


Autofeather

La mise en drapeau automatique n’intervient qu’en cas de panne moteur. L’interrupteur AUTOFEATHER a trois positions : ARM, OFF et TEST. Il s’agit d’un inter ON OFF ON commun au moteur droit et au gauche.
L’opération de « feathering » ou mise en drapeau est assez complexe, et fait normalement intervenir 3 variables et une alarme.
Dans la réalité, pour qu’une hélice se mette automatiquement en drapeau en cas de panne moteur, il faut que les conditions suivantes soient réunies:
1° que l’interrupteur AutoFeather soit sur la position ARM (ON)
2° que le levier des gaz soit dans une position qui donne au moins 90% de N1
3° que le couple moteur ou Torque soit supérieur à 400
Dans ce cas, l’alarme L ou R AUTOFEATHER s’allume indiquant que le système est prêt ou « armé ».
Lorsque le moteur tombe en panne, en général le levier des gaz est dans la position >90%, ce n’est donc pas cet élément qui est déterminant. Par contre, quand le Torque s’écroule, les opérations se font en deux temps:
– tant que le Torque reste supérieur à 400 le système est désarmé, l’alarme verte s’éteint
– quand le Torque descend en dessous de 200, la mise en drapeau intervient. C’est alors la variable $0926 (valeur du pas d’hélice pour le moteur droit, $088E pour le gauche) qui intervient.
Un essai sur le Beech 200 d’Aeroworx montre que pour 90% des gaz on a un Torque d’environ 14745 (variables $08F4 et $09C8). En pratique, on peut oublier la condition « levier des gaz à plus de 90% » puisque dans tous les cas où le moteur fonctionne, au levier des gaz correspond un Torque déterminé. On ne retiendra donc que la condition de Torque.
La première étape « armer » se traduit par :
1° La création d’un script pour la variable $2E88 :

Var 0053, name AUTOFEATHER, Link FSUIPC_IN, Offset $2E88, Length 2 // Fonction Autofeather ON ou OFF

2° La variable interrupteur. Cette variable sera activée lorsque l’interrupteur AUTOFEATHER sera sur ARM. Cet inter est unique pour la droite et la gauche, il a pour seule fonction de préparer le système Autofeather sans distinction de moteur.

Var 0448, name AUTOFEATHER_SW, Link IOCARD_SW, Input 36 // Inter Auto Feather droite et gauche
{
IF &AUTOFEATHER_SW = 1 // position ARM
{
&AUTOFEATHER = 1 // Autofeather préparé.
}
}

3° Ensuite, on va s’occuper des alarmes vertes L et R AUTOFEATHER, et pour cela, la variable générale Autofeather va appeler deux sub-routines, qui n’ont pas pour but de provoquer la mise en drapeau, mais simplement de gèrer l’allumage des alarmes vertes et d’armer le système.

Var 0053, name AUTOFEATHER, Link FSUIPC_IN, Offset $2E88, Length 2 // Fonction Autofeather ON ou OFF
{
CALL &R_AUTOFEATHER
CALL &L_AUTOFEATHER
}

4° Voila les sub-routines en question:

Var 0309, name R_AUTOFEATHER, Link SUBRUTINE // Commande de l’ALARME R AUTOFEATHER
{
IF &AUTOFEATHER = 1 // Autofeather préparé
{
IF &R_ENG_TORQUE > 14745 // soit 90% de N1 moteur droit
{
&R_AUTOFEAT_LED = 1 // Alarme verte R AUTOFEATHER armé
}
ELSE // si le Torque est <90%
{
IF &R_ENG_TORQUE < 14745
{
&R_AUTOFEAT_LED = 0 // alarme éteinte
}
}
}
ELSE // inter Autofeather sur OFF
{
&R_AUTOFEAT_LED = 0
}
IF &R_AUTOFEAT_LED = 0 // alarme verte éteinte
{
IF &R_ENG_TORQUE < 3276 // Torque=400, valeur à ajuster
{
&R_PROP = -4096 // mise en drapeau
}
}
}
Var 0310, name L_AUTOFEATHER, Link SUBRUTINE // Commande de l’ALARME L AUTOFEATHER
{
IF &AUTOFEATHER = 1 // Autofeather préparé
{
IF &L_ENG_TORQUE > 14745 // soit 90% de N1 moteur gauche
{
&L_AUTOFEAT_LED = 1 // alarme verte L AUTOFEATHER armé
}
ELSE // si le Torque est <90%
{
IF &L_ENG_TORQUE < 14745
{
&L_AUTOFEAT_LED = 0 // alarme éteinte
}
}
}
ELSE
{
&L_AUTOFEAT_LED = 0
}
IF &L_AUTOFEAT_LED = 0
{
IF &L_ENG_TORQUE < 3276 // Torque=400,valeur à vérifier
{
&L_PROP = -4096 // mise en drapeau
}
}
}

 Comme on le voit, la même subroutine comprend une condition IF supplémentaire à la fin du script, qui définit, non plus l’allumage de l’alarme, mais la mise en drapeau effective, en agissant sur les variables « valeur du pas d’hélice ».
Ce n’est pas parfait, car si, effectivement, quand l’Autofeather est armé, si le Torque s’écroule, la mise en drapeau s’effectue bien, dans l’autre sens, si on n’a plus de Torque et que, ensuite, on arme l’Autofeather (c’est un peu tard…) la mise en drapeau ne se fait pas.
La position TEST de l’interrupteur n’est pas très utile : pour tester la fonction armer de l’Autofeather, au sol, il suffit de mettre l’inter sur ARM et de pousser les gaz à plus de 90%.
NOTE : l’Autofeather ne doit être armé que lors du décollage, l’approche et l’atterrissage. On le désarme en vol.
Et comment sort t’on d’un Autofeather ? En remettant le moteur en marche …


Prop Governor

Le Prop Governor est un dispositif assez complexe destiné à limiter la vitesse de rotation des hélices.
L’interrupteur Prop Governor a une position TEST, qui simule une sur-vitesse.
En pratique cela se traduit par un blocage de la vitesse maximum de rotation des hélices à environ 1850 tours/minute : quand on avance la manette des gaz à fond , le régime de l’hélice correspondante ne peut pas dépasser cette valeur. Quand on remet l’interrupteur sur OFF, le même réglage de gaz à fond donne le régime maximum soit environ 2080 tours/minute.
Plusieurs solutions SIOC sont sans doute possible, on peut agir sur la « mixture », peut être sur le Torque, si cette variable n’est pas en lecture seule, etc… Il faut faire attention à ne pas choisir comme critère de déclenchement une valeur qui varie en permanence, sinon SIOC n’arrête pas de travailler, la lecture de IOCP console par exemple est impossible, les chiffres changent plusieurs fois par seconde.
Le choix de la « mixture » (Condition Lever) n’est peut être pas mauvais, mais cela interfère avec les réglages de gaz, qui définissent une valeur, alors que, au même moment, l’inter Prop Governor en définit une autre.
Il faudrait sans doute définir des conditions avec des variables locales, de façon à changer la valeur de « butée » des leviers des gaz, comme cela a été fait pour définir les zones Beta et Reverses. Ou alors agir directement sur les valeurs des gaz en les limitant à 10 000 par exemple :
Si les gaz > 10000
Si l’inter Prop Governor est ON,
ASSIGN les gaz =10000
L’inter Prop Governor et la variable Engine Throttle $088C feraient appel à une Subroutine :

Var 0306, name PROP_GOVERNOR, Link SUBRUTINE
{
IF &PROP_GOV_SW = 1 // position TEST
{
IF &L_ENG_THROTTLE > 10000
{
&L_ENG_THROTTLE = 10000
}
}
}


Prop Sync

La synchro hélices ou Prop Sync

La synchronisation des hélices peut être une bonne chose pour les oreilles des passagers, mais c’est un système à manier avec précaution, car c’est également un danger potentiel pour l’avion.
Le but est en effet d’ajuster automatiquement la vitesse de rotation d’une hélice en fonction de la vitesse de l’autre, la « master ». S’il arrive que le moteur master tombe en panne, le régime de l’autre moteur va notablement diminuer. Pour cette raison, la synchro hélices ne doit jamais être enclenchée lors des phases critiques du vol: décollage, approche.
La programmation:
Il s’agit ici de la variable $2EC8, variable booléenne de longueur 1, la synchro est branchée ou ne l’est pas. Cette fonction commande l’alarme jaune PROP SYNC ON qui s’allume lorsque 1° la fonction Prop Sync est enclenchée et 2° le train est sorti (configuration dangereuse à l’atterrissage). Le code fait appel à une Subroutine, avec un CALL dans la variable de commande du train, et dans celle de la fonction Prop Sync. Ce qui donne :

Var 0317, name PROP_SYNC_ALRM, Link SUBRUTINE // Alarme jaune PROP SYNC ON
{
IF &PROP_SYNC = 1
{
IF &GEAR = 16383
{
&PROP_SYNC_LED = 1 // Alarme jaune
}
IF &GEAR = 0
{
&PROP_SYNC_LED = 0
}
}
ELSE // si inter Prop Sync OFF
{
&PROP_SYNC_LED = 0
}
}

Cet interrupteur, normalement sur le tableau principal, a été déplacé sur le panneau inférieur gauche pilote pour des facilités de câblage.


climatisation

Climatisation est un bien grand mot, il s’agit ici d’envoyer un agréable courant d’air sur le pilote. C’est le rôle de l’inter « Pilot Air ».
Les buses d’air orientables situées dans le plafond sont issues d’un avion réel.
Les ventilateurs d’ordinateur incorporés dans le plafond fonctionnent en 5 volts au lieu de 12 pour éviter un courant d’air trop violent. L’interrupteur « Pilot Air » commande cette alimentation. Normalement il s’agit d’une tirette, mais sur mon cockpit, il n’y a pas la place, à cause du manche CH situé derrière le panneau.


éclairages extérieurs

L’éclairage extérieur comprend les différents phares (variable LIGHTS $0D0C)
A chaque bit de cette variable correspond un phare.
Les phares d’atterrissage, les Beacon et les Strobes sont associés à une alarme verte
Le code SIOC fait appel à SETBIT pour la position ON et à CLEARBIT pour OFF.
Exemple pour les phares d’atterrissage :

Var 0416, name LDG_LIGHTS_SW, Link IOCARD_SW, Input 18 // Inter phares d’atterrissage
{
IF &LDG_LIGHTS_SW = 1
{
&LIGHTS = SETBIT 2
&LDG_LT_LED = 1 // Voyant Phares d’atterrissage ON
}
ELSE
{
&LIGHTS = CLEARBIT 2
&LDG_LT_LED = 0
}
}

Les NAV sont sur le même modèle, sans LED de confirmation . Les feux ICE, RECOGNITION et TAIL FLOOD, sans effet sur l’appareil de Aeroworx, sont inactifs. Par contre le bit 5 commandant l’éclairage des instruments est actif, on peut l’associer à l’interrupteur de batterie, pour que les instruments soient toujours éclairés au maximum de luminosité


train d’atterrissage

La position du train d’atterrissage est indiquée par les « trois vertes ». Lorsque le train est en transit, un voyant rouge s’allume. Ce voyant est normalement incorporé dans la manette de train, ce qui n’est pas le cas sur notre cockpit.
Si le train est rentré et que l’avion a une configuration de volets pour l’atterrissage, une alarme sonore retentit : inutile d’en prévoir la programmation SIOC, cette fonction est incorporée dans la gauge d’origine. Dans la réalité, il est possible d’arrêter cette alarme sonore en appuyant sur le poussoir WARN HORN SILENCE, ce qu’on ne peut pas faire dans FS : il faut corriger l’anomalie pour supprimer l’alarme.
Si on peut oublier l’alarme sonore, la visuelle par contre est intéressante.
L’activation de cette alarme est donc fonction des deux conditions suivantes :
– soit le train est en transit : détection de la position de chacune des trois jambes de train, c’est l’usage habituel du voyant « IN TRANSIT »,
– soit le train rentré, mais les volets sont sur Approche ou Landing : configuration « anormale » pour un atterrissage dans les règles, le même voyant s’allume également (sur notre cockpit…)
Les trois jambes de train ne se déplaçant pas à la même vitesse, un retard a été prévu (fonction DELAY) dans l’allumage des diodes vertes.
Sur l’avion réel, un blocage électro-magnétique de la manette de train empêche de la relever lorsque l’avion est au sol. Sur l’avion d’Aeroxorx comme sur beaucoup d’avions de FS, une alarme sonore retentit si on tente cette manœuvre, il n’y a rien à programmer de spécial.
Une manœuvre de sortie de secours du train est prévue : il s’agit d’un levier, situé le long du pedestal côté pilote. La procédure d’utilisation sera décrite dans le module de pannes.
La commande du train fait appel à la variable $0BE8
La position des jambes de train est analysée par les variables $0BEC, $0BF0 et $0BF4
Code pour les « trois vertes » :

Var 0019, name NOSE_GEAR_POS, Link FSUIPC_IN, Offset $0BEC, Length 4 // Position du train avant
{
IF &NOSE_GEAR_POS = 16383 {
&NOSE_GEAR_LED = 1
&GEAR_TRANS_LED = 0
}
ELSE
{
IF &NOSE_GEAR_POS >= 1
{
&NOSE_GEAR_LED = 0
&GEAR_TRANS_LED = 1
}
ELSE
{
IF &NOSE_GEAR_POS = 0
{
&NOSE_GEAR_LED = 0
&GEAR_TRANS_LED = 0
}
}
}
}
Var 0020, name RIGHT_GEAR_POS, Link FSUIPC_IN, Offset $0BF0, Length 4 // Position du train droit
{
IF &RIGHT_GEAR_POS = 16383
{
&GEAR_TRANS_LED = 0
&RIGHT_GEAR_LED = DELAY 1 ,40 (la valeur 40 est à ajuster comme on veut)
}
ELSE
{
IF &RIGHT_GEAR_POS >= 1
{
&RIGHT_GEAR_LED = 0
&GEAR_TRANS_LED = 1
ELSE
{
IF &RIGHT_GEAR_POS = 0
{
&RIGHT_GEAR_LED = 0
&GEAR_TRANS_LED = 0
}
}
}
}
Var 0021, name LEFT_GEAR_POS, Link FSUIPC_IN, Offset $0BF4, Length 4 // Position du train gauche
{
IF &LEFT_GEAR_POS = 16383
{
&GEAR_TRANS_LED = 0
&LEFT_GEAR_LED = DELAY 1 ,120 (valeur 120 à ajuster)
}
ELSE
{
IF &LEFT_GEAR_POS >= 1
{
&LEFT_GEAR_LED = 0
&GEAR_TRANS_LED = 1
}
ELSE
{
IF &LEFT_GEAR_POS = 0
{
&LEFT_GEAR_LED = 0
&GEAR_TRANS_LED = 0
}
}
}
}

Ces trois scripts définissent entre autres l’allumage de l’alarme rouge train en transit. Mais cette alarme s’allume également en cas de configuration d’atterrissage anormale :
Code pour la détection de configuration d’atterrissage anormale :
On peut simplifier légèrement en faisant la subroutine suivante :

Var 0330, name GEAR_ALARM, Link SUBRUTINE
{
IF &GEAR = &FLAPS // train ET volets UP, ou train ET volets DN
{
&GEAR_TRANS_LED = 0 // alarme de train éteinte
}
IF &GEAR <> &FLAPS // train UP ET flapsAPP ou DN, ou l’inverse
{
&GEAR_TRANS_LED = 1 // alarme ON
}
}

Ce script prévoit l’allumage de l’alarme si volets et train n’ont pas la même valeur, mais si le train =16383 (sorti) et les volets =8191 (position approche), ils n’ont pas la même valeur mais la configuration d’approche n’est pas vraiment anormale, on peut atterrir avec les volets au cran intermédiaire. Ce n’est donc pas tout à fait satisfaisant. Mais il s’agit d’une alarme visuelle et non sonore, donc à nuisance limitée, qui peut avoir l’avantage de rappeler au pilote que l’atterrissage doit se faire avec les volets sortis (16383 comme le train, et non 8191)
On peut sans doute faire mieux.
La réalisation mécanique de la manette de train peut être directement inspirée de celle de l’excellent site http://www.baron58.com/images/Gear_mechanism.png , mais cette disposition nécessite beaucoup de place à l’arrière du panneau. Dans mon cas, l’espace étant occupé par le manche CH placé à 35 mm derrière le panneau, la seule solution était de reprendre l’excellent système de Jean Claude Pinardon : un inter à blocage et une « roue » en plastique vissée sur le levier de l’inter : on tire pour déverrouiller, on relâche le ressort interne pour verrouiller. On ne peut donc pas installer un électro-aimant de blocage de la manette au sol, comme dans la réalité.
Les « trois vertes » et le voyant « IN TRANSIT » sont des voyants de couleur incorporant une LED blanche de 5 mm (3.2 V 20 mA) Le tout est branché sur 4 sorties Output de la carte Master, par l’intermédiaire de résistances de 220 Ohms. Le retour à la masse -5V se fait par un inverseur intitulé « DIM » dont une position, connectée à une résistance de 220 Ohms également diminue de moitié la luminosité , quand le voyant TRANSIT est seul allumé, ou quand les trois vertes sont allumées.
Schéma des LEDs du train :

Exemple d’un problème simple qui peut se résoudre de façon compliquée: le poussoir de test train.
Le panneau Train comporte en outre un bouton poussoir « LANDING GEAR TEST » . Ce poussoir doit allumer les 4 voyants de train pour vérifier leur bon fonctionnement.
Le problème est que ces voyants peuvent alors être commandés par deux sources différentes: soit par la voie normale: ils s’allument quand la variable de position des trains est égale à 16383, c’est à dire train sorti. Soit par le poussoir de Test .
Or le principe de SIOC veut que c’est toujours le dernier qui a parlé qui a raison.
Supposons que nous mettions le code suivant pour notre poussoir de test:

Var 0473, name LDG_GR_TEST_SW, Link IOCARD_SW, Input 15, Type P // Test des 4 LEDs train
{
IF &LDG_GR_TEST_SW = 1 // Poussoir LDG GEAR TEST
{
&NOSE_GEAR_LED = 1
&LEFT_GEAR_LED = 1
&RIGHT_GEAR_LED = 1
&GEAR_TRANS_LED = 1
}
ELSE
{
&NOSE_GEAR_LED = 0
&LEFT_GEAR_LED = 0
&RIGHT_GEAR_LED = 0
&GEAR_TRANS_LED = 0
}
}

Que se passe t’il en réalité dans ce cas ? Si les trois vertes sont allumées et qu’on pousse le bouton de Test, elles resteront allumées bien sûr, et le dernier voyant, TRANSIT, qui était éteint, va s’allumer. Et quand on va relâcher le poussoir de Test… les 4 voyants vont s’éteindre , y compris les trois vertes qui devraient rester allumées puisque le train est sorti.
La variable inter de Test est intervenue après la variable position de train, c’est elle qui a pris le dessus. Tant que la position des trains ne changera pas, les choses resteront en l’état.
Ce qui nous conduit à examiner les choses sous l’angle pratique.

Deux cas se présentent:
1°) L’avion est en l’air, train rentré, les trois vertes et le Transit sont éteints. Le poussoir de Test mis sur ON va allumer les 4 LEDs, puis sur OFF il les éteint. C’est le script ci-dessus.
2°) L’avion est au sol: dans ce cas, le train est sorti, les trois vertes sont allumées, pas besoin de les tester puisqu’on voit qu’elles fonctionnenent bien. Seul doit être testé le voyant Transit. Si on garde le script ci-dessus, tout s’éteint quand on relâche le bouton de Test: il ne faut tester ici QUE le voyant Transit.
Conclusion: il faut agir différemment si l’avion est au sol et si l’avion est en l’air, donc faire intervenir la variable $0366, intitulée chez moi ACFT_ON_GND (valeur 1 pour l’avion au sol et 0 pour l’avion en l’air.
Le script de Test des LEDs de train devient alors:

Var 0473, name LDG_GR_TEST_SW, Link IOCARD_SW, Input 15, Type P // Test des 4 LEDs train
{
IF &ACFT_ON_GND = 0 // quand l’avion est en l’air
{
IF &LDG_GR_TEST_SW = 1 // et quand le poussoir est sur ON
{
&NOSE_GEAR_LED = 1
&LEFT_GEAR_LED = 1
&RIGHT_GEAR_LED = 1
&GEAR_TRANS_LED = 1
}
ELSE // quand le poussoir est sur OFF
{
&NOSE_GEAR_LED = 0
&LEFT_GEAR_LED = 0
&RIGHT_GEAR_LED = 0
&GEAR_TRANS_LED = 0
}
}
ELSE // quand l’avion est au sol
{
IF &LDG_GR_TEST_SW = 1 // et que le poussoir est sur ON
{
&GEAR_TRANS_LED = 1
}
ELSE // quand le poussoir est sur OFF
{
&GEAR_TRANS_LED = 0
}
}

Remarque: la copie d’un programme SIOC en Texte dans une page Internet fait disparaître les décalages des parenthèses, on ne peut donc pas utiliser ces exemples de scripts directement par copier-coller.

Ce script du bouton de Test fonctionne parfaitement, à une nuance près: que se passe-t’il si on veut tester les voyants quand l’avion est en l’air train sorti ? On éteint les trois vertes bien entendu …
Alors restons pratiques: est-ce bien le moment de tester le train alors qu’il est déja sorti, et les trois vertes correctement allumées ? Le fonctionnement du voyant Transit importe peu dans ce cas… Et deuxième conclusion pratique: est-ce bien raisonnable de recourir à SIOC pour tester ces LEDs, alors qu’il suffirait d’utiliser le bouton poussoir pour envoyer momentanément du +5 Volts en amont des résistances des LEDs pour que tout s’allume… et revienne a l’état antérieur sans aucun programme, et en libérant au passage une entrée sur la carte Master. Le » tout SIOC » a parfois ses limites.


dégivrage pare-brise

Le réchauffage du pare-brise (clignotant ou TIMER)
Deux interrupteurs marqués WNDSHLD ANTI-ICE correspondent au dégivrage de la partie pilote ou de la partie co-pilote du pare-brise. Ces deux interrupteurs sont en fait sur notre avion branchés ensemble en parallèle.
Un régulateur associé contrôle les cycles de chauffage pour maintenir une température d’environ 35 à 40°C.
Une alarme d’avis verte marquée WSHLD DEICE s’allume lorsque le courant circule, et par conséquent suivra les cycles chauffage/arrêt.
L’allumage de l’alarme suivant les cycles de chauffage sera réalisé avec une temporisation : cycles de 15 secondes ON et 15 secondes OFF. C’est un clignotant, qui peut être adapté à toutes durées de clignotement pour d’autres applications.. Le code SIOC de cette temporisation
Selon le principe de la fonction TIMER, on commencera par créer l’interrupteur :

Var 0432, name WNDSHLD_HT_SW, Link IOCARD_SW, Input 25 // Inter réchauffage pare-brise

 puis une variable interne pour le clignotant:

Var 0900, name WNDSHLD_TIMER // Temporisateur pour chauff. pare-brise.

Lorsqu’on ferme l’interrupteur, le temporisateur dans un premier temps prend la valeur de départ 1:

IF &WNDSHLD_HT_SW = 1
{
&WNDSHLD_TIMER = 1 // valeur de démarrage

puis, immédiatement après, le temporisateur démarre avec les paramètres de la fonction TIMER:

{
&WNDSHLD_TIMER = TIMER 9999 ,1 ,1500
}

Si, par contre, l’interrupteur est ouvert, le temporisateur prend la valeur limite de 9999, et donc au cycle suivant la valeur 10000, et s’arrête.

ELSE
{
&WNDSHLD_TIMER = 9999
}

Il reste à créer la LED, en l’occurence ici l’alarme verte « WSHLD DEICE »

Var 0747, name WINDSHD_HT_LED, Link IOCARD_OUT, Output 37 // Alarme verte WSHLD DEICE

et ajoutons la fonction MOD à la variable qui commande, c’est à dire le temporisateur WSHLD_TIMER, pour définir que l’alarme s’allumera quand le temporisateur aura une valeur impaire, et s’éteindra quand il aura une valeur paire:

Var 0900, name WNDSHLD_TIMER // Temporisateur pour chauff pare-brise
{
L0 = MOD &WNDSHLD_TIMER ,2
IF L0 = 0
&WINDSHD_HT_LED = 0 // alarme éteinte
}
ELSE
{
&WINDSHD_HT_LED = 1 // alarme allumée
}
}


dégivrage hélices

Sur notre cockpit, ces interrupteurs ne sont pas branchés. Le seul effet possible serait de faire descendre le pourcentage de charge des générateurs, ou tout au moins la tension du bus, car le dégivrage des hélices consomme beaucoup de courant. C’est tout à fait réalisable avec SIOC, on verra cela un peu plus tard.


dégivrage ailes

Le dégivrage des ailes (fonction DELAY)
Sur la plupart des Beech 200
Les bords d’attaque des ailes et du stabilo sont munis de caoutchouc gonflable par l’air comprimé chaud fourni par les moteurs.
La plupart des Beech 200 ont une commande unique pour le dégivrage de ces éléments qui fonctionne de la manière suivante :
Lorsqu’on met l’interrupteur marqué « DEICE CYCLE » sur la position SINGLE (en haut) , le cycle de dégivrage commence par les ailes : le chauffage dure 6 secondes, puis s’éteint. A ce moment là commence le chauffage du stabilo, qui dure 4 secondes. Le cycle est alors terminé.
Si l’on met l’interrupteur « DEICE CYCLE » sur la position MANUAL, les ailes et le stabilo sont dégivrés en même temps, et cela dure tant que l’interrupteur n’a pas été remis au centre, en position OFF, mais il ne faut pas prolonger l’opération au-delà de 10 secondes environ.

 Sur les Beech 200 récents
–souvent équipés de l’avionique ProLine 21 ou Avidyne- , le dégivrage des ailes et du stabilo sont indépendants.
Le système de dégivrage est en fait le même que sur le BeechJet 400A. Notre avion est équipé de ce système, que nous allons décrire en détail.
Le groupe des inters « ICE PROTECTION » situé sur le panneau inférieur droit pilote comprend un interrupteur unique marqué WING DE-ICE.
Sur la première version de mon Beech 200, ce dégivrage était par erreur fusionné avec l’interrupteur « SURFACE DE-ICE » . Désormais, SURFACE DE-ICE devient STAB DE-ICE pour le dégivrage du stabilo, et les deux interrupteurs « FUEL VENT » sont remplacés par un interrupteur WING. Par la même occasion, le groupe des interrupteurs ENGINE DE-ICE situé sur le panneau inférieur gauche pilote disparaît, puisque cette fonction dégivrage moteur est entièrement automatique.
Une alarme verte marquée WING DEICE complète le système. Cette alarme s’allume lorsque la température du bord d’attaque atteint environ 60°C, elle s’éteint en dessous de cette température. Il ne s’agit donc pas d’un témoin lié à l’interrupteur, mais d’une alarme liée à un capteur de température. Les alarmes vertes sont des avis, aucune action n’est requise.
REMARQUE: cette alarme ne s’allume pas immédiatement après activation de l’interrupteur, il faut laisser le temps au bord d’attaque de se réchauffer (environ 30 secondes) . De même, elle restera allumée un certain temps après que l’on ait coupé l’interrupteur WING (environ 10 secondes) .
Donc l’inter WING doit commander une variable interne, avec une temporisation de l’ordre de 30 secondes pour l’allumage de sa LED. De même à l’extinction, la LED restera allumée environ 10 secondes après la mise sur OFF de l’interrupteur. On commencera donc par créer la variable pour la LED (WING_DEICE_LED), puis une variable interne (WING DEICE) qui sera chargée de commander la LED, avec une temporisation, puis l’interrupteur (WING_DEICE_SW) commandant la variable.
Voici l’inter :

Var 0431, name WING_DEICE_SW, Link IOCARD_SW, Input 21 // Inter dégivrage ailes
{
IF &WING_DEICE_SW = 1
{
&WING_DEICE = 1 // variable interne 902
}
ELSE
{
&WING_DEICE = 0
}
}

ou, plus court:

Var 0431, name WING_DEICE_SW, Link IOCARD_SW, Input 24 // Inter dégivrage ailes
{
&WING_DEICE = &WING_DEICE_SW
}

Puis la variable interne :

Var 0902, name WING_DEICE // Dégivrage des ailes
{
IF &WING_DEICE = 1
{
&WING_DEICE_LED = DELAY 1 ,3000 // retard à l’allumage 30 secondes
}
ELSE
{
&WING_DEICE_LED = DELAY 0 ,1000 // retard à l’extinction 10 secondes
}
}


dégivrage stabilo

qui met en jeu une fonction TIMER.
Plus complexe, le dégivrage du stabilo se fait par cycles de chauffage puis extinction et refroidissement, puis de nouveau chauffage, et ce, pendant 12 cycles de 20 secondes chacun.
On a donc à faire ici à un temporisateur (fonction TIMER), variable dont la valeur augmentera de 1 toutes les 20 secondes. Lorsque cette variable aura une valeur 1, une alarme d’avis verte, marquée « STAB DEICE » (STAB_HEAT_LED) sera allumée, pour la valeur 2, elle sera éteinte, et ainsi de suite jusqu’à 12.
&STAB_HT_TIMER = TIMER 12 ,1 ,2000 // 12 cycles de 20 secondes avec une incrémentation de 1
Les choses se compliquent du fait que le réchauffage du stabilo ne peut pas se faire au sol, il faudra donc détecter si l’avion est au sol ou en l’air avec la variable $0366, et en faire une condition.

 Var 0035, name ACFT_ON_GND, Link FSUIPC_OUT, Offset $0366, Length 2 // Détection avion au sol/en l’air

Les choses se compliquent encore du fait que dégivrer un stabilo, donc changer la forme de son bord d’attaque, et par conséquent sa portance, peut être très dangereux, en particulier lorsque les volets sont pleinement sortis. Notre Beech 200 est également équipé d’une alarme rouge intitulée FLAPS DELAY incitant vivement le pilote à retarder la sortie complète des volets lorsqu’un dégivrage est en cours. Cette alarme visuelle est doublée par une alarme sonore très particulière, qui ne peut pas passer inaperçue.
Le code SIOC :
On va créer tout d’abord une variable pour l ’alarme rouge « FLAPS DELAY »

 Var 0761, name LDGFLAP_LED, Link IOCARD_OUT, Device1,Output 6 // Alarme rouge FLAPS DELAY

puis une variable pour l’alarme verte STAB DEICE :

Var 0743, name STAB_DEICE_LED, Link IOCARD_OUT, Device 1, Output 38 // Alarme verte dégivrage du stabilo
{
&LDGFLAP_LED = &STAB_DEICE_LED
CALL &STAB_FLAPS_SND
}

On remarque au passage que l’alarme rouge « FLAPS DELAY » (variable nommée LDGFLAP_LED) SUIT l’état de la variable STAB DEICE LED
On crée l’interrupteur :

Var 0433, name STAB_HEAT_SW, Link IOCARD_SW, Input 26 // Inter dégivrage stabilo
{
IF &STAB_HEAT_SW = 1
{
IF &ACFT_ON_GND = 0 // l’avion est en l’air
{
&STAB_HT_TIMER = TIMER 12 ,1 ,2000 // 12 cycles de 20 sec
&LDGFLAP_LED = 1 // alarme rouge FLAPS DELAY
}
ELSE // si l’avion est au sol
{
&STAB_HT_TIMER = 0 // pas de dégivrage stabilo possible
&LDGFLAP_LED = 0
}
}
ELSE
{
&STAB_HT_TIMER = 0 // remet Timer à 0 pour la prochaine fois
&LDGFLAP_LED = 0
}
}

Puis le temporisateur lui-même :

Var 0904, name STAB_HT_TIMER, Value 0 // Temporisateur dégivrage stabilo
{
IF &STAB_HT_TIMER = 1 // si la valeur du Timer = 1
{
&STAB_DEICE_LED = 1 // l’alarme verte STAB DEICE est ON
}
IF &STAB_HT_TIMER = 2 // pour la valeur 2 du Timer
{
&STAB_DEICE_LED = 0 // l’alarme est OFF
}
IF &STAB_HT_TIMER = 3 // etc…
{
&STAB_DEICE_LED = 1
}
IF &STAB_HT_TIMER = 4
{
&STAB_DEICE_LED = 0
}
IF &STAB_HT_TIMER = 5
{
&STAB_DEICE_LED = 1
}
IF &STAB_HT_TIMER = 6
{
&STAB_DEICE_LED = 0
}
IF &STAB_HT_TIMER = 7
{
&STAB_DEICE_LED = 1
}
IF &STAB_HT_TIMER = 8
{
&STAB_DEICE_LED = 0
}
IF &STAB_HT_TIMER = 9
{
&STAB_DEICE_LED = 1
}
IF &STAB_HT_TIMER = 10
{
&STAB_DEICE_LED = 0
}
IF &STAB_HT_TIMER = 11
{
&STAB_DEICE_LED = 1 // 6ème et dernier cycle de chauffage
}
IF &STAB_HT_TIMER = 12
{
&STAB_DEICE_LED = 0 // arrêt des cycles
}
CALL &STAB_FLAPS_SND
}

On remarquera que les commandes de cette variable se terminent par un CALL, une Subroutine dont le but est de définir l’appel un peu particulier des sons :

Var 0302, name STAB_FLAPS_SND, Link SUBRUTINE // Alarme chauff stab/volets
{
IF &FLAPS = 16383 // volets pleinement sortis
{
IF &STAB_DEICE_LED = 1 //c’est la LED qui commande le son
{
&GEAR_ALARM_SND = DELAY 1 ,100
&PAX_SIGN_SND = 1
&LDGFLAP_LED = 1 // l’alarme rouge FLAPS DELAY s’allume
}
ELSE // si l’alarme STAB DEICE est éteinte
{
&PAX_SIGN_SND = 0 // remise à 0
&GEAR_ALARM_SND = 0
}
}
ELSE
{
&PAX_SIGN_SND = 0
&GEAR_ALARM_SND = 0
}
}

Dans cet exemple, le son PAX_SIGN_SND se déclenche immédiatement, suivi 1 seconde plus tard par le son GEAR_ALARM_SND.
Du fait de la condition IF &STAB_DEICE_LED = 1 , cette alarme se reproduira à chaque fois qu’un cycle de chauffage commence (et que l’alarme rouge FLAPS DELAY s’allume, puisqu’elle SUIT l’état de STAB_DEICE_LED) , jusqu’à ce que le pilote remette les volets sur la position Approche.
Ne pas oublier de mettre la commande CALL dans les variables concernées par cette sub-routine.