Mappa Registri Modbus TCP / RTU
Holding Registers (FC03)
1. Panoramica
Questo documento descrive la mappa completa dei registri Holding Modbus TCP / RTU (Function Code 03) del dispositivo RE-431-D.
È destinato a:
- system integrator
- ingegneri SCADA / BMS
- partner OEM
La mappa registri espone grandezze elettriche istantanee.
2. Parametri di comunicazione
| Parametro | Valore |
|---|---|
| Protocollo | Modbus TCP |
| Function Code | 03 – Read Holding Registers |
| Indirizzamento | 0-based |
| Unit ID (Slave ID) | 1 (default) |
| Byte order valori 32-bit | MSW first |
| Codifica signed | Two’s complement |
3. Modello dati
3.1 Tipi di dato
| Tipo | Descrizione |
|---|---|
| UINT16 | Intero senza segno a 16 bit |
| INT16 | Intero con segno a 16 bit |
| UINT32 | Intero senza segno a 32 bit (2 registri) |
| INT32 | Intero con segno a 32 bit (2 registri) |
Tutti i valori a 32 bit occupano 2 registri Holding consecutivi con Most Significant Word (MSW) per primo.
3.2 Convenzione di scaling
Il valore ingegneristico si ottiene applicando il fattore di scala:
Valore ingegneristico = Valore letto × Scala| Grandezza | Scala |
|---|---|
| Tensione | 0.01 |
| Corrente | 0.001 |
| Fattore di potenza | 0.001 |
| Frequenza | 0.001 |
| THD | 0.01 |
| Temperatura | 0.1 |
| Potenze (P, Q, S) | 1 |
| RSSI | 1 |
3.3 Valori speciali e note
- Fattore di potenza = 2000 → valore non valido / indefinito
- Le potenze INT32 supportano import/export (segno ±)
- RSSI espresso in dBm (valori tipicamente negativi)
4. Mappa registri Holding (FC03)
4.1 Tensioni
| Addr (HEX) | Addr (DEC) | Len | Nome | Tipo | Scala | Unità | Descrizione |
|---|---|---|---|---|---|---|---|
| 0x1000 | 4096 | 2 | Tensione equivalente trifase | UINT32 | 0.01 | V | Media L-N |
| 0x1002 | 4098 | 2 | Tensione L1-N | UINT32 | 0.01 | V | |
| 0x1004 | 4100 | 2 | Tensione L2-N | UINT32 | 0.01 | V | |
| 0x1006 | 4102 | 2 | Tensione L3-N | UINT32 | 0.01 | V | |
| 0x1008 | 4104 | 2 | Tensione L1-L2 | UINT32 | 0.01 | V | |
| 0x100A | 4106 | 2 | Tensione L2-L3 | UINT32 | 0.01 | V | |
| 0x100C | 4108 | 2 | Tensione L3-L1 | UINT32 | 0.01 | V |
4.2 Correnti
| Addr (HEX) | Addr (DEC) | Len | Nome | Tipo | Scala | Unità | Descrizione |
|---|---|---|---|---|---|---|---|
| 0x100E | 4110 | 2 | Corrente equivalente trifase | UINT32 | 0.001 | A | Media fasi |
| 0x1010 | 4112 | 2 | Corrente L1 | UINT32 | 0.001 | A | |
| 0x1012 | 4114 | 2 | Corrente L2 | UINT32 | 0.001 | A | |
| 0x1014 | 4116 | 2 | Corrente L3 | UINT32 | 0.001 | A |
4.3 Fattore di potenza
| Addr (HEX) | Addr (DEC) | Len | Nome | Tipo | Scala | Unità | Note |
|---|---|---|---|---|---|---|---|
| 0x1016 | 4118 | 2 | Fattore di potenza trifase | INT32 | 0.001 | — | 2000 = non valido |
| 0x1018 | 4120 | 2 | Fattore di potenza L1 | INT32 | 0.001 | — | 2000 = non valido |
| 0x101A | 4122 | 2 | Fattore di potenza L2 | INT32 | 0.001 | — | 2000 = non valido |
| 0x101C | 4124 | 2 | Fattore di potenza L3 | INT32 | 0.001 | — | 2000 = non valido |
4.4 Potenza apparente (S)
| Addr (HEX) | Addr (DEC) | Len | Nome | Tipo | Scala | Unità |
|---|---|---|---|---|---|---|
| 0x1026 | 4134 | 2 | Potenza apparente trifase | UINT32 | 1 | VA |
| 0x1028 | 4136 | 2 | Potenza apparente L1 | UINT32 | 1 | VA |
| 0x102A | 4138 | 2 | Potenza apparente L2 | UINT32 | 1 | VA |
| 0x102C | 4140 | 2 | Potenza apparente L3 | UINT32 | 1 | VA |
4.5 Potenza attiva (P)
| Addr (HEX) | Addr (DEC) | Len | Nome | Tipo | Scala | Unità |
|---|---|---|---|---|---|---|
| 0x102E | 4142 | 2 | Potenza attiva trifase | INT32 | 1 | W |
| 0x1030 | 4144 | 2 | Potenza attiva L1 | INT32 | 1 | W |
| 0x1032 | 4146 | 2 | Potenza attiva L2 | INT32 | 1 | W |
| 0x1034 | 4148 | 2 | Potenza attiva L3 | INT32 | 1 | W |
4.6 Potenza reattiva (Q)
| Addr (HEX) | Addr (DEC) | Len | Nome | Tipo | Scala | Unità |
|---|---|---|---|---|---|---|
| 0x1036 | 4150 | 2 | Potenza reattiva trifase | INT32 | 1 | var |
| 0x1038 | 4152 | 2 | Potenza reattiva L1 | INT32 | 1 | var |
| 0x103A | 4154 | 2 | Potenza reattiva L2 | INT32 | 1 | var |
| 0x103C | 4156 | 2 | Potenza reattiva L3 | INT32 | 1 | var |
4.7 Frequenza
| Addr (HEX) | Addr (DEC) | Len | Nome | Tipo | Scala | Unità |
|---|---|---|---|---|---|---|
| 0x1046 | 4166 | 2 | Frequenza media trifase | UINT32 | 0.001 | Hz |
| 0x1048 | 4168 | 2 | Frequenza L1 | UINT32 | 0.001 | Hz |
| 0x104A | 4170 | 2 | Frequenza L2 | UINT32 | 0.001 | Hz |
| 0x104C | 4172 | 2 | Frequenza L3 | UINT32 | 0.001 | Hz |
4.8 Distorsione armonica totale (THD)
| Addr (HEX) | Addr (DEC) | Len | Nome | Tipo | Scala | Unità |
|---|---|---|---|---|---|---|
| 0x1082 | 4226 | 2 | THD tensione L1 | UINT32 | 0.01 | % |
| 0x1084 | 4228 | 2 | THD tensione L2 | UINT32 | 0.01 | % |
| 0x1086 | 4230 | 2 | THD tensione L3 | UINT32 | 0.01 | % |
| 0x1088 | 4232 | 2 | THD corrente L1 | UINT32 | 0.01 | % |
| 0x108A | 4234 | 2 | THD corrente L2 | UINT32 | 0.01 | % |
| 0x108C | 4236 | 2 | THD corrente L3 | UINT32 | 0.01 | % |
4.9 Diagnostica
| Addr (HEX) | Addr (DEC) | Len | Nome | Tipo | Scala | Unità |
|---|---|---|---|---|---|---|
| 0x1090 | 4240 | 1 | Temperatura AFE | INT16 | 0.1 | °C |
| 0x1091 | 4241 | 1 | Temperatura MCU | INT16 | 0.1 | °C |
| 0x1092 | 4242 | 1 | RSSI WiFi | INT16 | 1 | dBm |
5. Esempio di lettura (mbpoll)
mbpoll è un tool da riga di comando per test e diagnostica di dispositivi Modbus TCP / RTU, disponibile su Linux e macOS.
Viene comunemente utilizzato per verificare il corretto indirizzamento dei registri e il valore delle grandezze esposte.
Installazione di mbpoll
Linux (Debian / Ubuntu / Raspberry Pi OS / Armbian)
sudo apt update
sudo apt install mbpollmacOS (Homebrew)
brew update
brew install mbpollTest di comunicazione Modbus TCP
Esempio di lettura di un registro Holding a 32 bit (Tensione L1-N):
mbpoll -m tcp -a 1 -0 -r 4098 -B -c 1 -t 4:int 192.168.1.186Esempio di output:
Protocol configuration: ModBus TCP
Slave configuration...: address = [1]
start reference = 4098, count = 1
Communication.........: 192.168.1.186, port 502, t/o 1.00 s, poll rate 1000 ms
Data type.............: 32-bit integer (big endian), output (holding) register table
-- Polling slave 1... Ctrl-C to stop)
[4098]: 23367Il valore visualizzato da mbpoll rappresenta il dato grezzo (raw) del registro.
Per ottenere il valore reale è necessario dividere il valore letto per 100, come indicato dal fattore di scala della mappa registri, ottendendo 233,67 VRMS.

