INTELLIGENT DISTRIBUTION
70
I PROTOCOLLI DI COMUNICAZIONE DI INTELLIGENT DISTRIBUTION Il protocollo di comunicazione Modbus TCP/IP
Sviluppato nel 1999, Modbus/TCP è stato uno dei primi protocolli industriali ad utilizzare Ethernet e TCP/IP. Come il nome indica, si tratta di un adattamento del protocollo Modbus tradizionale (su porta se- riale) alle reti che utilizzano TCP/IP. I suoi vantaggi principali sono: • la semplicità, che lo rende facilmente implemen- tabile sia in nuovi dispositivi che per adattamenti di dispositivi esistenti; • la somiglianza con il protocollo Modbus tradizio- nale, già conosciuto da moltissimi programma- tori e sviluppatori di sistemi di controllo e super- visione; • l’esistenza di dispositivi per interconnettere, at- traverso reti Ethernet, dispositivi che utilizzano il Modbus tradizionale su porta seriale; come si vedrà nel seguito, tali dispositivi lavorano con- vertendo i singoli telegrammi. Il concetto è piuttosto semplice: all’architettura masterslave (vedi paragrafo 4.7.1) si sostituisce un’architettura client-server. Il sensore o attuatore funge da server; un dispositivo che mette a dispo- sizione di altri dispositivi (i client), che ne facciano richiesta, i dati da leggere o spazi di memoria in cui scrivere. Questa rappresentazione è la stessa del protocollo Modbus tradizionale, in cui i dati sono registri che possono essere letti o scritti. Il client è il dispositivo che vuole leggere o scrivere i dati; per farlo invia un telegramma di richiesta (re- quest), a cui il server risponde con un telegramma di risposta (response). La struttura del telegramma è la stessa del Modbus tradizionale, sia nella lun- ghezza che nella codifica: • la richiesta di lettura è formata da un comando (indicato nel Function Code) che dice il tipo di azione da compiere (es: lettura dei dati) seguito dall’indirizzo del o dei registri da leggere (queste informazioni sono contenute nel campo Data del telegramma); • la richiesta di scrittura comprende: comando (in- dicato nel Function Code), indirizzo e dati da scri- vere (contenuti nel campo Data); • i telegrammi di risposta, per indicare che il co- mando è andato a buon fine, ripetono il comando
(eventualmente seguito dai dati richiesti); se in- vece il comando non può essere eseguito conten- gono un codice di errore (exception response). Il formato dei dati è lo stesso del Modbus tradizio- nale, e anche i codici (Function Code) usati per in- dicare le funzioni di lettura e/o scrittura e gli errori (exception response code) sono gli stessi; questo permette a chi sviluppa sistemi di riutilizzare gran parte del codice già scritto per implementare il modbus tradizionale. Ciò permette, inoltre, di con- vertire i singoli telegrammi senza necessità di me- morizzare dati aggiuntivi e senza perdere nessuna informazione.
Slave Address
Function Code
Data
CRC
• Slave Address: questo campo contiene l’indirizzo (Modbus) del dispositivo slave collegato alla linea seriale Modbus tradizionale; • Function Code: questo campo contiene il codice usato per indicare le azioni da compiere (es: fun- zioni di lettura dei registri e/o scrittura nei regi- stri degli slaves); • Data: questo campo può contenere informazioni aggiuntive utili per lo svolgimento delle azioni definite nel Function Code; ad esempio quando un master invia una richiesta di lettura dati ad uno slave, il campo Data del telegramma conterrà l’indirizzo del registro da cui iniziare a leggere i dati e quanti registri (dati) devono essere letti; se non si verificano errori, il telegramma di risposta dello slave conterrà, nel campo Data, i dati richie- sti dal master; • CRC: campo utilizzato per il controllo e la ge- stione degli errori di comunicazione.
NOTA: Per approfondimenti vedere il documento: “MODBUS Protocol Specification”, disponibile su http://www.modbus.org/specs.php
Powered by FlippingBook