Page 1 sur 2

Y'a un truc que je pige pas dans le SIOC

MessagePosté: Jeu 1 Mar 2012 23:25
de FiX
Y'a un principe que je comprends pas dans le SIOC:
Un exemple: un code tout bête de parking break.
La partie switch fonctionne, c'est pour les leds que je pige pas:

Pourquoi ce code fonctionne t-il:

Code: Tout sélectionner
Var 0165, name Parking, Link FSUIPC_INOUT, Offset $0BC8, Length 2     // parking brake
{
  IF &Parking = 32767
  {
    &Parking_led = 1   
  }
  ELSE
  {
    &Parking_led = 0   
  }
}

Var 0166, name Parking_sw, Link IOCARD_SW, Input 23
{
  IF &Parking_sw = 1
  {
    &Parking = 32767   
  }
  ELSE
  {
    &Parking = 0   
  }
}

Var 0167, name Parking_led, Link IOCARD_OUT, Output 24     // Voyant de parking brake


Alors que celui-là ne fonctionne pas:


Code: Tout sélectionner
Var 0165, name Parking, Link FSUIPC_INOUT, Offset $0BC8, Length 2     // parking brake

Var 0166, name Parking_sw, Link IOCARD_SW, Input 23
{
  IF &Parking_sw = 1
  {
    &Parking = 32767   
  }
  ELSE
  {
    &Parking = 0   
  }
}

Var 0167, name Parking_led, Link IOCARD_OUT, Output 24     // Voyant de parking brake
{
  IF &Parking = 32767
  {
    &Parking_led = 1   
  }
  ELSE
  {
    &Parking_led = 0   
  }
}



Pourquoi le simple fait de positionner la partie du code sur le voyant au dessus du code du switch change quelque chose?
Je ne comprends pas pourquoi l'ordre intervient puisque de toute façon tout est lu. gratgrat

Re: Y'a un truc que je pige pas dans le SIOC

MessagePosté: Ven 2 Mar 2012 00:08
de Ptitgars45
La règle du "qui commande" Fix !!!!!!!!!!!!!!!!!

C'est le mouvement de ton inter et/ou de FSUIPC qui commande ta Led, et non pas la Led qui se commande elle-même ecroulerire ecroulerire ecroulerire

Une fois que tu sais "qui commande", en gros change de valeur lors d'un appui su rune touche, alors tu as tout compris dans le SIOC !!!!

En espérant t'avoir aidé... yeuxhaut

Re: Y'a un truc que je pige pas dans le SIOC

MessagePosté: Ven 2 Mar 2012 11:39
de jéjé07
salut essai celui là
Var 0001, Link FSUIPC_INOUT, Offset $0BC8, Length 2 // parking brake

Var 0002, Link IOCARD_SW, Input 10
{
IF V0002 = 1
{
V0001 = 32767
V0003 = 1
}
ELSE
{
V0001 = 0
V0003 = 0
}
}

Var 0003, Link IOCARD_OUT, Output 20

Re: Y'a un truc que je pige pas dans le SIOC

MessagePosté: Ven 2 Mar 2012 11:49
de FiX
Ptitgars45 a écrit:La règle du "qui commande" Fix !!!!!!!!!!!!!!!!!

C'est le mouvement de ton inter et/ou de FSUIPC qui commande ta Led, et non pas la Led qui se commande elle-même ecroulerire ecroulerire ecroulerire

Une fois que tu sais "qui commande", en gros change de valeur lors d'un appui su rune touche, alors tu as tout compris dans le SIOC !!!!

En espérant t'avoir aidé... yeuxhaut



Non, j'y comprends rien du tout.
Je ne vois pas pourquoi le fait de passer la commande de led au dessus ou en dessous de la variable déclarée change quelque chose, alors que pour un switch ça ne change rien du tout.

C'est le mouvement de ton inter et/ou de FSUIPC qui commande ta Led, et non pas la Led qui se commande elle-même

Oui, ça je suis bien d'accord, mais là la led ne se commande pas elle même. C'est FSUIPC qui la commande (ça vient d'fs), dans le code que j'ai mis (qui sont exactement les 2 mêmes) c'est l'offset FSUIPC du parking brake qui commande la led.
La seule différence entre ces 2 codes c'est que dans un cas j'ai mis la commande en dessous de la variable $parking brake alors que dans l'autre cas j'ai mis la commande en dessous de la variabale $parking_led (ce qui me semblait plus logique d'un point de vue lecture).
Le premier fonctionne, pas le deuxième.

Re: Y'a un truc que je pige pas dans le SIOC

MessagePosté: Ven 2 Mar 2012 11:53
de FiX
jéjé07 a écrit:salut essai celui là
Var 0001, Link FSUIPC_INOUT, Offset $0BC8, Length 2 // parking brake

Var 0002, Link IOCARD_SW, Input 10
{
IF V0002 = 1
{
V0001 = 32767
V0003 = 1
}
ELSE
{
V0001 = 0
V0003 = 0
}
}

Var 0003, Link IOCARD_OUT, Output 20


Oui, ça marche, j'avais commencé par faire ça au début, mais le problème c'est que dans ce cas c'est le switch qui commande la led. Et moi je veux que ce soit bien l'état du parking brake dans FS qui commande la led.

Re: Y'a un truc que je pige pas dans le SIOC

MessagePosté: Ven 2 Mar 2012 12:30
de remont
Ton premier code fonctionne donc le problème est résolu.
Pourquoi le deuxième ne fonctionne pas ?

Car SIOC fonctionne par évènements. Pour executer une procédure, il faut changer la variable de la procédure.

Pour le deuxième exemple :

Var 0167, name Parking_led, Link IOCARD_OUT, Output 24 // Voyant de parking brake
{
IF &Parking = 32767
{
&Parking_led = 1
}
ELSE
{
&Parking_led = 0
}
}

Tu aimerai déclencher la procédure de la variable 0167. Donc pour celà, il faut modifier sa valeur.
Donc question suivante : quelle ligne de commande modifier la variable 0167 ? Réponse : les lignes &Parking_led = 1/0 ... Donc à l'intérieur même de la procédure que tu cherches à déclencher. peurefrayé Ce n'est donc pas possible. gratgrat

SUis-je clair ? zzzzzzzz

Re: Y'a un truc que je pige pas dans le SIOC

MessagePosté: Ven 2 Mar 2012 12:37
de tabar57
Tu peux aussi simplifier ainsi:

Var 0001, Link FSUIPC_INOUT, Offset $0BC8, Length 2 // parking brake
{
V0003 = V0001 * 1 // a chaque changement la led prend la valeur 0 ou 32767 et va s'allumer
}

Var 0002, Link IOCARD_SW, Input 10
{
IF V0002 = 1
{
V0001 = 32767
}
ELSE
{
V0001 = 0
}
}

Var 0003, Link IOCARD_OUT, Output 20



Cordialement


Bernard

Re: Y'a un truc que je pige pas dans le SIOC

MessagePosté: Ven 2 Mar 2012 12:46
de Colibri
Il a fallu que je réfléchisse longtemps mais je crois que j'ai pigé. Qu'on me corrige si ce n'est pas le cas.
Maintenant il faut que j'explique ce que j'ai compris .. gratgrat

Comme dit plus haut, ta LED dépend de la valeur de l'offset dans FS. Dans ton premier code, l'instruction concernant la LED trouve sa place dans la variable de cet offset. En cas de de changement de la valeur de l'offset -> action sur la LED

Dans ton deuxième code, l'instruction concernant ta LED est dans la variable de la LED, donc dépend d'elle-même. Mais comme une LED n'effectue aucune action, il n'y a forcément pas de réaction.

J'ai tout bon ? gratgrat

Re: Y'a un truc que je pige pas dans le SIOC

MessagePosté: Ven 2 Mar 2012 12:51
de Colibri
Tabar57 a écrit:
Code: Tout sélectionner
V0003 = V0001 * 1 // a chaque changement la led prend la valeur 0 ou 32767 et va s'allumer

çà je ne comprend pas du tout, par contre.
Pisque V0001 est égal à 0 ou à 32767, en disant V0003=V0001*1, V0003 sera aussi égal à 0 ou 32767, non ?
Or V0003 devrait être à 1 ou à 0 ...
Ou alors il suffit que V0003 soit différent de 0 pour que la led s'allume ? Mais dan ce cas pourquoi ne pas dire simplement V0003=V0001 ? Que change le *1 ?

Non capito gratgrat

Re: Y'a un truc que je pige pas dans le SIOC

MessagePosté: Ven 2 Mar 2012 12:53
de FiX
remont a écrit:Ton premier code fonctionne donc le problème est résolu.

Le problème n'était pas de faire un code qui fonctionne, juste de comprendre pourquoi le deuxième n'allait pas, et visiblement il y a un truc fondamental dans la logique du SIOC que je n'ai pas pigé.

Tu aimerai déclencher la procédure de la variable 0167. Donc pour celà, il faut modifier sa valeur.
Donc question suivante : quelle ligne de commande modifier la variable 0167 ? Réponse : les lignes &Parking_led = 1/0 ... Donc à l'intérieur même de la procédure que tu cherches à déclencher. Ce n'est donc pas possible.

SUis-je clair ?


Oui, je vois bien ce que tu veux dire.
Mais c'est justement ça qui me perturbe, puisque le SIOC est lu en boucle dès qu'il y a un changement d'état d'une variable, je ne comprends pas pourquoi l'ordre des commandes aurait une importance. Tout le code sera lu en boucle, il n'y a pas de début, pas de fin, donc pas vraiment d'ordre entre la commande et la déclaration de variable. Mettre la commande "au dessus" ou "en dessous" de la variable déclarée ne devrait pas affecter le code? gratgrat