logique OR

Questions de programmation / Offset FSUIPC et IOCP

logique OR

Messagede trajector » Dim 22 Jan 2023 20:44

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
trajector
 
Messages: 120
Inscription: 19/04/09

Re: logique OR

Messagede stevelep » Lun 23 Jan 2023 13:19

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
Avatar de l’utilisateur
stevelep
Administrateur du site
 
Messages: 2074
Inscription: 27/03/09
Localisation: LSGN Neuchâtel, Suisse

Re: logique OR

Messagede trajector » Lun 23 Jan 2023 17:28

Bonjour,

Merci Bob

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

Jean-Gilles
trajector
 
Messages: 120
Inscription: 19/04/09

Re: logique OR

Messagede stevelep » Mar 24 Jan 2023 12:35

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
Avatar de l’utilisateur
stevelep
Administrateur du site
 
Messages: 2074
Inscription: 27/03/09
Localisation: LSGN Neuchâtel, Suisse

Re: logique OR

Messagede trajector » Mar 24 Jan 2023 13:12

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
trajector
 
Messages: 120
Inscription: 19/04/09


Retourner vers Programmation Sioc





Qui est en ligne

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