Je met à disposition les routines que j'ai écrites pour le réglage des instruments NAV :
- Calage altimétrique.
- OBS VOR1 (sur HSI).
- OBS VOR2
- OBS ADF1
- Heading PA (sur HSI)
- DECISION_HEIGHT sur radar d'altitude
- Il y a sûrement des simplifications possibles par-ci, par-là ... merci du retour si vous en trouvez

- Je les ai testées une par une et je n'ai pas encore fait le montage de tous les encodeurs, mais il ne devrait pas y avoir de Pb à ce niveau.
- Je vais utiliser un panel provisoire avec des encodeurs CTS288 pour le moment, n'ayant pas encore de solution pour intégrer de petits encodeurs entre façade et écran ...
- Bien sûr, il vous faudra éventuellement changer les n° de variables et plus sûrement le n° des entrées carte master pour les encodeurs.
Bonne lecture !
- Code: Tout sélectionner
//
// *****************************************************************
// *********** Routines pinnules Instruments NAV v2.0 **************
// *********** Pierre ROTH (pierre01) le 20-02-2013 ***************
// Remarques :
// - Quand je multiplie par "1", c'est en prévision d'une éventuelle inversion de sens (par -1).
// - Le paramètre "aceleration" 1, 2, 3 ... sert à faire avancer la pinnule plus vite quand on tourne
// l'encodeurs rapidement. Ce qui n'influence en rien la précision, faire des essais pour chaque routine.
// Par défaut, il est positionné à "1" pour toutes les routines.
//
//
// Réglage altimètre, offset $0330 : 15168 à 17344 par pas de 5 avec la souris
// Par pas de 3 (routine) de 15168 à 17344
//
Var 4300, name fs_pin_alt, link FSUIPC_INOUT, Offset $0330, Length 2 // "Altimeter pressure setting"
Var 4302, name ec_pin_alt, Link IOCARD_ENCODER, Input 109, type 2, Aceleration 1 // Encodeurs pinnule altimètre (CTS 288)
{
L0 = &ec_pin_alt * 3 // Mettre "-" pour inverser le sens de rotation. Le pas est de 3 (normalement 5 avec la souris)
&fs_pin_alt = LIMIT 15168, 17344, L0 // On écrit la nouvelle valeur
}
//
// OBS NAV1 (ILS) offset : $0C4E de ° en ° de 0 à 359
//
Var 4310, name fs_pin_OBS1, link FSUIPC_INOUT, Offset $0C4E, Length 2 // Pinnule OBS1 NAV1 (ILS)
Var 4312, name ec_pin_OBS1, Link IOCARD_ENCODER, Input 111, type 2, Aceleration 1 // Encodeurs pinnule OBS1 NAV1 (ILS)
{
&fs_pin_OBS1 = ROTATE 0, 359, &ec_pin_OBS1 // On écrit la nouvelle valeur
}
//
// OBS VOR2 offset : $0C5E de ° en ° de 0 à 359
//
Var 4320, name fs_pin_OBS2, link FSUIPC_INOUT, Offset $0C5E, Length 2 // Pinnule OBS VOR2 (0C5E)
Var 4322, name ec_pin_OBS2, Link IOCARD_ENCODER, Input 113, type 2, Aceleration 1 // Encodeurs pinnule VOR2
{
&fs_pin_OBS2 = ROTATE 0, 359, &ec_pin_OBS2
}
//
// OBS ADF1 offset : $0C6C de ° en ° de 0 à 359
//
Var 4320, name fs_pin_ADF1, link FSUIPC_INOUT, Offset $0C6C, Length 2 // Pinnule OBS ADF1
Var 4322, name ec_pin_ADF1, Link IOCARD_ENCODER, Input 115, type 2, Aceleration 1 // Encodeurs pinnule ADF1
{
&fs_pin_ADF1 = ROTATE 0, 359, &ec_pin_ADF1
}
//
// Pinnule Cap PA sur HSI offset $7CC : "Autopilot heading value, as degrees*65536/360"
// Par pas de 182 pour 1° (65536 / 360° = 182,04444...)
//
Var 4330, name fs_pin_capPA, link FSUIPC_INOUT, Offset $07CC, Length 2 // Pinnule CAP PA sur HSI
Var 4332, name ec_pin_capPA, Link IOCARD_ENCODER, Input 118, type 2, Aceleration 1 // Encodeurs pinnule CAP PA sur HSI
{
L0 = &ec_pin_capPA * 182 // Mettre "-182" pour inverser le sens. Incrément de 1 (0 à 359°)
&fs_pin_capPA = ROTATE 0, 65535, L0
}
//
// Pinnule du radar d'altitude "DECISION_HEIGHT" offset : $3428 de 11 à 762 par pas de 1 (apparement en mètres).
// La valeur mini 11 de l'offset représente une altitude d'environ 33 feet (11 mètres environ) !
// - De 33 feet (11 mètres) jusqu'à 500 feet, le pas est de "1".
// - A partir de 500 feet (150 mètres), le pas est de 10 pour tenir compte de l'échelle différente.
// La pinnule avance donc à la même vitesse sur toute la plage de réglage.
//
Var 4340, name fs_pin_decRAlt, link FSUIPC_INOUT, Offset $3428, Length 8 // Décision radar altitude
Var 4342, name ec_pin_decRAlt, Link IOCARD_ENCODER, Input 120, type 2, Aceleration 1 // Encodeurs pinnule radar altitude
{
IF &fs_pin_decRAlt <= 150 // Zone inférieure de 11 à 150
{
L0 = &ec_pin_decRAlt * 1
&fs_pin_decRAlt = LIMIT 11, 762, L0
}
ELSE // Zone supérieure à 150 : échelle différente (10 fois plus grande)
{
L0 = &ec_pin_decRAlt * 10
&fs_pin_decRAlt = LIMIT 11, 762, L0
}
}
//
// ************** FIN Routines pinnules Instruments NAV ****************
// *********************************************************************
Edit : Nouvelle version avec "ROTATE" et "LIMIT" qui s'implifie au max le code !!!
Merci BOB