Bonjour
Je ne m’en sert pas et j’ai essayé de diviser #value#/1000 et inversé;
Cette valeur correspond à celle de l’application solaredge.
A voir si cela est correcte dans le temps.
Ici j’ai retrouver des explications que j’ai retrouvé de mon ancien boulot pour
l’intégration homme/machine.
Car je savais que le 32 est sur 2 mots de 16 bit, et il faut savoir les récupérer dans
le bonne ordre pour les compiler, et je ne sais pas comment solaregde à fait son
bouzin et encore moins dans le plugin que je trouve super - mais peut-être une piste…
Bonne lecture.
En Modbus, les types de données ACC32 et UINT16 ont des différences fondamentales en termes de taille et d’utilisation :
ACC32 :
ACC32 signifie "Accumulated 32-bit". Il s'agit d'un type de données utilisé pour représenter des valeurs accumulées sur 32 bits. Cela signifie qu'il peut stocker des valeurs allant de 0 à 4,294,967,295 (pour les entiers non signés) ou de -2,147,483,648 à 2,147,483,647 (pour les entiers signés)1.
Ce type est souvent utilisé pour des compteurs ou des valeurs qui s'incrémentent au fil du temps, comme les compteurs d'énergie ou les compteurs de production.
UINT16 :
UINT16 signifie "Unsigned Integer 16-bit". Il s'agit d'un entier non signé sur 16 bits, ce qui signifie qu'il peut stocker des valeurs allant de 0 à 65,5352.
Ce type est couramment utilisé pour des valeurs plus petites qui ne nécessitent pas la plage étendue offerte par un entier 32 bits.
En résumé, la principale différence entre ACC32 et UINT16 réside dans la taille des données qu’ils peuvent représenter. ACC32 est utilisé pour des valeurs plus grandes et accumulées, tandis que UINT16 est utilisé pour des valeurs plus petites et non signées.
L’interprétation des données de type ACC32 en Modbus dépend du contexte spécifique dans lequel elles sont utilisées, mais voici quelques lignes directrices générales :
Compréhension de la Structure :
ACC32 représente une valeur accumulée sur 32 bits. Cela signifie que la valeur est stockée dans deux registres Modbus consécutifs de 16 bits chacun.
Par exemple, si vous avez une valeur ACC32, elle sera répartie sur deux registres : un registre bas (Low Word) et un registre haut (High Word).
Ordre des Octets (Endianness) :
L'ordre des octets peut varier selon les fabricants. Les deux formats les plus courants sont le Big-Endian et le Little-Endian.
Big-Endian : Le registre haut contient les bits les plus significatifs, et le registre bas contient les bits les moins significatifs.
Little-Endian : Le registre bas contient les bits les moins significatifs, et le registre haut contient les bits les plus significatifs.
Conversion des Valeurs :
Pour interpréter correctement une valeur ACC32, vous devez combiner les deux registres de 16 bits en une seule valeur de 32 bits.
Par exemple, si vous avez deux registres avec les valeurs hexadécimales 0x1234 et 0x5678, vous devez les combiner pour obtenir la valeur 0x12345678.
Utilisation Pratique :
Les valeurs ACC32 sont souvent utilisées pour des compteurs ou des accumulateurs, comme les compteurs d'énergie, les compteurs de production, etc.
Lors de la lecture de ces valeurs, assurez-vous de connaître l'ordre des octets utilisé par votre dispositif Modbus pour interpréter correctement les données.
Exemple de Calcul :
Supposons que vous lisez deux registres consécutifs avec les valeurs 0x0000 et 0x0021.
Si l'ordre des octets est Big-Endian, la valeur combinée serait 0x00000021, ce qui équivaut à 33 en décimal.
Si l'ordre des octets est Little-Endian, la valeur combinée serait 0x21000000, ce qui équivaut à 553,648,256 en décimal.
En résumé, pour interpréter les données ACC32 en Modbus, vous devez comprendre comment les deux registres de 16 bits sont combinés pour former une valeur de 32 bits, et connaître l’ordre des octets utilisé par votre dispositif.
bon courage