Je souhaite faire un calcul (donc utiliser l’objet : Fonction) pour obtenir une moyenne sur une température.
Donc je souhaiterai avoir une Fonction du style : (x + ($IDTEMP$ * $IDCOMPTEUR$)) / ($IDCOMPTEUR$ +1) mais cela ne fonctionne pas
une solution ? Merci
Quand j’ai vu dans la maj qu’ils avaient déjà intégré les étiquettes j’ai fait la mise à jour direct !
Malheureusement je n’ai pas eu le temps de tester mais je n’y manquerai pas d’y répondre.
Cdt,
Bonjour,
il est possible de contourner en mettant [IPX]clock sur l’entrée X et les 2 ana en variable $id$ dans la formule. Cela provoquera un recalcul toutes les secondes
Pour d’autres fréquences de rafraichissement, il est également possible de faire des opérations sur la variable IPX.Clock et lier le résultat à l’entrée de cette Fonction avec variables.
par exemple IPX.Clock / 10 en formule et une sortie avec 0 décimale provoquerait un recalcul toutes les 10 secondes.
Je confirme, tout est ok, MERCI à GCE et à toi Jweb pour la rapidité d’exécution !
Comme la indiqué Michel94, ça peut poser problème lorsqu’on utilise plusieurs variables, car le déclencheur est l’entrée de la fonction, ce qui est logique. Ta solution fgtoul est bonne.
Moi j’aurai vu une variable supplémentaire dédié à cette fonction (binaire 0/1), et quand cette variable passe à 1, le calcul de la fonction est réalisé
bonjour,
Le rôle principal de l’objet « Fonction » est de convertir la mesure du CAN en valeur analogique, en continu (sondes)
Par définition, si l’analogique varie rapidement, le calcul se fait sans discontinuité s’il opère par détection de changement de l’entrée.
Une IO (0 ou 1) ferait perdre cette continuité ou imposerait un toggle permettant de sélectionner le mode de fonctionnement (continu/discontinu).
L’usage des variables par $id$ est une grande avancée (merci de l’avoir demandée )
mais cette utilisation sera certainement occasionnelle et il ne faudrait pas perdre en précision sur un usage courant.
Une évolution de l’objet Fonction avec plusieurs entrées analogiques avait été demandée lors des bétatests. C’est peut être dans la roadmap .
Je suis tout à fait d’accord avec toi, il faut garder le calcul de la fonction en fonction de l’entrée.
Ma demande partait plutôt vers un deuxième type de fonction, on a le temps de voir. Vu l’amélioration de la V5, on va lui en demander de plus en plus, on a déjà de quoi faire…
En faisant des tests pour calculer en temps réel la valeur moyenne d’une température, j’ai noté ce qui me semble un bug :
la formule x/4 est correctement exécutée
mais pas la formule 4/x. C’est le résultat de (4/x) Edit : x/4 qui est renvoyé.
Est-il possible d’ouvrir un ticket ?
Bonne soirée
Ps : Autre remarque :
J’ai également noté que dans le cas où la variable x n’est pas dans la formule, (utilisation uniquement d’étiquettes), c’est la valeur de la variable x qui est renvoyée comme résultat.
Si la formule est x/4 et si la valeur présentée en entrée (x) est égale = 10, le résultat affiché est 2.5
Si la formule est 4/x et si la valeur présentée en entrée (x) est égale = 10, le résultat affiché est aussi 2.5 lieu de 0.4
Pour les autres opérations, ça semble correct.
Bonjour @Jweb
merci pour le ticket.
un complément d’info : x/$id_variable$ fonctionne.
Un moyen pour moi de contourner le problème en réorganisant la logique initialement prévue
Bonne journée
@Jweb Est-ce que le ticket ouvert inclus ce point là également ?
j’ai essayé d’implémenter la solution de @fgtoul mais sans succès car je me heurte au problème ci dessus !
Bonjour et bonne année à tous,
Il est possible de contourner le problème en insérant la variable x dans la formule sans qu’elle ait un effet : Une formule du type (x-x)+(formule souhaitée). L’IPX800 v5 ne se laisse pas berner par cette simple astuce, il faut être plus perfide : (x-$id_de_x$)+(formule souhaitée).
Exemple qui fonctionne (x-$327687$)+($327759$/$327752$)
avec x = [IPX]clock et 327687=id de [IPX]clock
Attention, pour que cela fonctionne, il faut passer la variable d’entrée en RAW pour s’adapter au format de [IPX]clock.
Ok, merci pour l’astuce. J’ai noté que de temps à autre le calcul de (x-$id_de_x$) donne 1 et pas 0. Bon c’est du détail car c’est un peu un détournement de la fonctionnalité initial de ce bloc…
Sinon, il semble que la fonction de transfert soit limitée à 6 opérandes, sinon aucun calcul ne se fait. Un message d’erreur ou alors une note dans la partie informations serait peut-être nécessaire pour les utilisateurs…
Bonjour,
Comme la variable [IPX]clock varie au cours du temps, il semble possible qu’entre deux extractions (celle de x et celle de $id_de_x$)) , la valeur remontée n’est pas tout à fait la même, ce qui génère une différence.
Si, par rapport à la formule calculée, cette valeur 1 est trop perturbante, il est possible de la minimiser: ((x-$id_de_x$)/1000)+(formule souhaitée). J’ai pas testé, mais ça devrait fonctionner…