Funzioni Standard
Il protocollo Modbus definisce un set di funzioni standard per la comunicazione tra client e server, ognuna identificata da un codice numerico. Queste funzioni permettono di leggere o scrivere dati in vari tipi di registri e coil, offrendo flessibilità per diverse applicazioni industriali.
|
Codice funzione |
Nome Funzione |
Descrizione |
|
0x01 |
Read
Coils |
lettura
di coil digitali (bit) |
|
0x02 |
Read
Discrete Inputs |
lettura
di ingressi digitali (bit) |
|
0x03 |
Read
Holding Registers |
lettura
di registri di holding (16 bit) |
|
0x04 |
Read
Input Registers |
lettura
di registri di input (16 bit) |
|
0x05 |
Write
Single Coil |
scrittura
di un singolo coil digitale |
|
0x06 |
Write
Single Register |
scrittura
di un singolo registro di holding (16 bit) |
|
0x07 |
Read
Exception Status |
lettura
dello stato di eccezione |
Oltre
a queste, esistono funzioni più avanzate come la scrittura multipla
di coil o registri, diagnostica, e altro, non utilizzate nel nostro
progetto
per mantenere semplicità ed efficienza.
Struttura di un Frame RTU
Ogni frame Modbus RTU è composto da:
|
Indirizzo Slave (1
byte) |
Codice Funzione (1
byte) |
Dati (N byte
variabile) |
CRC (2 byte) |
Gestione degli errori ( execption response)
Quando un dispositivo slave non può eseguire la richiesta, risponde con un messaggio di eccezione. AL struttura del messaggio di Execption e':
|
Indirizzo Slave (1 byte) |
Codice Funzione + 0X80 (1
byte) |
Codice Eccezione (1 byte)
|
CRC (2 byte) |
I codici di Eccezione sono:
|
Codice |
Nome |
Descrizione |
|
0x01 |
Illegal Function
|
La
funzione richiesta non è implementata nel server |
|
0x02 |
Illegal Data Address
|
L’indirizzo
non esiste tra quelli implementati |
|
0x03 |
Illegal Data Value
|
Il
valore del dato non è nell’intervallo richiesto |
|
0x04 |
Slave Device Failure
|
Il
server non può eseguire la funzione richiesta |


