Modbus- Comunicazione seriale in ambienti Modbus
Integrazione di utenti seriali con il Com-Server W&T
Modbus è un protocollo di comunicazione per lo scambio di dati tra centraline, sistemi SCADA, datenlogger ecc., introdotto da Modicon verso la fine degli anni 1970. Fino ad oggi è stato uno standard ampiamente accettato nel settore industriale e gode di grande popolarità anche nel collegamento di componenti fotovoltaici ed eolici (inverter, datenlogger, memorie, contatori ecc.).
In Internet sono disponibili gratuitamente numerose descrizioni dettagliate e articoli su Modbus nonché la specifica stessa. Per questo motivo forniamo qui solo una breve panoramica delle principali caratteristiche, per illustrare le possibilità di impiego dei Com-Server in diversi ambienti. Trovate diverse possibilità di applicazione dei Com-Server in ambienti Modbus più in basso nella pagina.
Modbus in generale
Modbus è una rigorosa procedura Master/Slave. Ciò significa che i Modbus-Slave possono reagire esclusivamente a richieste loro inviate, le cosiddette request di un Modbus-Master. La comunicazione si basa sulla lettura o scrittura di registri da parte del Master.
Ogni request contiene:
| Lunghezza | Nome | Descrizione |
|---|---|---|
| 1 byte | address | Indirizzo dello slave |
| 1 byte | Codice di funzione | Tipo e ampiezza del registro e accesso di lettura o scrittura |
| 2 byte | Start Address | Indirizzo di avvio dell’accesso (High-Byte first) |
| 2 byte | Register Count | Numero dei registri da leggere/scrivere |
Uno slave interpellato può rispondere con una cosiddetta response.
Una response di successo contiene:
| Lunghezza | Nome | Descrizione |
|---|---|---|
| 1 byte | address | Indirizzo dello slave |
| 1 byte | Codice di funzione | Identico alla request |
| 1 byte | Length | Numero di seguenti byte con il contenuto dei registri richiesti |
Qui possono verificarsi due casi di errore:
- Lo slave comprende sintatticamente la request, ma non conosce i registri richiesti e risponde con una exception (Function Code Response = Function Code Request + 0x80)
- Lo slave non reagisce per niente.
Modbus/RTU
Modbus/RTU è lo standard tipico per la comunicazione Modbus su interfacce seriali (RS232/422/485). Qui viene allegata alle Request e Response Modbus una checksum su 2 bytes. La fine del datagramma viene riconosciuta da Master e Slave sulla base di una pausa di trasmissione di almeno 3,5 lunghezze di carattere.
Modbus/TCP
Modbus/TCP viene utilizzato per la comunicazione in reti TCP/IP. Qui viene fatto precedere un Modbus/TCP-Header alle request e response. Grazie ai checksum contenuti già nei protocolli di rete è possibile rinunciare ai checksum aggiuntivi del datagramma Modbus.
Modbus/TCP Header:
| Lunghezza | Nome | Descrizione |
|---|---|---|
| 2 byte | Transaction-ID | Numero progressivo |
| 2 byte | Protocol Identifier | al momento sempre 0 |
| 2 byte | Length | Numero di byte seguenti |
On the wire: Modbus/RTU vs. Modbus/TCP
Modbus/ASCII e Modbus/TCP Secure Protocol
Entrambi sono ulteriori versioni di protocollo Modbus che tuttavia godono nella prassi di poca diffusione. Né il Modbus/ASCII né il Modbus/TCP Secure Protocol sono supportati da apparecchi W&T.