Différences entre les versions de « Logique combinatoire par liens »

De GCE Electronics
Aller à la navigation Aller à la recherche
Ligne 36 : Ligne 36 :


En effet, si une des 2 conditions est vraie, le résultat de l’addition est égal à 1. Il serait égal à 2 si les 2 conditions étaient vraies.
En effet, si une des 2 conditions est vraie, le résultat de l’addition est égal à 1. Il serait égal à 2 si les 2 conditions étaient vraies.
Formule de la fonction : ('''$id_preset1$ + $id_preset2$)'''


=== OU inclusif (OR) ===
=== OU inclusif (OR) ===
Ligne 45 : Ligne 47 :
Si nous souhaitons qu'une seule des 2 propositions soit vraie pour exécuter l'action, il faut modifier l'opérateur du comparateur.
Si nous souhaitons qu'une seule des 2 propositions soit vraie pour exécuter l'action, il faut modifier l'opérateur du comparateur.


Avec A==B, la sortie du comparateur sera activée si et seulement si le résultat de la fonction est égal à 1, cela signifie qu'une seule condition peut être vraie à la fois.
Avec A==B, la sortie du comparateur sera activée si et seulement si le résultat de la fonction est égal à 1, cela signifie qu''''une seule condition peut être vraie à la fois'''.


[[Fichier:LOGIQUE COMBINATOIRE OU EXCL.jpg|sans_cadre|889x889px]]
[[Fichier:LOGIQUE COMBINATOIRE OU EXCL.jpg|sans_cadre|889x889px]]
Ligne 53 : Ligne 55 :


===Exemple avec 3 conditions A, B , C.===
===Exemple avec 3 conditions A, B , C.===
Nous souhaitons exécuter une action lorsque '''A ET B OU C''' est vrai :
Nous souhaitons exécuter une action lorsque '''A ET B OU C''' est vraie :


[[Fichier:LOGIQUE COMBINATOIRE COMPLEXE.jpg|sans_cadre|905x905px]]
[[Fichier:LOGIQUE COMBINATOIRE COMPLEXE.jpg|sans_cadre|905x905px]]


===Exemple avec 4 conditions A, B, C, D===
===Exemple avec 4 conditions A, B, C, D===
Nous souhaitons exécuter une action lorsque '''(A ET B) OU (C ET D)''' est vrai.
Nous souhaitons exécuter une action lorsque '''(A ET B) OU (C ET D)''' est vraie.
 
Formule de la fonction : ('''$id_preset1$ * $id_preset2$) + ($id_preset3$ * $id_preset4$)'''


[[Fichier:LOGIQUE COMBINATOIRE COMPLEXE 2.jpg|sans_cadre|901x901px]]
[[Fichier:LOGIQUE COMBINATOIRE COMPLEXE 2.jpg|sans_cadre|901x901px]]
Ligne 67 : Ligne 71 :
Pour ce tutoriel, reprenons l’exemple 1 avec A ET B.
Pour ce tutoriel, reprenons l’exemple 1 avec A ET B.


Cette fois, nous voulons exécuter une action lorsque '''NON A ET B''' est vrai.
Cette fois, nous voulons exécuter une action lorsque '''NON A ET B''' est vraie.


Il suffit alors d’inverser les valeurs renseignées dans le Preset correspondant.
Il suffit alors d’inverser les valeurs renseignées dans le Preset correspondant.
Formule de la fonction : ('''$id_preset1$ * $id_preset2$)'''


[[Fichier:LOGIQUE COMBINATOIRE ET NON.jpg|sans_cadre|871x871px]]
[[Fichier:LOGIQUE COMBINATOIRE ET NON.jpg|sans_cadre|871x871px]]


== Opérateur NON-OU (NOR) ==
== Opérateur NON-OU (NOR) ==
Nous voulons exécuter l'action seulement si ni A ni B sont vraies.
Nous voulons exécuter l'action seulement si '''ni A ni B sont vraies'''.


Prenons comme précédemment 2 conditions A et B.
Prenons comme précédemment 2 conditions A et B.


D'après les lois de De Morgan, NON (A OU B) est équivalent à NON(A) ET NON(B)
D'après les lois de De Morgan, NON (A OU B) est équivalent à '''NON(A) ET NON(B)'''


Réglons le preset1 de manière à ce que la sortie prenne la valeur 1 lorsque A est fausse, faisons de même avec le preset2 pour la condition B.
Réglons le preset1 de manière à ce que la sortie prenne la valeur 1 lorsque A est fausse, faisons de même avec le preset2 pour la condition B.


Vous remarquerez la multiplication dans la formule de la fonction.
Vous remarquerez la multiplication dans la formule de la fonction (('''$id_preset1$ * $id_preset2$))'''
 




Ligne 93 : Ligne 100 :
Prenons comme précédemment 2 conditions A et B.
Prenons comme précédemment 2 conditions A et B.


D'après les lois de De Morgan, NON (A ET B) est équivalent à NON(A) OU NON(B)
D'après les lois de De Morgan, NON (A ET B) est équivalent à '''NON(A) OU NON(B)'''


Réglons le preset1 de manière à ce que la sortie prenne la valeur 1 lorsque A est fausse, faisons de même avec le preset2 pour la condition B.
Réglons le preset1 de manière à ce que la sortie prenne la valeur 1 lorsque A est fausse, faisons de même avec le preset2 pour la condition B.


Vous remarquerez l'addition dans la formule de la fonction. La sortie du comparateur sera activée lorsque l'une des conditions sera fausse.
Vous remarquerez l'addition dans la formule de la fonction. La sortie du comparateur sera activée lorsque l'une des conditions sera fausse.
Formule de la fonction : ('''$id_preset1$ + $id_preset2$)'''


[[Fichier:LOGIQUE COMBINATOIRE NON-ET.jpg|sans_cadre|892x892px]]
[[Fichier:LOGIQUE COMBINATOIRE NON-ET.jpg|sans_cadre|892x892px]]

Version du 23 octobre 2023 à 15:47

Introduction

Logique combinatoire

Logique combinatoire.jpg
Nom Logique combinatoire
Famille IPX800 V5
Wiki créé le 22/10/2023
Wiki mis à jour le 22/10/2023
Auteur @fgtoul


Le moteur de scénario de l'ipx800 V5 permet de créer des combinaisons logiques grâce aux opérateurs ET, OU, NON.

Nous pouvons tout à fait créer ce même type de condition complexe en utilisant des liens seulement.

L’astuce consiste à transformer une valeur logique en valeur analogique (avec les Presets) afin de faire des opérations mathématiques qui remplaceront les opérateurs ET / OU.


Nous utiliserons des variables dans la formule des objets de type "Fonction".

Pour plus d'informations sur cet usage, veuillez vous reporter à cet article : Utilisation des variables

Opérateur ET

L’opérateur ET sera toujours remplacé par une multiplication dans la formule d’un objet fonction.

Dans l’exemple ci-dessous, lorsque les 2 conditions sont vraies, l’objet fonction retourne un résultat = 1, ce qui permet de lancer l’action au travers du comparateur.

LOGIQUE COMBINATOIRE ET.jpg

Opérateur OU

L’opérateur OU est toujours remplacé par une addition.

Dans l’exemple précédent, si nous avions voulu une combinaison par OU, nous aurions utilisé l’addition dans la formule de l’objet fonction, le comparateur serait alors A >=1

En effet, si une des 2 conditions est vraie, le résultat de l’addition est égal à 1. Il serait égal à 2 si les 2 conditions étaient vraies.

Formule de la fonction : ($id_preset1$ + $id_preset2$)

OU inclusif (OR)

LOGIQUE COMBINATOIRE OU.jpg

L'opérateur A>=B permet de prendre en compte le fait qu'au moins l'une des 2 propositions est vraie.

OU exclusif (XOR)

Si nous souhaitons qu'une seule des 2 propositions soit vraie pour exécuter l'action, il faut modifier l'opérateur du comparateur.

Avec A==B, la sortie du comparateur sera activée si et seulement si le résultat de la fonction est égal à 1, cela signifie qu'une seule condition peut être vraie à la fois.

LOGIQUE COMBINATOIRE OU EXCL.jpg

Combinaisons ET / OU

Le fait d’utiliser la multiplication pour ET et l’addition pour OU dans les formules permet de créer des combinaisons complexes mêlant ET et OU.

Exemple avec 3 conditions A, B , C.

Nous souhaitons exécuter une action lorsque A ET B OU C est vraie :

LOGIQUE COMBINATOIRE COMPLEXE.jpg

Exemple avec 4 conditions A, B, C, D

Nous souhaitons exécuter une action lorsque (A ET B) OU (C ET D) est vraie.

Formule de la fonction : ($id_preset1$ * $id_preset2$) + ($id_preset3$ * $id_preset4$)

LOGIQUE COMBINATOIRE COMPLEXE 2.jpg

Opérateur NON (NOT)

Pour créer une condition logique avec un capteur NF par exemple, il existe la Tuile NON dans le Rule Engine. Nous allons voir comment faire dans notre logique.

Pour ce tutoriel, reprenons l’exemple 1 avec A ET B.

Cette fois, nous voulons exécuter une action lorsque NON A ET B est vraie.

Il suffit alors d’inverser les valeurs renseignées dans le Preset correspondant.

Formule de la fonction : ($id_preset1$ * $id_preset2$)

LOGIQUE COMBINATOIRE ET NON.jpg

Opérateur NON-OU (NOR)

Nous voulons exécuter l'action seulement si ni A ni B sont vraies.

Prenons comme précédemment 2 conditions A et B.

D'après les lois de De Morgan, NON (A OU B) est équivalent à NON(A) ET NON(B)

Réglons le preset1 de manière à ce que la sortie prenne la valeur 1 lorsque A est fausse, faisons de même avec le preset2 pour la condition B.

Vous remarquerez la multiplication dans la formule de la fonction (($id_preset1$ * $id_preset2$))


LOGIQUE COMBINATOIRE NON-OU.jpg


Opérateur NON-ET (NAND)

Nous voulons exécuter l'action seulement si au moins une des conditions est fausse.

Prenons comme précédemment 2 conditions A et B.

D'après les lois de De Morgan, NON (A ET B) est équivalent à NON(A) OU NON(B)

Réglons le preset1 de manière à ce que la sortie prenne la valeur 1 lorsque A est fausse, faisons de même avec le preset2 pour la condition B.

Vous remarquerez l'addition dans la formule de la fonction. La sortie du comparateur sera activée lorsque l'une des conditions sera fausse.

Formule de la fonction : ($id_preset1$ + $id_preset2$)

LOGIQUE COMBINATOIRE NON-ET.jpg