Sioc COLE switch pour démarrage

N308WA

PILOTE PRIVE
Messages
298
Réactions
34
Bonjour à  tous,

Toujours dans la programmation de mon overhead, je bute sur les Cole switches pour le démarrage des moteurs.

Sur chacun de mes cole switches, j'ai 4 vis de connections possibles (+ 4 "bases" +2 pour commander le solénoide)
J'ai relié la première connection à  linput 19, la deuxième à  20, etc (et toutes les bases ensemble à  la même "masse" sur une carte opencockpit). Le bouton commande une came qui selon la position GRD, CONT et FLT active un ou plusieurs microswitch à  l'intérieur du cole switch. Avec SIOC monitor, je détecte que la position GRD actionne les microswith des inputs 19, 20 et 22, la position CONT actionne 20 et 22 et la position FLT actionne 21. Je fais le programme ci dessous (&IFLY737CMD est la variable liée à  l'offset de FSUIPC qui récupère les infos de ifly2FSUIPC) :

Code:
// ======================================================================
// ENGINE 1 START
// ======================================================================
Var 1716, Link IOCARD_SW, device 1, Input 19 // Eng Start 1
{
  CALL V1705     // Check status of all SW
}
Var 1717, Link IOCARD_SW, device 1, Input 20 // Eng Start 1
{
  CALL V1705     // Check status of all SW
}
Var 1718, Link IOCARD_SW, device 1, Input 21 // Eng Start 1
{
  CALL V1705     // Check status of all SW
}
Var 1719, Link IOCARD_SW, device 1, Input 22 // Eng Start 1
{
  CALL V1705     // Check status of all SW
}


Var 1705, Link SUBRUTINE     
{
  IF V1716 = 1
   {
    IF V1717 = 1
     {
      IF V1718 = 0
       {
        IF V1719 = 1
         {
          &IFLY737CMD = 486 // ENGAPU_ENG1_START_POS1, position 1 = GRD
         }  
       }
     }
   }
  ELSE
   {
    IF V1716 = 0
     {
      IF V1717 = 1
       {
        IF V1718 = 0
         {
          IF V1719 = 1
           {
            &IFLY737CMD = 488 // ENGAPU_ENG1_START_POS3, position 3 = CONT
           }  
         }
      }
     }
   }
 ELSE
   {
    IF V1716 = 0
     {
      IF V1717 = 0
       {
        IF V1718 = 1
         {
          IF V1719 = 0
           {
            &IFLY737CMD = 489 // ENGAPU_ENG1_START_POS4, position 4 = FLT
           }  
         }
       }
     }
   }
 ELSE
   {
      &IFLY737CMD = 487 // ENGAPU_ENG1_START_POS2, position 2 = OFF
    } 
}
eh ben, ça ne marche pas :/ et je ne comprends pas pourquoi :mad: . Jarrive juste à  basculer sur la position GRD (je peux démarrer, c'est déjà  bien) mais les deux autres positions ne réagissent pas.

Merci pour votre aide.

Arnaud - N308WA
 
Si ca peut t'aider (un peu)
"Atout Hazar"

Mydmbz.jpg
 
oula c'est normal ta trop de condition dans ta subroutine !

juste a la suite de chaque boutons condition IF ton switch egal 1 alors la commande (normalement $9400 de memoire)
= tel valeur ect ...
 
Juste par curiosité et apprentissage, est ce que ce code fonctionnerait

Code:
// ======================================================================
// ENGINE 1 START
// ======================================================================
Var 1716, Link IOCARD_SW, device 1, Input 19 // Eng Start 1
{
  CALL V1720
}
Var 1717, Link IOCARD_SW, device 1, Input 20 // Eng Start 1
{
  CALL V1720
}
Var 1718, name_FLT, Link IOCARD_SW, device 1, Input 21 // Eng Start 1 FLT
{
  IF &FLT = 1
{
&IFLY737CMD = 489 // ENGAPU_ENG1_START_POS4, position 4 = FLT
}
  }
Var 1719, Link IOCARD_SW, device 1, Input 22 // Eng Start 1
{
  CALL V1720
}
Var 1720, Link SUBRUTINE
{
L0 = V1717 AND V1719
L1 = V1716
L2 = L0 + L1
IF L0 = 1
 {
&IFLY737CMD = 488 // ENGAPU_ENG1_START_POS3, position 3 = CONT
}
  ELSE
IF L2 = 1
   {
      &IFLY737CMD = 487 // ENGAPU_ENG1_START_POS2, position 1 = GRD
         }  
}
ELSE
   {
      &IFLY737CMD = 487 // ENGAPU_ENG1_START_POS2, position 2 = OFF
    } 
}
 
Jack,

Merci, tu mavais déjà  passé la photo. Je pense que celui qui a fait ce cablage a modifié la came

Mameloose,

Je comprends pas trop ta correction : je peux peut être simplifier pour linput 23 qui est seule valable pour FLT et 19 qui est seule valable pour GRD. Mais pour différencer le 20-22 de la commande CONT du 20-22 (et 19) du GRD, je dois faire le test sur la valeur des 3 inputs 19-20-22

Si input 19 =1 alors GRD (quelque soit 20 et 22)
Si input 23 = 1 alors FLT
Si input 19 = 0 et 20 = 22 = 1 alors CONT (je me dis que je peux relier 20 et 22 et récupérer une input !). Je dois quand même faire des conditions en cascade sur 19-20-22 pour détecter CONT

Pas simple ce truc : quelle est la limite denchainement de conditions avec SIOC ?

Merci de votre aide

Arnaud
 
voila pour moi ca donne ca

Code:
[== Indéfini ==]
// *****************************************************************************
// * Config_SIOC ver 4.5   -     By Manuel Velez    -    www.opencockpits.com
// *****************************************************************************
// * FileName : sioc.txt
// * Date : 23/06/2017



Var 1716, name FLT, Link IOCARD_SW, Device 1, Input 23     // Eng Start 1
{
  CALL &subdemarrage
}

Var 1717, name GND, Link IOCARD_SW, Device 1, Input 19     // Eng Start 1
{
  CALL &subdemarrage
}

Var 1718, name CONT, Link IOCARD_SW, Device 1, Input 20     // Eng Start 1
{
  CALL &subdemarrage
}

Var 0001, name COMMANDE, Link FSUIPC_INOUT, Offset $9400, Length 2

Var 0002, name subdemarrage, Link SUBRUTINE
{
  IF &FLT = 1
  {
    &COMMANDE = 489    
  }
  IF &GND = 1
  {
    &COMMANDE = 486    
  }
  IF &CONT = 1
  {
    IF &GND = 0
    {
      &COMMANDE = 488    
    }
  }
}
 
Merci Mameloose, je vais tester ton programme dès ce soir !

Sincèrement épaté : c'est beaucoup plus léger que ma manière de faire !
 
Faut toujours alléger sinon c'est vite le bordel...
Par contre j'ai peu être inversé les valeurs de la commande en 400 et quelques tu modifie sinon
 
Mameloose,

Ca marche, j'ai dû ajouter une dernière condition où toutes les inputs sont à  0 pour revenir sur OFF

Il me reste à  commander le solénoide maintenant.

Merci pour ton aide

Arnaud
 
Retour
Haut