Quando un PLC deve scambiare dati con inverter, contatori, sensori o moduli di I/O, una comunicazione instabile può fermare un’intera linea. Il protocollo modbus rtu offre una soluzione seriale semplice e collaudata, ma funziona bene solo quando indirizzi, parametri della porta, cablaggio e registri sono configurati con precisione. Qui spiego come opera, come si imposta in un PLC e quali errori conviene evitare nella pratica.
I punti essenziali per usare Modbus RTU senza sorprese
- RS-485 è l’interfaccia più comune per collegare più dispositivi sulla stessa linea.
- Ogni dispositivo deve condividere baud rate, parità, bit di stop e modalità RTU.
- La trama contiene indirizzo, codice funzione, dati e CRC-16 per il controllo degli errori.
- Gli indirizzi dei registri e l’ordine dei byte sono tra le cause più frequenti di letture sbagliate.
- Il master interroga un dispositivo alla volta, mentre gli slave rispondono solo quando vengono chiamati.

Che cos’è Modbus RTU e perché è ancora usato nei PLC
Modbus RTU è una modalità di comunicazione seriale utilizzata per trasferire dati tra un dispositivo principale e uno o più dispositivi collegati alla stessa linea. In un impianto industriale il PLC può leggere la temperatura da un sensore, verificare la velocità di un inverter o modificare il setpoint di un regolatore usando messaggi brevi e strutturati.
Il suo punto di forza è la semplicità. Non richiede una rete complessa, ha costi contenuti e viene supportato da moltissimi dispositivi di produttori diversi. Per questo lo incontro spesso in quadri elettrici, macchine utensili, sistemi HVAC, contatori di energia e linee di automazione.
La comunicazione segue normalmente il modello master-slave, oggi descritto anche come client-server. Il master, spesso il PLC, avvia ogni richiesta; lo slave, per esempio un inverter, risponde con il valore richiesto o con un codice di errore. Non esiste quindi una trasmissione spontanea continua da parte dei dispositivi secondari.
Come funziona la comunicazione seriale
In una rete RTU tutti i dispositivi devono usare gli stessi parametri di trasmissione. I valori più comuni sono 9600 o 19.200 bit/s, formato 8E1, cioè 8 bit dati, parità pari e 1 bit di stop. Alcuni apparati usano 8N1 o 8N2, ma il formato deve essere identico su tutta la linea.
| Parametro | Impostazione tipica | Cosa succede se è errato |
|---|---|---|
| Baud rate | 9600 o 19.200 bit/s | La trama viene interpretata con tempi sbagliati |
| Bit dati | 8 | I byte ricevuti risultano corrotti |
| Parità | Even, Odd oppure None | Compaiono errori di comunicazione |
| Bit di stop | 1 oppure 2 senza parità | Il ricevitore perde l’allineamento |
| Indirizzo nodo | Da 1 a 247 | Il dispositivo non risponde o risponde quello sbagliato |
Ogni nodo deve avere un indirizzo univoco. L’indirizzo 0 è riservato al broadcast, cioè a un comando inviato a tutti i dispositivi, ma in questo caso gli slave non devono restituire una risposta. Gli indirizzi da 1 a 247 sono invece usati per le comunicazioni individuali.
La separazione tra una trama e l’altra non dipende da un carattere speciale, ma da un intervallo di silenzio sulla linea. Il tempo minimo è di 3,5 caratteri, mentre una pausa superiore a 1,5 caratteri durante la trama può far considerare il messaggio incompleto. È un dettaglio spesso trascurato quando si sviluppano driver personalizzati o si imposta un convertitore seriale.
Come leggere la trama e i registri Modbus
Una trama RTU è composta, in forma semplificata, da indirizzo del dispositivo, codice funzione, dati e controllo CRC. La lunghezza massima teorica della trama è 256 byte. Il CRC-16 permette al ricevitore di verificare se i bit sono arrivati integri, ma non corregge il messaggio: se il controllo fallisce, la risposta viene scartata.
| Campo | Funzione |
|---|---|
| Indirizzo | Identifica il dispositivo destinatario |
| Codice funzione | Indica l’operazione da eseguire |
| Dati | Contengono indirizzo iniziale, quantità o valori |
| CRC | Verifica l’integrità della comunicazione |
I codici più usati in automazione sono il 01 per leggere le coil, il 02 per gli ingressi digitali, il 03 per i holding register, il 04 per gli input register, il 05 per scrivere una singola coil e il 06 per scrivere un singolo registro. Le funzioni 15 e 16 servono invece per scrivere gruppi di bit o registri in un’unica richiesta.
Qui nasce uno dei problemi più fastidiosi. Un manuale può indicare un registro come 40001, mentre il PLC può richiedere l’offset 0. In altri casi lo stesso valore viene presentato come registro 40001 ma deve essere interrogato con codice funzione 03 all’indirizzo 0. Prima di modificare il programma, controllo sempre codice funzione, offset, quantità e formato del dato.
Un registro Modbus ha normalmente 16 bit, ma un valore reale a 32 bit occupa due registri consecutivi. L’ordine dei byte è spesso definito, mentre l’ordine delle word può cambiare da un costruttore all’altro. Per questo un numero come 23,5 può apparire come un valore enorme o negativo se il PLC interpreta male il formato IEEE 754 o l’ordine delle word.
Come configurare Modbus RTU in un PLC
La configurazione diventa molto più rapida se la affronto come una piccola procedura ordinata. Non conviene collegare subito tutti i dispositivi e cambiare più parametri contemporaneamente, perché in caso di errore diventa difficile capire quale impostazione abbia causato il problema.
- Raccolgo la tabella registri del dispositivo e verifico i codici funzione supportati.
- Imposto lo stesso baud rate, formato dati, parità e numero di stop bit su PLC e slave.
- Assegno un indirizzo diverso a ogni nodo e controllo che non esistano duplicati.
- Collego un solo dispositivo per la prima prova, usando una richiesta semplice di lettura.
- Verifico la risposta con il diagnostico del PLC o con un analizzatore Modbus.
- Aggiungo gli altri nodi e imposto timeout, numero di tentativi e gestione degli errori.
Per una prima verifica scelgo spesso la funzione 03 su un registro di misura facilmente riconoscibile. Se il dispositivo restituisce una temperatura, una frequenza o un conteggio plausibile, posso concentrarmi sugli altri registri. Se invece arriva una risposta di eccezione, il problema può essere un indirizzo non valido, una funzione non supportata o una quantità di registri errata.
Il timeout deve essere abbastanza lungo da permettere al dispositivo di rispondere, ma non così elevato da bloccare il ciclo del PLC. In molti impianti si parte da 100-500 millisecondi, poi si adatta il valore in base al baud rate, al numero di registri e ai tempi dichiarati dal costruttore. Anche il numero di tentativi va limitato: ripetere indefinitamente una richiesta guasta può rallentare tutta la macchina.
Cablaggio RS-485 e problemi che sembrano software
Modbus RTU non è sinonimo di RS-485. RTU descrive il formato della comunicazione, mentre RS-485 è l’interfaccia elettrica usata più spesso per trasportarla. Questa distinzione è importante perché un programma perfetto non può compensare un bus cablato male.
La topologia consigliata è una linea dorsale con derivazioni brevi. Evito la configurazione a stella, soprattutto quando i cavi sono lunghi o il baud rate è elevato. Alle due estremità fisiche della linea inserisco normalmente resistenze di terminazione da 120 ohm, non su ogni dispositivo intermedio.
- Uso un cavo twistato adatto alla comunicazione differenziale.
- Controllo la polarità dei segnali A e B, perché la nomenclatura non è sempre coerente tra produttori.
- Collego il riferimento comune quando il costruttore lo richiede.
- Separo il cavo RS-485 da motori, contattori e cavi di potenza.
- Verifico schermatura, messa a terra e protezione contro differenze di potenziale.
Quando la comunicazione è intermittente, guardo prima i contatori di errori e la qualità elettrica della linea. Un CRC errato suggerisce disturbi, terminazioni sbagliate o riflessioni; nessuna risposta può indicare un indirizzo errato, un problema di polarità, un dispositivo spento o parametri seriali incompatibili.
Su una tratta RS-485 si considera spesso il limite di 32 unit load, ma il numero reale dipende dai transceiver installati. Dispositivi moderni, ripetitori e segmentazioni possono cambiare questo limite. Non considero quindi sufficiente contare i dispositivi: verifico il carico elettrico dichiarato e la lunghezza del cavo prevista dal progetto.
Modbus RTU e Modbus TCP non sono intercambiabili
Entrambe le varianti usano gli stessi concetti di registri e codici funzione, ma il mezzo di trasmissione è diverso. RTU viaggia su una linea seriale, mentre Modbus TCP utilizza Ethernet e incapsula i dati in pacchetti TCP/IP. In una rete TCP non esistono i tempi di silenzio della trama RTU e il controllo CRC della seriale non viene usato nello stesso modo.
| Caratteristica | Modbus RTU | Modbus TCP |
|---|---|---|
| Mezzo | Seriale, soprattutto RS-485 | Ethernet |
| Velocità pratica | Dipende dal baud rate e dalla lunghezza della linea | Generalmente superiore |
| Cablaggio | Dorsale differenziale e terminazioni | Infrastruttura Ethernet e switch |
| Adatto a | Macchine compatte e retrofit | Impianti con rete industriale già disponibile |
Scelgo RTU quando devo collegare pochi dispositivi, mantenere bassi i costi o integrare apparecchiature già dotate di porta seriale. Preferisco TCP quando servono più nodi, maggiori velocità o un’integrazione diretta con SCADA, sistemi MES e infrastrutture Ethernet. Un gateway può collegare i due mondi, ma introduce un ulteriore punto da configurare e diagnosticare.
La semplicità di RTU non significa assenza di rischi. Il protocollo non offre da solo cifratura, autenticazione o gestione avanzata degli accessi. Per questo lo tengo su reti industriali segmentate e controllo con attenzione quali dispositivi possono scrivere sui registri, soprattutto quando la rete è collegata a sistemi aziendali.
Il controllo finale che evita la maggior parte degli errori
Prima di mettere in servizio una macchina, preparo una tabella con indirizzo nodo, parametri seriali, registri utilizzati, tipo di dato, unità di misura e valore ammesso. È un passaggio semplice, ma rende molto più veloce la manutenzione quando un dispositivo viene sostituito o si aggiunge un nuovo modulo.
La mia regola pratica è partire dalla comunicazione più piccola possibile, verificare un solo registro e solo dopo aumentare la quantità di dati. In questo modo si separano i problemi di cablaggio da quelli di configurazione e da quelli legati alla mappa registri. Quando questi tre livelli sono documentati, Modbus RTU resta una soluzione affidabile, economica e ancora molto efficace per l’automazione industriale.