Modbus TCP-IP con ATMEGA2560+ETH Shield

Salve.
Dovrei far comunicare il mio PC (configurato come Client) con un ATMEGA2560 (configurato come Server) tramite il protocollo Modbus TCP-IP, ho trovato alcuni esempi e librerie in rete ma non riesco a farle funzionare.
La versione di IDE che utilizzo è la 1.8.5 ed il progetto che ho trovato è il seguente:

http://www.fleaplc.it/it-IT/appunti-it/15-arduino-mega-2560-modbus-tcp-server

Collego sia lo Shield che il mio pc ad uno switch Ethernet ma una volta programmata la scheda non riesco neppure a fare il ping utilizzo IP statici (192.168.250.33 per il mio pc e 192.168.250.99 per l’ATMEGA)

Vi ringrazio anticipatamente per l’aiuto che mi potete dare.

Benvenuto. Essendo il tuo primo post, nel rispetto del regolamento, ti chiediamo cortesemente di presentarti QUI (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con attenzione il su citato REGOLAMENTO... Grazie.
Qui una serie di link utili, non inerenti al tuo problema:

DOPO che ti sarai presentato e letto il regolamento ...

... se ci dici il tipo della scheda Ethernet che stai utilizzando (metti un link) e le librerie che includi per farla funzionare, magari aiuta ::slight_smile:

Guglielmo

Eccoci qua presentazioni fatte! (Scusate ancora)

Dicevamo Ho un pannello operatore touch-screen il quale vorrei che leggesse e scrivesse dei registri della scheda ATMega2560 (dotata di shield Ethernet V2) attraverso il protocollo Modbus TCP-IP.
Ma per testare il programma dell'arduino simulo comandi ModBus attraverso un programma sul mio Pc.

L'Hardware che ho è il seguente:
a) Scheda Arduino ATMEGA2560 (A000067)
b) Shield Ethernet V2 (A000024)
c) Switch Ethernet
d) Pc (con Windows 7)

Mentre il Software che utilizzo è:
a) IDE Arduino 1.8.5
b) Multiway (software che permette di inviare comandi Modbus RTU e TCP-IP)
c) la libreria e lo Skecth li ho presi da questo sito:

http://www.fleaplc.it/it-IT/appunti-it/15-arduino-mega-2560-modbus-tcp-server

Ho impostato sul mio pc un indirizzo IP statico (192.168.250.33) ed ho modificato lo sketch dell'esempio del sito sopra riportato con l'ID MAC che ho trovato sullo shield e IP 192.168.250.99.
scaricato il programma sulla scheda e collegata al mio Pc attraverso uno switch (per evitare errori per via di cavi ethernet dritti o cross) ho provato a fare il ping ma la scheda non mi risponde tantomeno riesco a leggere un registro con il multiway.
Potete aiutarmi?
Grazie ancora per il vostro aiuto :slight_smile:

Se si chiedono i LINK dei prodotti un motivo ci sarà non credi ? :slight_smile:

… purtroppo i nomi creano sempre confusione, comunque do per scontato che la tua sia una “Arduino Ethernet Shield 2” e NON V2 (che è la versione precedente della V3) …

… se la mia supposizione è giusta, allora la libreria Ethernet che tu dici di aver usato (e che quel codice che hai linkato usa) NON è compatibile.

La Ethernet Shield rev2 e poi rev3 usavano come controller il WizNet W5100, mentre la Ethernet Shield 2 usa come controller il WizNet W5500.

Dall’IDE, vai in Sketch → Include Library → Manage Libraries …cerca la libreria Ethernet2 ed da li installala. Prendi poi il tuo codice e, dove trovi #include <Ethernet.h> correggi in #include <Ethernet2.h>.

Dovrebbe bastare. ::slight_smile:

Guglielmo

Ciao Guglielmo grazie per la tempestiva risposta.
Ho subito scaricato la nuova libreria e istallata ma era sorto un altro problema in fase di compilazione che dopo una "sbirciata" alla libreria modbus credo di aver risolto.
Nello specifico e per dare una dritta a chiunque voglia cimentarsi nella comunicazione modbus TCP-IP all'interno della libreria modbus viene inclusa la libreria ethernet.h quindi basta modificare anche questo include e tutto dovrebbe funzionare :wink:
Grazie ancora a presto!

SI, la mia frase:

gpb01:
… Prendi poi il tuo codice e, dove trovi #include <Ethernet.h> correggi in #include <Ethernet2.h>.

… voleva intendere proprio che OVUNQUE nel codice che usavi (… quindi il tuo, librerie incluse, ecc) dovevi fare la sostituzione :smiley:

Guglielmo

Come al solito l'appetito vien mangiando!
Grazie a Guglielmo il mio progetto modbus TCP-IP funziona perfettamente.... ma adesso per ridurre gli spazi al posto di un pannello HMI (che mi fa da Master nella comunicazione modbus) volevo provare a sostituirlo con una scheda ATMEGA2560 (con relativo shield...e libreria ethernet2 :stuck_out_tongue: ) sapete darmi qualche altra dritta per la libreria da utilizzare per utilizzare la scheda ATMEGA2560 come master modbus TCP-IP?

Grazie anticipatamente a tutti

LUCA_ELETTRA:
... sapete darmi qualche altra dritta per la libreria da utilizzare per utilizzare la scheda ATMEGA2560 come master modbus TCP-IP?

Prova a cercare con Google "arduino modbus master tcp" ...
... vengono fuori parecchi link, magari trovi quello che ti serve :wink:

Guglielmo

Ciao Guglielmo!
Ho decisamente formulato male la mia domanda :slight_smile:
Sto guardando da un paio di giorni su internet e come giustamente mi hai risposto si trova molto materiale soprattutto in inglese (anche troppo e a volte dispersivo) la libreria menzionata maggiormente è la seguente:

http://www.myarduinoprojects.com/modbus.html

qualcuno di voi l'ha provata su schede ATMEGA2560 e shield Ethernet?

Mah ... a parte che dovrai, come sempre, cambiare l'include della libreria Ethernet con la Ethernet2 per la tua scheda, per il resto non mi sembra di vedere cose particolari per cui non dovrebbe funzionare sulla MEGA ::slight_smile:

Guglielmo