Double if sur sécurité train rentré

Questions de programmation / Offset FSUIPC et IOCP

Double if sur sécurité train rentré

Messagede SUIRE2 » Dim 24 Mar 2013 19:13

Bonjour à tous,
J'avance un peu dans la programmation, mais je patine aussi dans la programmation de la sécurité de train rentré.

Il s'agit d'allumer un voyant (LED rouge ) si, en approche, le train n'est pas sorti (GEAR_SW) lorsque l'on réduit les gaz à fond ( SECU_TRAIN 01 ).( Ce sont des choses qui hélas, arrivent sur les trains rentrants )
Il s'agit d'un double if, et j'ai du mal à programmer çà. Le voyant est soit toujours allumé, soit toujours éteint.
L'interrupteur GEAR_SW répond dans SIOC Monitor sur l'input 21 ( bit 0 quand le train est rentré ),l'interrupteur SECU_TRAIN 01 sur l'input 10 ( bit 01 lorsque les gaz sont réduits à fond ) 01, et la LED SECU_TRAIN02 s'allume aussi dans SIOC Monitor quand on clique sur l'output 27 ( bit 1 ).
Je vous joint le morceau de script que j'ai concocté, sans garantie , puisque çà ne marche pas:
Code: Tout sélectionner
Var 0120, name SECU_TRAIN, Link FSUIPC_INOUT, Offset $060E, Length 2     // SWITCH Sécurité train rentré
{
  IF &SECU_TRAIN01 = 0     // Gaz réduits
  {
    &SECU_TRAIN02 = 1   
  }
  ELSE
  {
    IF &GEAR_SW = 0
    {
      &SECU_TRAIN02 = 1   
    }
    ELSE
    {
      &SECU_TRAIN02 = 0   
    }
  }
  &SECU_TRAIN01 = &SECU_TRAIN01   
}

Var 0125, name SECU_TRAIN01, Link IOCARD_SW, Input 10     // Switch Sécurité Train rentré


La variable 0300 donne précise la LED alarme:

Var 0300, name SECU_TRAIN02, Link IOCARD_OUT, Output 27 // Voyant sécurité train rentré

Merci pour votre aide toujours décisive.
PS :
J'aurai sans doute recours à vous car j'ai fini mon alti à partir d'un alti désossé, le moteur fonctionne, mais le variations des aiguilles ne suivent pas celles de l'alti virtuel.( Pb de coeff d'amplification ? )
Merci encore et
à +
Michel
SUIRE2
 
Messages: 86
Inscription: 21/12/09

Re: Double if sur sécurité train rentré

Messagede remont » Mar 26 Mar 2013 09:36

Bonjour,

Besoin de précision pour le code :

La led s'allume si :
- ( SW train rentré = 1 OU SW train sorti = 0 ) ET manette gaz = 0

La led est éteinte autrement ?

C'est ça ?

Renaud.
Avatar de l’utilisateur
remont
 
Messages: 405
Inscription: 3/02/10
Localisation: France 95

Re: Double if sur sécurité train rentré

Messagede SUIRE2 » Mar 26 Mar 2013 16:31

Bonjour et merci de ta réponse :
En fait cette diode rouge est faite pour réveiller le pilote avant l'atterrissage si le train est rentré et qu'il réduit les gaz, l'alarme se déclenche.
Donc si GEAR_SW =1 ( train rentré ) ET switch SECU_TRAIN01=1 ( gaz réduits à fond ) alors la LED définie SECU_TRAIN02 doit s'allumer.
Cette LED Rouge est normalement éteinte. Elle ne s'allume que si les 2 conditions sont réunies en même temps.
Merci Renaud.
Michel
SUIRE2
 
Messages: 86
Inscription: 21/12/09

Re: Double if sur sécurité train rentré

Messagede stevelep » Mar 26 Mar 2013 20:21

Si tu veux tester la position du train et des gaz, tu devrais utiliser les offsets FSUIPC gear position et throttles
au lieu de regarder la position des switch ...
Car le switch peut-être down et le train pas sorti

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

Re: Double if sur sécurité train rentré

Messagede remont » Jeu 28 Mar 2013 00:38

Je ferai un truc dans le genre :



Code: Tout sélectionner
var 001, name GAZ_REDUIT // 1= true 0= false
{
   // Tu entres ton code pour le changement d'état de ta variable
  CALL &SUB_GEAR_CHECK
}
var 002, name GEAR_DOWN // 0 = rentré 1= sorti
{
  // Tu entres ton code pour le changement d'état de ta variable
  CALL &SUB_GEAR_CHECK
}

var 003, name L_Gear_War, link output ..... //

var 004, name SUB_GEAR_CHECK, link subrutine
{
  IF &GAZ_REDUIT
  {
    IF &GEAR_DOWN = 1
    {
      &L_Gear_War = 0
    }
    ELSE // Train est rentré
    {
      &L_Gear_War = 1
    }
  }
  ELSE // gaz_reduit = 0
  {
    &L_Gear_War = 0
  }
}


Code à vérifier car je le tape comme ça sur mon bloc note sans outils de compilation. Mais c'est la logique que j'utiliserai.
Pour les var 001 et var 002, a voir comment les définir : LINK_INPUT ou LINK_FSUIPCIN.
Avatar de l’utilisateur
remont
 
Messages: 405
Inscription: 3/02/10
Localisation: France 95

Re: Double if sur sécurité train rentré

Messagede SUIRE2 » Ven 29 Mar 2013 16:26

Bonjour Renaud, Bob,
Merci Renaud pour ta réponse, je suis nouveau en programmation et j'ai des réticences à utiliser des sub routines. Je pensais que ce type de programmation serait plus simple.
Comme Bob m'a indiqué j'ai utilisé les variables FSUIPC pour la position du train gauche et la position du levier ( potentiomètre) de la commande de gaz.
Je vous joint le bout de code effectué , mais çà ne marche toujours pas.
Ce qui me gonfle c'est que quand je réduis les gaz avec le train rentré, une alarme carillonne dans FS9.
Je ne sais pas lier la variable offset de l'alarme de train rentré :$060E au reste du code et donc relier le LINKFSUIPC_INOUT offset $060E length 2 à ce que j'ai déjà fait :
Code: Tout sélectionner
Var 0300, name SECU_TRAIN02, Link IOCARD_OUT, Output 27     // Voyant sécurité train rentré
{
  IF &ENG_THROTTLE < 200
  {
    IF &L_GEAR_POS < 100     // Si le train est rentré
    {
      &SECU_TRAIN02 = 1         // Le voyant d'alarme train s'allume
    }
  }
  ELSE
  {
    &SECU_TRAIN02 = 0         // Le voyant d'alarme train est éteint
  }
}


Si quelqu'un peut voir où çà bloque.

merci à vous.
Michel
SUIRE2
 
Messages: 86
Inscription: 21/12/09

Re: Double if sur sécurité train rentré

Messagede pierre01 » Ven 29 Mar 2013 18:28

Bonjour Michel,

Post le traitement de tes variables &ENG_THROTTLE et &L_GEAR_POS

Ta variable $060E indique simplement, si je ne me trompe pas, que le train (de l'avion que tu utilises) est rétractable ou non !!!
Tu ne peux donc pas l'utiliser dans ce que tu veux faire.

Je peux déjà te dire que le ralenti sur les moteurs (à piston) est au dessus de 650 tr/mn(environ 700 chez moi), donc 200 est une valeur trop faible et n'allumera jamais ton voyant !
A+
Pierre.
Avatar de l’utilisateur
pierre01
 
Messages: 1775
Inscription: 19/04/09
Localisation: Vers Vesoul (Haute Saône)

Re: Double if sur sécurité train rentré

Messagede SUIRE2 » Ven 29 Mar 2013 23:54

Bonsoir Pierre,
Voilà ci-dessous le traitement des variables &ENG_THROTTLE et &L_GEAR_POS.
La valeur 200 ne correspond pas à des T/mn, mais à la valeur que prend la variable quand on réduit les gaz au-mini. J'aurais pû prendre une valeur plus basse car la variable va de 0 à 16320 lorsque je manoeuvre la commande de gaz.
(0 en position réduit ).
Code: Tout sélectionner
Var 0011, name L_GEAR_POS, Link FSUIPC_IN, Offset $0BF4, Length 4     // Position du train gauche
{
  IF &L_GEAR_POS = 16383
  {
    &L_GEAR_LED = 1   
    &GEAR_TRANS_LED = 0   
  }
  ELSE
  {
    IF &L_GEAR_POS >= 1
    {
      &L_GEAR_LED = 0   
      &GEAR_TRANS_LED = 1   
    }
    ELSE
    {
      &L_GEAR_LED = 0   
      &GEAR_TRANS_LED = 0   
    }
  }
}


Et pour l'autre variable :

Code: Tout sélectionner
Var 1100, name ENG_THROTTLE, Link FSUIPC_OUT, Offset $088C, Length 2     // Offset de gaz

Var 1110, name POT_THROTTLE, Link IOCARD_ANALOGIC, Input 1, PosL 0, PosC 127, PosR 255     // Commande de gaz
{
  &ENG_THROTTLE = &POT_THROTTLE * 64
}


J'ai compris que la variable $060E était un indicateur qui permettait de savoir si le train était sorti (flag 0) ou rentré (flag 1 ). Mais à bien y réflèchir tu as sans doûte raison, c'est plutôt pour préciser si le train est rétractable ou pas.

A+
Michel
SUIRE2
 
Messages: 86
Inscription: 21/12/09

Re: Double if sur sécurité train rentré

Messagede pierre01 » Sam 30 Mar 2013 00:15

Il serait plus judicieux (et réaliste je pense) de prendre les Tr/mn, car la commande des gaz est très en avance sur ces derniers (Quand tu réduis les gaz brusquement, les tours moteur descendent doucement).
Une autre raison je pense est que si tu es en descente rapide, les tours peuvent êtres assez haut malgré les gaz au mini, mais là, je ne suis sûr de rien.

Je regarde mon programme demain et te donne ce qu'il faut car ça marche chez moi (baron58).
A+
Pierre.
Avatar de l’utilisateur
pierre01
 
Messages: 1775
Inscription: 19/04/09
Localisation: Vers Vesoul (Haute Saône)

Re: Double if sur sécurité train rentré

Messagede steph737 » Sam 30 Mar 2013 07:47

SUIRE2 a écrit:
Code: Tout sélectionner
Var 0300, name SECU_TRAIN02, Link IOCARD_OUT, Output 27     // Voyant sécurité train rentré
{
  IF &ENG_THROTTLE < 200
  {
    IF &L_GEAR_POS < 100     // Si le train est rentré
    {
      &SECU_TRAIN02 = 1         // Le voyant d'alarme train s'allume
    }
  }
  ELSE
  {
    &SECU_TRAIN02 = 0         // Le voyant d'alarme train est éteint
  }
}


Si quelqu'un peut voir où çà bloque.


Ca coince parce que le test est fait sur une variable OUT : SECU_TRAIN02 elle même modifiée dans le test...

Il faut faire le test sur une variable en lecture, en l'occurence ENG_THROTTLE.

C'est une condition "ET" donc pas vraiment besoin d'une sub routine dans ce cas, quelque chose comme :

Code: Tout sélectionner
Var 1100, name ENG_THROTTLE, Link FSUIPC_OUT, Offset $088C, Length 2     // Offset de gaz

{
  IF &ENG_THROTTLE < 200
  {
    IF &L_GEAR_POS < 100     // Si le train est rentré
    {
      &SECU_TRAIN02 = 1         // Le voyant d'alarme train s'allume
    }
  }
  ELSE
  {
    &SECU_TRAIN02 = 0         // Le voyant d'alarme train est éteint
  }
}
Image
Avatar de l’utilisateur
steph737
 
Messages: 1083
Inscription: 27/03/09
Localisation: Antananarivo - Madagascar

Suivante

Retourner vers Programmation Sioc





Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 27 invités