Guida Intelligent Distribution

APPROFONDIMENTI

71

• Protocol identifier: 2 bytes per identificare il pro- tocollo (il protocollo Modbus è identificato dal valore 0); • Length: questo campo (di 2 bytes) identifica (conta) la lunghezza (in bytes) dei campi successi presenti nel messaggio; • Unit Identifier (che chiameremo in seguito “Indi- rizzo addizionale”): questo campo (da 1 byte) consente di estendere la mappa Modbus permet- tendo a un unico server di rispondere come se fosse costituito da diversi dispositivi (unità vir- tuali). Quando il server è un gateway che collega una linea seriale Modbus a una rete Ethernet TCP- IP, questo campo viene utilizzato per identificare ciascuno degli slave remoti connessi (vedi Figura sotto). Per approfondimenti vedere il documento “MO- DBUS Messaging Implementation Guide V1.0b”, di- sponibile su http://www.modbus.org/specs.php.

Partendo da un telegramma Modbus tradizionale (es: Modbus RTU), si arriva ad un telegramma Modbus/TCP nel seguente modo: 1) togliendo i campi Slave Address e CRC dal telegramma Modbus tradizionale; 2) aggiungendo l’intestazione, MBAP Header (Modbus Application Header), all’inizio del messaggio. Come sarà spiegato in seguito, il campo Slave Ad- dress viene inserito nel campo UnitID del tele- gramma Modbus/TCP quando il server è un ga- teway per la conversione dal protocollo Modbus/ TCP al protocollo ModbusRTU. L’MBAP Header contiene i seguenti campi: • Transaction identifier: 2 bytes, settati dal Client nella request e replicati dal Server nella response, utilizzati per identificare in maniera univoca una transazione (una specifica request inviata dal Client al Server);

Telegramma Modbus tradizionale (RTU)

Slave address

Function code

Data

CRC

MBAP Header

Transaction ID

Protocol ID

Unit ID

Function code

Lenght

Data

Telegramma Modbus/TCP

Client Modbus TCP/IP

Client Modbus TCP/IP

Server Modbus TCP/IP

Server Modbus TCP/IP

Slave remoto 1

Slave remoto 2

Server Modbus TCP/IP (Gateway)

Linea seriale Modbus

Powered by