J’ai déjà pu récupérer les infos « exploitables » des pages 10 et 11 mais la page 12 me résiste encore… Et c’est là que j’ai besoin de votre aide
A l’époque, echo m’avais aidé à me documenté sur le sujet et m’avais notamment dit :
Sauf que même en convertissant les adresses en décimal, rien à faire, je ne récupère que des zéros
Une chose m’intrigue. Pour l’information Voltage, j’ai réussi à la récupérer en passant par l’adresse Modbus 512, alors que si on converti la valeur 2000 en Hexa, ça donnerai 8192 en décimal. En retirant 1 zéro de la valeur Hexa, on tombe sur 512 en décimal et ça me retourne bien la valeur indiquée sur l’afficheur du compteur d’énergie.
J’ai essayé d’appliquer la même chose pour les autres informations de la page 12 mais rien à faire.
Voici des captures de l’équipement et des commandes :
Je ne vois pas la commande pour le premier registre décrit page 12 à l’adresse 8192 (2000H). Pour le type de données, ça doit être configuré en float32.
En voyant la config, il semblerait que tu ais lu 200H (512) et pas 2000H (8192).
Si les données te semblent incohérentes, essaie en inversant les mots puisque l’ordre des octets est le bon.
NB: 200Ah = 8202
edit: comme les adresses se suivent, tu peux utiliser les plages de données pour optimiser la communication.
Après avoir retourné Google de fond en comble, j’ai fini par comprendre… La documentation que j’ai utilisé n’est pas la bonne. La référence concernée par la doc est DDSU666 alors que le modèle que je possède est DDSU666-H
Et là, c’est le drame car à priori, les chinois de Huawei sont pas très partageurs (ils se font pas mal blâmer sur les forums que j’ai trouvé).
Savez-vous s’il existe des sniffeurs ou des trucs du genre pour le protocole Modbus qui pourraient me permettre de passer les adresses en revue pour voir si au moins elles renvoient des données et dans un second temps, j’adapterai les types de données ?
Quelque part, ça me rassure, je ne suis pas fou, la méthode était la bonne mais basée sur de mauvaises infos
Merci pour l’astuce des plages de données, je vais essayer ça.
Perso, j’ai aussi ce compteur mais connecté à un onduleur SUN2000 avec lequel je communique en Modbus. Je ne sais pas comment sniffer du Modbus s’il n’y a pas un autre maître sur le bus.
En connexion série (RS485 par exemple) il est possible de lire ce qu’il se passe sur le bus.
Le problème du Modbus c’est que l’on travaille avec des mots de 16 bits mais après il faut les interpréter, le format n’est pas intégrer dans les trames, il existe même des formats spécifiques aux fabricants, j’ai aussi vu des systèmes avec des banc de mémoires, on doit envoyer une commande d’écriture pour basculer les bancs. Sans la table Modbus c’est la galère.
Les données manquantes ont toutes l’air d’être au format float32.
Par contre je viens de regarder le fonctionnement des plages de registres et comme il faut préciser individuellement le stockage des données récupérées (il faut bien les mettre quelque part me direz vous !), mon idée de parcourir des plages facilement tombe à l’eau
Ca ressemble aux 12 travaux d’Hercules mon affaire…
Je vais faire quelques tests et je vous dirais si c’est concluant ou non.
Je pense franchement que la documentation d’un plugin est importante, c’est la raison pour laquelle j’ai passé tellement de temps à la rédiger. Je pense que ça porte ses fruits.