5 1 1 1 1 1 1 1 1 1 1 Rating 5.00 (1 Vote)

Valutazione attuale: 0 / 5

Stella inattivaStella inattivaStella inattivaStella inattivaStella inattiva
 

 

 

 

 

 

Incuriosito da alcuni forum/blog sull'argomento ,mi son deciso a testare la comunicazione Modbus TCP su un Arduino Mega 2560. Devo dire che ne son rimasto felicemente sorpreso.. in pochi passi ho visto un piccolo sistema funzionante e veloce che potrebbe rappresentare una buona base di partenza per un'applicazione da visualizzare con una SCADA (tipo Proview). Di seguito riporto le fasi seguite:

HW usato:

  1. Arduino Mega 2560 
  2. Arduino Ethernet Shield R3

Software Usato:

  1. Arduino IDE 1.5.5 scaricabile gratuitamente da qui
  2. Libreria Modbus TCP Mudbus v1.0

 

Una volta aperto l'IDE occorre innanzitutto importare la libreria Mudbus.h tramite il comando "import library"

 

 

Sketch Arduino:

Arduino-Sketch_ModbusTCPSlave

 Nel mio sketch in pratica ho:

  1. Mb.R[0]=Mb.R[1];   mappato il registro 1 sul registro 0  (registro 1 lo scrivo da esterno con un client Modbus ( es Modbus Poll)
  2. Mb.C[0]=digitalRead(In22);      mappato l'ingresso digitale fisico 22 sul Coil 0

 

Questo il log di Wireshark dove si vede l'interrogazione "read Holding Register" (10 registri a partire dall'indirizzo 1) da parte del client (Source 192.168.1.100 --> Destination192.168.1.99)

 

e la risposta del nostro Arduino (Source 192.168.1.99 --> Destination192.168.1.100)

 

NOTE:

La Libreria Mudbus.h gestisce solo 2 tipi di dato: coil (r/w) e register (r/w)

  • MB.R[x] = holding register [x]
  • MB.C[x]= coil [x]

Questa la nota del sito:

A minimal Modbus TCP slave for Arduino. It has function codes 1(read coils), 3(read registers), 5(write coil), and 6(write register). It is set up to use as a library, so the Modbus related stuff is separate from the main sketch. The register and coil data is held as Mb.R[0-125] signed int and Mb.C[0-128] bool

Martin Pettersson Has furnished some changes for compatibility with Arduino 1.0. He also has a git repository at http://gitorious.org/mudbus and a website at http://siamect.com/test3/

Di seguito alcuni link utili: