Routines Pinnules instruments NAV

Nous répertorions ici, divers programmes pouvant vous aider dans vos premiers pas et vos étapes futures

Routines Pinnules instruments NAV

Messagede pierre01 » Mar 19 Fév 2013 11:37

Bonjour,

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 merci affiche
- 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
Dernière édition par pierre01 le Mer 20 Fév 2013 12:14, édité 1 fois.
Avatar de l’utilisateur
pierre01
 
Messages: 1627
Inscription: 19/04/09
Localisation: Vers Vesoul (Haute Saône)

Re: Routines Pinnules instruments NAV

Messagede stevelep » Mar 19 Fév 2013 13:19

Salut,

Ton code me semble bien compliqué. alors qu'il suffit d'une seule ligne pour les OBS

&fs_obs1 = ROTATE 0, 359, &enc_obs1


Voir 2 lignes si ton encoder est câblé à l'envers:

L0 = &enc_obs1 * -1
&fs_obs1 = ROTATE 0, 359, L0

La fonction ROTATE, gère le sens, et boucle les limites sur elles-mêmes toute seule.
Avatar de l’utilisateur
stevelep
Administrateur du site
 
Messages: 2047
Inscription: 27/03/09
Localisation: LSGN Neuchâtel, Suisse

Re: Routines Pinnules instruments NAV

Messagede pierre01 » Mar 19 Fév 2013 22:57

Ha ben oui, ça simplifie ... je ne connaissais pas cette fonction, merci BOB !
Mon code est compliqué (avec les commandes classiques) à cause du passage à "0" ...

Je vais voir si je peux l'employer pour toutes les pinules.
Avatar de l’utilisateur
pierre01
 
Messages: 1627
Inscription: 19/04/09
Localisation: Vers Vesoul (Haute Saône)

Re: Routines Pinnules instruments NAV

Messagede stevelep » Mar 19 Fév 2013 23:36

Théoriquement oui,

Pour le Radar tu va plutôt utiliser la fonction LIMIT avec la même syntaxe que ROTATE.
pour éviter de boucler les valeurs.

Pour le Heading, il est codé sur 65xxx donc tu va remplacer le facteur multiplicateur
de l'encodeur L0 = &enc_obs1 * -1 par environ + ou - 182 -> L0 = &enc_hdg * 182


Voila, il faut reconnaitre que la fonction ROTATE te simplifie une dizaine de lignes, de IF etc...
en une seule commande

BOB
Avatar de l’utilisateur
stevelep
Administrateur du site
 
Messages: 2047
Inscription: 27/03/09
Localisation: LSGN Neuchâtel, Suisse

Re: Routines Pinnules instruments NAV

Messagede pierre01 » Mer 20 Fév 2013 12:15

Voilà, j'ai mis le code à jour avec les fonctions "ROTATE" et "LIMIT", ce qui simplifie au max, merci BOB !
Avatar de l’utilisateur
pierre01
 
Messages: 1627
Inscription: 19/04/09
Localisation: Vers Vesoul (Haute Saône)


Retourner vers Programmes testés et prêts à l'emploi





Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

cron