Tipi di dati e formato tabella Modbus
Formati delle tabelle
Le tabelle dei registri sono costituite dalle colonne seguenti:
Indirizzo |
Registro |
No. |
RW |
X |
Unità |
Tipo |
Portata |
Valore predefinito |
Backup |
Codice funzione |
Dispositivi applicabili |
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 |
No |
Numero di registri da 16 bit che vanno letti/scritti per accedere alle informazioni complete |
R/RW |
Se il registro è di sola lettura (R/RW) o lettura-scrittura (RW). |
X |
Fattore di scala:
|
Unità |
Unità di misura dell'informazione:
|
Tipo |
Tipo di dati di codifica (vedere la tabella Tipo di dati di seguito). |
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 della variabile. |
Backup |
Valore salvato quando l'alimentazione al gateway PowerTag Link è spenta:
NOTA: all'avvio o al reset i valori disponibili
vengono recuperati.
|
Codice funzione |
Codice delle funzioni utilizzabili nel registro. |
Dispositivi applicabili |
Codice che indica i tipi di dispositivi per cui è disponibile il registro. |
Descrizione |
Informazioni sul registro e sulle limitazioni applicabili. |
Tipi di dati
Nome |
Descrizione |
Portata |
---|---|---|
INT16 |
Intero da 16 bit con segno (1 parola) |
-32768...+32767 |
UINT16 |
Intero da 16 bit senza segno (1 parola) |
0...65535 |
INT32 |
Intero da 32 bit con segno (2 parole) |
-2 147 483 648...+2 147 483 647 |
UINT32 |
Intero da 32 bit senza segno (2 parole) |
0...4 294 967 295 |
INT64 |
Intero da 64 bit con segno (4 parole) |
-9 223 372 036 854 775 808...9 223 372 036 854 775 807 |
UINT64 |
Intero da 64 bit senza segno (4 parole) |
da 0 a 18 446 744 073 709 600 000 |
Float32 |
Valore da 32 bit (2 parole) |
-3,4028E+38... +3,4028E+38 |
ASCII |
Carattere alfanumerico da 8 bit |
Tabella dei caratteri ASCII |
BITMAP |
Campo da 16 bit (1 parola) |
– |
DATETIME |
Vedere DATETIME |
– |
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 di 16 bit (ad es. 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 di 16 bit (ad es. 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 dalla normativa 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, 0x0D (13) corrisponde all'anno 2013. |
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 è costruito come segue: (indirizzo registro x 16) + numero 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 PowerTag 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 PowerTag 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. |
Registro Modbus
L'indirizzo del numero n del registro è n-1. Le tabelle dettagliate nelle sezioni seguenti del presente documento forniscono il numero di registro (in formato decimale) e gli indirizzi corrispondenti (in formato esadecimale). Ad esempio, l'indirizzo del numero di registro 3000 è 0x0BB7 (2999).