RS-485 e Modbus non sono alternative: RS-485 è uno strato fisico e Modbus è un protocollo. L’RS485 (norma TIA/EIA-485, scritta anche RS-485) è un’interfaccia seriale: definisce il segnale elettrico su una coppia intrecciata e quante apparecchiature possono condividerla. Modbus definisce le richieste, gli indirizzi dei dispositivi e i registri trasmessi su un collegamento. Modbus RTU usa quasi sempre RS-485, perciò i due nomi compaiono insieme, ma Modbus TCP funziona su Ethernet, senza RS-485.
Che cos'è Modbus? spiega il protocollo in sé: il modello dei dati, i codici funzione e una richiesta completa con la sua risposta.
RS485 vs Modbus: la differenza
| RS-485 | Modbus | |
|---|---|---|
| Che cos’è | Uno standard di interfaccia elettrica, TIA/EIA-485-A | Un protocollo di comunicazione pubblicato dalla Modbus Organization |
| Livello | Strato fisico (livello OSI 1) | Protocollo applicativo (livello 7), con un protocollo di linea seriale al livello 2 per RTU e ASCII |
| Che cosa definisce | Segnali differenziali su una coppia intrecciata, soglie del ricevitore e unità di carico | Codici funzione, le quattro tabelle di dati, risposte di eccezione, trame e indirizzamento |
| Funziona su | Coppia intrecciata in rame, a due o a quattro fili | RS-485 o RS-232 (Modbus RTU e ASCII), oppure TCP/IP (Modbus TCP) |
| Indirizzi dei dispositivi | Nessuno | Da 1 a 247 su una linea seriale; indirizzo IP e identificativo unità in TCP |
| Controllo degli errori | Nessuno | CRC a 16 bit in RTU, LRC in ASCII, i controlli di TCP in Modbus TCP |
| Che cosa si imposta in campo | Cablaggio, terminazione e polarizzazione | Baud rate, parità, bit di stop, indirizzo e mappa dei registri |
| Usato da | Modbus RTU, BACnet MS/TP, DLMS/COSEM e protocolli proprietari | Contatori, PLC, inverter, azionamenti e controllori |
La guida Modbus su linea seriale fa la stessa separazione: il protocollo applicativo Modbus al livello 7, le regole della linea seriale e le trame RTU o ASCII al livello 2, ed EIA/TIA-485 o EIA/TIA-232 al livello 1. Una scheda tecnica che indica «Modbus RS485» intende quindi trame Modbus RTU su una coppia RS-485, e cablaggio, impostazioni seriali e mappa dei registri devono coincidere tutti.
A quale livello appartiene ogni impostazione
Ogni dato necessario per collegare un dispositivo appartiene a un livello distinto, che può guastarsi indipendentemente dagli altri:
| Livello | Dati necessari | Esempio |
|---|---|---|
| Fisico | Interfaccia, modalità di cablaggio e nomi dei morsetti | RS-485, due fili, morsetti D+ e D− più comune |
| Impostazioni seriali e protocollo | Protocollo, baud rate, parità, bit di stop, indirizzo | Modbus RTU, 9.600 baud, parità pari, 1 bit di stop, indirizzo 12 |
| Applicazione | Registri e formato dei dati | kWh totali nel registro input 0x0156, float a 32 bit, parola più significativa per prima |
Due prodotti con morsetti RS-485 non comunicano se uno usa Modbus RTU e l'altro BACnet MS/TP. Anche due dispositivi Modbus RTU che concordano su cavi e impostazioni possono usare mappe di registri diverse: ogni produttore definisce la propria. Il convertitore di indirizzi Modbus traduce un riferimento della mappa, come il registro input 30343, nell’indirizzo a base zero trasmesso nella richiesta.
Che cosa definisce l’interfaccia RS485: lo strato fisico
RS-485 (TIA/EIA-485-A) è un'interfaccia differenziale. Ogni segnale percorre una coppia di fili e il ricevitore ne misura la differenza di tensione. Il rumore indotto dai cavi vicini tende a comparire su entrambi i fili, lasciando leggibile la differenza. La panoramica Texas Instruments SLLA070 e la nota sulle unità di carico SLLA166 riportano i limiti utili sul campo.
Un trasmettitore deve applicare almeno 1,5 V tra i due fili su 54 Ω, il carico di un bus terminato a entrambe le estremità. Un ricevitore deve interpretare correttamente una differenza di almeno 200 mV quando ciascun filo si trova tra −7 V e +12 V rispetto alla propria massa. Questa gamma di modo comune permette a dispositivi con terre locali diverse di condividere il bus, purché abbiano un riferimento comune. Per questo la guida Modbus per linea seriale prevede un conduttore comune accanto alla coppia.
Il limite è di 32 unità di carico, non necessariamente di 32 dispositivi. Un'unità corrisponde a circa 12 kΩ. Molti ricetrasmettitori moderni assorbono 1/4 o 1/8 di unità, permettendo rispettivamente 128 o 256 dispositivi sul bus senza ripetitore. La guida Modbus seriale continua a indicare 32 dispositivi senza ripetitore e gli indirizzi utilizzabili si fermano a 247. In un bus di contatori, spesso il limite pratico è prima di tutto il tempo di interrogazione.
La lunghezza ammissibile diminuisce quando aumenta la velocità. La regola pratica di TI richiede che il prodotto tra lunghezza in metri e velocità in bit/s resti sotto 10⁸: una tratta di 500 m può arrivare a 200 kbit/s. A 19.200 baud, una tratta di 1.200 m dà circa 2,3 × 10⁷, ben sotto il limite; alle velocità dei contatori prevalgono quindi le perdite del cavo. TI raccomanda circa 1.200 m al massimo. La guida Modbus seriale indica 1.000 m a 9.600 baud con cavo AWG26 o più grosso, dimezzati se si usa un cavo a quattro fili come collegamento a due fili; le derivazioni non devono superare 20 m.
RS-485 funziona in half-duplex su una coppia (due fili) oppure in full-duplex su due coppie (quattro fili). Non definisce caratteri, messaggi, indirizzi o lettere dei morsetti. La guida Modbus chiama i conduttori D0 e D1, mentre i produttori usano A/B in ordini opposti, D+/D−, 485+/485− o TX+/TX−. Seguite la definizione del segnale nel manuale, non la lettera stampata. Nella guida Modbus, D1 è più positivo a bus inattivo; su un bus inattivo e polarizzato, un multimetro sulla coppia aiuta quindi a identificarlo. Una coppia invertita è tra le prime cause di mancata risposta. La guida al cablaggio RS-485 tratta cavo, polarità, conduttore comune, terminazioni da 120 Ω alle due estremità della dorsale e polarizzazione dello stato inattivo, e la verifica di terminazione e polarizzazione RS-485 mostra dove vanno le resistenze su un bus specifico.
Che cosa definisce Modbus: il protocollo
Il protocollo applicativo Modbus definisce i codici funzione, per esempio 03 per leggere i registri holding e 04 per leggere i registri input, il modello di coil e registri e le risposte di eccezione. Usa diversi trasporti:
| Variante | Trasporto | Incapsulamento |
|---|---|---|
| Modbus RTU | Linea seriale, di solito RS-485 | Binario, con CRC a 16 bit |
| Modbus ASCII | Linea seriale | Caratteri esadecimali, con LRC |
| Modbus TCP | TCP/IP su Ethernet, porta 502 | Intestazione MBAP di 7 byte, senza CRC |
La guida Modbus seriale aggiunge le regole RTU. Un solo master invia tutte le richieste. Gli indirizzi dei dispositivi vanno da 1 a 247; l'indirizzo 0 è una scrittura broadcast a cui nessuno risponde. Ogni carattere occupa 11 bit: un bit di start, 8 bit di dati, un bit di parità e un bit di stop. La parità pari è il valore predefinito richiesto. Senza parità, la guida richiede 2 bit di stop per mantenere gli 11 bit. Tutti i dispositivi del bus devono condividere baud rate, parità e bit di stop. Una parità errata di solito causa assenza di risposta o errori CRC intermittenti, non valori sbagliati.
RTU non ha un carattere di inizio o fine trama. Una trama termina dopo 3,5 tempi di carattere di silenzio; una pausa interna oltre 1,5 tempi di carattere la fa scartare. A 9.600 baud un carattere dura 1,15 ms, quindi l'intervallo di silenzio è circa 4,0 ms. Oltre 19.200 baud la guida raccomanda invece tempi fissi di 1,75 ms e 750 µs. Il calcolatore dei tempi Modbus RTU li determina per le impostazioni scelte; la guida Modbus TCP e RTU confronta le varianti seriale e di rete.
RS-232 e RS-485 a confronto
RS-232 è l'interfaccia seriale delle vecchie porte COM dei PC e di alcune porte di configurazione dei contatori. Ecco il confronto con RS-422 e RS-485:
| RS-232 | RS-422 | RS-485 | |
|---|---|---|---|
| Segnale | Sbilanciato, riferito a massa | Differenziale | Differenziale |
| Dispositivi | Un trasmettitore, un ricevitore | Un trasmettitore, fino a 10 ricevitori | Fino a 32 unità di carico, ciascuna in grado di trasmettere |
| Lunghezza del cavo (indicazioni TI) | Circa 20 m, per il limite di 2.500 pF di capacità | Fino a 1.200 m a bassa velocità | Fino a 1.200 m a bassa velocità |
| Uso tipico | Portatile collegato a un solo dispositivo | Collegamenti unidirezionali a distanza | Bus multidrop di contatori e controllori |
Un ricevitore RS-232 commuta a ±3 V rispetto alla propria massa: differenze di massa tra quadri e rumore indotto sull'unico filo di segnale si sommano direttamente. RS-485 misura invece la differenza fra due fili, che lo stesso disturbo sposta insieme. Usate RS-485 per collegamenti con più dispositivi, cavi oltre circa 15–20 m o cavi vicini a quelli di potenza. Una porta RS-232 su un contatore serve di norma alla configurazione al banco, non a una rete permanente. La guida Modbus su linea seriale ammette Modbus RTU su RS-232 per un collegamento di questo tipo tra due dispositivi, con le stesse trame e impostazioni seriali di RS-485.
Un convertitore RS-232/RS-485 cambia solo il segnale elettrico: protocollo e impostazioni seriali devono comunque corrispondere. Deve inoltre disattivare il proprio driver RS-485 in tempo per la risposta. La commutazione automatica è più semplice da configurare del comando RTS software, che può liberare il bus troppo presto o troppo tardi.
Altri protocolli su RS-485
RS-485 trasporta anche protocolli diversi da Modbus RTU. Modbus RTU è comune nei sottocontatori, analizzatori di potenza e controllori di impianto. Negli edifici e nel monitoraggio energetico si incontrano anche:
| Protocollo | Dove si trova |
|---|---|
| BACnet MS/TP | Controllori HVAC; consultate la guida BACnet/IP e MS/TP |
| DLMS/COSEM | Alcuni contatori del distributore, anche se molti lo espongono su porta ottica (IEC 62056-21) |
| Protocolli proprietari | Azionamenti, inverter e contatori meno recenti |
M-Bus viene talvolta confuso con questi protocolli. È un bus separato a due fili, con un proprio livello fisico (EN 13757-2), e raggiunge una porta RS-485 o RS-232 solo tramite un convertitore di livello. La guida BACnet e Modbus confronta i protocolli per gli edifici.
Un bus, un master
Su un bus Modbus RTU c'è un solo master, che invia tutte le richieste; i dispositivi rispondono soltanto quando vengono interrogati. Se un BMS interroga già i contatori, non potete aggiungere un secondo master alla stessa coppia. Le trasmissioni si sovrappongono e i due sistemi vedono timeout ed errori CRC intermittenti, secondo i rispettivi cicli di interrogazione. Scegliete una soluzione:
- leggere i dati dal master esistente, tramite la sua interfaccia di rete;
- usare un contatore con una seconda porta di comunicazione;
- sostituire il master con uno che serva entrambi i sistemi, per esempio attraverso un gateway Modbus TCP.
Un gateway TCP può accettare più client di rete, ma sul lato seriale invia comunque una richiesta alla volta. Ogni client allunga il ciclo di interrogazione del bus. La guida ai gateway di protocollo distingue un bridge da un gateway che traduce i dati; la guida alla messa in servizio calcola i tempi per dieci contatori.
Che cosa chiedere prima di collegare il dispositivo
Raccogliete per ogni dispositivo questi dati prima del lavoro in sito:
- interfaccia fisica, collegamento a due o quattro fili e nomi dei morsetti con le definizioni dei segnali;
- protocollo, baud rate, parità, bit di stop e indirizzo;
- unità di carico del ricetrasmettitore, presenza di terminazione o polarizzazione e possibilità di inserirle o disinserirle;
- mappa dei registri per modello e firmware esatti;
- sistema che oggi agisce da master, se il dispositivo è già collegato.
La guida alle mappe dei registri Modbus tratta il livello applicativo. Per un contatore Modbus RTU lontano dal Gateway, un'interfaccia Modbus ZMB lo legge su un breve bus locale e invia i registri attraverso la rete Zigbee al Gateway che esegue Edge.
Domande frequenti
Modbus e RS485 sono la stessa cosa?
No. RS-485 è lo strato fisico: lo standard elettrico del segnale su una coppia intrecciata. Modbus è il protocollo delle richieste, degli indirizzi dei dispositivi e dei registri. Modbus RTU usa spesso RS-485, ma Modbus TCP non ne ha bisogno e RS-485 trasporta anche BACnet MS/TP, DLMS/COSEM e protocolli proprietari.
Qual è la differenza tra Modbus RTU e RS485?
Descrivono lo stesso collegamento su due livelli. Modbus RTU è il protocollo con la sua trama: messaggi binari con l’indirizzo del dispositivo, un codice funzione e un CRC a 16 bit. RS-485 è la coppia di fili con le tensioni che trasportano quei messaggi. Una scheda tecnica che indica «Modbus RS485» intende Modbus RTU su una porta RS-485. Modbus RTU può funzionare anche su RS-232.
Qual è la differenza tra RS-232 e RS-485?
RS-232 usa un filo di segnale per direzione, riferito a massa, e collega due dispositivi. Il limite capacitivo di 2.500 pF corrisponde a circa 20 m di cavo. RS-485 usa una coppia differenziale, collega fino a 32 unità di carico e raggiunge circa 1.200 m alle velocità dei contatori. Il ricevitore distingue 200 mV tra i fili anche con uno scostamento verso massa da −7 V a +12 V.
Modbus può funzionare su RS-232?
Sì. La guida Modbus su linea seriale ammette RS-232 come opzione per un collegamento tra due dispositivi, spesso una porta di configurazione. Trame, formato dei caratteri e regola del master unico sono gli stessi di RS-485. Il limite di carico di 2.500 pF di RS-232 limita il cavo a circa 20 m: per più dispositivi o tratte più lunghe usate RS-485.
Posso collegare un dispositivo RS-232 a un bus RS-485?
Solo con un convertitore: i segnali elettrici sono diversi. Il convertitore deve anche commutare il driver RS-485 tra trasmissione e ricezione. Quelli a commutazione automatica sono più facili da configurare di quelli controllati dalla linea RTS, che può liberare il bus troppo presto o troppo tardi.
Che cos’è Modbus RTU su RS-485?
Sono messaggi binari Modbus RTU con CRC a 16 bit, inviati come caratteri seriali di 11 bit su una coppia RS-485. Un solo master interroga a turno i dispositivi con indirizzi da 1 a 247. L’indirizzo 0 è un broadcast a cui nessuno risponde.
Quale tensione usa RS-485?
RS-485 non ha una tensione di segnale fissa come 5 V o 12 V, perché il ricevitore legge la differenza tra i due fili. Un trasmettitore deve applicare almeno 1,5 V sul carico di 54 Ω di un bus terminato, un ricevitore deve interpretare correttamente una differenza di 200 mV e ciascun filo può trovarsi tra −7 V e +12 V rispetto alla massa del ricevitore. Modbus non definisce alcuna tensione.