Incompréhention dans les registres int et uint

Bonjour à tous,

j’ai un doute sur le paramétrage des registres sur le plugin.
je suis sur la dernière version stable du plugin.

voilà, j’ai des sondes de température qui peuvent travailler de -55 à +125 °C.
par contre j’ai paramétré mes sondes en uint16 soit 0 à 65 535 et cela fonctionne correctement !
j’ai des sondes de température à l’extérieur de la maison et celle-ci passent bien en négatif (alors quelle ne devraient pas !).
J’aurai du les mettre en int16 -32 768 à + 32 768

qu’en pensez vous ?

pour info je passe par des virtuels pour rassembler mes sondes de température par pièce de la maison.c’est peut être là la subtilité ?

merci pour votre aide.

Bonjour,

Uint16 : Cela va de 0 à 65 535
Int16 : Ce type va de -32 768 à +32 767

1 « J'aime »

Bonjour,

En effet. Si les valeurs des commandes info du virtuel sont correctes, c’est peut-être grace à une formule, soit dans la commande MyModbus, soit dans la commande du virtuel.
Sans plus d’info, je ne peux pas le savoir.

ERRATUM de votre part : -32 768 à +32 767, mais c’est un détail

Ce qui est sûr c’est qu’un uint16 ne fourni pas de valeur négative puisque le bit de poids fort est interprété comme 2^15 et pas comme le bit de signe.

A+
Michel

Bonjour Michel,

j’ai juste cette formule dans le virtuel pour mettre en forme la valeur.

Mais cela ne peut pas interagir avec mon souci !

Merci

En effet cette formule ne change pas le signe ni la plage. Malgré tout, je pense qu’une formule quelque part fait ce changement d’échelle.

Pour s’en assurer, il faudrait créer une nouvelle commande info, sans copier l’originale mais bien en en créant une nouvelle pour éviter de copier la formule avec une lecture du même registre mais en type int16. Et pourquoi pas une autre de test en uint16 sans formule. En utilisant une plage de registre une seule requête sera faite et le temps de cycle ne sera pas impacté.

A+
Michel

OK j’essaie et reviens vers toi.
je vais même faire l’essai en mettant la sonde dans de la glace pour avoir une température en négatif.

cdt

1 « J'aime »

Perso, j’ai aussi une sonde qui a les températures en int. Si je lis uint, tant que la température est positive, c’est correct. En cas de valeurs négatives, cela reste sur 0, de mémoire.

Antoine

En Uint tu veux dire ? La plage des Int va dans le négatif…

Bonsoir,
Comme dit Michel si tu est en Unit et que ta sonde de température passe en négatif.
Tu devrais avoir une valeur à + 60 000 quelque chose de cet ordre.
Car c’est le bit 15 qui passe à 1.

Xst

Avant de faire la migration de la dernière version de Mymodbus en stable, j’avais fait des screenshot (comme tu l’avait fortement conseillé).

Donc avant la migration, on ne faisait pas le distingo entre int et uint. On mettait 16 Bit et Holding register et c’est tout.

Je pense que lors de la migration il a mis uint 16 par défaut ! Et perso je n’ai pas fait attention.

Je vais faire le test que tu me conseilles plus haut sur le post.

Cdt

Xst

Voici les résultats du test

Donc cela fonctionne (sonde de température dans de la glace)

Sans calcul, sans virtuel.

D’où vient le souci ?

Je me répond à moi même

J’ai fait la mise à jour de la nouvelle version stable le 26 janvier (si je ne me trompe pas)

Et le prog des mes sondes de température ont été programmée en uint16 et vous pouvez voir que celle ci étaient correctes avec des mesures négatives.

Je ne comprends pas :rage:

Ne faite pas attention au 85 °C c’est des mesures abérantes.

Juste pour être sûr : maintenant avec la bonne configuration, ça fonctionne ?

Bonjour Michel,

Je pense avoir trouvé, c’est dans mon virtuel c’est la mise à l’échelle. -55 à 125°C

Sans virtuel en direct sans calcul et sans arrondi en int et uint.

Merci à tous.

1 « J'aime »

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.