Articles

MODBUS RTU

Un’introduzione all’indirizzamento Modbus RTU, ai codici funzione e alla panoramica della rete Modbus RTU

Modbus RTU è un protocollo seriale aperto derivato dall’architettura Master/Slave originariamente sviluppato da Modicon (ora Schneider Electric). È un protocollo di livello seriale ampiamente accettato grazie alla sua facilità d’uso e affidabilità. Modbus RTU è ampiamente utilizzato nei sistemi di gestione degli edifici (BMS) e nei sistemi di automazione industriale (IAS).

I messaggi Modbus RTU sono una semplice struttura a 16 bit con un CRC (Cyclic-Redundant Checksum). La semplicità di questi messaggi è per garantire l’affidabilità. Grazie a questa semplicità, la struttura di base del registro Modbus RTU a 16 bit può essere usata per impacchettare dati in virgola mobile, tabelle, testo ASCII, code e altri dati non correlati.

Questo protocollo usa principalmente un’interfaccia seriale RS-232 o RS-485 per le comunicazioni ed è supportato da quasi tutti i programmi software commerciali SCADA, HMI, OPC Server e di acquisizione dati sul mercato. Questo rende molto facile integrare attrezzature compatibili con Modbus in applicazioni di monitoraggio e controllo nuove o esistenti.

Un po’ di storia del Modbus RTU

Si potrebbe chiamare il protocollo Modbus il nonno del networking industriale. È davvero vecchio come le colline e ha i baffi per dimostrarlo. Nell’era odierna della connettività Internet e dei Web Services, il messaggio non connesso di Modbus e la semplice struttura di comunicazione richiesta-risposta sono quasi pittoreschi. Quasi quanto il primo controllore logico programmabile, il Modicon 084, che a quei tempi si chiamava PC per controllore programmabile.

Modbus RTU è uno standard aperto, il che significa che i produttori possono incorporarlo nelle loro apparecchiature senza dover pagare royalties. È il protocollo di comunicazione più pervasivo nell’automazione industriale ed è ora il mezzo più comunemente disponibile per collegare dispositivi elettronici industriali.

Modbus è usato ampiamente da molti produttori in molti settori. Modbus è tipicamente usato per trasmettere dati dalla strumentazione di controllo a un controllore logico o a un sistema di archiviazione dati. Nell’automazione degli edifici, per esempio, la temperatura e l’umidità sono spesso comunicate a un computer per l’archiviazione a lungo termine. Modbus è spesso usato per collegare un computer di supervisione con un’unità terminale remota (RTU) nei sistemi di controllo e acquisizione dati (SCADA).

Perché Modbus è così popolare?

La semplicità è la ragione per cui Modbus è così diffuso. Non guasta nemmeno il fatto che Modbus sia stato creato da uno dei più grandi produttori di PLC dell’epoca, rendendolo aperto e ampiamente disponibile. Modbus richiede anche molto poco spazio nel codice del processore o nella RAM. Mentre questo non è così importante oggi, visti i potenti processori e la tecnologia a nostra disposizione, era molto importante nei primi anni dell’automazione industriale quando i processori usavano la tecnologia a 8 bit e risorse come RAM e ROM erano estremamente costose e scarse.

Il controllo dei messaggi è un altro motivo per cui Modbus è stato così popolare. Il controllo CRC e LRC significa che gli errori di trasmissione sono controllati con una precisione del 99%.

Comunicazione Modbus

Il protocollo Modbus RTU usa una tecnica Master/Slave per comunicare tra i dispositivi. Ciò significa che qualsiasi applicazione che utilizza il protocollo Modbus RTU avrà un Master Modbus e almeno uno Slave Modbus. Un Master Modbus è tipicamente un computer di supervisione host che esegue un software che comunicherà con uno o più dispositivi Modbus Slave.

modbusrtu_diagram

Modbus permette la comunicazione Master/Slave tra dispositivi collegati tramite bus o reti. Sul modello OSI, Modbus è posizionato al livello 7. Modbus è inteso come un protocollo di richiesta/risposta e fornisce servizi specificati da codici funzione. I codici funzione di Modbus sono elementi delle PDU (Protocol Data Unit) di richiesta/risposta di Modbus.

Per costruire l’unità di dati dell’applicazione Modbus, il client deve avviare una transazione Modbus. È la funzione che informa il server su quale tipo di azione eseguire. Il formato di una richiesta iniziata da un Master è stabilito dal protocollo applicativo Modbus. Il campo del codice funzione è quindi codificato in un byte. Solo i codici all’interno della gamma da 1 a 255 sono considerati validi, con 128-255 riservati alle risposte di eccezione. Quando il Master invia un messaggio allo Slave, è il campo del codice funzione che informa il server sul tipo di azione da eseguire.

Ti piace quello che stai leggendo?

Iscriviti alla nostra serie di email Automation Education per imparare i pro e i contro dei principali protocolli industriali in un formato settimanale in formato byte!

Per definire azioni multiple, alcune funzioni avranno codici di sotto-funzioni aggiunti ad esse. Per esempio, il Master può leggere gli stati ON/OFF di un gruppo di uscite o ingressi discreti. Può anche leggere/scrivere il contenuto dei dati di un gruppo di registri MODBUS. Quando il Master riceve la risposta dello Slave, il campo del codice funzione viene usato dallo Slave per indicare una risposta senza errori o una risposta di eccezione. Lo Slave fa eco alla richiesta del codice funzione iniziale nel caso di una risposta normale.

Rappresentazione dei dati Modbus RTU

Come tutto il resto del Modbus, la rappresentazione dei dati è semplice. In effetti, i dati sono rappresentati più semplicemente in Modbus che in qualsiasi altro protocollo industriale che troverete. Il bit di minore importanza viene inviato e ricevuto per primo. Tutti i dispositivi all’interno della rete devono interpretare analogamente ogni byte trasmesso in questo modo.

Non ci sono metodi per il riconoscimento automatico del baud rate. Lo stesso baud rate deve essere utilizzato dagli Slave e dai Master collegati al bus. Nessun baud rate specifico è specificato dal Modbus: i baud rate tipici sono 9600 o 19200.

Un Byte trasmesso è codificato come: 8 Bit valore binario, esadecimale 0 - 9 e A - F. Il Bit meno significativo viene inviato e ricevuto per primo
Un Byte trasmesso è codificato come 8 Bit valore binario, esadecimale 0 – 9 e A – F. Il Bit meno significativo viene inviato e ricevuto per primo.

Ci sono solo due tipi di dati in Modbus: bobine e registri. Le bobine sono semplicemente dei bit singoli. I bit possono essere ON (1) o possono essere OFF (0). Alcune bobine rappresentano ingressi, cioè contengono lo stato di qualche ingresso fisico discreto. Oppure rappresentano uscite, nel senso che contengono lo stato di qualche segnale fisico discreto in uscita. I registri sono semplicemente dati di registro senza segno a 16 bit. I registri possono avere un valore da 0 a 65535 (da 0 a FFFF esadecimale). Non c’è rappresentazione per valori negativi, nessuna rappresentazione per valori maggiori di 65535, e nessuna rappresentazione per dati reali come 200.125.

I registri sono raggruppati in Input Registers e Holding Registers. Come gli Input Coils, gli Input Registers riportano lo stato di qualche input esterno come un valore tra 0 e 65535. L’intento originale di un registro d’ingresso era di riflettere il valore di qualche ingresso analogico. È una rappresentazione digitale di un segnale analogico come una tensione o una corrente. La maggior parte dei dispositivi Modbus oggi non sono dispositivi I/O, e gli Input Registers funzionano semplicemente in modo identico agli Holding Registers.

Gli Holding Registers sono stati originariamente progettati come memoria temporanea di programma per dispositivi come i controller Modbus. Oggi, gli Holding Registers funzionano come memoria di dati per i dispositivi.

I pacchetti Modbus RTU sono destinati solo a inviare dati; non hanno la capacità di inviare parametri come il nome del punto, la risoluzione, le unità, ecc. Se la capacità di inviare tali parametri è necessaria, si dovrebbe studiare un BACnet, EtherNet/IP, o altri protocolli moderni.

Requisiti dell’indirizzo Modbus RTU e identificazione della stazione

Gli indirizzi standard dei nodi Modbus RTU sono 1-255, con lo 0 riservato ai messaggi broadcast e alla sola scrittura. Tuttavia, l’indirizzo 0 è usato raramente poiché non c’è alcuna conferma che il messaggio sia stato correttamente ricevuto dal nodo slave. Questo non ha molto effetto se il vostro livello fisico è RS-232, dato che solo un nodo può essere implementato comunque. RS-485 limita il numero di nodi a 32, anche se alcuni driver vi permetteranno di estendere il numero.

I dispositivi seriali Modbus Slave sono identificati da un numero di stazione che precede la struttura generale del messaggio. Generalmente, sono supportate fino a 32 stazioni, poiché questo è il limite imposto dalla maggior parte dei driver seriali RS485. Non c’è un limite software al numero di stazioni che possono essere supportate. Gli indirizzi Slave validi sono assegnati nell’intervallo da 1 a 255 con il numero di stazione 0 riservato ai messaggi broadcast, messaggi processati da tutti gli Slave.

Transport Layers

Ci sono diversi trasporti standard utilizzati per spostare i messaggi del protocollo Modbus: RS232 e RS485. Potete usarne altri, ma questi sono quelli comuni.

RS485 è un successore di RS232. Funziona in modo simile per quanto riguarda i bit di sincronizzazione che sincronizzano il trasferimento di bit da una stazione di invio a una stazione di ricezione. Ci sono, tuttavia, due caratteristiche determinanti che rendono la RS485 diversa dalla RS232. La prima è la capacità di pilotare destinazioni multiple. I trasmettitori RS485 possono segnalare elettricamente fino a 32 dispositivi di destinazione. Questo rende la RS485 il modo preferito per trasportare serialmente i messaggi Modbus.

L’altra caratteristica distintiva della RS485 è la maggiore immunità al rumore. La RS485 non usa il comune elettrico come riferimento per il suo segnale elettrico. Invece, la RS485 usa una coppia di fili e pilota un segnale impostando un potenziale di tensione attraverso la coppia. Così facendo, qualsiasi rumore elettrico ambientale colpisce entrambi i fili allo stesso modo e il potenziale attraverso i due fili non viene cambiato.

Codifica dei dati Modbus RTU

Un meccanismo di codifica descrive come i modelli di bit sono formati dai valori di controllo e dati che sono codificati nel pacchetto. Sia il mittente che il ricevitore devono usare la stessa codifica per capire correttamente il contenuto dei dati. Ci sono due meccanismi per codificare i messaggi Modbus: ASCII e RTU.

La codifica RTU è il meccanismo di codifica molto più comune usato su Modbus. RTU significa semplicemente che i valori sono codificati come binario big-endian standard. Ciò significa che nel caso di valori a 16 bit, il byte più significativo (MSB) è codificato prima del byte meno significativo (LSB). Un valore di 8 bit come il decimale 41 (29 hex) è codificato semplicemente come 0010 1001. Mentre un valore di 16 bit come il decimale 300 (12C hex) è codificato come 0000 0001 0010 1100. L’MSB di 01 è codificato e trasmesso prima dell’LSB di 2C.

Modbus RTU Memory Map

Modbus RTU
Data Tipo
Nome comune Indirizzo di partenza
Modbus Coils Bit, valori binari, flags 00001
Ingressi digitali Ingressi binari 10001
Ingressi analogici Ingressi binari 30001
Registri Modbus Valori analogici, variabili 40001

La differenza tra Modbus RTU e Modbus TCP

La differenza più fondamentale tra Modbus RTU e Modbus TCP (noto anche come Modbus IP, Modbus EtherNet, e Modbus TCP/IP) è che Modbus TCP funziona su un livello fisico Ethernet e Modbus RTU è un protocollo di livello seriale. Modbus TCP usa anche un’intestazione di 6 byte per permettere il routing.

Un Modbus RTU Master è un singolo bus Master. Invia un messaggio a un dispositivo slave RTU e riceve una risposta. Modbus RTU è limitato a un singolo master. Solo una serie di segnali può essere sul collegamento RS485 in qualsiasi momento. O il singolo master RTU sta trasmettendo o uno dei dispositivi client RTU sta trasmettendo.

Con l’introduzione del Modbus TCP, tutto è stato semplificato e più facile. Con Modbus TCP, i controllori possono utilizzare in modo molto più efficiente la larghezza di banda su Ethernet per essere il Master di centinaia di dispositivi Modbus TCP. Modbus TCP permette di avere più clienti. Dove RS485 aveva una limitazione elettrica di 32 dispositivi, Ethernet è illimitata. La RAM operativa è l’unica limitazione pratica. Con Modbus TCP, c’è la possibilità per un progettista di rete di utilizzare più client/master se lo desidera.

Con Modbus TCP (Ethernet), è necessario coinvolgere uno switch costoso. Con Modbus RTU (seriale), si può semplicemente concatenare tutti i dispositivi insieme. I dispositivi con vecchi processori a 8 bit e un po’ di memoria possono facilmente fare Modbus seriale, ma avrete bisogno di una piattaforma più costosa per fare Ethernet.

Lo sapevate?

Il fondatore di Real Time Automation, John S. Rinaldi, ha scritto un intero libro su Modbus? Dai un’occhiata a The Everyman’s Guide to Modbus, disponibile ora su Amazon!

Per maggiori informazioni sui nostri prodotti e servizi Modbus RTU chiama il 1-800-249-1612 o mandaci un’email a [email protected].

Stai cercando di aggiungere Modbus RTU al tuo progetto?

Vedi Modbus RTU Solutions

Vuoi questa pagina in formato PDF? Clicca qui!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *