Programme des gauges moteur, fuel et icing du Baron58

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

Programme des gauges moteur, fuel et icing du Baron58

Messagede pierre01 » Lun 10 Fév 2014 09:55

Bonjour à tous,

Je met ma programmation fonctionnelle de toutes mes gauges :

Code: Tout sélectionner
// =======================
//   ££  Routines servos
// =======================
//
// name : routine_servos_4
// 10 Décembre 2011
//
// Engine left = 1   -   Engine right = 2
//
// Carte servo n° 0      USB 74 : (quelques Pb avec les n° USB qui changent de temps en temps !!!)
// Ouput :   Engine_left     Gauge name    Engine_Right   n° cables      Limites      Graduations         y = ax + b
//              4         MAN PRESS          1           4 - 1         180-960         10-40      a=26         b=-80
//            5         RPM             2           5 - 2         190-940         0-35      a=21.429      b=190
//            6        Fuel Flow          3           6 - 3         160-840         3-30      a=25.185      b=84.445
//
// Carte servo n° 1      USB 76 :
// Ouput :   Engine_left     Gauge name    Engine_Right   n° cables      Limites
//              4         TEMP EGT           1          10 - 7         850-150         0-860      a=-0.814      b=850
//            5        TEMP CHT          2          11 - 8         180-950         50-250      a=3.85      b=-12.5
//            6        OIL PRESS          3          12 - 9         900-150         0-100      a=-7.5      b=900
//
// Carte servo n° 2      USB 12 :
// Ouput :   Engine_left     Gauge name    Engine_Right   n° cables      Limites
//              2         OIL TEMP           1          14 - 13      140-800         0-120      a=5.5      b=140
//
//      3 - Fuel level L (FL)                        15         170-850         0-100      a=6.8      b=170
//      4 - Fuel level R (FR)                        16         170-850         0-100      a=6.8      b=170
//      5 - PROP AMPS    (PA)                        17         150-840         0-30
//      6 - Surface Icing Pressure   (IP)               18         250-800         0-20
//            

//
// ££ Init au lancement SIOC
// On met les servos en position "arrêt moteur"
//

Var 4000, name init_servos, link subrutine  // initialisation servos
{
  &serv_man_pres1 = 650
  &serv_man_pres2 = 650
  &serv_RPM1 = 180
  &serv_RPM2 = 180
  &serv_FF1 = 140
  &serv_FF2 = 140
  &serv_temp_EGT1 = 850
  &serv_temp_EGT2 = 850
  &serv_temp_CHT1 = 180
  &serv_temp_CHT2 = 180
  &serv_oil_pres1 = 900
  &serv_oil_pres2 = 900
  &serv_oil_temp1 = 200
  &serv_oil_temp2 = 200
  &serv_fuel_L = 170
  &serv_fuel_R = 170
  &serv_prop_amp = 150
  &serv_pres_sur = 250
}
 
// On désactive les servos (plus de vibrations), en attendant le démarrage.

Var 4002, name init_servos_0, link subrutine  // initialisation servos
{
  &serv_man_pres1 = 0
  &serv_man_pres2 = 0
  &serv_RPM1 = 0
  &serv_RPM2 = 0
  &serv_FF1 = 0
  &serv_FF2 = 0
  &serv_temp_EGT1 = 0
  &serv_temp_EGT2 = 0
  &serv_temp_CHT1 = 0
  &serv_temp_CHT2 = 0
  &serv_oil_pres1 = 0
  &serv_oil_pres2 = 0
  &serv_oil_temp1 = 0
  &serv_oil_temp2 = 0
  &serv_prop_amp = 0
  &serv_pres_sur = 0
}

Var 4011, name serv_man_pres1, link usb_servos, device 0, output 4, posl 1, posc 512, posr 1023
Var 4012, name serv_man_pres2, link usb_servos, device 0, output 1, posl 1, posc 512, posr 1023
Var 4013, name serv_RPM1, link usb_servos, device 0, output 5, posl 1, posc 512, posr 1023
Var 4014, name serv_RPM2, link usb_servos, device 0, output 2, posl 1, posc 512, posr 1023
Var 4015, name serv_FF1, link usb_servos, device 0, output 6, posl 1, posc 512, posr 1023
Var 4016, name serv_FF2, link usb_servos, device 0, output 3, posl 1, posc 512, posr 1023
Var 4017, name serv_temp_EGT1, link usb_servos, device 1, output 4, posl 1, posc 512, posr 1023
Var 4018, name serv_temp_EGT2, link usb_servos, device 1, output 1, posl 1, posc 512, posr 1023
Var 4019, name serv_temp_CHT1, link usb_servos, device 1, output 5, posl 1, posc 512, posr 1023
Var 4020, name serv_temp_CHT2, link usb_servos, device 1, output 2, posl 1, posc 512, posr 1023
Var 4021, name serv_oil_pres1, link usb_servos, device 1, output 6, posl 1, posc 512, posr 1023
Var 4022, name serv_oil_pres2, link usb_servos, device 1, output 3, posl 1, posc 512, posr 1023
Var 4023, name serv_oil_temp1, link usb_servos, device 2, output 2, posl 1, posc 512, posr 1023
Var 4024, name serv_oil_temp2, link usb_servos, device 2, output 1, posl 1, posc 512, posr 1023
Var 4025, name serv_fuel_L, link usb_servos, device 2, output 3, posl 1, posc 512, posr 1023
Var 4026, name serv_fuel_R, link usb_servos, device 2, output 4, posl 1, posc 512, posr 1023
Var 4027, name serv_prop_amp, link usb_servos, device 2, output 5, posl 1, posc 512, posr 1023
Var 4028, name serv_pres_sur, link usb_servos, device 2, output 6, posl 1, posc 512, posr 1023

//
// ££ Manifold pressure 1 (left) & 2 (right)
//
// Offset $37E8 et $3728 Length 8 en lbs/sqft (à diviser par 70,7262 pour convertir en Hg)
// Cadran : graduations de 10 à 40 mais valeur peut descendre à 5,4 HG
// servo : de 180 à 960 --> a = 26 b = -80
//

Var 4100, name fs_man_pres1, Link FSUIPC_IN, Offset $37E8, Length 8, Numbers 3
{
  &val_man_pres1 = &fs_man_pres1 / 70.7262      // maniflow pressure en HG
  L0 = &val_man_pres1 / 1000               // Conversion en valeur réelle
  L1 = L0 * 26                           // y = ax : pente réponse servo
  L2 = L1 - 80                           // y = ax + b : décallage
  L2 = LIMIT 120 1000 0                     // Limite amplitude servo de 120 à 1000
  &serv_man_pres1 =  L2                     // Valeur envoyée au servo
}
Var 4102, name val_man_pres1

//
// Manifold pressure 2
//

Var 4110, name fs_man_pres2, Link FSUIPC_IN, Offset $3728, Length 8, Numbers 3
// Var 4110, name fs_man_pres2, Link IOCP, Offset 0428
{
  &val_man_pres2 = &fs_man_pres2 / 70.7262      // maniflow pressure en HG
  L0 = &val_man_pres2 / 1000               // Conversion en valeur réelle : FSUIPC
  L1 = L0 * 26                           // y = ax : pente réponse servo
  L2 = L1 - 80                           // y = ax + b : décallage
  L2 = LIMIT 120 1000 0                     // Limite amplitude servo de 120 à 1000
  &serv_man_pres2 =  L2                     // Valeur envoyée au servo
}
Var 4112, name val_man_pres2

//
// ££ RPM 1 & 2
//
// Offset $2400 et $2500 length 8 : à diviser par 100 pour avoir la valeur RPM
// Cadran graduation de 0 à 35 (0 à 3500 tr/mn)
// Servo de 190 à 940 -->  a = 21,429  b = 190
// RPM_mot_1 et RPM_mot_2 : Var 0030 et 0033 -> Pour calcul courant et affichage led alternateurs
//

Var 4120, name fs_rpm1, link FSUIPC_IN, Offset $2400, Length 8, Numbers 3    // RPM 1
{
  &RPM_mot_1 = &fs_rpm1 / 1000      // Valeur réelle de l'offset (RPM x 100)
  L0 = &RPM_mot_1 / 100            // Valeur RPM 0 à 35 RPM_mot_1 : Var &
  L1 = L0 * 21.429
  L2 = L1 + 190
  L2 = LIMIT 120 1000 0            // Limite amplitude servo de 120 à 1000
  &serv_RPM1 = L2
}

//
// RPM 2
//

Var 4125, name fs_rpm2, link FSUIPC_IN, Offset $2500, Length 8, Numbers 3   // RPM 2
{
  &RPM_mot_2 = &fs_rpm2 / 1000      // Valeur réelle de l'offset (RPM x 100)
  L0 = &RPM_mot_2 / 100            // Valeur RPM 0 à 35
  L1 = L0 * 21.429
  L2 = L1 + 190
  L2 = LIMIT 120 1000 0            // Limite amplitude servo de 120 à 1000
  &serv_RPM2 = L2               // Envoie valeur au servo
}

//
// ££ Fuel flow 1 & 2
//
// Offset $0918 et $09B0 donne fuel flow en Pound/Heure (donc un poids/H)
// 1 pound = 0,454 kg     1 kg = 1,39 litres de 100LL (D=0,72)   &  1 gallon = 3,78 litres  :
// Coefficeint de conversion Pounds -> gallond : 0,454 * 1,39 / 3,78 = 0,166947
// Graduations de 3 à 30 (gallon / H)
// Servo : de 160 à 840 -->  a = 25,185  b = 84,445
//

Var 4130, name fs_fuel_flow1, link FSUIPC_IN, Offset $0918, Length 8, Numbers 3
// Var 4130, name fs_fuel_flow1, link IOCP, Offset 0135    // ne marche pas mieux !
{
  &val_FF1 = &fs_fuel_flow1 / 1000      // Offset FSUIPC
  // &val_FF1 = &fs_fuel_flow1 / 10     // Offset IOCP
  L0 = &val_FF1 * 0.1669               // Conversion Pound en Gallon / Heure
  L1 = L0 * 25.189                   // "a" pente servo (y = ax)
  L2 = L1 + 84.445                   // "b" (y = ax + b)
  L2 = LIMIT 150 950 0                // Limite amplitude servo de 150 à 950
  &serv_FF1 = L2                   // Envoie valeur au servo
}
Var 4131, name val_FF1

//
// Fuel flow 2
//

Var 4132, name fs_fuel_flow2, link FSUIPC_IN, Offset $09B0, Length 8, Numbers 3
{
  &val_FF2 = &fs_fuel_flow2 / 1000
  L0 = &val_FF2 * 0.1669 
  L1 = L0 * 25.189
  L2 = L1 + 84.445
  L2 = LIMIT 150 950 0            // Limite amplitude servo de 150 à 950
  &serv_FF2 = L2
}
Var 4133, name val_FF2

//
// ££ EGT 1 & 2
//
// Offset 3b70 et 3ab0 Length 8 en ° Rankine
// Conversion : °C = (°Ra - 459,67 - 32) / 1,8  -->  D'ou °C = (°Ra - 491,67) / 1,8
// 15 Graduations : L'échelle donne 20° (?) par graduation : De 0 à 860°
// Servo de 850 à 150  -->  a = -0,814  b = 850
//

Var 4140, name fs_egt1, link FSUIPC_IN, Offset $3b70, Length 8, Numbers 3
{
  &val_egt1 = &fs_egt1 / 1000      // Valeur réelle
  L0 = &val_egt1 - 491.67         // en °C (avec ligne suivante)
  L1 = L0 / 1.8                  // divisé par 1,8
  L0 = L1 * 0.814               // "a" Pente déviation servo
  L2 = 850 - L0                  // b=900 et -L1 car pernte négative
  L2 = LIMIT 100 950 0            // Limite amplitude servo de 100 à 950
  &serv_temp_EGT1 = L2            // Envoie valeur au servo
}
Var 4141, name val_egt1

//
// EGT 2 ===> A voir avec egt1 (autre offset ?)
//

Var 4142, name fs_egt2, link FSUIPC_IN, Offset $3ab0, Length 8, Numbers 3
{
  &val_egt2 = &fs_egt2 / 1000      // Valeur réelle
  L0 = &val_egt2 - 491.67         // en °C (avec ligne suivante)
  L1 = L0 / 1.8                  // divisé par 1,8
  L0 = L1 * 0.814               // "a" Pente déviation servo
  L2 = 850 - L0                  // b=900 et -L1 car pernte négative
  L2 = LIMIT 100 950 0            // Limite amplitude servo de 100 à 950
  &serv_temp_EGT2 = L2            // Envoie valeur au servo
}
Var 4143, name val_egt2

//
// ££ CHT 1 & 2
//
// Offset $08E8 et $0980 en ° F
// Conversion : °C = (( °F - 32 ) / 1,8
// Graduations de 50° à 250°
// Servo : de 180 à 950  -->  a = 3,85  b = -12,5
//

Var 4150, name fs_cht1, link FSUIPC_IN, Offset $08E8, Length 8, Numbers 3
{
  &val_cht1 = &fs_cht1 / 1000        // Valeur réelle
  L0 = &val_cht1 - 32            // Conversion de
  L1 = l0 / 1.8                  // °F en °C
  L0 = L1 * 3.85               // "a" Pente déviation servo (y = ax)
  L2 = L0 - 12.5                // "b" ((y = ax + b)
  L2 = LIMIT 180 1000 0            // Limite amplitude servo de 180 à 1000
  &serv_temp_CHT1 = L2           // Envoie valeur au servo
}
Var 4151, name val_cht1

// CHT 2

Var 4153, name fs_cht2, link FSUIPC_IN, Offset $0980, Length 8, Numbers 3
{
  &val_cht2 = &fs_cht2 / 1000        // Valeur réelle
  L0 = &val_cht2 - 32            // Conversion de
  L1 = l0 / 1.8                  // °F en °C
  L0 = L1 * 3.85               // "a" Pente déviation servo (y = ax)
  L2 = L0 - 12.5               // "b" ((y = ax + b)
  L2 = LIMIT 180 1000 0            // Limite amplitude servo de 180 à 1000
  &serv_temp_CHT2 = L2           // Envoie valeur au servo
}
Var 4154, name val_cht2

//
// ££ oil pressure 1 & 2
//
// Offset $3B60 et $3AA0
// En lbs/sqft  -->  Diviser par 144 pour avoir en PSI.
// Graduations de 0 à 100 PSI
// Servo : de 900 à 150  -->  a = -7,5  b = 900
//

Var 4160, name fs_oil_pres1, link FSUIPC_IN, Offset $3B60, Length 8, Numbers 3
{
  &val_oil_pres1 = &fs_oil_pres1 / 1000   // Valeur réelle en lbs/sqft
  L0 = &val_oil_pres1 / 144            // oil pressure en PSI
  L1 = L0 * 7.5                     // "a" (y = ax)
  L2 = 900 - L1                     // "b" (y = ax + b)
  L2 = LIMIT 120 950 0               // Limite amplitude servo de 120 à 950
  &serv_oil_pres1 = L2               // envoie valeur au servo
}
Var 4162, name val_oil_pres1

// oil pres 2

Var 4165, name fs_oil_pres2, link FSUIPC_IN, Offset $3AA0, Length 8, Numbers 3
{
  &val_oil_pres2 = &fs_oil_pres2 / 1000   // Valeur réelle en lbs/sqft
  L0 = &val_oil_pres2 / 144            // oil pressure en PSI
  L1 = L0 * 7.5                     // "a" (y = ax)
  L2 = 900 - L1                     // "b" (y = ax + b)
  L2 = LIMIT 120 950 0               // Limite amplitude servo de 120 à 950
  &serv_oil_pres2 = L2               // envoie valeur au servo
}
Var 4167, name val_oil_pres2

//
// ££ oil temp 1 & 2
//
// Offset $3B58 et $3A98 en °Ra
// Conversion : °C = (°Ra - 459,67 - 32) / 1,8  -->  D'ou °C = (°Ra - 491,67) / 1,8
// Graduations de 0 à 120°C
// servo : 140 à 800  -->  a = 5,5  b = 140
//

Var 4170, name fs_oil_temp1, link FSUIPC_IN, Offset $3B58, Length 8, Numbers 3
{
  &val_oil_tmp1 = &fs_oil_temp1 / 1000   // Valeur réelle oil_temp en °Ra
  L0 = &val_oil_tmp1 - 491.67         // Conversion de °Ra
  L1 = L0 / 1.8                      // en °C
  L0 = L1 * 5.5                     // "a" (y = ax)
  L2 = L0 + 140                     // "b" (y = ax + b)
  L2 = LIMIT 120 900 0               // Limite amplitude servo de 120 à 900
  &serv_oil_temp1 = L2               // Envoie valeur au servo
}
Var 4171, name val_oil_tmp1

// oil temp 2

Var 4172, name fs_oil_temp2, link FSUIPC_IN, Offset $3A98, Length 8, Numbers 3
{
  &val_oil_tmp2 = &fs_oil_temp2 / 1000   // Valeur réelle oil_temp en °Ra
  L0 = &val_oil_tmp2 - 491.67         // Conversion de °Ra
  L1 = L0 / 1.8                      // en °C
  L0 = L1 * 5.5                     // "a" (y = ax)
  L2 = L0 + 140                     // "b" (y = ax + b)
  L2 = LIMIT 120 900 0               // Limite amplitude servo de 120 à 900
  &serv_oil_temp2 = L2               // Envoie valeur au servo
}
Var 4173, name val_oil_tmp2

//
// ££ Fuel gauge left et Right
//
// Offset $0B7C et $0B94 Length 4 en % * 128 * 65536
// Graduation 0 à 100 %
// servo de 170 à 850  -->  a = 6,8  b = 170
//

// Fuel gauge left : De base (sans correction bug "stop ou start" sw_bat).

Var 4180, name fs_fuel_left, link FSUIPC_INOUT, Offset $0b94, Length 4
// Var 4180, name fs_fuel_left, link IOCP, Offset 0289   // IOCP ???
{
CALL &sub_fuel_left
}

Var 4181, name sub_fuel_left, link subrutine    // Suppresion bug ON OFF sw_bat

{
  &val_fuel_right = &fs_fuel_left / 83886.08      // de 0 à 100%  :  128 * 65536 / 100
  L0 = &val_fuel_right * 6.8      // "a" (y = ax)
  L1 = L0 + 170                // "b" (y = ax + b) -> nouvelle valeur servo
  L1 = LIMIT 150 900 0            // Limite amplitude servo de 150 à 900
  IF &courant = 0               // Si pas de courant
  {
    L1 = 170                  // L1 = Valeur mini pour servo
  }
  &tmp_fuel_left = L1 - &old_fuel_left      // Différence new - old valeur
  L2 = 4                     // Si &tmp_fuel_left >= 0 (évite un "IF")
                                    // Sens de variation du servo (dans "TIMER")
  IF &tmp_fuel_left < 0             // Si la nouvelle valeur servo < à l'ancienne
  {
    L2 = -4                     // L2 négatif
  }
  IF &tmp_fuel_left <> 0         // Si le servo doit changer
  {
    &serv_Fuel_L = TIMER L1 L2 1   // Envoie valeur au servo par pas de 2 avec timer 2/10° de s
    &old_fuel_left = L1             // Stok nouvelle valeur servo pour prochaine modif
  }
}

Var 4182, name val_fuel_left      // Valeur fuel en %
Var 4183, name old_fuel_left      // mémorise ancienne valeur fuel
Var 4184, name tmp_fuel_left      // Différence entre ancienne et nouvelle valeur du servo

// Fuel gauge right

Var 4200, name fs_fuel_right, link FSUIPC_INOUT, Offset $0b94, Length 4
{
CALL &sub_fuel_right
}

Var 4201, name sub_fuel_right, link subrutine
{
  &val_fuel_right = &fs_fuel_right / 83886.08      // de 0 à 100%  :  128 * 65536 / 100
  L0 = &val_fuel_right * 6.8      // "a" (y = ax)
  L1 = L0 + 170                // "b" (y = ax + b) -> nouvelle valeur servo
  L1 = LIMIT 150 900 0            // Limite amplitude servo de 150 à 900
  IF &courant = 0               // Si pas de courant
  {
    L1 = 170                  // L1 = Valeur mini pour servo
  }
  &tmp_fuel_right = L1 - &old_fuel_right      // Différence new - old valeur
  L2 = 4                     // Si &tmp_fuel_left >= 0 (évite un "IF")
                                    // Sens de variation du servo (dans "TIMER")
  IF &tmp_fuel_right < 0         // Si la nouvelle valeur servo < à l'ancienne
  {
    L2 = -4                     // L2 négatif : Le timer décompte
  }
  IF &tmp_fuel_right <> 0         // Si le servo doit changer
  {
    &serv_Fuel_R = TIMER L1 L2 1   // Envoie valeur au servo par pas de 2 avec timer 2/10° de s
    &old_fuel_right = L1         // Stok nouvelle valeur servo pour prochaine modif
  }
}
Var 4202, name val_fuel_right      // Valeur fuel en %
Var 4203, name old_fuel_right      // mémorise ancienne valeur fuel
Var 4204, name tmp_fuel_right      // Différence entre ancienne et nouvelle valeur du servo

//
// ££ Jauge prop amps : 150 à 840
//

Var 4230, name sw_prop, Link IOCARD_SW, Input 192     // inter prop icing
{
  CALL &sub_prop_amps
}

Var 4231, name sub_prop_amps, link subrutine
{
  IF &main_bus_volt < 2750
  {
    &serv_prop_amp = 180
  }
  ELSE
  {
    IF  &sw_prop = 1
    {
      &serv_prop_amp = 480
    }
    ELSE
    {
      &serv_prop_amp = 180
    }
  }
}

//
// ££ Jauge Icing pressure : 250 à 800
//

Var 4250, name sw_surface, Link IOCARD_SW, Input 205     // inter surface icing
{
  CALL &serv_surface
}

Var 4252, name serv_surface, Link subrutine
{
  IF &main_bus_volt < 2750
  {
    &serv_pres_sur = 250
  }
  ELSE
  {
    IF &sw_surface = 1
    {
      &serv_pres_sur = 770
    }
    ELSE
    {
      &serv_pres_sur = 475
    }
  } 
}

//
// ******************  Fin routines servos  ************************
// *****************************************************************


Il y a sûrement des améliorations et simplifications à faire !
Avatar de l’utilisateur
pierre01
 
Messages: 1585
Inscription: 19/04/09
Localisation: Vers Vesoul (Haute Saône)

Re: Programme des gauges moteur, fuel et icing du Baron58

Messagede Boutondair » Lun 10 Fév 2014 10:34

merci affiche merci affiche merci affiche merci affiche merci affiche merci affiche

David cligneoeil grandsoleil
Image Image
Petit je rêvais que je volerais, maintenant grâce au virtuel je vole !!!!!
Avatar de l’utilisateur
Boutondair
Administrateur du site
 
Messages: 4162
Inscription: 20/04/09
Localisation: Ballans (17) proche de Cognac

Re: Programme des gauges moteur, fuel et icing du Baron58

Messagede Boutondair » Mar 11 Fév 2014 10:12

Bonjour Pierre,

J'ai besoin d'un peu plus d'explications,

Var 4000, tu donnes une valeur fixe Ok
Var 4002, tu donnes 0 comme valeur, c'est pour désactiver le servo ?

D'où ma question, j'ai un souci avec mon servo des volets qui fonctionne bien au départ mais lors de longs vols il ne fonctionne plus (je soupsonne qu'il se désactive suite aux vibrations du fait que le servo reste à la même position avec les mêmes vibrations), peux etre que je peux resoudre ce problème avec un envoi de 0 comme valeur lors de la position lisse car c'est celle qui dure le plus longtemps dans cette position gratgrat

Var 4153, name fs_cht2, link FSUIPC_IN, Offset $0980, Length 8, Numbers 3

à quoi correspond Numbers 3

Merci encore car celà me permet d'avancer mais je veux quand même comprendre SIOC

David cligneoeil grandsoleil
Image Image
Petit je rêvais que je volerais, maintenant grâce au virtuel je vole !!!!!
Avatar de l’utilisateur
Boutondair
Administrateur du site
 
Messages: 4162
Inscription: 20/04/09
Localisation: Ballans (17) proche de Cognac

Re: Programme des gauges moteur, fuel et icing du Baron58

Messagede pierre01 » Mar 11 Fév 2014 10:27

Bonjour David,

- var 4000 : position du servo moteur à l’arrêt !
- var 4002 : je désactive les servos au lancement (ou reload) de SIOC juste après la mise en position (var 4000)
- De cette manière les servos ne vibrent pas en attendant le démarrage des moteurs (confort du pilote ..) rigolus
- A partir du démarrage, les servos sont positionnés en permanence en fonction des offsets.

Tu peux bien sûr désactiver le servo en fonctionnement mais à ce moment, il faut le faire dans la routine correspondante, juste après la demande de mouvement.
Et que ce soit fait à chaque fois que SIOC passe dans cette routine.

Pour var 4153, tu peux essayer :

Code: Tout sélectionner
// CHT 2

Var 4153, name fs_cht2, link FSUIPC_IN, Offset $0980, Length 8, Numbers 3
{
  &val_cht2 = &fs_cht2 / 1000        // Valeur réelle
  L0 = &val_cht2 - 32            // Conversion de
  L1 = l0 / 1.8                  // °F en °C
  L0 = L1 * 3.85               // "a" Pente déviation servo (y = ax)
  L2 = L0 - 12.5               // "b" ((y = ax + b)
  L2 = LIMIT 180 1000 0            // Limite amplitude servo de 180 à 1000
  &serv_temp_CHT2 = L2           // Envoie valeur au servo
  &serv_temp_CHT2 = 0                     // mise à l'arrêt du servo.
}


Simplement la dernière ligne à rajouter ...
Je n'ai jamais fait l'essai !
Avatar de l’utilisateur
pierre01
 
Messages: 1585
Inscription: 19/04/09
Localisation: Vers Vesoul (Haute Saône)

Re: Programme des gauges moteur, fuel et icing du Baron58

Messagede Boutondair » Mar 11 Fév 2014 11:03

merci affiche Pierre, dès que j'ai un moment je teste pour la gauge des volets chouettedoights

Juste pour le numbers 3, ça correspond à quoi gratgrat

David cligneoeil grandsoleil
Image Image
Petit je rêvais que je volerais, maintenant grâce au virtuel je vole !!!!!
Avatar de l’utilisateur
Boutondair
Administrateur du site
 
Messages: 4162
Inscription: 20/04/09
Localisation: Ballans (17) proche de Cognac

Re: Programme des gauges moteur, fuel et icing du Baron58

Messagede pierre01 » Mar 11 Fév 2014 13:35

C'est un Pb de précision ... remarque que je divise par 1000 dans la première ligne de code !
mais j'avoue que je n'ai pas tout compris.
Un spécialiste pourra sûrement en dire un peu plus. gratgrat
Avatar de l’utilisateur
pierre01
 
Messages: 1585
Inscription: 19/04/09
Localisation: Vers Vesoul (Haute Saône)

Re: Programme des gauges moteur, fuel et icing du Baron58

Messagede stevelep » Mar 11 Fév 2014 13:49

Les offsets de longueurs 8 appelés aussi FLOAT64, contiennent des nombres à virgules en 64 bits.
Comme le SIOC ne gère pas les virgules et tronque les décimales pour ne garder que la
partie entière de l'offset, il faut rajouter la fonction NUMBERS X où X est le nombre de chiffres après
la virgules à prendre en compte, NUMBERS 3 équivaut à multiplier l'offset par 1000

FLOAT64 = 1.352355765

NUMBERS 3 = 1352

Voila

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

Re: Programme des gauges moteur, fuel et icing du Baron58

Messagede Boutondair » Mar 11 Fév 2014 14:43

merci affiche Bob, mais comme on divise par 1000 après on perd donc cette précision gratgrat

David gratgrat
Image Image
Petit je rêvais que je volerais, maintenant grâce au virtuel je vole !!!!!
Avatar de l’utilisateur
Boutondair
Administrateur du site
 
Messages: 4162
Inscription: 20/04/09
Localisation: Ballans (17) proche de Cognac

Re: Programme des gauges moteur, fuel et icing du Baron58

Messagede pierre01 » Mar 11 Fév 2014 19:00

Ha compris, merci BOB !
En fait, si tu ne met pas numbers 3, la valeur dans la variable sera "1"
Si tu mets numbers 3, la variable aura la valeur "1,352" (après la division par "1000") !
&val_cht2 dans ma routine
Avatar de l’utilisateur
pierre01
 
Messages: 1585
Inscription: 19/04/09
Localisation: Vers Vesoul (Haute Saône)

Re: Programme des gauges moteur, fuel et icing du Baron58

Messagede algue14 » Mar 11 Fév 2014 19:03

Boutondair a écrit:merci affiche Bob, mais comme on divise par 1000 après on perd donc cette précision gratgrat

David gratgrat


Si je peux mettre mon grain de sel
ça reste une précision équivalente à 3 décimales ce qui est déjà très honorable.
La précision d'un servo, avec ses tolérances électriques et mécaniques, doit être très très loin derrière.
A+

Alain
Avatar de l’utilisateur
algue14
 
Messages: 1353
Inscription: 20/04/09
Localisation: Caen ; Normandie

Suivante

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





Qui est en ligne

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