Vai al contenuto
Elausys

HyperVisu / Integrazioni

Integrazione Modbus TCP

Registri, codici funzione, interrogazione e scalatura — con un esempio pratico di inverter.

elausys · 27 luglio 2026
In questa pagina

Integrazione Modbus TCP

Modbus TCP collega HyperVisu ad apparecchiature industriali ed energetiche: inverter solari, caricabatterie per veicoli elettrici, pompe di calore, unità di ventilazione e PLC. HyperVisu è il client Modbus — interroga i registri dell’apparecchiatura e vi scrive quando controlli un widget.

Cosa serve: l’indirizzo IP del dispositivo, la porta Modbus (solitamente 502), la mappa dei registri (dalla documentazione Modbus del produttore) e l’ID slave/unità.

Connessioni. Attiva prima Modbus TCP Protocol nella pagina Services (vedi «Servizi e protocolli»); su un nuovo server è disattivato. Modbus TCP supporta più connessioni: crea una connessione per server Modbus (per IP/porta) nella pagina Connections (vedi «Connessioni»). In Add connection, seleziona la scheda Modbus TCP e inserisci un Instance Name, il Server IP Address e un Poll Interval (seconds) — la frequenza con cui HyperVisu legge tutti gli oggetti di quella connessione. Inserisci l’intervallo: il 30 grigio è solo un suggerimento; un campo vuoto fa interrogare il server ogni 5 secondi.

La finestra non ha un campo porta: la connessione viene creata sulla porta 502. Se l’apparecchiatura ascolta su un’altra porta, seleziona la nuova connessione, modifica Modbus TCP Port e fai clic su Save connection.

Una connessione Modbus non ha un pulsante Test. La verifica si effettua tramite lo stato Connected nella pagina Connections e il valore in tempo reale di un oggetto associato.

Associazione di un oggetto. Associa registri Modbus a oggetti dei widget nell’area di lavoro Devices. Per ogni oggetto imposta:

ImpostazioneSignificato
Slave IDL’identificatore dell’unità, 1–247.
Register typeBobina, ingresso discreto, registro di ingresso o registro di mantenimento.
Register addressL’indirizzo del registro dalla mappa del dispositivo, da 0 a 65535. Viene inviato all’apparecchiatura esattamente come inserito: usa l’indirizzo del protocollo, non un numero di riferimento 4xxxx o 3xxxx. Attenzione allo scarto di uno: alcuni produttori documentano indirizzi da 1, Modbus conta da 0.
Data typeCome vengono decodificati i registri grezzi (intero a 16/32 bit con/senza segno, virgola mobile, …).
Byte orderL’ordine delle parole/dei byte per valori su più registri — indicato nella documentazione del produttore. Il campo compare solo per tipi di dati che occupano due o più registri (32 bit, 64 bit e virgola mobile).
Write FunctionSolo registri di mantenimento. Lascia Automatic (FC6 / FC16), salvo che l’apparecchiatura non implementi FC6; in tal caso scegli Always FC16 (write multiple).
ScalingScale, Offset, Decimal Places e Units. La riga Formula mostra Display = (Raw × scale) + offset con un valore grezzo di esempio fisso, non con la lettura dell’apparecchiatura. Un fattore di scala di 0 viene interpretato come 1.

📘 Nota: Il fattore di scala e l’offset dell’oggetto vengono applicati prima di qualsiasi trasformazione sullo stesso oggetto (vedi «Trasformazioni dei valori e stato di funzionamento»). Non aggiungere un’ulteriore trasformazione di scalatura, altrimenti il valore viene scalato due volte.

Esempio pratico — potenza dell’inverter in un contatore

La documentazione dell’inverter indica: potenza attiva, registro di ingresso 32080, intero a 32 bit con segno, guadagno 1, unità W, ID unità 1.

  1. Crea una connessione Modbus TCP per l’inverter: Server IP Address 192.168.1.120, Poll Interval (seconds) 10 (vedi «Connessioni»). La connessione viene creata sulla porta 502.
  2. In Devices, aggiungi un widget Meter «Produzione solare», stanza Tecnica, categoria Energia. In Protocol, seleziona la connessione dell’inverter, elencata con il nome che le hai assegnato.
  3. Apri il suo oggetto potenza e inserisci: Slave ID 1, Register type Input register, Register address 32080, Data type INT32, Byte order come documentato.
  4. Imposta Scaling: fattore di scala 0.001, offset 0, decimali 2, unità kW. Un valore grezzo di 5230 diventa 5.23 kW.
  5. Fai clic su Save object, poi su Apply changes nella barra laterale e conferma. La connessione, il dispositivo e i suoi oggetti diventano attivi insieme in quel momento.
  6. Attendi almeno un intervallo di interrogazione. Il valore in tempo reale compare sulla riga del widget; confrontalo con il display dell’inverter.

💡 Suggerimento: Abilita la registrazione sull’oggetto (vedi «Impostazioni degli oggetti, registrazione e notifiche») per avere grafici e cronologia del contatore nell’app.

Editor degli oggetti Modbus.

Associazione Modbus

Gli oggetti Modbus si configurano nella finestra di impostazione dell’oggetto (apri l’oggetto con Edit, vedi «Impostazioni degli oggetti, registrazione e notifiche»). Le sezioni Modbus sono:

Connection

CampoDescrizione
Slave IDL’ID del dispositivo slave Modbus (1–247).

Data Configuration

CampoDescrizione
Register TypeLa tabella dei registri da leggere o scrivere (ad esempio registri di mantenimento o di ingresso).
Register AddressIl numero del registro.
Data TypeCome vengono interpretati i byte del registro (dimensioni degli interi, virgola mobile, …).
Byte OrderL’ordine delle parole/dei byte usato dal dispositivo.

Scaling & Conversion

CampoDescrizione
ScaleMoltiplica il valore grezzo per questo fattore (ad esempio 0.1 per dividere per 10).
OffsetAggiunto dopo la scalatura (ad esempio -273.15 per Kelvin → Celsius).
Decimal Places / UnitsPrecisione di visualizzazione e unità.

La finestra mostra la formula in tempo reale — Display = (Raw × scale) + offset — con un esempio pratico, così puoi verificare la conversione prima di salvare.

Le impostazioni dell’oggetto Modbus.

💡 Suggerimento: Numeri di registro, codici funzione e un esempio pratico completo si trovano nel capitolo Modbus.

Domande frequenti

Quali informazioni servono per un dispositivo Modbus?

Indirizzo IP, porta, ID slave/unità e mappa dei registri del produttore, con tipi di registro, indirizzi, tipi di dati e ordine dei byte.

Serve una connessione per ogni registro?

No. Crea una connessione per IP e porta del server Modbus, poi associa i registri ai singoli oggetti dei widget.

Perché una lettura Modbus è errata?

Verifica la base degli indirizzi dei registri, il tipo di dati, l’ordine dei byte e la scalatura rispetto alla mappa del produttore. Alcuni documenti numerano gli indirizzi da uno, mentre Modbus conta da zero.

Come converto una lettura grezza nell’unità visualizzata?

Imposta fattore di scala e offset nelle impostazioni dell’oggetto. La riga Formula mostra Display = (Raw × scale) + offset con un valore grezzo di esempio fisso, non con la lettura dell’apparecchiatura.

Con quale frequenza si aggiornano le letture Modbus?

Ogni connessione ha il proprio intervallo di interrogazione. Confronta il valore in tempo reale con il display dell’apparecchiatura dopo un’interrogazione.

Continua a esplorare

Trova le altre guide per questo prodotto nella documentazione.

Torna a Integrazioni