Air-Cockpit Echange et partage entre créateurs et réalisateurs de simulateurs de vol. |
Aircokpit est définitivement transféré à sa nouvelle adresse http://www.aircockpit.com. Ce forum sera bientôt en lecture seule. Voir messages d'annonce dans les sujets ci-dessous. L'équipe AIRCOCKPIT |
|
| Tension batterie non testable ?? | |
| | Auteur | Message |
---|
Kelt760
Nombre de messages : 285 Date d'inscription : 15/03/2008 Localisation : Saclay
| Sujet: Tension batterie non testable ?? Lun 17 Mar - 1:57 | |
| Salut à tous
J'inaugure cette rubrique en revenant sur un topic disons... ancien !
RAPPEL
Je cherche à faire une condition de courant prenant en compte -entre autres-, la tension de la batterie. J'utilisie pour cela la l'offsett $2840, Length 8, Numbers 2 qui renvoie la tension du bus batterie.
J'ai nommé cette variable fs_batt_volt.
Elle fonctionne correctement,je récupère en effet cette tension. D'après IOCPConsole, elle est à 28 volts quand un alternateur fonctionne, et diminue régulièrement de 24 à 16,8 volts quand on laisse la seule batterie ON, ce qui est normal. En dessous de A7 volts tout s'éteint. Jusque là, tout va bien.
Si j'ai un alterateur en marche, le test
IF &fs_batt_volt = 2800
renvoie d'ailleurs bien VRAI. OK.
Mais dans le cas contraire,
IF &fs_batt_volt > 1700
ne renvoie jamais vrai, même quand la console indique que la variable vaut 2400 ?!? Seul le test
IF &fs_batt_volt > 0
renvoie VRAI, ce qui n'avance pas à grand chose. Toute autre valeur positive renvoie FAUX, je pige pas.
NOUVEAU
Ce que j'ai trouvé : si je recopie &fs_batt_volt dans une autre variable, par exemple &temp_batt, alors je peux faire mon test dessus :
&temp_batt = &fs_batt_volt IF &&temp_batt > 1700 { traitement }
Quelqu'un peut m'expliquer ?
Pierre
Dernière édition par Kelt760 le Sam 29 Mar - 18:59, édité 1 fois | |
| | | steph737
Nombre de messages : 725 Date d'inscription : 15/03/2008 Localisation : Antananarivo
| Sujet: Re: Tension batterie non testable ?? Mar 18 Mar - 20:54 | |
| Montres nous ton code complet svp ( enfin la partie concernée par le problème ), ça peut être juste un petit problème de syntaxe. | |
| | | stevelep
Nombre de messages : 512 Date d'inscription : 16/03/2008 Age : 50 Localisation : Neuchâtel LSGN, Suisse
| Sujet: Re: Tension batterie non testable ?? Mar 18 Mar - 22:00 | |
| ta ligne "IF &fs_batt_volt > 1700" est bien dans la variable fs_battvolt ?
SIOC est orienté évenement -> pas d'événement pas d'execution de code. il faut donc que les IF qui contienne un evariable soit - dans le code dessous la variable - dans une subroutine, lancée par la variable - dans une variable de temps (fs_secondes)
sinon le code n'est jamais executé...
BOB | |
| | | Kelt760
Nombre de messages : 285 Date d'inscription : 15/03/2008 Localisation : Saclay
| Sujet: Re: Tension batterie non testable ?? Ven 28 Mar - 1:04 | |
| Oui, bien sûr. J'ai bien compris le principe de SIOC.
Je ne suis actuellement pas sur la machine sur laquelle se trouve le programme. Je le posterai demain, après une dernière vérification.
Pierre | |
| | | Kelt760
Nombre de messages : 285 Date d'inscription : 15/03/2008 Localisation : Saclay
| Sujet: Re: Tension batterie non testable ?? Sam 29 Mar - 14:03 | |
| Voici la portion du code concernée :
Var 0002, name fs_bat, Link FSUIPC_INOUT, Offset $3102, Length 1 // batterie FS { &fs_bat = &sw_batt // si on clique l'inter à l'écran, il revient comme celui du panneau }
Var 0003, name sw_batt, Link IOCARD_SW, Input 1 // INTER_BATTERIE { &fs_bat = &sw_batt //commande la batterie FS CALL &sub_courant // recalcule la présence du courant CALL &affich_Leds // Affiche les leds si courant }
Var 0011, name sub_courant, Link SUBRUTINE // détermine si courant d'après tension bus { IF &fs_batt_volt = 2800 // au moins si une génértrice fonctionne <--ICI LE TEST FONCTIONNE { &courant = 1 // le courant est ON... } ELSE { IF &fs_bat = 1 // si inter batterie ON { IF &temp_batt > 1680 // si tension suffisante <- ICI IL NE FONCTIONNE PAS AVEC &fs_batt_volt ??? { &courant = 1 // le courant est ON... } } ELSE { &courant = 0 // le courant est OFF } } CALL &affich_Leds }
Var 0014, name fs_batt_volt, Link FSUIPC_IN, Offset $2840, Length 8, Numbers 2 // tension batterie FS { &temp_batt = &fs_batt_volt // <-- VARIABLE OBLIGEE POUR QUE LE TEST MARCHE ??? CALL &sub_courant CALL &affich_Leds }
(je ne mets pas la routine Affich_Leds qui allume les leds s'il y a du courant)
Je ne comprends pas l'obligation de cette variable &temp_batt qui ne sert qu'au test...
Quelqu'un voit ? | |
| | | stevelep
Nombre de messages : 512 Date d'inscription : 16/03/2008 Age : 50 Localisation : Neuchâtel LSGN, Suisse
| Sujet: Re: Tension batterie non testable ?? Sam 29 Mar - 20:24 | |
| Hello,
Si c'est pour mettre une condition "courant" sur tes LED/afficheur. C'est à dire que quand la tension descent au dessous de 17Volts, toute les LED/display s'éteignent (panne de courant) et qu'il se rallume si la tension remonte.
Je procèderai comme ceci en utilisant le mainbus voltage qui est déjà codé dans FS pour la logique (switch batt on/off, alternateur on/off etc ...)
En résumé s'il y a un tension dans le mainbus les LED peuvent s'allumer sinon elle restent éteintes:
Var 0001, name switch, Link IOCARD_SW, Input 1 // interrupteur qui allume une LED { CALL &lightsys }
Var 0002, name led, Link IOCARD_OUT, Output 1 // LED allumée par le switch
Var 0003, name courant // 1= courant dans le mainbus
Var 0004, name fs_mainbus, Link FSUIPC_IN, Offset $2840, Length 8, Numbers 2 // Main Bus Voltage { IF &fs_mainbus > 1700 { &courant = 1 } ELSE { &courant = 0 } CALL &lightsys
}
Var 0005, name lightsys, Link SUBRUTINE // subroutine qui controle les LEDs
{
&led = &switch * &courant // si switch ET courant = LED ON }
Voila en quelques lignes un interrupteur qui allume une LED la LED ne s'allume que si il y a du courant dans l'avion ...
BOB | |
| | | stevelep
Nombre de messages : 512 Date d'inscription : 16/03/2008 Age : 50 Localisation : Neuchâtel LSGN, Suisse
| Sujet: Re: Tension batterie non testable ?? Sam 29 Mar - 20:28 | |
| Si tu veux un code encore plus court et plus pro (sans IF THEN):
Var 0001, name switch, Link IOCARD_SW, Input 1 // interrupteur qui allume une LED { CALL &lightsys } Var 0002, name led, Link IOCARD_OUT, Output 1 // LED allumée par le switch Var 0003, name courant // négatif si pas assez de courant Var 0004, name fs_mainbus, Link FSUIPC_IN, Offset $2840, Length 8, Numbers 2 // Main Bus Voltage { &courant = &fs_mainbus - 1699 CALL &lightsys } Var 0005, name lightsys, Link SUBRUTINE // subroutine qui controle les LEDs { &led = &switch * &courant // si switch ET courant = LED ON }
Explication si mainbus devient plus petit que 1700, la variable courant devient négative donc quand on la multiplie par la variable switch ca reste un nombre négatif. les led ne s'allume que si leur variable est >= 1. Donc même pas besoin de IF THEN pour attribuer des 0 / 1 à la variable courant une simple soustraction suffit CQFD
BOB | |
| | | Kelt760
Nombre de messages : 285 Date d'inscription : 15/03/2008 Localisation : Saclay
| Sujet: Re: Tension batterie non testable ?? Dim 30 Mar - 13:36 | |
| Merci, Bob c'est sûr que ton code est plus compact que le mien ; je n'avais pas pris le temps de voir comment réagit le mainbus de FS. L'astuce de la variable courant négative est subtile ; encore fallait-il savoir que les leds ne s'allument pas quand leur valeur est négative ! Me permets-tu de mettre cette astuce sur notre site (dans ce cas, tu me diras sous quel nom/lien je dois te citer) ? Mais pour en revenir au titre du post, cela n'explique pas la bizarrerie du test sur la batterie, qui ne se fait pas quand sa tension décroît... A+ Pierre | |
| | | Contenu sponsorisé
| Sujet: Re: Tension batterie non testable ?? | |
| |
| | | | Tension batterie non testable ?? | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |
|