Note de ce sujet :
  • Moyenne : 5 (1 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Contrôleur logique ABA S/1.2.1 : partage de blocs fonctions
#51
Encore merci XeNo !

Voici comment je l'ai adapté pour gérer la lampe de ma buanderie en cas de mode nuit ou mode absent.
En mode nuit, ça coupe tout de suite la lampe.
En mode absent, ça fait un tempo de 30 secondes avant de l'éteindre (pour avoir le temps de sortir vers l'extérieur).
Il fallait inverser au niveau du RS-FF, modifier le filtre et retirer ton NOT sur le filtre.

   
Répondre
#52
Hello,

Je ne sais pas si je fais bien de poser ma question dans ce sujet ou si je devrais plutôt en créer un nouveau (si tel est le cas, les modos, n'hésitez pas à le déplacer)...

Je cherche à réaliser la chose suivante :

- 1 "KNX IN" de 1 BIT : Entrée 1
- 1 "KNX IN" de 1 BIT : Entrée 2
- 1 "KNX OUT" de 1 BIT : Sortie

Dans un premier temps, il faut que les 2 entrées soient True pour que la sortie soit à True.
Si l'entrée 1 est toujours à True quand l'entrée 2 passe à False, la sortie doit rester à True.
Si l'entrée 1 passe à False, la sortie doit passer à False.
Si l'entrée 1 passe à nouveau à True alors que l'entrée 2 est toujours à False, la sortie doit rester à False.

Le "déclencheur" est donc que les 2 entrées soit True pour que ma logique débute.

Ca parait simple mais je n'arrive pas à trouver la bonne logique pour ça car ça se déroule en "plusieurs temps"... Comment faire ?
Répondre
#53
Tu décris un problème de logique séquentielle ; c'est à dire que l'état d'une sortie ne dépend pas exclusivement de l'état des entrées (comme c'est le cas pour la logique combinatoire et que l'on peut mettre en équations avec l'algèbre de Boole) mais également de l'état précédent d'une sortie. Tu dois passer par des bascules pour mémoriser l'état précédent de la sortie.
Répondre
#54
Oui, mais par bascules, qu'entends-tu par là ?
- Des RS Flip Flop ?
- Faire 2 fonctions distinctes dont l'une démarre avec les 2 entrées et l'autre mélange l'entrée 1 avec l'états de la sortie ? Pour prendre exemple sur une lampe, l'état dans l'actionneur de celle-ci ?

Si c'est la première solution, je pensais en effet qu'il fallait partir sur des RS Flip Flop mais je ne parviens pas à trouver la solution.
Si c'est la deuxième solution, j'ai l'idée et je pense que ça pourrait fonctionner mais ce n'est p-e pas la meilleure méthode...
Répondre
#55
Oui avec des bascules RS ou éventuellement utiliser des GA comme des bits internes (pour mémoriser l'information intermédiaire).
Répondre
#56
(03/04/2024, 15:20:37)Ives a écrit : Oui avec des bascules RS ou éventuellement utiliser des GA comme des bits internes (pour mémoriser l'information intermédiaire).

Oui, c'est bien ce qu'il me semblait. Bon, je continue donc à chercher comment faire avec des RS Flip Flop. J'aime pas la solution de GA intermédiaire même si c'est la solution la + facile.
Répondre
#57
J'ai réussi !
Je rédige ma réponse pour vous partager mon bloc de fonction.
Répondre
#58
Basculement séquentiel 2 entrées

Le but de ce bloc de fonction est de permettre l'activation ON (1) d'une sortie uniquement si, dans un premier temps, les 2 entrées sont ON (1) et de garder ensuite cette sortie ON (1) tant que l'entrée 1 est ON (1).

Fonctionnement :

- 1 IN de 1 BIT : Entrée 1
- 1 IN de 1 BIT : Entrée 2
- 1 OUT de 1 BIT : Sortie

1) Dans un premier temps, il faut que les 2 entrées soient ON pour que la sortie soit à ON.
2) Si l'entrée 1 est toujours à ON quand l'entrée 2 passe en OFF, la sortie reste à ON.
3) Si l'entrée 1 passe à OFF, la sortie passe à OFF.
4) Si l'entrée 1 passe à nouveau à ON alors que l'entrée 2 est toujours à OFF, la sortie reste à OFF.

En résumé, pour que la sortie soit ON, il est nécessaire que les 2 entrées soient ON dans un premier temps.

Schéma :

   

Exemple :

Dans des toilettes sous un escalier, un détecteur de présence détecte les personnes qui montent l'escalier (détection non souhaitée). L'ajout d'un capteur d'ouverture de porte permet la prise en compte du détecteur uniquement si la porte est ouverte.
La détection d'un détecteur de présence est l'entrée 1 et un détecteur d'ouverture de porte est l'entrée 2.
1) Lorsque la porte s'ouvre (Entrée 2 = ON) et que le détecteur détecte une présence (Entrée 1 = ON), la lampe s'allume (Sortie = ON).
2) La porte est fermée (Entrée 2 = OFF) tandis que le détecteur détecte toujours une présence (Entrée 1 = ON), la lampe reste allumée (Sortie = ON).
3) La porte est à nouveau ouverte pour sortir de la pièce (Entrée 2 = ON), le détecteur détecte toujours une présence (Entrée 1 = ON), la lampe reste allumée (Sortie = ON).
4) La porte est fermée (Entrée 2 = OFF) et le détecteur ne détecte plus de présence (Entrée 1 = OFF), la lampe s'éteint (Sortie = OFF).
5) Si le détecteur détecte à nouveau une présence (Entrée 1 = ON) mais que la porte est fermée (Entrée 2 = OFF), la lampe reste éteinte (Sortie = OFF).

Voici un schéma pour cet exemple contenant également des temporisations dont le temps d'activation est configurable (via Home Assistant).
Dans mon cas, l'information capteur d'ouverture venant de Home Assistant, un BIT (SW HA ACTIF) permet de s'assurer que Home Assistant est toujours joignable (dans le cas contraire, le capteur d'ouverture est ignoré).

   


Download :


.zip   Basculement séquentiel 2 entrées.zip (Taille : 2,5 Ko / Téléchargements : 4)
Répondre
#59
Quel est ta version de ETS ?
Je n'arrive pas à récupérer le fichier xml de ta FB.
A l'importation dans ETS, j'ai une erreur qui est annoncée
Répondre
#60
(04/04/2024, 09:39:15)richardpub a écrit : Quel est ta version de ETS ?
Je n'arrive pas à récupérer le fichier xml de ta FB.
A l'importation dans ETS, j'ai une erreur qui est annoncée

Hello,

J'ai la dernière version d'ETS : ETS 6.2.1 (version 7247).
Pour le participant ABB ABA/S1.2.1, le programme d'application est le "Contrôleur logique/1.0e".
Dans le "A propos" de l'ABA, j'ai "Version 1.0.5234.0".

Pour exporter le bloc de fonction, j'ai utilisé le petit carré de droite à côté du bloc pour l'exporter... Ce n'est p-e pas la bonne méthode ?
Si j'essaye d'exporter via le menu "Fichier", ça m'exporte toutes mes feuilles...
Répondre
#61
(04/04/2024, 09:49:49)Christophe0110 a écrit :
(04/04/2024, 09:39:15)richardpub a écrit : Quel est ta version de ETS ?
Je n'arrive pas à récupérer le fichier xml de ta FB.
A l'importation dans ETS, j'ai une erreur qui est annoncée

Hello,

J'ai la dernière version d'ETS : ETS 6.2.1 (version 7247).
Pour le participant ABB ABA/S1.2.1, le programme d'application est le "Contrôleur logique/1.0e".
Dans le "A propos" de l'ABA, j'ai "Version 1.0.5234.0".

Pour exporter le bloc de fonction, j'ai utilisé le petit carré de droite à côté du bloc pour l'exporter... Ce n'est p-e pas la bonne méthode ?
Si j'essaye d'exporter via le menu "Fichier", ça m'exporte toutes mes feuilles...

C'est la bonne méthode mais je suis en ETS5 et ce n'est surement pas rétro-compatible.
Répondre
#62
Citation :C'est la bonne méthode mais je suis en ETS5 et ce n'est surement pas rétro-compatible.

Possible en effet...
Sinon, ce n'est pas très compliqué à reproduire :

- Entrée 1 et 2 sur les entrées des 3 AND de gauche que tu vois (respectivement l'entrée 1 sur les I1 et l'entrée 2 sur les I2 de chaque AND).
- Un NOT sur le I2 du 2ème AND et des NOT sur I1 et I2 du 3ème AND.
- Le OUT du 1er AND vers le OR I1 ainsi que vers le flag SET du 1er RS-FF.
- Le OUT du 2ème AND vers le flag SET du 2ème RS-FF.
- Le OUT du 3ème AND vers les flags RESET des 2 RS-FF.
- Les OUT des 2 RS-FF vers le AND de droite.
- La sortie de ce AND de droite vers le I2 du OR.
- La sortie du OR vers la sortie.
Répondre
#63
(04/04/2024, 11:55:23)Christophe0110 a écrit :
Citation :C'est la bonne méthode mais je suis en ETS5 et ce n'est surement pas rétro-compatible.

Possible en effet...
Sinon, ce n'est pas très compliqué à reproduire :

- Entrée 1 et 2 sur les entrées des 3 AND de gauche que tu vois (respectivement l'entrée 1 sur les I1 et l'entrée 2 sur les I2 de chaque AND).
- Un NOT sur le I2 du 2ème AND et des NOT sur I1 et I2 du 3ème AND.
- Le OUT du 1er AND vers le OR I1 ainsi que vers le flag SET du 1er RS-FF.
- Le OUT du 2ème AND vers le flag SET du 2ème RS-FF.
- Le OUT du 3ème AND vers les flags RESET des 2 RS-FF.
- Les OUT des 2 RS-FF vers le AND de droite.
- La sortie de ce AND de droite vers le I2 du OR.
- La sortie du OR vers la sortie.

Effectivement merci
Répondre
#64
Hello !

Bête question mais je n'arrive pas à trouver la technique.
Y a-t-il un moyen simple pour faire en sorte qu'une condition (par exemple un LOWER) qui va renvoyer False une première fois, ne renvoie pas à nouveau False si la valeur précédente est déjà False ?
Donc :
OLD = False / NEW = True => Envoyer le télégramme True.
OLD = False / NEW = False => Ne pas envoyer de télégramme.
OLD = True / NEW = True => Ne pas envoyer de télégramme.
OLD = True / NEW = False => Envoyer le télégramme False.

Le fait que "True" soit envoyé quelque soit le cas m'importe peu, c'est surtout le False que je souhaites filtrer si la sortie du LOWER est déjà False.
Attention, ça se situe au milieu de la fonction, l'output du LOWER n'est pas relié à un KNX OUT mais à d'autres opérations (sinon oui, je connaissais l'option du KNX OUT).
Répondre
#65
(16/04/2024, 10:43:10)Christophe0110 a écrit : Hello !

Bête question mais je n'arrive pas à trouver la technique.
Y a-t-il un moyen simple pour faire en sorte qu'une condition (par exemple un LOWER) qui va renvoyer False une première fois, ne renvoie pas à nouveau False si la valeur précédente est déjà False ?
Donc :
OLD = False / NEW = True => Envoyer le télégramme True.
OLD = False / NEW = False => Ne pas envoyer de télégramme.
OLD = True / NEW = True => Ne pas envoyer de télégramme.
OLD = True / NEW = False => Envoyer le télégramme False.

Le fait que "True" soit envoyé quelque soit le cas m'importe peu, c'est surtout le False que je souhaites filtrer si la sortie du LOWER est déjà False.
Attention, ça se situe au milieu de la fonction, l'output du LOWER n'est pas relié à un KNX OUT mais à d'autres opérations (sinon oui, je connaissais l'option du KNX OUT).

ce n'est pas un XOR (ou exclusif) que tu recherches à faire ?
Répondre
#66
Ben c'est pas si simple car le XOR va quand même renvoyer une valeur (voir aide : "The output sends whenever a value is received.") ce que je veux éviter justement.
J'aimerais que le False soit envoyé une fois mais que si la valeur suivante est à nouveau False, que ce soit ignoré.
Idem pour le True, envoyé une fois mais que si la valeur suivante est à nouveau True, qu'elle soit ignorée...
Un peu à la manière d'un GATE ou on peut choisir d'envoyer ou pas un télégramme selon que l'entrée Control est à True ou pas...
Donc à mon avis, il faut faire un mélange de GATE, de RS-FF et/ou encore de FILTER...
Faut juste que je me creuse la tête pour ça mais je me disais que p-e l'un d'entre vous avait déjà fait ça...
Répondre
#67
(17/04/2024, 08:14:13)Christophe0110 a écrit : Ben c'est pas si simple car le XOR va quand même renvoyer une valeur (voir aide : "The output sends whenever a value is received.") ce que je veux éviter justement.
J'aimerais que le False soit envoyé une fois mais que si la valeur suivante est à nouveau False, que ce soit ignoré.
Idem pour le True, envoyé une fois mais que si la valeur suivante est à nouveau True, qu'elle soit ignorée...
Un peu à la manière d'un GATE ou on peut choisir d'envoyer ou pas un télégramme selon que l'entrée Control est à True ou pas...
Donc à mon avis, il faut faire un mélange de GATE, de RS-FF et/ou encore de FILTER...
Faut juste que je me creuse la tête pour ça mais je me disais que p-e l'un d'entre vous avait déjà fait ça...

je n'ai pas d'ABA mais un GIRA X1 et j'ai un module spécifique qui s'appelle "send on change" et il bloque tant que la valeur ne change pas. La combinaison des 2 répondrait donc à ton besoin. J'ignore juste si ce module existe dans l'ABA.
Répondre
#68
En effet ! Ce serait un module parfait mais à ma connaissance il n'existe pas sur l'ABA... Sad
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)