Interfacce dei contatori

Modbus TCP e Modbus RTU a confronto

Differenze tra Modbus TCP e RTU: trasporto, trame, indirizzi, porta 502, tempi, gateway e sicurezza; come scegliere per un sito esistente.

Un contatore su una linea RS-485 e lo stesso modello con porta Ethernet rispondono alle stesse richieste Modbus secondo la stessa mappa dei registri. Cambia solo il trasporto: Modbus RTU sulla linea seriale, Modbus TCP sulla rete IP. In un sito esistente, la scelta segue di norma l'interfaccia già disponibile sull'apparecchiatura.

Questa guida fa parte della serie su Modbus e RS-485.

Confronto diretto

Modbus RTUModbus TCP
TrasportoLinea seriale: RS-485, o RS-232 per un solo dispositivoTCP/IP su Ethernet o Wi-Fi
Indirizzo del dispositivoDa 1 a 247 sul bus; 0 per il broadcastIndirizzo IP, più identificativo unità per i dispositivi dietro un gateway
TramaIndirizzo, codice funzione, dati, CRC a 16 bitIntestazione MBAP (7 byte), codice funzione, dati
Controllo erroriCRC in ogni tramaChecksum TCP; nessun CRC Modbus
Separazione delle trameSilenzio di almeno 3,5 tempi di carattereCampo lunghezza nell'intestazione
Richieste in corsoUna per volta sul busPiù connessioni; l'identificativo di transazione associa ogni risposta
Impostazioni tipicheVelocità in baud, parità, bit di stop, indirizzoIndirizzo IP, porta 502, identificativo unità
CablaggioCoppia intrecciata in linea, terminata alle due estremitàRete del sito

La guida RS-485 e Modbus spiega il livello seriale sotto Modbus RTU e la differenza con RS-232. I codici funzione (03 lettura dei registri holding, 04 lettura dei registri di ingresso, 06 e 16 scrittura) sono gli stessi nelle due varianti. Anche tipi di dato, ordine delle word e fattori di scala restano gli stessi. La guida alla mappa dei registri li approfondisce.

Confronto delle trame

Ecco come appare, nelle due varianti, una richiesta al dispositivo 17 per leggere tre registri holding a partire dall'indirizzo 0x006B:

VarianteByte (esadecimali)
Modbus RTU11 03 00 6B 00 03 seguiti dal CRC di 2 byte
Modbus TCP00 01 00 00 00 06 11 03 00 6B 00 03

Nella trama TCP, i primi sette byte sono l'intestazione MBAP: identificativo di transazione (0x0001), identificativo di protocollo (sempre 0 per Modbus), lunghezza dei dati successivi (6 byte) e identificativo unità (0x11). L'unità dati di protocollo dopo l'intestazione è identica. Il calcolatore CRC e LRC Modbus ricava i byte di controllo della trama RTU:

Tempi e capacità del bus

Su un bus RTU c'è una sola richiesta in corso alla volta. Il tempo per richiesta comprende il tempo di trasmissione della richiesta e della risposta, il tempo di risposta del dispositivo e l'intervallo tra le trame. A 9.600 baud con parità pari, ogni carattere richiede 11 bit: un byte impiega quindi circa 1,15 ms. La guida Modbus seriale fissa l'intervallo tra le trame a 1,75 ms sopra 19.200 baud. Il calcolatore dei tempi Modbus RTU somma questi tempi per un intero bus:

La guida a interrogazione e ritentativi mostra l'effetto di un dispositivo offline su ogni ciclo. Con Modbus TCP la rete raramente è il limite. Di solito contano di più il tempo di elaborazione del dispositivo e il numero di connessioni simultanee che accetta. Molti contatori ne accettano solo poche, alcuni una sola. Verifica il limite prima che più sistemi interroghino lo stesso contatore.

Identificativi unità e gateway

Un gateway seriale-Ethernet consente ai client Modbus TCP di raggiungere dispositivi RTU. Il client invia una richiesta TCP all'indirizzo IP del gateway e mette l'indirizzo del dispositivo seriale nell'identificativo unità. Il gateway inoltra la richiesta sul bus, attende la risposta e la restituisce via TCP.

Tre punti richiedono attenzione:

  • Identificativo unità dei dispositivi TCP diretti. La guida Modbus TCP dice che l'identificativo unità non viene usato quando il server è raggiunto tramite il suo indirizzo IP e raccomanda 0xFF. Molti dispositivi lo ignorano; alcuni richiedono 1 o il proprio indirizzo seriale. Usa il valore indicato nel manuale del dispositivo.
  • Timeout. Il timeout TCP del client deve superare il timeout seriale del gateway più il tempo che il gateway impiega ad attendere le altre richieste sul bus. Altrimenti il client rinuncia mentre il gateway sta ancora aspettando.
  • RTU su TCP. Alcuni convertitori trasportano su una connessione TCP le trame RTU complete di CRC, senza intestazione MBAP. Questo non è Modbus TCP: il client va configurato nella modalità corretta. La guida a gateway di protocollo e bridge trasparente spiega la differenza.

Per ogni punto, registra indirizzo IP, porta, identificativo unità e dispositivo fisico che risponde. Dopo la sostituzione di un gateway, controlla per prima cosa questo instradamento.

Scelta per un sito

Scegli il trasporto che le apparecchiature già offrono:

SituazioneScelta abituale
Contatori con soli morsetti RS-485, in uno o due quadriModbus RTU su un bus corto, o un'interfaccia locale
Apparecchiatura con porta Ethernet su una rete gestitaModbus TCP, con un piano degli indirizzi concordato con l'IT del sito
Bus RTU esistente già interrogato da un BMSLeggi dal BMS o da un gateway; non aggiungere un secondo master
Molti dispositivi seriali che più sistemi devono leggereUn gateway Modbus TCP davanti al bus
Contatori seriali lontani dal Gateway e senza percorso per un cavoUn'interfaccia Modbus wireless vicino ai contatori

Per entrambe le varianti, procurati la mappa dei registri del modello e del firmware esatti prima di scegliere l'hardware. «Supporta Modbus» non dice quali valori il dispositivo rende disponibili.

Sicurezza

Modbus TCP e Modbus RTU non prevedono autenticazione né cifratura. Qualsiasi client che raggiunge la porta 502 può leggere e, se il dispositivo lo consente, scrivere. Proteggili con la progettazione della rete: rete o VLAN separata per le apparecchiature di controllo, regole firewall che ammettano solo i sistemi necessari e nessuna esposizione a Internet.

La Modbus Organization pubblica un protocollo Modbus Security separato, che incapsula Modbus in TLS con certificati X.509 sulla porta 802. Devono supportarlo entrambe le estremità. Un gateway davanti a un dispositivo Modbus senza protezione non rende sicuro quel dispositivo: sposta soltanto il confine di sicurezza.

Prova le letture prima di qualsiasi scrittura. Tratta le scritture come una fase separata, approvata dal proprietario dell'apparecchiatura.

Modbus TCP e RTU con Edge

Edge sul Gateway ZGW-20 opera come client Modbus per entrambe le varianti. Interroga dispositivi Modbus TCP sulla rete del sito, compresi convertitori RTU su TCP, e dispositivi Modbus RTU su una porta seriale del Gateway. Ogni connessione ha una coda, timeout e frequenza di interrogazione propri. Se un contatore è irraggiungibile con un cavo dati, un'interfaccia Modbus ZMB lo legge su RS-485 e invia i registri attraverso la rete mesh Zigbee. Edge include anche un server Modbus: un BMS o un sistema SCADA può leggere dal Gateway i dati del sito come registri Modbus TCP. La guida alla messa in servizio di Modbus RS-485 tratta in dettaglio il lato seriale.

Domande frequenti

Qual è la differenza tra Modbus TCP e Modbus RTU?

Modbus RTU usa una linea seriale come RS-485: trame binarie, CRC per il controllo degli errori e un master che interroga i dispositivi per indirizzo. Modbus TCP usa una rete IP: le stesse richieste in una trama con intestazione MBAP di 7 byte, inviate via TCP alla porta 502, con il controllo degli errori affidato a TCP. Codici funzione e mappe dei registri sono gli stessi.

Quale porta usa Modbus TCP?

La porta TCP 502. Il protocollo Modbus Security, che incapsula Modbus in TLS, usa la porta 802.

Che cos'è l'identificativo unità in Modbus TCP?

È un campo di un byte nell'intestazione MBAP. Un gateway lo usa per inoltrare la richiesta al dispositivo seriale dietro di sé, quindi contiene l'indirizzo di quel dispositivo. Per un dispositivo Modbus TCP diretto, la guida raccomanda 0xFF, ma molti dispositivi richiedono 1 o accettano qualunque valore.

Che cos'è Modbus RTU su TCP?

È una trama RTU completa di indirizzo e CRC, inviata senza modifiche su una connessione TCP e senza intestazione MBAP. Alcuni convertitori seriale-Ethernet funzionano così. Non è Modbus TCP: il client deve usare la modalità corretta per ciascun dispositivo.