Page 1 sur 1

logique OR

MessagePosté: Dim 22 Jan 2023 20:44
de trajector
Bonjour à tous

Comment utiliser la logique OR dans sioc
Voici un essai de programme:

Code: Tout sélectionner
Var 0001, name essai_01

Var 0002, name essai_02
{
  IF &essai_01 = 1 OR &essai_02 = 1

{
V0004 = 5
}
}

Var 0004


Il m'est impossible de le compiler sous cette forme.

Quelqu'un pourrait-il m'aider à coder cette fonction logique dans sioc

Avec mes remerciements

Re: logique OR

MessagePosté: Lun 23 Jan 2023 13:19
de stevelep
Salut Trajector,

Tu dois utiliser les variables internes conditionelles (C0,C1 ou C2)
Comme noté dessous:

Code: Tout sélectionner
Var 0001, name essai_01

Var 0002, name essai_02
{
  C0 = &essai_01 = 1
  C1 = &essai_02 = 1
  IF C0 OR C1
    {
      V0004 = 5
    }
}

Var 0004

Re: logique OR

MessagePosté: Lun 23 Jan 2023 17:28
de trajector
Bonjour,

Merci Bob

J'ai fini par comprendre qu'il fallait passer par des valeurs
booléennes, avec C0, C1 et C2

Jean-Gilles

Re: logique OR

MessagePosté: Mar 24 Jan 2023 12:35
de stevelep
Il y a encore une petite subtilité:
Comme le code SIOC s'exécute uniquement quand la variable où il est écrit se modifie,
dans ton exemple si ta variable essai_02 est modifiée le code est exécuté mais si c'est
uniquement ta variable essai_01 qui change, il ne se passera rien !

2 possibilités:

- tu copies le même code sous les 2 variables (pas très joli mais ça marche)

Code: Tout sélectionner
Var 0001, name essai_01
{
  C0 = &essai_01 = 1
  C1 = &essai_02 = 1
  IF C0 OR C1
    {
      V0004 = 5
    }
}
Var 0002, name essai_02
{
  C0 = &essai_01 = 1
  C1 = &essai_02 = 1
  IF C0 OR C1
    {
      V0004 = 5
    }
}

Var 0004


- tes 2 variables renvoient vers une sous-routine que tu as créée et tu mets le code dedans. comme ça:

Code: Tout sélectionner
Var 0001, name essai_01
 {
   CALL &test_sub
 }
Var 0002, name essai_02
 {
   CALL &test_sub
 }
Var 0003, name test_sub, Link SUBRUTINE
{
  C0 = &essai_01 = 1
  C1 = &essai_02 = 1
  IF C0 OR C1
    {
      V0004 = 5
    }
}

Var 0004


Si tu as beaucoup de variable avec des conditions à tester, tu peux toutes les renvoyer dans la même sous routine
et mettre tout le code dedans par exemple pour un panneau annonciateur, tu renvoie tous les offset du moteur etc ...
dans la subroutine et tu y code l'allumage des différentes led du panneau annonciateur selon les conditions.

BOB

Re: logique OR

MessagePosté: Mar 24 Jan 2023 13:12
de trajector
Bonjour,

Merci pour la précision car c'est le cas.

J'étais dans le codage du radiopilot, inter et leds, avec courant ou pas de courant, avionics ou pas, plus le flyght directeur ou pas...
J'utilisais déjà les sous routines, mais je n'avais pas intégré la subtilité des "or" et "and" en valeurs booléennes.

Cela va bien m'aider.

Merci

Jean-Gilles