Pacchetto richiesta
Indirizzo controllore
Funzione
Indirizzo dato (MSB)
Indirizzo dato (LSB)
Numero word (MSB)
Numero word (LSB)
CRC16 (MSB)
CRC16 (LSB)
In questo esempio il controllore ha indirizzo MODBUS pari a 1 e il dato richiesto, la release firmware è pari 1.02, codificata come 0x0102. Inoltre
MSB e LSB stanno rispettivamente per Most Significant Byte e Least Significant Byte.
Gestione errori
In caso di errore per:
• funzione non supportata
• indirizzo dato errato
• lunghezza dato errato
il messaggio di risposta sarà una exception MODBUS.
Ovvero la risposta conterrà come codice funzione il codice presente nella richiesta in OR bit a bit con 0x80 e un byte aggiuntivo contenente la
descrizione dell'errore.
Sono supportati due codici di errore:
• 0x01
Illegal function
• 0x02
Illegal data address
Si faccia riferimento alla descrizione del protocollo presente nelle fonti già citate per il formato della risposta.
Formato tabelle descrizione dati MODBUS
Per ogni oggetto disponibile attraverso l'interfaccia di comunicazione MODBUS viene riportata una descrizione di questo tipo:
Addr
0x0000
Dove:
• Addr è l'indirizzo MODBUS del registro in esadecimale
• Type è il tipo di dato (vedi tabella nel seguito)
• Size è la dimensione in byte del dato in questione in decimale
• Name è l'identificativo dell'oggetto in questione, in generale lo stesso riportato nel paragrafo "Connessione Seriale"
• Notes contiene la descrizione del dato in questione (parametro, misura, etc..) e informazioni sulla rappresentazione del dato.
Tipi di dato
Numeri interi
Le codifiche per i numeri interi usate nel seguito sono descritte nella seguente tabella:
Type
Description
char
ASCII Characters
byte
Unsigned byte
word
Unsigned word (16 bit)
int
Signed integer (16bit)
long
Signed Long Int (32bit)
ulong
Unsigned Long Int (32bit)
Sui tipi di dato intero a 16 e 32 bit elencati in tabella viene usato il formato big endian, ovvero il byte più significativo si presenta prima nell'ordine
dei dati ricevuti/spediti su seriale.
Nel caso il dato passato non sia un numero puro, le possibili unità di misura associate alla grandezza in oggetto, citate nel seguito, sono le
seguenti:
• [rpm] giri al minuto
• [mbar] millibar=10
bar
-3
• [bar*100] il numero rappresenta la pressione in bar con due decimale, ovvero nel caso di pressione di 2.34 bar il numero passato sarà 234
• [°C*10] il numero rappresenta la temperatura in gradi Celsius con un decimale, ovvero nel caso di temperatura di 125.7°C il numero passato
sarà 1257
• [h] ore
• [min] minuti
• [s] secondi
• [V*100] il numero rappresenta una tensione in Volt con due decimali, ovvero nel caso di tensione di 2.15V il numero passato sarà 215
48
W3-0A5 12-I
0x01
0x03
0x00
0x0B
0x00
0x01
0xF5
0xC8
Type
Size
Name
char[10]
10
MATRICOLA
Range
0..255
0..65535
–32768..32767
–2147483648..2147483647
0..4294967295
Pacchetto risposta
Indirizzo controllore
Funzione
Numero byte
Dato (MSB)
Dato (LSB)
CRC16 (MSB)
CRC16 (LSB)
Notes
Matricola del controllore inserita al menu 10
Length
1 byte
1 byte
2 bytes
2 bytes
4 bytes
4 bytes
0x01
0x03
0x02
0x01
0x02
0x38
0x15