Tipi di dati e formato tabella Modbus
Formati delle tabelle
Le tabelle dei registri sono costituite dalle colonne seguenti:
Indirizzo |
Registro |
N. |
L/S |
X |
Unità |
Tipo |
Portata |
Valore predefinito |
Backup |
Codice funzione |
Descrizione |
Definizione |
Descrizione |
---|---|
Indirizzo |
Indirizzo registro 16 bit in esadecimale. L'indirizzo corrisponde ai dati utilizzati nel frame Modbus. |
Registro |
Numero di registro 16 bit in decimale. Registro = Indirizzo + 1 |
N. |
Numero di registri da 16 bit che vanno letti/scritti per accedere alle informazioni complete. |
L/S |
Se il registro è di sola lettura (R) o lettura-scrittura (L/S). |
X |
Fattore di scala:
|
Unità |
Unità di misura dell'informazione:
|
Tipo |
Tipo di dati di codifica (vedere Tabella tipi di dati). |
Portata |
Campo dei valori consentiti per la variabile, generalmente un sottoinsieme di ciò che consente il formato. Per i dati di tipo BITMAP, il contenuto di questo dominio è "–". |
Valore predefinito |
Valore predefinito per la variabile. |
Backup |
Salvataggio del valore in caso di interruzione dell'alimentazione:
NOTA: all'avvio o al reset i valori disponibili vengono
recuperati.
|
Codice funzione |
Codice delle funzioni utilizzabili nel registro. |
Descrizione |
Informazioni sul registro e sulle limitazioni applicabili. |
Tipi di dati
Nelle tabelle dei registri Modbus compaiono i seguenti tipi di dati:
Nome |
Descrizione |
Portata |
---|---|---|
UINT |
Intero da 16 bit senza segno (1 parola) |
Da 0 a 65535 |
INT |
Intero da 16 bit con segno (1 parola) |
da -32768 a +32767 |
UINT32 |
Intero da 32 bit senza segno (2 parole) |
Da 0 a 4 294 967 295 |
INT32 |
Intero da 32 bit con segno (2 parole) |
Da -2 147 483 648 a +2 147 483 647 |
Float32 |
Valore da 32 bit (2 parole) |
da -3,4028E+38 a +3,4028E+38 |
ASCII |
Carattere alfanumerico da 8 bit |
Tabella dei caratteri ASCII |
BITMAP |
Campo da 16 bit (1 parola) |
– |
DATE |
Vedere Tabella data |
– |
Dati tipo Float32: virgola mobile a precisione singola con bit del segno, esponente 8 bit, mantissa 23 bit (reale normalizzato positivo e negativo)
Per i dati di tipo ASCII l'ordine di trasmissione dei caratteri nelle parole (registri da 16 bit) è il seguente:
-
carattere n in bit meno significativi
-
carattere n + 1 in bit più significativi
Tutti i registri (a 16 bit o 2 byte) vengono trasmessi con codifica Big Endian:
-
il byte più significativo viene trasmesso per primo
-
il byte meno significativo viene trasmesso per secondo
Le variabili a 32 bit salvate su due parole a 16 bit (ad esempio, contatori di consumo) sono in formato Big Endian:
-
la parola più significativa viene trasmessa per prima, seguita da quella meno significativa.
Le variabili a 64 bit salvate su quattro parole a 16 bit (ad esempio, le date) sono in formato Big Endian:
-
la parola più significativa viene trasmessa per prima e così via.
DATETIME
DATETIME è un tipo di dati utilizzato per codificare data e ora definite dallo standard IEC 60870-5.
Registro |
Tipo |
Bit |
Intervallo |
Descrizione |
---|---|---|---|---|
1 |
INT16U |
0-6 |
0x00–0x7F |
Anno: da 0x00 (00) a 0x7F (127) corrisponde agli anni da 2000 a 2127 Ad esempio, 0x17 (23) corrisponde all'anno 2023. |
7–15 |
– |
Riservato |
||
2 |
INT16U |
0–4 |
0x01–0x1F |
Giorno |
5-7 |
– |
Riservato |
||
8-11 |
0x00–0x0C |
Mese |
||
12–15 |
– |
Riservato |
||
3 |
INT16U |
0-5 |
0x00–0x3B |
Minuti |
6-7 |
– |
Riservato |
||
8-12 |
0x00–0x17 |
Ore |
||
13–15 |
– |
Riservato |
||
4 |
INT16U |
0-15 |
0x0000–0xEA5F |
Millisecondi |
Indirizzamento bit diretto
L'indirizzamento viene consentito per le zone di tipo BITMAP con le funzioni 1, 2, 5 e 15.
L'indirizzo del primo bit ha la struttura seguente: (indirizzo del registro x 16) + numero del bit.
Questa modalità di indirizzamento è specifica di Schneider Electric.
Esempio: Per le funzioni 1, 2, 5 e 15 il bit 3 del registro 0x0078 deve essere indirizzato; l'indirizzo del bit è quindi 0x0783.
Esempio di frame Modbus
Richiesta
Definizione |
Numero di byte |
Valore |
Commento |
---|---|---|---|
Numero server |
1 byte |
0x05 |
Indirizzo Modbus I/O Smart Link |
Codice funzione |
1 byte |
0x03 |
Lettura di n parole di uscita o interne |
Indirizzo |
2 byte |
0x36E2 |
Indirizzo di un contatore di consumo il cui indirizzo è 14050 in formato decimale. |
Numero di parole |
2 byte |
0x002C |
Lettura di 44 registri a 16 bit. |
CRC |
2 byte |
xxxx |
Valore di CRC16. |
Risposta
Definizione |
Numero di byte |
Valore |
Commento |
---|---|---|---|
Numero server |
1 byte |
0x05 |
Indirizzo Modbus I/O Smart Link |
Codice funzione |
1 byte |
0x03 |
Lettura di n parole di uscita o interne |
Numero di byte |
2 byte |
0x0058 |
Numero di byte letti |
Valore delle parole lette |
88 byte |
– |
Lettura di 44 registri a 16 bit |
CRC |
2 byte |
xxxx |
Valore di CRC16. |
Indirizzo Modbus
L'elenco di indirizzi Modbus, definito dal protocollo Modbus, inizia da 0.
L'indirizzo del numero n del registro è n-1.
Le tabelle dettagliate nei capitoli successivi di questa guida forniscono sia i numeri di registro (in formato decimale) sia gli indirizzi corrispondenti (in formato esadecimale). Esempio di indirizzo: l’indirizzo del numero di registro 3000 è 0x0BB7 (2999).