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 FlippingBook