TapHome

solvimus MBUS-GEM – contatore d'acqua M-Bus

Modbus TCP
Inviato da
Ultimo aggiornamento: 11. 2026
solvimus MBUS-GEM – contatore d'acqua M-Bus

TapHome non ha un’interfaccia M-Bus propria. Un contatore d’acqua M-Bus cablato si collega tramite un gateway da M-Bus a Modbus, e TapHome lo legge come dispositivo Modbus TCP. Questo template usa il gateway solvimus MBUS-GEM (MBUS-GE20M, MBUS-GE80M, MBUS-GE125M, MBUS-GE250M, MBUS-GE500M): il gateway legge i contatori sul proprio M-Bus e offre i loro dati come server Modbus TCP sulla porta 502. Un modulo importato rappresenta un contatore d’acqua; per altri contatori il template si importa di nuovo.

Il template legge il volume d’acqua in m³, la portata comunicata dal contatore stesso e la portata media tra due letture del gateway in l/h. La portata media serve per il rilevamento delle perdite: le smart rule di TapHome possono confrontarla con dei limiti, ad esempio per dare l’allarme quando l’acqua continua a scorrere di notte.

Template della community — non ancora testato su hardware. Il template è stato creato nel portale TapHome a partire dal manuale utente di solvimus MBUS-GEM (versione 1.31). Non è stato eseguito né su un gateway e un contatore reali né su un simulatore. I suoi numeri di registro (RegMeter, RegVolume, RegFlow) sono valori segnaposto: dopo l’importazione l’installatore li imposta secondo la colonna Register della scheda Meter del gateway. Prima di fidarti dei valori, verifica la connessione con la modalità di test del gateway (vedi Configurazione); le esperienze sul campo sono benvenute. Scarica l’XML da questa pagina o dal portale TapHome: solvimus MBUS-GEM – contatore d’acqua M-Bus — template della community, e importalo come nuovo modulo.

Cosa serve

  • Un gateway solvimus MBUS-GEM per M-Bus cablato con Modbus TCP: MBUS-GE20M, MBUS-GE80M, MBUS-GE125M, MBUS-GE250M o MBUS-GE500M. L’MBUS-GEWM è la variante per M-Bus wireless e questo template non la copre.
  • Un contatore d’acqua M-Bus cablato (EN 13757) che il gateway sia in grado di leggere. I contatori d’acqua a ultrasuoni di solito comunicano anche la portata.
  • Il gateway e l’unità di controllo Core nella stessa rete locale.

Collegamento hardware

L’MBUS-GEM si monta su guida DIN da 35 mm e ha morsetti a vite per l’M-Bus e l’alimentazione e una porta Ethernet RJ45 (10/100 Mbit/s).

ModelloCarichi unitari M-BusLarghezzaAlimentazioneVelocità M-Bus
MBUS-GE20M202 moduli21,6–24,5 VDCmax. 19200 bps
MBUS-GE80M802 moduli21,6–24,5 VDCmax. 19200 bps
MBUS-GE125M1253 moduli12–36 VDCmax. 9600 bps
MBUS-GE250M2503 moduli12–36 VDCmax. 9600 bps
MBUS-GE500M5003 moduli12–36 VDCmax. 9600 bps

Un carico unitario (UL) corrisponde per lo più a un contatore.

  1. Collega la linea M-Bus del contatore d’acqua ai morsetti M-Bus del gateway.
  2. Collega il gateway alla rete locale con un cavo Ethernet.
  3. Collega un alimentatore esterno da 24 VDC. Il gateway si avvia da solo.

Configurazione

Rete ed elenco contatori

Il gateway viene fornito con l’indirizzo IP statico 192.168.1.101 (subnet mask 255.255.255.0, gateway di rete 192.168.1.254); la sua interfaccia web si apre su http://192.168.1.101/. Al primo accesso l’amministratore deve cambiare la password. Lo strumento Netdiscover di solvimus trova il gateway nella rete e può passarlo a un altro indirizzo statico o a DHCP; con DHCP trovi l’indirizzo assegnato nel server DHCP tramite l’indirizzo MAC del gateway. Senza server DHCP il gateway sceglie un indirizzo nell’intervallo 169.254.x.x. Il template raggiunge il gateway tramite indirizzo IP, quindi assegnagli un indirizzo fisso o una prenotazione DHCP.

Nell’interfaccia web cerca i contatori sull’M-Bus, in modo che il contatore d’acqua compaia nell’elenco della scheda Meter insieme ai suoi valori (volume e, se il contatore la comunica, portata).

Impostazioni Modbus nella scheda Server

  1. Imposta Modbus mode su Modbus TCP e lascia Modbus port su 502.
  2. Lascia Modbus float only disattivato. Questa modalità elimina i campi di tipo e unità che il template controlla.
  3. Lascia Modbus swap disattivato. Il template si aspetta l’ordine delle parole predefinito (prima la parola più significativa).
  4. Si consiglia di attivare Modbus multi slave. Ogni contatore diventa allora uno slave Modbus virtuale con un proprio indirizzo (1–247) e la numerazione dei registri ricomincia per ogni contatore, così i contatori dello stesso tipo hanno gli stessi numeri di registro.

Dopo aver attivato o disattivato multi slave, gli indirizzi nella scheda Meter vanno riassegnati (menu contestuale Allocate).

Ciclo di lettura

Il gateway legge i contatori indipendentemente dalle richieste Modbus: secondo il Readout cycle nella scheda Configuration o il Cycle (in secondi) del singolo contatore nella scheda Meter. Queste impostazioni decidono quanto sono aggiornati i valori in TapHome. Alcuni contatori M-Bus a batteria consentono solo un numero limitato di letture al giorno; controlla la scheda tecnica del contatore prima di scegliere un ciclo breve.

Impostazioni del template dopo l’importazione

Il gateway non ha una tabella di registri fissa. Ogni voce di contatore e ogni valore del contatore riceve un proprio blocco di 10 holding register, e l’inizio di ogni blocco è indicato nella colonna Register della scheda Meter. L’ordine dei valori segue l’ordine in cui il contatore invia i suoi record M-Bus, quindi varia tra i modelli di contatore. Per questo il template tiene l’inizio di ogni blocco in una variabile del modulo e ne calcola ogni indirizzo di registro.

ImpostazioneDoveValore
Indirizzo IPParametro di importazioneIndirizzo del gateway (la finestra di importazione propone 192.168.1.100; il gateway viene fornito con 192.168.1.101)
SlaveIdParametro di importazione (predefinito 1)Con multi slave: il numero nella colonna Register della riga del contatore. Senza multi slave: 255
RegMeterVariabile del modulo (predefinito 10)Con multi slave: 10 (la voce del contatore inizia a 10 in ogni slave virtuale). Senza multi slave: il numero nella colonna Register della riga del contatore
RegVolumeVariabile del modulo (predefinito 20)Il numero nella colonna Register della riga del volume (unità m³)
RegFlowVariabile del modulo (predefinito 30)Il numero nella colonna Register della riga della portata (unità m³/h, m³/min o m³/s)

I valori predefiniti 10, 20 e 30 corrispondono solo alla disposizione della modalità di test del gateway; sostituiscili con i numeri del contatore reale.

Ogni dispositivo controlla il tipo di voce e l’unità del proprio blocco. Un numero errato mostra sul dispositivo un errore che nomina la variabile del modulo, ad esempio RegVolume does not point to a volume value in m³ … copy the Register number of this value from the gateway Meter tab.

Verifica della connessione con Modbus test

Con Modbus test attivato nella scheda Server, il gateway fornisce dati di test statici: una voce di contatore al registro 10 e un valore di energia (unità Wh, 1234,5678 Wh) al registro 20. Con le variabili del modulo predefinite, Volume d’acqua accetta allora il registro 10 come voce di contatore (con un avviso che il fluido del contatore di test, codice 2, non è acqua) e segnala che il registro 20 non è un valore di volume (codice unità 5). Se vedi esattamente questi messaggi, indirizzo IP, porta, indirizzo slave e numeri di registro raggiungono il gateway come previsto. Poi disattiva la modalità di test e imposta le variabili del modulo per il contatore reale.

Funzionalità dei dispositivi

Tutti e tre i dispositivi sono di sola lettura e vengono letti ogni 15 s. I loro valori cambiano solo quando il gateway legge il contatore, nel suo ciclo di lettura.

Volume d’acqua

Volume d’acqua è la lettura del contatore in m³ con tre decimali, letta come valore in virgola mobile scalato del blocco del volume. Il dispositivo controlla anche la voce del contatore:

MessaggioTipoSignificato
RegMeter does not point to a meter entry …ErroreRegMeter punta a un blocco che non è una voce di contatore
RegMeter points to a meter with medium code …, which is not a water meter …AvvisoIl contatore non è un contatore d’acqua (codici di fluido accettati: acqua, acqua fredda, acqua calda, acqua molto calda e acqua a doppio registro) — controlla RegMeter e SlaveId
The gateway could not read the meter in its last readout …ErroreControlla il cablaggio M-Bus, l’indirizzo del contatore e l’elenco dei contatori del gateway
Not all meter values were updated in the last gateway readoutAvvisoL’ultima lettura non era completa

L’attributo di servizio Numero di serie del contatore mostra il numero di serie del contatore M-Bus e aiuta a confermare che il template legge il contatore giusto. Un numero di serie che contiene lettere viene mostrato come 0.

Portata media d’acqua

Portata media d’acqua è l’aumento di volume tra le due letture più recenti del gateway diviso per il tempo tra i loro timestamp, in l/h. Viene ricalcolata solo quando cambia il timestamp di lettura del contatore, quindi è la media su un ciclo di lettura.

  • Dopo la prima lettura, dopo un riavvio dell’unità di controllo Core e dopo un azzeramento del contatore (volume inferiore a prima) il valore è 0 fino alla lettura successiva.
  • Se il gateway smette di leggere il contatore, resta l’ultima media; Volume d’acqua mostra allora l’errore di lettura.

Il dispositivo legge lo stesso blocco del volume di Volume d’acqua. Il rilevamento delle perdite vero e proprio — limiti, orari di apertura, allarmi — si imposta con le smart rule di TapHome; il template fornisce il valore.

Portata d’acqua

Portata d’acqua è la portata comunicata dal contatore stesso, convertita in m³/h (da m³/h, m³/min o m³/s). Non tutti i contatori d’acqua M-Bus comunicano una portata; quelli a ultrasuoni di solito sì.

Risoluzione dei problemi

Nessuna comunicazione

  • Verifica che il gateway e l’unità di controllo Core siano nella stessa rete e che il gateway risponda al ping.
  • Verifica che Modbus sia attivato nella scheda Server, che la porta sia 502 e che nessun firewall la blocchi.
  • Usa la modalità di test descritta sopra.
  • Nella configurazione standard il gateway accetta fino a cinque connessioni Modbus TCP contemporanee; oltre questo limite una nuova connessione chiude la più vecchia.

Un errore nomina una variabile del modulo

Il numero in quella variabile punta a un blocco di altro tipo o unità. Copia di nuovo il numero dalla colonna Register della scheda Meter; con multi slave controlla anche SlaveId. Dopo aver attivato o disattivato multi slave, riassegna gli indirizzi (Allocate) e copia i nuovi numeri.

I valori non cambiano

Controlla il ciclo di lettura del gateway e il limite di letture del contatore. L’ora di sistema del gateway deve essere corretta (impostata a mano o via SNTP), altrimenti i timestamp di lettura e la portata media sono sbagliati.

Piccola differenza rispetto al sito del gateway

Il valore in virgola mobile ha circa 7 cifre significative, quindi le ultime cifre possono differire leggermente dal valore nell’interfaccia web del gateway.

Dispositivi disponibili

solvimus MBUS-GEM – contatore d'acqua Modulo
Variabili personalizzate
RegMeter (numeric) = 10Inizio della voce del contatore (numero di serie, ora di lettura, stato di lettura) — con Modbus multi slave 10, altrimenti il numero della colonna Register nella riga del contatore della scheda Meter
RegVolume (numeric) = 20Inizio del valore di volume (unità m³) — il numero della colonna Register nella riga del volume della scheda Meter
RegFlow (numeric) = 30Inizio del valore di portata (unità m³/h, m³/min o m³/s) — il numero della colonna Register nella riga della portata della scheda Meter
Volume d'acqua Variabile Solo lettura

Lettura del contatore in m³ con tre decimali; mostra un errore quando il gateway non è riuscito a leggere il contatore

Registro: H:RegVolume+4 Float Unità: m³ numeric
Attributi di servizio
Numero di serie del contatoreNumero di serie del contatore M-Bus — conferma che il template legge il contatore giusto

Volume d'acqua

Lettura
VAR info := MODBUSR(H, RegVolume+7, UInt16);
VAR unit := GETBITS(info, 0, 8);
VAR factor := SWITCH(unit, 7, 1, 0);
IF GETBITS(info, 8, 8) != 0 OR factor = 0
    ADDERROR(1, "RegVolume does not point to a volume value in m³ (entry type " + TOSTRING(GETBITS(info, 8, 8)) + ", unit code " + TOSTRING(unit) + ") – copy the Register number of this value from the gateway Meter tab");
    RETURN(NaN);
END
RETURN(ROUND(MODBUSR(H, RegVolume+4, Float) * factor * 1000) / 1000);
Lettura (modulo)
VAR meterInfo := MODBUSR(H, RegMeter+7, UInt16);
VAR medium := 0;
VAR flags := 0;
IF GETBITS(meterInfo, 8, 8) != 2
    ADDERROR(1, "RegMeter does not point to a meter entry (entry type " + TOSTRING(GETBITS(meterInfo, 8, 8)) + ") – set RegMeter to the start of the meter entry (10 with Modbus multi slave, otherwise the Register number of the meter row in the gateway Meter tab)");
ELSE
    medium := GETBITS(MODBUSR(H, RegMeter+3, UInt16), 0, 8);
    IF medium != 6 AND medium != 7 AND medium != 21 AND medium != 22 AND medium != 23
        ADDWARNING(2, "RegMeter points to a meter with medium code " + TOSTRING(medium) + ", which is not a water meter – check that RegMeter and SlaveId belong to the water meter");
    END
    flags := MODBUSR(H, RegMeter+8, UInt16);
    IF GETBIT(flags, 0)
        ADDERROR(3, "The gateway could not read the meter in its last readout – check the M-Bus wiring, the meter address and the meter list of the gateway");
    ELSEIF GETBIT(flags, 1)
        ADDWARNING(4, "Not all meter values were updated in the last gateway readout");
    END
END
Attributi di servizio
Meter serial number
TOSTRING(MODBUSR(H, RegMeter+0, UInt32))
Portata media d'acqua Variabile Solo lettura

Portata media tra le due letture più recenti del gateway, in l/h — per il rilevamento delle perdite, ad esempio acqua che scorre di notte

Registro: H:RegVolume+4, H:RegMeter+4 Float, UInt32 Unità: l/h numeric

Portata media d'acqua

Lettura
VAR info := MODBUSR(H, RegVolume+7, UInt16);
VAR ts := 0;
VAR vol := 0;
IF GETBITS(info, 8, 8) != 0 OR GETBITS(info, 0, 8) != 7
    ADDERROR(1, "RegVolume does not point to a volume value in m³ (entry type " + TOSTRING(GETBITS(info, 8, 8)) + ", unit code " + TOSTRING(GETBITS(info, 0, 8)) + ") – copy the Register number of the volume value from the gateway Meter tab");
    RETURN(NaN);
END
ts := MODBUSR(H, RegMeter+4, UInt32);
IF ts = 0
    RETURN(NaN);
END
IF ts != PrevTime
    vol := MODBUSR(H, RegVolume+4, Float);
    IF PrevTime > 0 AND ts > PrevTime AND vol >= PrevVolume
        AvgFlow := (vol - PrevVolume) * 1000 * 3600 / (ts - PrevTime);
    ELSE
        AvgFlow := 0;
    END
    PrevVolume := vol;
    PrevTime := ts;
END
RETURN(AvgFlow);
Portata d'acqua Variabile Solo lettura

Portata comunicata dal contatore stesso, in m³/h; cambia solo a ogni lettura del gateway

Registro: H:RegFlow+4 Float Unità: m³/h numeric

Portata d'acqua

Lettura
VAR info := MODBUSR(H, RegFlow+7, UInt16);
VAR unit := GETBITS(info, 0, 8);
VAR factor := SWITCH(unit, 15, 1, 16, 60, 17, 3600, 0);
IF GETBITS(info, 8, 8) != 0 OR factor = 0
    ADDERROR(1, "RegFlow does not point to a volume flow value (entry type " + TOSTRING(GETBITS(info, 8, 8)) + ", unit code " + TOSTRING(unit) + ") – copy the Register number of this value from the gateway Meter tab");
    RETURN(NaN);
END
RETURN(MODBUSR(H, RegFlow+4, Float) * factor);
Connessione: Modbus TCP • Slave ID: $[SlaveId]
Possibili miglioramenti (3)
  • H:RegVolume+0 Unscaled meter value (64-bit integer) with scaling factor — Int64 at offset 0–3 with the power-of-ten scaling factor at offset 6; preferred by the manual for exact billing, 0 when the meter sends a floating-point value. The template reads the scaled Float at offset 4.
  • H:RegVolume+8 Timestamp of the value from the meter — UNIX time provided by the meter for the value, 0 if the meter provides none. The template uses the readout time of the meter entry (H:RegMeter+4) instead.
  • H:RegMeter+2 Manufacturer code of the meter — Three letters encoded in 5-bit groups.

Fonti

  • solvimus MBUS-GEM User manual v1.31 (Modbus TCP server, network configuration)
  • solvimus MBUS-GEM datasheets (MBUS-GE20M/80M and MBUS-GE125M/250M/500M)

Hai trovato un problema con questo template?

Dicci cosa non funziona, cosa manca o come dovrebbe comportarsi il template. Il tuo feedback ci aiuta a mantenere il catalogo accurato.

Community — non revisionato

Vuoi usarlo nel tuo TapHome Core?

Apri questo template nel Customer Portal per applicarlo a una delle tue case, o crea una proposta di modifica e inviala al catalogo.

Apri nel portale