AST et SIOC - Electricite available ...

Questions de programmation / Offset FSUIPC et IOCP

AST et SIOC - Electricite available ...

Messagede remont » Mer 18 Juil 2012 11:03

Bonjour,

J'utilise AST et SIOC pour le simulateur A320.

Je suis actuellement a la recherche d'une programmation pour allumer le simulateur ...

Avant (cartes EPIC et PM), dès que les batteries étaient sur On, j'utilisait l'offset 0510 bit 0 de PM pour déclencher une SUBROUTINE d'allumage du simu (FCU/Voyants allumés ...)

Ca ne marche plus actuellement. Le même offset ne réagit plus. Probablement parce que AST c'est totalement détaché de PM.

Je tente donc d'autre offset de la doc FSUIPC (alternateur, avionic, batteries ...), mais aucun de change d'état en fonction manipulations sur l'overhead AST. Là aussi, AST utilise sa propre logique et n'agit visiblement pas sur les variables par défaut du modèle de vol.

Donc actuellement, utilisateurs AST, comment programmez vous la mise sous tension de votre avion ?

Au pire des cas, je bidouillerai par programmation SIOC et les interrupteurs batteries, en utilisant un offset libre, mais un offset existant (global) FS serait le bienvenu.

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

Re: AST et SIOC - Electricite available ...

Messagede remont » Ven 21 Sep 2012 11:46

Voici le code utilisé pour déclarer si l'avion est alimenté.

Il est valable pour l'A320, et il marche impec chez moi.

La variable principale qui porte cette information est la variable ELEC_AVAIL avec 1 pour true et 0 pour False.
Plusieurs procédures permettent de définir l'état de cette variable.

Les procédures sont appellées dans mon code au moment de l'alumage des LEDs des voyants de l'overhead.

Par exemple, la procédure PROC_APUGEN, qui vérifie si le générateur APU est fonctionnel, se lance au changements d'état
des LEDs "APU MASTER AVAILABLE", "APUGEN FAULT" et "APU GEN OFF".

La procédure "maitresse" qui définit la cascade de priorité des générateurs est MAIN_ELEC_AVL

Les offsets d'état des Moteurs sont nécessaire pour le code des générateurs ENG1 et ENG2.

Pour conclure, j'écrit la variable ELEC_AVAIL dans un offset libre FSUIPC, ce qui permet de récupérer cette information sur d'autres cartes SIOC du réseau.

Code: Tout sélectionner
//VARIABLES

var 9600, name ELEC_ENG1, static // ELECTRICITE Moteur1 dispo ou non

var 9601, name ELEC_ENG2, static // ELECTRICITE Moteur2 dispo ou non

var 9602, name ELEC_APU, static // ELECTRICITE APU dispo ou non

var 9603, name ELEC_EXTPWR, static // ELECTRICITE extPwr dispo ou non

//EXT POWER

var 9610, name PROC_EXTPWR, static, link SUBRUTINE // Fonction de vérification alimentation EXT POWER
{
    IF &L_EXTPWR_OFF = 1
    {
      &ELEC_EXTPWR = 1 // dispo et selectionné
    }
    ELSE
    {
      &ELEC_EXTPWR = 0 // dispo mais non selectionné
    }

  CALL &PROC_BUSTIE
}

//APU GENERATOR

var 9611, name PROC_APUGEN, static, link SUBRUTINE // Fonction de vérification alimentation APU GENERATOR
{
  IF &L_APU_s_avail = 1
  {
    IF &L_APUGEN_FLT = 0
    {
      IF &L_APUGEN_OFF = 0
      {
        &ELEC_APU = 1
      }
      ELSE
      {
        &ELEC_APU = 0
      }
    }
    ELSE
    {
      &ELEC_APU = 0
    }
  }
  ELSE // APU unavailable
  {
    &ELEC_APU = 0
  }
 
  CALL &PROC_BUSTIE
}

//ALIM GEN1

var 9614, name PROC_GEN1, static, link SUBRUTINE // Fonction de vérification alimentation GEN1
{
  IF &R_ENG1_RUN = 1
  {
    IF &L_IDG1_FLT = 1 // IDG1 désemboité
    {
      &ELEC_ENG1 = 0
    }
    ELSE // IDG1 connecté
    {
      IF &L_GEN1_OFF = 1
      {
        &ELEC_ENG1 = 0
      }
      ELSE
      {
        IF &L_GEN1_FLT = 1
        {
          &ELEC_ENG1 = 0
        }
        ELSE
        {
          &ELEC_ENG1 = 1
        }
      }
    }
  }
  ELSE
  {
    &ELEC_ENG1 = 0
  }

  CALL &PROC_BUSTIE
}

//ALIM GEN2

var 9615, name PROC_GEN2, static, link SUBRUTINE // Fonction de vérification alimentation GEN2
{
  IF &R_ENG2_RUN = 1
  {
    IF &L_IDG2_FLT = 1 // IDG2 désemboité
    {
      &ELEC_ENG2 = 0
    }
    ELSE // IDG2 connecté
    {
      IF &L_GEN2_OFF = 1
      {
        &ELEC_ENG2 = 0
      }
      ELSE
      {
        IF &L_GEN2_FLT = 1
        {
          &ELEC_ENG2 = 0
        }
        ELSE
        {
          &ELEC_ENG2 = 1
        }
      }
    }
  }
  ELSE
  {
    &ELEC_ENG2 = 0
  }
  CALL &PROC_BUSTIE
}

var 9619, name PROC_BUSTIE, static, link SUBRUTINE // Fonction de Verification BUS TIE est sur ON
{
  IF &L_BUSTIE_OFF = 1
  {
    &ELEC_AVAIL = 0
  }
  ELSE
  {
    CALL &MAIN_ELEC_AVL
  }
}


// DECISION PRIORITE ALIMENTATION

var 9620, name MAIN_ELEC_AVL, static, link SUBRUTINE // Fonction de hierarchisation des alimentations
{
 IF &ELEC_ENG1 = 1
 {
   &ELEC_AVAIL = 1
 }
 ELSE
 {
   IF &ELEC_ENG2 = 1
   {
     &ELEC_AVAIL = 1
   }
   ELSE // AUCUN GEN ACTIF
   {
     IF &ELEC_EXTPWR = 1
     {
        &ELEC_AVAIL = 1
     }
     ELSE // GEN & EXT unavailable
     {
        IF &ELEC_APU = 1
        {
           &ELEC_AVAIL = 1
        }
        ELSE // GEN & EXT & APU unavailable donc pas d'alimentation
        {
           &ELEC_AVAIL = 0
        }
     } 
   }
 }
}

var 9206, name ELEC_AVAIL, static, Link FSUIPC_OUT, Offset $66C1, Length 1
{
}

var 9210, name R_ENG1_RUN, static, link FSUIPC_IN, offset $0894, length 2 // Engine 1 combustion flag (TRUE if engine firing)
{
  call &PROC_GEN1
}


var 9211, name R_ENG2_RUN, static, link FSUIPC_IN, offset $092C, length 2 // Engine 2 combustion flag (TRUE if engine firing)
{
  call &PROC_GEN2
}
Avatar de l’utilisateur
remont
 
Messages: 405
Inscription: 3/02/10
Localisation: France 95


Retourner vers Programmation Sioc





Qui est en ligne

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