Fonction MIN/MAX

Bonsoir à tous,
Est-il prévu dans la roadmap des objets MIN/MAX ou alors l’intégration de valeur mini/maxi aux variables Analog ?
Un cas d’usage serait de sécuriser une valeur mini ou maxi d’une fonction ou alors qu’un calcul récursif ne diverge pas.
On doit pouvoir faire cela à l’aide de comparateur et de scenario mais c’est un peu fastidieux…

Bonsoir,
vous pouvez effectivement le faire via des rules avec opérateur analogique et tuile SetVAL

  • 1 rule pour le MIN
  • 1 rule pour le MAX
  • 1 rule pour les valeurs intermédiaires

→ Soient anaMIN et anaMAX 2 variables analogiques, définies comme constantes ( Elles peuvent aussi être des variables modifiables par lien ou par widget).
→ Soit Fonction1 l’objet fonction à borner (min et max)

  • SCENE1 :application de MIN :

    événement : fonction1.result < anaMIN
    résultat : SetVAL anaMIN Ana

  • SCENE2 : application de MAX :

    événement : fonction1.result > anaMAX
    résultat : SetVAL anaMAX Ana

  • SCENE3 : application des valeurs intermédiaires

    événement :NON SCENE1 ETNON SCENE2
    résultat : SetVAL Function1.Result Ana

Ana peut alors être liée ou scénarisée à la place de fonction.result.
Elle sera telle que anaMIN <= Ana <= anaMAX grâce aux 3 scènes précédentes.

1 « J'aime »

Bonsoir @fgtoul
La scène3 (ou plutôt règle d’ailleurs avec la v5!) ne s’exécutera jamais si la valeur de fonction1.result est dans l’intervalle MIN/MAX 2 fois consécutivement, donc Ana ne sera pas mis à jour avec la valeur de fonction1.result.
En remplaçant la règle 3 par :

événement : anaMIN =< fonction1.result =< anaMAX
résultat : SetVAL fonction1.result Ana

même verdict… il faut donc trouver un moyen pour que cette règle se réévalue à chaque calcul de fonction1…
cela devient (vraiment) fastidieux !

j’ai jeté rapidement une proposition (non testée :blush:) pour donner une piste.
Mais je pense que c’est fonctionnel avec quelques modifs :wink:

  • REGLE1 :application de MIN :

événement : fonction1.result < anaMIN
résultat : SetVALanaMINAna

  • REGLE2 : application de MAX :

événement : fonction1.result > anaMAX
résultat : SetVALanaMAXAna

  • REGLE3 : application des valeurs intermédiaires

événement : Fonction.result!=AnaETNON SCENE1 ETNON SCENE2
résultat : SetVALFunction1.ResultAna

la 3ème règle devrait être réévaluée à chaque variation du résultat de la fonction.

toujours non testé :slight_smile:

c’est propre à chacun, moi je trouve la recherche et l’expérimentation stimulantes :wink:

1 « J'aime »

Pas possible d’avoir des IO et des Ana en évènement :frowning:

je partage, par contre le moins de temps je passe sur ce genre de problématique fastidieuse, le plus j’en passe sur d’autres recherches et expérimentations encore plus stimulantes :laughing:

il ne faut pas s’arrêter à ça, il suffirait d’éclater l’événement en 2 règles
je pense que toutes les cartes sont là, il suffit de rebattre :smiley:

Non en effet, il faut juste multiplier les règles !
Il y a toujours une solution (sinon ce serait moi le pb ! :rofl:)

  • REGLE1 :application de MIN :

événement : fonction1.result < anaMIN
résultat : SetVALanaMINAna

  • REGLE2 : application de MAX :

événement : fonction1.result > anaMAX
résultat : SetVALanaMAXAna

  • REGLE3 : detection d’une nouvelle valeur issue du calcul de fonction1

événement : Fonction.result!=Ana
résultat : SwitchIO virtuel

  • REGLE4 : application des valeurs intermédiaires qd IO virtuel passe à 1

événement : IO virtuelETNON SCENE1 ETNON SCENE2
résultat : SetVALFunction1.ResultAna

  • REGLE5 : application des valeurs intermédiaires qd IO virtuel passe à 0

événement :NON IO virtuelETNON SCENE1 ETNON SCENE2
résultat : SetVALFunction1.ResultAna

Voilà ! Merci @fgtoul pour le coup de main, je peux maintenant retourner à d’autres recherches et expérimentations stimulantes :wink:

1 « J'aime »