RS-485 è uno standard elettrico: definisce le tensioni su una coppia intrecciata e quante apparecchiature possono condividerla. Modbus è un protocollo: definisce richieste e risposte trasmesse su un collegamento. Modbus RTU usa spesso RS-485, perciò i due nomi compaiono insieme. Tuttavia, una porta RS-485 può usare un altro protocollo e Modbus TCP funziona su Ethernet, senza RS-485.
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.
Che cosa definisce RS-485
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 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 polarità, conduttore comune, terminazioni da 120 Ω alle due estremità della dorsale e polarizzazione dello stato inattivo.
Che cosa definisce Modbus
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.
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
RS-485 e Modbus sono la stessa cosa?
No. RS-485 è lo standard elettrico del segnale su una coppia intrecciata. Modbus è il protocollo delle richieste e risposte. 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 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.
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.