Modbus Maitre ESP8266

Hello a tous,

donc je continue mon projet, j'ai besoin de piloter une carte Relais en Wifi via protocol Modbus TCP/IP.

La carte en question est une Wi-Fi 16 Relay Board PCB - ModBus TCP.

J'ai une NodeMCU avec un ESP8266, l'esp sera connecte en direct a la carte (elle inclus l'AP).

J'ai trouve beaucoup de librairie sur internet, mais pour une utilisation esclave, moi dans mon cas c'est l'ESP qui est maitre, le peut de librairie maitre que je trouve je n'arrive pas a les faire fonctionner, j'arrive a me connecter en Wifi, mais apres je suis bloque

si quelqu'un a déjà entrepris ceci peut il me donner quelques explications?

Merci

Hello,

J'ai trouve une librairie qui apparement permet de faire ce que je veut faire

j'arrive a connecter l'ESP, j'arrive a utiliser l'ESP en tant que esclave (je pilote avec une appli modbus une LED sur l'ESP) mais je ne trouve pas comment faire l'inverse, que l'ESP soit "Maitre" et qu'il pilote ma carte relais

Merci

dans les exemples tu as MASTER ou MasterSimpleRead ou MassOperations

Apres faut utilisé les bons fonctions MODBUS

pour lire quelque chose

-Read Coils
-Read Holding Registers
-Read Input Registers
ect...

Pour ecrire

-Write Single Coil
-Write Multiple Registers

  • Write Single Register

ect....
Au pire, tu as arrives pas ou comprend pas, tu as le mail du mec direct pour t'expliquer...

Hello,

Merci pour ta réponse.

Oui j'ai trouve les possibilité de contrôle les relais, il y avait un bug (pour moi c’était un bug) il y avait deux fois la même fonction (writeCoil) hors l'une était pour un "single coil" l'autre était pour du multi coil.

Je vais contacter le mec par email.

Je ferais un retour

Merci

Hello,

Je suis en correspondance avec Alexandre Emelianove qui répond très vite.
il m'a dit que les commande pour les écritures était:

void setup {
...
        mb.master();
...
}
coil loop() {
…
        mb.connect(<remote_ip>);
        mb.writeCoil(<remote_ip>, <coil_nr>, true);
        mb.task();        // Not using task() caused writeCoil() stop working after 16 calls (by default).
…
}

cela ne fonctionnais pas chez moi, donc je lui ais envoyé mon programme qui pour lui a aucun soucis.

il a ajoute une commande pour avoir un résultat d'evenement qui dans mon cas est un problème de timeout

donc j'en suis bloque a la --'

si c'est timeout, c'est soit un probleme d'ID...

soit un porbleme de vitesse d'echange entre les deux systemes...

Hello,

Je pense que cela doit venir d'un problème d'id (toujours en correspondance avec Alexandre).
j'ai verifier avec une appli windows si j'arrivais a piloter ma carte (ce qui est le cas avec modbuis spoll)
et effectivement on configure un ID esclave, que je n'ai pas retrouve dans le programme ou la librairi, j'attend que alexandre me reponde et voir ce qu'il me dit.

Je posterais un retour si on peut configurer l'ID de l'esclave (cela peut etre interessant dans une utilisation avec plusieur exclave modbus a base d'esp ou autre)

Merci

edit: donc c'etait bien cela, dans mon cas mon esclave a un ID 1 donc dans le fichier modbusIP_ESP8266.h il faut modifier la ligne

#define MODBUSIP_UNIT .

pour les intéressé comme moi, voila un petit pas de fait :smiley: