Mon 1er Script ,ca fonctionne

Questions de programmation / Offset FSUIPC et IOCP

Mon 1er Script ,ca fonctionne

Messagede Brenne » Dim 1 Mai 2016 08:05

Je viens de terminer mon 1er script , aucune erreur a la compilation mais votre avis serait le bienvenu sur ma prog .
Bien sur , ce n'est encore q'un broullion , il faut que je revoie la numerotation des variables et les bon N° d'entree .
je vais egalement modifier les noms des libelles pour que les terminaisons soient _SW ou _LED etc .
Si le principe est bon , le reste .....

//----------------------------------------
// ******* MODULE Electrical Panel -- EEC
//----------------------------------------
Var 1210, name ETATEEC, Link FSUIPC_INOUT, Offset $568E, Length 2
{
&EEC1ON = TESTBIT &ETATEEC ,0
&EEC2ON = TESTBIT &ETATEEC ,1
&EEC3ON = TESTBIT &ETATEEC ,2
&EEC4ON = TESTBIT &ETATEEC ,4
}

Var 1211, name INTEREEC1, Link IOCARD_SW, Device 11, Input 18, Type P
{
IF &INTEREEC1 = 1
{
&ETATEEC = SETBIT 0
&LEDEEC1ON = SETBIT 0
}
ELSE
{
&ETATEEC = CLEARBIT 0
&LEDEEC1ON = CLEARBIT 0
}
}

Var 1212, name INTEREEC2, Link IOCARD_SW, Device 11, Input 18, Type P
{
IF &INTEREEC2 = 1
{
&ETATEEC = SETBIT 1
&LEDEEC2ON = SETBIT 1
}
ELSE
{
&ETATEEC = CLEARBIT 1
&LEDEEC2ON = CLEARBIT 1
}
}

Var 1214, name INTEREEC3, Link IOCARD_SW, Device 11, Input 18, Type P
{
IF &INTEREEC3 = 1
{
&ETATEEC = SETBIT 2
&LEDEEC3ON = SETBIT 2
}
ELSE
{
&ETATEEC = CLEARBIT 2
&LEDEEC3ON = CLEARBIT 2
}
}

Var 1216, name INTEREEC4, Link IOCARD_SW, Device 11, Input 18, Type P
{
IF &INTEREEC4 = 1
{
&ETATEEC = SETBIT 4
&LEDEEC4ON = SETBIT 4
}
ELSE
{
&ETATEEC = CLEARBIT 4
&LEDEEC4ON = CLEARBIT 4
}
}

Var 1225, name EEC1ON, Link IOCARD_OUT, Output 45

Var 1226, name EEC2ON, Link IOCARD_OUT, Output 45

Var 1227, name EEC3ON, Link IOCARD_OUT, Output 45

Var 1228, name EEC4ON, Link IOCARD_OUT, Output 45

Var 3130, name LEDEEC1ON, Link IOCARD_OUT, Output 27

Var 3131, name LEDEEC2ON, Link IOCARD_OUT, Output 27

Var 3132, name LEDEEC3ON, Link IOCARD_OUT, Output 27

Var 3133, name LEDEEC4ON, Link IOCARD_OUT, Output 27

Var 1217, name ETATFAUTEEC1, Link FSUIPC_INOUT, Offset $568E, Length 2

Var 1218, name LEDFAUTEEC1, Link IOCARD_OUT, Output 45
{
&LEDFAUTEEC1 = TESTBIT &ETATFAUTEEC1 ,0
}

Var 1219, name ETATFAUTEEC2, Link FSUIPC_INOUT, Offset $568E, Length 2

Var 1220, name LEDFAUTEEC2, Link IOCARD_OUT, Output 45
{
&LEDFAUTEEC2 = TESTBIT &ETATFAUTEEC2 ,1
}

Var 1221, name ETATFAUTEEC3, Link FSUIPC_INOUT, Offset $568E, Length 2

Var 1222, name LEDFAUTEEC3, Link IOCARD_OUT, Output 45
{
&LEDFAUTEEC3 = TESTBIT &ETATFAUTEEC3 ,2
}

Var 1223, name ETATFAUTEEC4, Link FSUIPC_INOUT, Offset $568E, Length 2

Var 1224, name LEDFAUTEEC4, Link IOCARD_OUT, Output 45
{
&LEDFAUTEEC4 = TESTBIT &ETATFAUTEEC4 ,4
}
je vole , donc je suis......

http://perso.orange.fr/b747project/
Avatar de l’utilisateur
Brenne
 
Messages: 120
Inscription: 21/04/09
Localisation: indre

Re: Mon 1er Script ,ca fonctionne

Messagede tabar57 » Dim 1 Mai 2016 09:55

Bonjour,

Je vois pas l’intérêt d'avoir 4 variables sur une input 18 et 4 $568E et 4 output 27 et 4 output 45 ?

Si je comprend bien, tu veux allumer des leds en correspondance avec des bits de la variable 568E et avec 4 interrupteurs ?

Commençons par simplifier cela en ne déclarant qu'une fois la 568E et c'est sa valeur que tu vas tester à chaque changement pour allumer la bonne led
Les inters ne sont chargés que de modifier les bits de la variable 568E, ils doivent donc modifier UNIQUEMENT cette variable et c'est lors de cette modification que le programme va adapter l'état des leds en lisant cette variable.

Le plus simple c'est de rajouter une routine ( subrutine ) qui va faire ce test et que tu rajoutera sous la variable 568E par un call &(nom de la routine )....
ainsi chaque fois que la variable 568E va changer de valeur elle va mettre tes leds en correspondance des bits de la variable 568e

Il faut comprendre ce mode de fonctionnement avant d'aller plus loin

En clair, on agit sur un inter qui va modifier un bit de la variable 568E et à ce moment là, la routine sous la 568E est appelée pour mettre les leds en correspondance, le reste du temps le programme ne fait rien, il attend un évènement.


Cordialement

Bernard
Mon blog de construction : http://tabar57.blog4ever.com
Hémicockpit de Beechcraft B200 ( de FlightOne ) P3DV4.5 et 2 PC en réseau W7 64 bits et W10, cartes OC et FDbus, vibreur et yoke rdf de BFFsimulation, météo réelle asp4
Avatar de l’utilisateur
tabar57
 
Messages: 3651
Inscription: 29/12/10
Localisation: Dans ma cabine en Lorraine

Re: Mon 1er Script ,ca fonctionne

Messagede Brenne » Dim 1 Mai 2016 11:05

Ce que je veux , c'est avoir un fonctionnement correspondant au module sur l'overhead du 747 .il y a 4 inter EEC avec 2 positions et une Led pour chacune des positions .
Dans mon script , pour l'instant les N° d'entres et sorties ne correspondes a rien , mais bien sur chaque inter et chaque led aura une affectation differente .
Quand il ne me restera qu'a renseigner les bons N° , ce sera du gateau .
Pour l'instant je decouvre un peu SIOC , j'y vais pas a pas .Il faut que j'etudie le principe de la sous-routine .....

jean luc
je vole , donc je suis......

http://perso.orange.fr/b747project/
Avatar de l’utilisateur
Brenne
 
Messages: 120
Inscription: 21/04/09
Localisation: indre

Re: Mon 1er Script ,ca fonctionne

Messagede mameloose » Dim 1 Mai 2016 13:37

oula jai refait ton code comme ca tu pourra comprendre !
IMPORTANT c'est la variable qui commande et non pas les led donc quand tu assigne une commande ou une fonction tu met ca avec la variable et non pas dans la led !
ensuite une fois que tu as declaré une variable avec offset inutile de la redeclarer plusieurs fois ca finira par bugger sinon

voila regarde



Var 1210, name ETATEEC, Link FSUIPC_INOUT, Offset $568E, Length 2
{
&EEC1ON = TESTBIT &ETATEEC ,0
&EEC2ON = TESTBIT &ETATEEC ,1
&EEC3ON = TESTBIT &ETATEEC ,2
&EEC4ON = TESTBIT &ETATEEC ,4
&LEDFAUTEEC1 = TESTBIT &ETATEEC ,0
&LEDFAUTEEC2 = TESTBIT &ETATEEC ,1
&LEDFAUTEEC3 = TESTBIT &ETATEEC ,2
&LEDFAUTEEC4 = TESTBIT &ETATEEC ,4
}

Var 1211, name INTEREEC1, Link IOCARD_SW, Device 11, Input 18, Type P
{
IF &INTEREEC1 = 1
{
&ETATEEC = SETBIT 0
}
ELSE
{
&ETATEEC = CLEARBIT 0
}
}

Var 1212, name INTEREEC2, Link IOCARD_SW, Device 11, Input 18, Type P
{
IF &INTEREEC2 = 1
{
&ETATEEC = SETBIT 1
}
ELSE
{
&ETATEEC = CLEARBIT 1
}
}

Var 1214, name INTEREEC3, Link IOCARD_SW, Device 11, Input 18, Type P
{
IF &INTEREEC3 = 1
{
&ETATEEC = SETBIT 2
}
ELSE
{
&ETATEEC = CLEARBIT 2
}
}

Var 1216, name INTEREEC4, Link IOCARD_SW, Device 11, Input 18, Type P
{
IF &INTEREEC4 = 1
{
&ETATEEC = SETBIT 4
}
ELSE
{
&ETATEEC = CLEARBIT 4
}
}

Var 3130, name LEDEEC1ON, Link IOCARD_OUT, Output 27

Var 3131, name LEDEEC2ON, Link IOCARD_OUT, Output 27

Var 3132, name LEDEEC3ON, Link IOCARD_OUT, Output 27

Var 3133, name LEDEEC4ON, Link IOCARD_OUT, Output 27

Var 1218, name LEDFAUTEEC1, Link IOCARD_OUT, Output 45

Var 1220, name LEDFAUTEEC2, Link IOCARD_OUT, Output 45

Var 1222, name LEDFAUTEEC3, Link IOCARD_OUT, Output 45

Var 1224, name LEDFAUTEEC4, Link IOCARD_OUT, Output 45
Avatar de l’utilisateur
mameloose
 
Messages: 1271
Inscription: 20/04/09
Localisation: evreux

Re: Mon 1er Script ,ca fonctionne

Messagede mameloose » Dim 1 Mai 2016 13:39

petit detail tu as du te tromper sur des testbit parce que pour tes led ON et FAULT tu as le meme bit donc les deux vont s'allumer en meme temps ?
Avatar de l’utilisateur
mameloose
 
Messages: 1271
Inscription: 20/04/09
Localisation: evreux

Re: Mon 1er Script ,ca fonctionne

Messagede Brenne » Dim 1 Mai 2016 19:58

Effectivement , c'est plus condense .
Merci d'avoir repris mon laius ...
Donc pour les leds ON , apres avoir identifier les bons Bits , je doit rajouter a la suite des ledfault sur le meme principe de cette facon
&LEDEEC1ON = TESTBIT &ETATEEC ,x si j'ai bien compris ?
je vole , donc je suis......

http://perso.orange.fr/b747project/
Avatar de l’utilisateur
Brenne
 
Messages: 120
Inscription: 21/04/09
Localisation: indre

Re: Mon 1er Script ,ca fonctionne

Messagede mameloose » Dim 1 Mai 2016 20:30

Oui par exemple..
Mais tu doit avoir d'autre offset pour contrôler tout ça je jetterai un coup d'oeil sur projet magenta et je te ferai le code avec les bon offset
Avatar de l’utilisateur
mameloose
 
Messages: 1271
Inscription: 20/04/09
Localisation: evreux

Re: Mon 1er Script ,ca fonctionne

Messagede Brenne » Lun 2 Mai 2016 07:31

Merci sincerement pour ton aide , pas evident quand on debarque comme moi dans SIOC .....
je vole , donc je suis......

http://perso.orange.fr/b747project/
Avatar de l’utilisateur
Brenne
 
Messages: 120
Inscription: 21/04/09
Localisation: indre

Re: Mon 1er Script ,ca fonctionne

Messagede mameloose » Jeu 5 Mai 2016 12:43

alors en ce qui concerne l'offset de controle switch c'est a dire celui qui fait appuyer sur ton bouton c'est la $568E qui se controle en setbit clearbit .
sachant que dans un 747 ce ne sont pas des led dans les boutons mais de petit volets qui souvrent et laisse apparaitre un ON ou NORM quand on appuie dessus .

ducoup pour tes led NORM tu peux les inclure avec ton action bouton

par contre les led FAIL sont bien des leds et c'est commandé avec la $568F en testbit !

donc dans ton code normalement ca devrait donner ca :

Code: Tout sélectionner
Var 1210, name ETATEEC, Link FSUIPC_INOUT, Offset $568E, Length 1

Var 1211, name INTEREEC1, Link IOCARD_SW, Input 18, Type P
{
  IF &INTEREEC1 = 1
  {
    &ETATEEC = SETBIT 0
    &LEDEEC1ON = 1   
  }
  ELSE
  {
    &ETATEEC = CLEARBIT 0
    &LEDEEC1ON = 0   
  }
}

Var 1212, name INTEREEC2, Link IOCARD_SW, Input 18, Type P
{
  IF &INTEREEC2 = 1
  {
    &ETATEEC = SETBIT 1
    &LEDEEC2ON = 1   
  }
  ELSE
  {
    &ETATEEC = CLEARBIT 1
    &LEDEEC2ON = 0   
  }
}

Var 1214, name INTEREEC3, Link IOCARD_SW, Input 18, Type P
{
  IF &INTEREEC3 = 1
  {
    &ETATEEC = SETBIT 2
    &LEDEEC3ON = 1   
  }
  ELSE
  {
    &ETATEEC = CLEARBIT 2
    &LEDEEC3ON = 0   
  }
}

Var 1216, name INTEREEC4, Link IOCARD_SW, Input 18, Type P
{
  IF &INTEREEC4 = 1
  {
    &ETATEEC = SETBIT 4
    &LEDEEC4ON = 1   
  }
  ELSE
  {
    &ETATEEC = CLEARBIT 4
    &LEDEEC4ON = 0   
  }
}

Var 3130, name LEDEEC1ON, Link IOCARD_OUT, Output 27

Var 3131, name LEDEEC2ON, Link IOCARD_OUT, Output 27

Var 3132, name LEDEEC3ON, Link IOCARD_OUT, Output 27

Var 3133, name LEDEEC4ON, Link IOCARD_OUT, Output 27

Var 1218, name LEDFAUTEEC1, Link IOCARD_OUT, Output 45

Var 1220, name LEDFAUTEEC2, Link IOCARD_OUT, Output 45

Var 1222, name LEDFAUTEEC3, Link IOCARD_OUT, Output 45

Var 1224, name LEDFAUTEEC4, Link IOCARD_OUT, Output 45

Var 1225, name ETATEECFAIL, Link FSUIPC_INOUT, Offset $568F, Length 1
{
  &LEDFAUTEEC1 = TESTBIT &ETATEECFAIL ,4
  &LEDFAUTEEC2 = TESTBIT &ETATEECFAIL ,2
  &LEDFAUTEEC3 = TESTBIT &ETATEECFAIL ,5
  &LEDFAUTEEC4 = TESTBIT &ETATEECFAIL ,3
}
Avatar de l’utilisateur
mameloose
 
Messages: 1271
Inscription: 20/04/09
Localisation: evreux

Re: Mon 1er Script ,ca fonctionne

Messagede Brenne » Ven 6 Mai 2016 08:04

OK ; super , je commence a mieux cerner les principes du SIOC , il faut dire que en ce moment je passe pas mal de temps dedans , il reste enormement de chemin a faire mais cela progresse .
Une de mes plus grosses difficultees concerne les Offsets , j'ai regarder en affichant le Pmsystem , il en manque pas mal et si je regarde dans le fichier Sysvar de Pmsystem ,ce n'est pas tres net , on retrouve plusieurs fois des appellations identiques et c'est melange entre les divers appareils et pas bien indique.
Dans le script 747 Pmagenta qui me sert de modele , il y a des offsets qui ne correspondent pas au fichier sysvar de PM ,
exemple
Var 0249, name ETATAPUBLEED, Link FSUIPC_INOUT, Offset $5628, Length 2

dans sysvar j'ai cela pour le 5628 :
5628 .0 Batt1
5628 .1 Batt2
5628 .2 BusTie1 // 747 777
5628 .3 BusTie2 // 747 777
5628 .4 BusTie3 // 747
5628 .5 BusTie4 // 747
5628 .6 Batt1Light
5628 .7 Batt2Light
J'ai quelques autres cas et surtout des offest ou les differents bytes que j'aie du mal a trouver .
J'ai beau chercher , je n'aie pas trouve de docs tres complete ......
En existe t'il une ?
je vole , donc je suis......

http://perso.orange.fr/b747project/
Avatar de l’utilisateur
Brenne
 
Messages: 120
Inscription: 21/04/09
Localisation: indre

Suivante

Retourner vers Programmation Sioc





Qui est en ligne

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