Utilità per test o risoluzione per dispositivi e reti Modbus
Modbus è un protocollo di comunicazione comune usato in sistemi di automazione, case intelligenti, reti automatizzate per piccoli ambienti (magazzini, serre, ecc). Il protocollo serve a connettere attrezzature di vari tipi anche ad un computer casalingo. Lo sviluppo di tali progetti come Arduino e Raspberry Pi ha accresciuto l’interesse, in maniera significativa, verso i compiti correlati alla robotica ed all’automazione. Tutto questo assicura la crescita della popolarità di Modbus tra gli utenti amatoriali e professionali.
In questo articolo, copriremo i fattori chiave delle soluzioni software ed hardware per il collaudo e la correzione dei dispositivi e reti basati sul protocollo Modbus.
Se senti una familiarità con l’architettura del protocollo, puoi saltare direttamente alla descrizione del programma Modbus. Altrimenti, qui sotto troverai una breve introduzione a Modbus.
Elenco dei contenuti:
- Info sul protocollo Modbus
- Sviluppo e collaudo dei dispositivi Modbus
- Risoluzione dei sistemi di automazione basati sui dispositivi Modbus
- Sfide sulla comunicazione Modbus
Info sul protocollo Modbus
Modbus è un protocollo comune, usato nei sistemi di automazione per livelli di campo medi e bassi. Il livello medio è il livello dei controllers - dispositivi che raccolgono dati e controllano il processo tecnologico. Il livello di campo è il livello di interazione tra i sensori e controllers con il server.
La struttura tipica di un sistema di automazione che usa Modbus come suo protocollo base è qui sotto mostrata.
L’ambiente standard per il protocollo Modbus è RS485/422/232. Modbus RTU o Modbus ASCII ci lavora sopra. Nelle reti TCP/IP, comunque, il livello più alto del protocollo è quello di trasporto TCP e questa variante viene chiamata TCP Modbus. In questo articolo, parleremo della modalità di trasmissione RTU di Modbus.
Il protocollo Modbus viene implementato usando una relazione master-slave. Il che significa che viene sempre iniziato da un dispositivo, il master, che invia una richiesta ad uno slave (server) per aspettarne poi una risposta. Esiste sempre un master sulla rete, con da 1 a 247 slaves.
Il master interagisce con i dispositivi slave nel formato di richiesta-risposta. La richiesta contiene una sequenza di bytes, chiamata un frame (fotogramma), nel quale il tempo tra i bytes viene standardizzato in base al tasso di trasferimento dei dati e non è più lungo dell’intervallo, durante il quale è possibile trasmettere 1,5 byte di dati. In modalità RTU, i messaggi iniziano con un intervallo silenzioso, di almeno 3,5 volte i caratteri.
Una richiesta di messaggio viene inviata nel seguente formato:
ID - indirizzo del dispositivo (1 byte),
FN - funzione Modbus (1 byte),
[args] - argomenti di funzione (N bytes, dipendenti dalla funzione),
CRC - un checksum CRC-16 (2 bytes).
Il formato di un messaggio di risposta:
Da come puoi vedere, i fotogrammi di richiesta e risposta hanno costruzioni simili, tranne per il campo di dati, il quale fornisce contenuti differenti, in base alla funzione eseguita.
Nel caso in cui la funzione richiesta non sia supportata dal dispositivo slave o nel caso in cui gli argomenti nel campo [args] della richiesta non siano corretti per questo server, nel campo FN della risposta il bit alto sarà impostato su 1 e il campo dati conterrà informazioni aggiuntive sull'errore verificato.
Inoltre, dispositivi slave particolari possono avere registri specifici con informazioni aggiuntive.
I tipi di registro, referenziati nei dispositivi Modbus, includono:
Campo | Accesso | Dimensione | Descrizione |
---|---|---|---|
Ingressi discreti | usati come ingressi | ||
Bobine d’uscita | usati per il controllo discreto | ||
Registri di ingresso | usati per l’ingresso | ||
Registri detentivi | usato per una varietà di cose inclusi gli ingressi ed uscite, dati per la configurazione, ecc. |
La completa descrizione del protocollo RTU di Modbus viene fornito nella sua specifica funzionale.
Quando si imposta una rete Modbus, un punto da considerare è che il protocollo abilita la trasmissione dei dati da più dispositivi, che vengono ricevuti da un singolo server o controller, avente un driver Modbus installato. Un’applicazione seriale può controllare la porta di comunicazione del server (es. COM1) dal momento che riceve i dati Modbus da molteplici sensori.
Sfortunatamente, esiste un limite sull’apertura della porta di ricezione a più applicazioni in contemporanea, la quale potrebbe porre una sfida significativa.
Esiste una soluzione al dilemma. Virtual COM Port Driver di Electronic Team consente la creazione delle porte virtuali RS485 e la suddivisione dei dati Modbus di modo che più porte possono ricevere i dati allo stesso momento.