Transcription of automazioneoggi tutorial Il protocollo Modbus
1 180 NOVEMBRE2006 AUTOMAZIONEOGGI296 AOautomazioneoggitutorialModbus un protocollo di comunicazio-ne di alto livello basato sullo scambiodi messaggi tra dispositivi in modalit master-slave e client-server, caratteriz-zato dalle specifiche aperte e daun implementazione particolarmente sviluppato da Modicon (gruppo Schneider)per il trasferimento di dati di controllo tramite interfacceseriali RS-232, il protocollo ha conosciuto una seconda pri-mavera con l introduzione di una variante con incapsula-mento TCP-IP e la cessione delle specifiche da parte diSchneider a un organizzazione no-profit ( Modbus -IDA, ). Modbus trova applicazione nel control-lo e nella configurazione delle apparecchiature pi dispara-te, e in particolare in ambito industriale per le comunica-zioni di sensori e attuatori con controllori, interfacce uomo-macchina (HMI) e PC di varianti principaliModbus presente nel panorama industriale in numeroseforme che si possono tuttavia ricondurre a tre varianti fon-damentali.
2 La pi antica (che pu essere identificata conModbus/Ascii e Modbus /RTU) permette di stabilire comu-nicazioni seriali asincrone su interfacce RS-232 e RS-485,ed stata adattata anche a mezzi di trasmissioni diversi dalrame, come la fibra ottica e i collegamenti radio. La secon-da variante, che sta conoscendo un momento di particolarefulgore, si appoggia a uno stack TCP-IP per consentire laUn protocollo di comunicazione di facileimplementazione e adatto a essere integratonelle reti Ethernet MASSIMOGIUSSANIIl protocolloModbustutorialConfronto tra Modbus /Ascii and Modbus /RTUM odbus/AsciiModbus/RTUC aratteri usatiSimboli Ascii delle cifre esadecimaliValori binari compresi tra 0 e 2550, 1, 2.
3 E, FInizio frameCarattere : Silenzio di 3,5 voltela durata di un byteFine frameSequenza CR/LFSilenzio di 3,5 voltela durata di un byteBit iniziale11 Bit dati78 Pausa nel messaggio1 sec1,5 volte la durata di un byteControllo di ridondanzaLRC CRCL ongitudinal Redundancy CheckCyclic Redundancy CheckTab. 1 - Differenze essenziali tra le modalit Ascii e RTU181 NOVEMBRE2006 AUTOMAZIONEOGGI296comunicazione su reti Ethernet. E nota con i nomi diModbus/TCP, Modbus /IP e Modbus /Ethernet. Esiste infineuna terza versione estesa e mirata alle reti ad alte presta-zioni basate sul passaggio di token: si tratta di una varianteproprietaria denominata Modbus Plus (spesso indicata conMB+). Sebbene Modbus sia ancora un marchio registratodi propriet di Schneider Automation, non ci sono licenzeaggiuntive da pagare per il solo impiego dei protocolliModbus e Modbus TCP/IP.
4 La versione estesa ModbusPlus conserva ancora il carattere di protocollo comunicazione serialeNella sua forma originale, Modbus consente il funziona-mento in modalit half-duplex e full-duplex su reti serialiRS-485 e RS-232, con i bit dati rappresentati da tensionipositive e negative sui terminali Rx e Tx della porta seria-le. L interazione tra i dispositivi di tipo master-slave esono previsti due tipi di trasmissione: Ascii e RTU. Nellamodalit Ascii i singoli byte da otto bit che costituiscono ilmessaggio sono trasmessi sotto forma di due caratteri Asciiche rappresentano la codifica esadecimale del valore;durante il funzionamento in modalit RTU (RemoteTerminal Unit) viene inviata la rappresentazione binariadiretta del valore.
5 E evidente che la modalit RTU, a pari-t di velocit di trasmissione, permette di trasmettere unamaggior quantit di informazioni. Un punto a favore dellamodalit Ascii sta nel fatto che sono ammesse pause fino aun secondo tra un carattere e l altro senza che questo pro-vochi un errore di comunicazione. La scelta del tipo dicodifica dati da utilizzare viene solitamente effettuata dal-l utilizzatore nella fase di configurazione dei nodi dellarete, insieme all impostazione dei parametri di comunica-zione della porta seriale. La tabella 1 mostra le principalidifferenze tra i due dialetti. Uno dei principali problemi diModbus che quando ci sono decine o centinaia di nodiconnessi in multidrop a una stessa rete il polling dei dispo-sitivi nella modalit di comunicazione del tipo master-slavepu comportare un considerevole rallentamento unit dati PDU e ADUUna tipica comunicazione via Modbus consiste essenzial-mente di tre stadi.
6 La formulazione di una richiesta da partedi un dispositivo a un altro, l esecuzione delle azioni neces-sarie a soddisfare la richiesta, e la restituzione al dispositi-vo iniziale delle informazioni risultanti, siano esse l effetti-vo risultato dell elaborazione o un codice di errore deri-vante dall impossibilit di portare a termine il compito. Leinformazioni vengono scambiate sotto forma di unit datiindipendenti dai livelli sottostanti nella pila fondamentale nello scambio dati in Modbus laProtocol Data Unit (PDU) costituita da un campo che con-tiene il codice funzione (codificato con un solo byte) e uncampo dati di lunghezza variabile, eventualmente nulla,che contiene il corpo del messaggio.
7 L integrazione all in-terno di altre reti pu richiedere dei campi aggiuntivi chesono raccolti nella Application Data Unit (ADU).Generalmente presente un campo indirizzi che permettedi identificare il dispositivo che ha effettuato la richiesta, eun campo con i codici per la correzione degli errori. Lafigura 1 illustra il tipico frame Modbus nelle sue duevarianti. Il protocollo prevede tre diversi tipi di PDU:richiesta (mb_req_pdu), risposta (mb_rsp_pdu) e rispostacon eccezione (mb_excep_rsp_pdu). Un dispositivo clientinoltra al server la propria richiesta di eseguire una deter-minata azione, sostanziandola con informazioni aggiuntivenel campo dati (un esempio potrebbe essere la richiesta dileggere la temperatura di un particolare sensore connessoalla sottorete gestita dal dispositivo server).
8 Il dispositivoserver, ricevuta la richiesta e verificata la validit del codi-ce funzione, esegue l operazione richiesta. Se l operazioneha esito positivo, viene generato un frame contenente leinformazioni risultanti (il valore di temperatura opportuna-mente codificato e memorizzato in un registro, ad esempio)e il relativo codice funzione che viene poi immesso sul bus;se la verifica dei dati o l operazione non sono state portatea termine o hanno generato errori, nel campo del codicefunzione viene restituito un codice di errore (pari al codicefunzione della chiamata incrementato di 127), mentre nelcampo dati viene riportato il codice dell eccezione che hadeterminato l impossibilit a rispondere.
9 I campi indirizzo e funzioneQuando un dispositivo master richiede dei dati, invia comeprimo byte un codice che rappresenta l indirizzo della peri-ferica slave da interrogare. Ogni periferica dotata di unindirizzo univoco rappresentato da un numero compreso tra1 e 247 ed cos in grado di sapere se continuare a legge-tutorialFrame Modbus /AsciiInizioIndirizzoCodice funzioneCampo datiLRC checkFine1 carattere2 caratteri2 caratteriN caratteri2 caratteriCR+LFFrame Modbus /RTUI nizioIndirizzoCodice funzioneCampo datiLRC checkFineSilenzio di durata 1 byte1 byteN byte2 byteSilenzio di durata 3,5 byte3,5 byteFig. 1 - Formato dei frame Modbus nelle varianti Ascii e RTUAO automazioneoggitutorialre il messaggio o ignorarlo subito dopo aver letto il primobyte.
10 Molte varianti del protocollo consentono di utilizzaredue byte per l indirizzo di periferica, portando il numero dinodi a un meno restrittivo limite di La secondainformazione trasmessa il codice funzione, un valorecompreso tra 1 e 255, che specifica il tipo di azione chedeve essere (o stata) eseguita. I codici si possono riferirea funzioni gi incluse nello standard (funzioni pubbliche) oa estensioni programmate dall utente. Le funzioni pubbli-che sono state convalidate dalla comunit di sviluppatori eutilizzatori Modbus , sono documentate nella RFC Ietf rela-tiva allo standard Modbus e rappresentano una base condi-visa da tutti i dispositivi che si conformano ad esso. Alcuniproduttori possono decidere di implementare funzioni par-ticolari utilizzando uno dei codici riservati agli utenti, cosache pu essere fatta senza dover richiedere l approvazionedell ente di riferimento.