Bonjour, mon premier post, j'espéré être au bonne endroit
comme je suis nouveau sur le site je n'ai pas le droit d'envoyer de message avec tous ces liens et images
Je cherche à connecter dans un premier temps un compteur énergie Orno OR-WE-514 à une carte Arduino Uno
Pour m’aider à créer le code .ino pour ma carte Arduino Uno.
J’ai utilisé le logiciel Orno et le logiciel ModbusDoctor pour identifier l’ensemble des paramètres à utiliser dans le code .ino
Je vois un conflit sur la liaison série qui sert à la fois pour dialoguer avec le compteur et envoyer les infos reçues vers le moniteur série.
La liaison série n'est pas correctement initialisée pour dialoguer avec le compteur la parité doit être paire or dans la configuration par défaut c'est sans parité.
Je suggère :
de conserver Serial pour le dialogue avec le moniteur série
d'utiliser softwareSerial pour dialoguer avec le compteur
Je vois surtout une incompatibilité de la librairie avec une Arduino Uno (si c'est bien la carte que tu utilises) voir ici
J'avais bien vu ce lien et le message suivant lors du téléversement:
> ATTENTION: la bibliothèque ArduinoRS485 prétend être exécutable sur la (ou les) architecture(s) samd, mbed_portenta, mbed_opta et peut être incompatible avec votre carte actuelle qui s'exécute sur avr.
ATTENTION: la bibliothèque ArduinoModbus prétend être exécutable sur la (ou les) architecture(s) megaavr, samd, mbed_nano, mbed_portenta, mbed_opta et peut être incompatible avec votre carte actuelle qui s'exécute sur avr.
Si j'utilise
#include <Modbus.h>
c'est pire j'ai:
C:\Users\richa\Bureau\modbus_test3\modbus_test3.ino: In function 'void setup()':
C:\Users\richa\Bureau\modbus_test3\modbus_test3.ino:28:8: error: 'ModbusRTUClient' was not declared in this scope
if (!ModbusRTUClient.begin(9600)) {
^~~~~~~~~~~~~~~
C:\Users\richa\Bureau\modbus_test3\modbus_test3.ino: In function 'float readVoltage()':
C:\Users\richa\Bureau\modbus_test3\modbus_test3.ino:65:8: error: 'ModbusRTUClient' was not declared in this scope
if (!ModbusRTUClient.requestFrom(1, HOLDING_REGISTERS, 0x0131, 1)) {
^~~~~~~~~~~~~~~
C:\Users\richa\Bureau\modbus_test3\modbus_test3.ino:65:39: error: 'HOLDING_REGISTERS' was not declared in this scope
if (!ModbusRTUClient.requestFrom(1, HOLDING_REGISTERS, 0x0131, 1)) {
^~~~~~~~~~~~~~~~~
Plusieurs bibliothèque trouvées pour "Modbus.h"
Utilisé: C:\Users\richa\Documents\Arduino\libraries\Modbus
Non utilisé: C:\Users\richa\Documents\Arduino\libraries\modbus-esp8266
exit status 1
Compilation error: 'ModbusRTUClient' was not declared in this scope
Je ne sais pas quoi faire car pas de compétences informatique.
Peux tu me donner un bout de code de remplacement ou plus de détail pour corriger
C:\Users\richa\Bureau\modbus_test3\modbus_test3.ino: In function 'void setup()':
C:\Users\richa\Bureau\modbus_test3\modbus_test3.ino:23:8: error: 'ModbusRTUClient' was not declared in this scope
if (!ModbusRTUClient.begin(9600)) {
^~~~~~~~~~~~~~~
C:\Users\richa\Bureau\modbus_test3\modbus_test3.ino: In function 'float readVoltage()':
C:\Users\richa\Bureau\modbus_test3\modbus_test3.ino:60:8: error: 'ModbusRTUClient' was not declared in this scope
if (!ModbusRTUClient.requestFrom(1, HOLDING_REGISTERS, 0x0131, 1)) {
^~~~~~~~~~~~~~~
C:\Users\richa\Bureau\modbus_test3\modbus_test3.ino:60:39: error: 'HOLDING_REGISTERS' was not declared in this scope
if (!ModbusRTUClient.requestFrom(1, HOLDING_REGISTERS, 0x0131, 1)) {
^~~~~~~~~~~~~~~~~
exit status 1
Compilation error: 'ModbusRTUClient' was not declared in this scope
Le mieux dans ce cas là est de regarder ce que l'exemple de la librairie te propose.
Je suppose que tu as laissé ton code issue d'une autre librairie, du coup rien ne te garantie qu'il initialise les mêmes objets.
Dans ce cas il faut regarder le fichier d'en-tête de la librairie que tu as inclus pour voir le prototypage des fonctions.
Si on regarde le fichier Modbus.h il n'y a pas d'instanciation automatique, il faut donc que tu instancie toi-même un objet pour pouvoir utiliser les fonctionnalités fournies.
Vu que j'apprends pas vite je ne suis pas prêt de sortir ce projet.
Concrètement aujourd’hui' j'ai besoin d'une personne qui débug le code et me donne les choses à faire pour le faire tourner ou qui me propose une solution qui tourne
Beaucoup attendent aussi quelque chose de ta pars pour t'aider.
Le soucis c'est qu'on peut t'indiquer ce qu'il faut faire pour ce cas précis, mais cela ne t'avancera pas vraiment, puisque tu ne semble pas comprendre ce que tu fais, donc forcément comment le faire et quoi faire après.
La le problème de mon point de vue, n'est pas de débugger du code existant, mais de le créer.
Ne le prends pas comme une moquerie, mais je t'ai indiqué les choses à faire.
Il faut instancier(créer) l'objet ModbusRTUClient pour pouvoir l'utiliser.
Le problème c'est que cet objet est lié à une librairie que tu n'utilise pas, donc si tu change de librairie, il y a une grosse probabilité de devoir changer le code.
par le gestionnaire de librairies, il te sera demandé au téléchargement si tu veux y adjoindre "ArduinoRS485", car elle est nécessaire à "ArduinoModbus".
@dfgh
J'avais déjà cette bibliothèque dans cette version
Malgré le message du site d' installation qui dit:
Compatibility
This library is compatible with the megaavr, samd, mbed_nano, mbed_portenta, mbed_opta architectures
lorsque je téléverse j'ai le message suivant
ATTENTION: la bibliothèque ArduinoModbus prétend être exécutable sur la (ou les) architecture(s) megaavr, samd, mbed_nano, mbed_portenta, mbed_opta et peut être incompatible avec votre carte actuelle qui s'exécute sur avr.
ATTENTION: la bibliothèque ArduinoRS485 prétend être exécutable sur la (ou les) architecture(s) samd, mbed_portenta, mbed_opta et peut être incompatible avec votre carte actuelle qui s'exécute sur avr.
Le croquis utilise 16882 octets (52%) de l'espace de stockage de programmes. Le maximum est de 32256 octets.
Les variables globales utilisent 1639 octets (80%) de mémoire dynamique, ce qui laisse 409 octets pour les variables locales. Le maximum est de 2048 octets.