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
#76
(09/09/2020, 21:13:11)kalhimeo a écrit : Moyenne x entrées

Le but du bloc est de calculer la moyenne des nombres en entrée. Il est facile d'adapter ce bloc à tout type de datapoints (1 byte unsigned, 2 byte float, etc.) et à un plus grand nombre d'entrées.

Exemple :
On désire calculer la moyenne de température d'une pièce qui comporte plusieurs capteurs

Fonctionnement : 
1) Adapter les entrées et la sortie du bloc fonction au type de datapoint souhaité (2 byte float pour une température dans l'exemple)
2) Ajouter plus d'entrées si nécessaire, il suffit de modifier la constante par le nombre d'entrées, de copier/coller le N-CONV et le DIV pour chaque nouvelle entrée, et d'ajouter au bloc ADD le résultat des nouveaux blocs DIV.
3) Créer le nouveau bloc fonction après ces modifications, et connecter simplement les valeurs aux entrées pour avoir la moyenne en sortie.
4) Attention chaque entrée doit être utilisée sans quoi la moyenne ne sera pas correcte.

Schéma :

PS: la conversion des entrées en 4 byte float avant les calculs est pour garder le résultat dans la limite des valeurs du datapoint, sinon le ABB retourne 0 (pas vraiment le cas avec les t°, mais avec des 1 byte 0-255 par exemples ça arrive).

Download :

Bonjour,

Merci pour le bloc, ça fonctionne bien avec 2 entrées.

Question 1: 
Est-ce qu'il y a un moyen d'éditer un bloc importé. Je n'ai pas trouvé de fonction "Edit" et le webinaire ABB sur le contrôleur semble confirmer qu'il n'est pas possible de modifier un bloc de fonction importé...c'est bien dommage

Question 2:
J'essaye de faire une moyenne sur 4 entrées pour une grande pièce donc je m'inspire de ta logique. Cela fonctionne mais mes températures sont arrondies en sortie des convertisseurs (N-Conv). Comme je n'ai pas accès au détail de ton bloc je ne vois pas ce que j'oublie. 

Si quelqu'un a une idée?  Angel

[Image: Screenshot-2024-12-29-at-12-18-07.png]
Répondre
#77
en effet il n'est pas possible d'éditer un bloc importé et c'est bien dommage.

ton problème est dû au fait que ton n-conv converti en "1 byte unsigned" (couleur rouge), alors qu'il faudrait convertir en "4 byte float" (brun). De tête je ne sais plus comment cela est défini, mais je pense que c'est la constante qui doit être sélectionnée comme "4 byte float" pour qu'il adapte automatiquement.
Répondre
#78
Je confirme c'est bien le "datatype" de la constante qui détermine la logique d'arrondi. Problème réglé. Merci pour ton retour!
Répondre
#79
pour recréer un .xml, il faut prendre le fichier .fbxml et le renommer en .xml. Voir le post de Ives. D'où l'intérêt de publier sur le forum, le fichier.fbxml
[Image: default_avatar.png]

Ives [Image: buddy_offline.png]
Posting Freak
[Image: star.png][Image: star.png][Image: star.png][Image: star.png][Image: star.png]

Messages : 3,427
Sujets : 39
Répondre
#80
 Convertir des secondes en années, jours, heures, minutes et secondes

La sortie "comptage" de certains actionneurs exprime en secondes le temps de la fermeture (ou l'ouverture) du relais.
Elle est codée en 4 octets, DPT 12.100.

Au bout d'un certain temps, la lecture du temps en secondes devient absconse. Il est alors plus intuitif de la traduire en valeurs intelligibles.
Exemple : 501039 secondes, c'est 5jours, 19heures, 10minutes et 39 secondes.

La logique utilisée pour la translation est la suivante :

https://postimg.cc/WtS3mn5c

Si on n'utilise pas le bloc SUB (soustraction) avant d'effectuer une division, le bloc DIV renverra la valeur avec une virgule et le bloc d'entrée arrondira cette valeur par excès ou par défaut. Ainsi, 1000 secondes divisés par 60 renverront 16.66 qui seront arrondis à 17.

D'autres actionneurs sortent la valeur en heures (DPT 7.007 - 2octets). Auquel cas il faudra adapter la logique en supprimant les blocs minutes et secondes, et bien évidemment remplacer les blocs d'entrée et de sortie par le format ad hoc.

Note : la valeur maxi envoyée pour une sortie 4 octets est (2^32)-1, soit 4 294 967 295 secondes. Ainsi exprimé, c'est 136 années, 70 jours, 6 heures, 28 minutes et 15 secondes...  Confused
Polo
Polo
Répondre
#81
(29/12/2024, 12:29:40)Medmax a écrit :
(09/09/2020, 21:13:11)kalhimeo a écrit : Moyenne x entrées

Le but du bloc est de calculer la moyenne des nombres en entrée. Il est facile d'adapter ce bloc à tout type de datapoints (1 byte unsigned, 2 byte float, etc.) et à un plus grand nombre d'entrées.

Exemple :
On désire calculer la moyenne de température d'une pièce qui comporte plusieurs capteurs

Fonctionnement : 
1) Adapter les entrées et la sortie du bloc fonction au type de datapoint souhaité (2 byte float pour une température dans l'exemple)
2) Ajouter plus d'entrées si nécessaire, il suffit de modifier la constante par le nombre d'entrées, de copier/coller le N-CONV et le DIV pour chaque nouvelle entrée, et d'ajouter au bloc ADD le résultat des nouveaux blocs DIV.
3) Créer le nouveau bloc fonction après ces modifications, et connecter simplement les valeurs aux entrées pour avoir la moyenne en sortie.
4) Attention chaque entrée doit être utilisée sans quoi la moyenne ne sera pas correcte.

Schéma :

PS: la conversion des entrées en 4 byte float avant les calculs est pour garder le résultat dans la limite des valeurs du datapoint, sinon le ABB retourne 0 (pas vraiment le cas avec les t°, mais avec des 1 byte 0-255 par exemples ça arrive).

Download :

Bonjour,

Merci pour le bloc, ça fonctionne bien avec 2 entrées.

Question 1: 
Est-ce qu'il y a un moyen d'éditer un bloc importé. Je n'ai pas trouvé de fonction "Edit" et le webinaire ABB sur le contrôleur semble confirmer qu'il n'est pas possible de modifier un bloc de fonction importé...c'est bien dommage

Question 2:
J'essaye de faire une moyenne sur 4 entrées pour une grande pièce donc je m'inspire de ta logique. Cela fonctionne mais mes températures sont arrondies en sortie des convertisseurs (N-Conv). Comme je n'ai pas accès au détail de ton bloc je ne vois pas ce que j'oublie. 

Si quelqu'un a une idée?  Angel

[Image: Screenshot-2024-12-29-at-12-18-07.png]

CC euh pour la moyenne des températures, j'aurais juste monté le truc ainsi :
https://postimg.cc/7Cg72h7V


Dis-moi...
Polo
Répondre
#82
[quote pid='64941' dateline='1735471780']
Bonjour,

Question 1: 
Est-ce qu'il y a un moyen d'éditer un bloc importé. Je n'ai pas trouvé de fonction "Edit" et le webinaire ABB sur le contrôleur semble confirmer qu'il n'est pas possible de modifier un bloc de fonction importé...c'est bien dommage


[/quote]


Je reprends mon post pour donner une réponse:

Pour recréer un .xml qui comprend le contenu d'un bloc de fonction importé , il faut prendre le fichier .fbxml et le renommer en .xml. Voir le post de Ives. D'où l'intérêt de publier sur le forum, le fichier.fbxml




Mais je n'ai peut être pas bien compris ta demande
Répondre


Atteindre :


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