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.
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 |
02 | 0x02 |
Read Discrete Inputs |
03 | 0x03 |
Read Holding Registers |
04 | 0x04 |
Read Input Registers |
05 | 0x05 |
Write Single Coil |
06 | 0x06 |
Write Single Register |
15 | 0x0F |
Write Multiple Coils |
16 | 0x10 |
Write Multiple Registers |
07 | 0x07 |
Read Exeption Status |
Struttura del protocollo Modbus
Il quadro del protocollo Modbus-TCP ha la seguente struttura:
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.
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.
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.
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
-
Web-IO - Automazione con protocolli standard
Integrare segnali IO con Modbus-TCP, OPC UA/DA, Rest o MQTT
-
Formati di dati e protocolli
Dal classico scambio di dati fino all’IoT
-
REST - REpresentational State Transfer
Comunicazione industriale sulla base di richieste HTTP standardizzate
-
MQTT - Message Queue Telemetry Protocol
Scambio di dati senza connessione diretta
-
OPC UA -
OPC Unified ArchitectureSupporto OPC out of the box
-
OPC DA -
OPC Data AccessL’interprete dei dati di processo