Page 1 sur 2

Condition "ou"

MessagePosté: Dim 21 Oct 2012 15:26
de FiX
Je suis bloqué depuis quelques temps devant un truc pourtant pas bien compliqué que j'ai contourné avec un code "usine à gaz", mais ça ne me plait pas.
Comment traduire simplement la condition "ou" en SIOC?

Si on a, par exemple:
-variable A
-variable B
-variable Z

Je voudrais dire:
Si A= 1, ou si B=1, alors Z=1

Re: Conditon "ou"

MessagePosté: Dim 21 Oct 2012 15:51
de stevelep
Tu mets:

C0 = &A = 1
C1 = &B = 1

IF C0 OR C1
{
&X = 1
}

BOB

Re: Conditon "ou"

MessagePosté: Dim 21 Oct 2012 16:34
de stevelep
Plus simple pour ne LED si il faut juste que ta variable X >0 si A ou B sont positif c'est l'addition

&X = &A + &B

Pas de IF, mais si A et B sont activé ta variable X vaudra 2 ce qui n'est pas gênant pour une LED

BOB

Re: Conditon "ou"

MessagePosté: Lun 22 Oct 2012 11:10
de FiX
Merci!

Je ne savais pas que pour une led, on pouvait utiliser n'importe quelle valeur pourvu que ce soit >0. Je pensais qu'il fallait forcément 1.
Et ben c'est rudement pratique ça, en plus ça va me retirer une épine du pied pour autre chose.
C'est quand même rudement bien fichu ce SIOC là.
C'est que ça pourrait presque commencer à me plaire!

Ouh là, bon sang , qu'es-ce qui m'arrive...une Bobite aigüe! peurefrayé

Re: Conditon "ou"

MessagePosté: Lun 22 Oct 2012 11:54
de FiX
Par contre y'a quand même un truc qui m'embête:

Pour être plus précis, mes variables sont:
-led_start (une sortie master)
-$FSmag1
-$FSmag2
Ce sont les offset du démarreur des moteurs.
Donc quand ils prennent la valeur 4, c'est la position start.

Et moi ce que je veux dire c'est que, si au moins un des deux démarreur est sur start, alors ça allume un voyant start.
Donc:
"si FSmag1=4 ou FSmag2=4 alors led_start = 1, sinon led_start=0".

Donc j'ai fait;

C0=FSmag1=4
C1=FSmag2=4
IF C0 or C1
{
->led_start=1
}

Le problème c'est que ça va m'assigner la valeur 4 à l'offset FSmag. Et je me sers déjà de cet offset pour mon code de magneto, donc il ne faut pas que j'écrive une valeur dans cet offset.

Re: Conditon "ou"

MessagePosté: Lun 22 Oct 2012 12:42
de stevelep
Le code est juste.

Ça va pas modifier les valeurs de fsmag.

La ligne C0 = fsmag = 4 veux dire que la variable conditionnelle sera vraie TRUE si fsmag = 4
idem pour C1 mais ça ne change pas la valeur de fsmag.

C'est un résumé de IF fsmag = 4 THEN C0 = TRUE

Ensuite tu peux utiliser les fonctions logiques AND OR XOR etc...

BOB

Re: Conditon "ou"

MessagePosté: Lun 22 Oct 2012 12:59
de FiX
Impec, merci.

Re: Conditon "ou"

MessagePosté: Lun 22 Oct 2012 13:40
de Boutondair
Bravo Fix, et Merci Bob pour ces explications

David cligneoeil

Re: Conditon "ou"

MessagePosté: Mar 23 Oct 2012 23:46
de FiX
Mais alors comment ça se passe lorsque l'on a plusieurs conditions à programmer en "ou", sachant que l'on a que 3 variables conditionnelles ?

Par exemple:
Si A=1 ou B=1 ou C=2 ou D=3
Alors X=1

Re: Conditon "ou"

MessagePosté: Mar 23 Oct 2012 23:51
de stevelep
C0 = A = 1
C1 = B = 1
C2 = C0 OR C1
C0 = C = 2
C2 = C0 OR C2
C0 = D = 3

IF C0 OR C2
X = 1
ELSE
X = 0

On est obligé de faire comme ça car on ne peux pas mettre plus de 2 variables par ligne et
parce qu'il n'y a que 3 variables conditionnelles: C0 C1 C2

Si tu t'en fiche des valeurs et du résultats tu peux aussi les additionner

L0 = A + B
L1 = C + D
LED = L0 + L1