W&T collega
Adattatori per TCP/IP, Ethernet, RS-232, RS-485, USB, 20 mA, Fibra ottica di vetro e plastica, http, SNMP, OPC, Modbus TCP, I/O digitale, I/O analogico, ISA, PCI

Conoscenze di base:

Modbus-TCP

Protocollo standard per la tecnica di automazione



Inizialmente il modbus è stato sviluppato come bus di campo seriale dall’azienda Modicon (oggi Schneider Electric) come via di comunicazione tra i controlli.


La chiara e semplice struttura del protocollo Modbus ha spinto anche altri produttori ad integrare Modbus nei loro apparecchi. In questo modo il Modbus è diventato uno standard affermato fino alla data odierna.


Il principio master/slave

Modbus lavora secondo il principio master/slave. Il che significa che c’è almeno un master e almeno uno slave.

Gli slave Modbus sono p. es. controlli CNC, Web-IO o altri elementi IO decentralizzati per segnali digitali e analogici.

Il master è sempre l’interlocutore di comunicazione che prende l’iniziativa ovvero manda una richiesta o il richiamo di funzione desiderato a uno slave. Ogni slave ha un indirizzo chiaro. Nei casi normali, lo slave è puramente passivo e risponde solo quando ci si rivolge ad esso in modo mirato con il suo indirizzo.

Comunicazione Modbus-TCP

Master/Slave - client/server

Con la crescente importanza di Ethernet TCP/IP come possibilità di trasmissione, il protocollo Modbus è stato adattato pressoché 1:1 da trasmissione dati seriale a TCP.

Il Modbus TCP funziona secondo il principio client/server, dove il master assume la funzione del client e gli slave fungono da server. Il master Modbus deve instaurare un esplicito collegamento TCP con ogni slave Modbus. Questo collegamento rimane costante per tutta la durata della comunicazione. Non viene stabilita una nuova connessione per ogni richiesta.

La porta server TCP standardizzata per Modbus-TCP è la 502.

Registro e variabili

indirizzi di memorizzazione o anche registri attraverso il Modbus-Master ovvero il client.

Ci si può immaginare come lo slave Modbus ovvero il server, abbia un armadio con molti cassetti tutti numerati. Ad ogni cassetto sono assegnate delle funzioni.

Quando il master Modbus vuole richiamare determinate informazioni, indica nella sua richiesta il numero del cassetto corrispondente e riceve il contenuto dallo slave Modbus.

Se il master Modbus volesse provocare un’azione nello slave, p. es. commutare un’uscita, inserirebbe l’informazione necessaria nel cassetto con il rispettivo numero.

Come descritto inizialmente, questo avviene effettivamente attraverso specifici indirizzi di memorizzazione (indirizzi di registro). Sono disponibili max. 65536 indirizzi in totale. Quale funzione si definisce dietro un’altra non è prescritto in modo univoco.

Di norma la memoria è separata per funzioni in aree.

Definizione Tipo di dati Accesso Descrizione
Discreto 1 bit leggere solo Input digitale e stato di attivazione
Coil 1 bit leggere/scrivere Input digitale e stato di commutazione
Registro di input 16 bit leggere solo Valore tra 0 e 65535 e valore analogico o di conteggio
Registro holding 16 bit leggere/scrivere Valore tra 0 e 65535 e valore analogico o di conteggio


Function Codes

Con dei Function Codes si indica all’interno del protocollo Modbus a che tipo di dati si deve accedere. Qui un elenco dei più frequenti Function Codes:

FC (dec.) FC (es.) Descrizione
01 0x01

Read Coils
Lettura di output digitali e uscite di commutazione

02 0x02

Read Discrete Inputs
Lettura di input digitali e di stati di commutazione

03 0x03

Read Holding Registers
Lettura di registri (output) da 16 bit

04 0x04

Read Input Registers
Lettura di registri (input) da 16 bit

05 0x05

Write Single Coil
Scrittura di un singolo output e uscita di commutazione

06 0x06

Write Single Register
Lettura di un singolo registro a 16 bit

15 0x0F

Write Multiple Coils
Scrittura di un singolo output e uscita di commutazione

16 0x10

Write Multiple Registers
Scrittura di più registri (output) da 16 bit

07 0x07

Read Exeption Status
Richiedere stato di errore


Struttura del protocollo Modbus

Il quadro del protocollo Modbus-TCP ha la seguente struttura:

Struttura del pacchetto Modbus-TCP


Transaction ID
La Transaction ID è come un numero di richiesta e viene aumentato di uno dal master ad ogni richiesta. Il Client risponde con la stessa Transaction ID.

Protocol ID
In Modbus-TCP sempre 0.

Length
Lunghezza dei dati Modbus in byte più due.

Unit ID
Nel protocollo Modbus seriale questo era l’indirizzo dello slave. Il campo è stato ripreso per motivi di compatibilità. In Modbus-TCP il chiaro indirizzamento avviene però attraverso l’indirizzo IP dello slave.

Function Code
Il protocollo Modbus definisce attraverso i Function Codes numerati, cosa deve attivare la richiesta inviata dal master.

Modbus Data
L’area Modbus Data viene riempita con diversi contenuti in funzione del Function Code utilizzato e può avere dimensioni diverse. Anche la direzione dei dati nella costruzione dell’area Modbus Data è importante.

Nella direzione dati master a slave i primi due byte contengono sempre l’indirizzo di memorizzazione da attivare.

Struttura del pacchetto Modbus-TCP


L’esempio seguente mostra l’aspetto di un pacchetto Modbus-TCP quando si aprono due registri con Function Code 3 dall’indirizzo di memorizzazione 0x1020.

Struttura del pacchetto Modbus-TCP FC03


Il pacchetto di risposta è costruito in modo diverso. Qui nel primo byte di Modbus Data è codificato il numero di byte di registro trasmessi. Nei successivi 4 byte ci sono i contenuti dei registri richiesti.

Struttura del pacchetto Modbus-TCP FC03


Nonostante la struttura visibile del protocollo, il Modbus-TCP offre grande flessibilità per la comunicazione industriale.

Consiglio: Assicurarsi che il produttore di apparecchi indichi i valori in decimali o esadecimali nella descrizione degli indirizzi di memorizzazione.


Basi sui comuni protocolli industriali

Prodotti per applicazioni industriali con protocolli standard