TapHome

solvimus MBUS-GEM – contor de apă M-Bus

Modbus TCP
Trimis de
Ultima actualizare: 11. 2026
solvimus MBUS-GEM – contor de apă M-Bus

TapHome nu are o interfață M-Bus proprie. Un contor de apă M-Bus cu fir se conectează printr-un gateway de la M-Bus la Modbus, iar TapHome îl citește ca dispozitiv Modbus TCP. Acest șablon folosește gateway-ul solvimus MBUS-GEM (MBUS-GE20M, MBUS-GE80M, MBUS-GE125M, MBUS-GE250M, MBUS-GE500M): gateway-ul citește contoarele de pe propria magistrală M-Bus și oferă datele lor ca server Modbus TCP pe portul 502. Un modul importat reprezintă un contor de apă; pentru alte contoare șablonul se importă din nou.

Șablonul citește volumul de apă în m³, debitul raportat de contor și debitul mediu între două citiri ale gateway-ului în l/h. Debitul mediu servește la detectarea scurgerilor: smart rules din TapHome îl pot compara cu limite, de exemplu pentru a declanșa o alarmă când apa curge și noaptea.

Șablon al comunității — încă netestat pe hardware. Șablonul a fost creat în portalul TapHome pe baza manualului de utilizare solvimus MBUS-GEM (versiunea 1.31). Nu a rulat pe un gateway și un contor reale și nici pe un simulator. Numerele sale de registru (RegMeter, RegVolume, RegFlow) sunt valori provizorii: după import, instalatorul le setează după coloana Register din fila Meter a gateway-ului. Înainte să vă bazați pe valori, verificați conexiunea cu modul de test al gateway-ului (vezi Configurare); experiența din teren este binevenită. Descărcați XML-ul de pe această pagină sau din portalul TapHome: solvimus MBUS-GEM – contor de apă M-Bus — șablon al comunității, și importați-l ca modul nou.

De ce aveți nevoie

  • Un gateway solvimus MBUS-GEM pentru M-Bus cu fir cu Modbus TCP: MBUS-GE20M, MBUS-GE80M, MBUS-GE125M, MBUS-GE250M sau MBUS-GE500M. MBUS-GEWM este varianta pentru M-Bus wireless și nu este acoperită de acest șablon.
  • Un contor de apă M-Bus cu fir (EN 13757) pe care gateway-ul îl poate citi. Contoarele de apă cu ultrasunete raportează de obicei și debitul.
  • Gateway-ul și unitatea centrală Core în aceeași rețea locală.

Conexiunea hardware

MBUS-GEM se montează pe șină DIN de 35 mm și are borne cu șurub pentru M-Bus și alimentare, precum și un port Ethernet RJ45 (10/100 Mbit/s).

ModelSarcini unitare M-BusLățimeAlimentareViteză M-Bus
MBUS-GE20M202 module21,6–24,5 VDCmax. 19200 bps
MBUS-GE80M802 module21,6–24,5 VDCmax. 19200 bps
MBUS-GE125M1253 module12–36 VDCmax. 9600 bps
MBUS-GE250M2503 module12–36 VDCmax. 9600 bps
MBUS-GE500M5003 module12–36 VDCmax. 9600 bps

O sarcină unitară (UL) corespunde de cele mai multe ori unui contor.

  1. Conectați linia M-Bus a contorului de apă la bornele M-Bus ale gateway-ului.
  2. Conectați gateway-ul la rețeaua locală cu un cablu Ethernet.
  3. Conectați o sursă de alimentare externă de 24 VDC. Gateway-ul pornește singur.

Configurare

Rețeaua și lista contoarelor

Gateway-ul este livrat cu adresa IP statică 192.168.1.101 (mască de subrețea 255.255.255.0, gateway de rețea 192.168.1.254); interfața sa web se deschide la http://192.168.1.101/. La prima autentificare administratorul trebuie să schimbe parola. Instrumentul Netdiscover de la solvimus găsește gateway-ul în rețea și îl poate trece pe o altă adresă statică sau pe DHCP; cu DHCP găsiți adresa alocată în serverul DHCP după adresa MAC a gateway-ului. Fără server DHCP, gateway-ul alege o adresă din intervalul 169.254.x.x. Șablonul se adresează gateway-ului prin adresa IP, așa că atribuiți-i o adresă fixă sau o rezervare DHCP.

În interfața web căutați contoarele de pe M-Bus, astfel încât contorul de apă să apară în lista din fila Meter împreună cu valorile sale (volum și, dacă contorul îl raportează, debit).

Setările Modbus din fila Server

  1. Setați Modbus mode pe Modbus TCP și lăsați Modbus port pe 502.
  2. Lăsați Modbus float only dezactivat. Acest mod elimină câmpurile de tip și unitate pe care le verifică șablonul.
  3. Lăsați Modbus swap dezactivat. Șablonul așteaptă ordinea implicită a cuvintelor (cuvântul cel mai semnificativ primul).
  4. Se recomandă activarea Modbus multi slave. Fiecare contor devine atunci un slave Modbus virtual separat, cu adresă proprie (1–247), iar numerotarea registrelor reîncepe pentru fiecare contor, astfel încât contoarele de același tip au aceleași numere de registru.

După activarea sau dezactivarea multi slave, adresele din fila Meter trebuie alocate din nou (meniul contextual Allocate).

Ciclul de citire

Gateway-ul citește contoarele independent de cererile Modbus: la Readout cycle din fila Configuration sau la Cycle (în secunde) al fiecărui contor din fila Meter. Aceste setări decid cât de proaspete sunt valorile în TapHome. Unele contoare M-Bus cu baterie permit doar un număr limitat de citiri pe zi; verificați fișa tehnică a contorului înainte de a alege un ciclu scurt.

Setările șablonului după import

Gateway-ul nu are un tabel fix de registre. Fiecare intrare de contor și fiecare valoare a contorului primește propriul bloc de 10 registre holding, iar începutul fiecărui bloc apare în coloana Register din fila Meter. Ordinea valorilor urmează ordinea în care contorul își trimite înregistrările M-Bus, deci diferă între modelele de contoare. De aceea șablonul păstrează începutul fiecărui bloc într-o variabilă a modulului și calculează din ea fiecare adresă de registru.

SetareUndeValoare
Adresa IPParametru de importAdresa gateway-ului (dialogul de import propune 192.168.1.100; gateway-ul este livrat cu 192.168.1.101)
SlaveIdParametru de import (implicit 1)Cu multi slave: numărul din coloana Register de pe rândul contorului. Fără multi slave: 255
RegMeterVariabilă a modulului (implicit 10)Cu multi slave: 10 (intrarea contorului începe la 10 în fiecare slave virtual). Fără multi slave: numărul din coloana Register de pe rândul contorului
RegVolumeVariabilă a modulului (implicit 20)Numărul din coloana Register de pe rândul volumului (unitate m³)
RegFlowVariabilă a modulului (implicit 30)Numărul din coloana Register de pe rândul debitului (unitate m³/h, m³/min sau m³/s)

Valorile implicite 10, 20 și 30 corespund doar dispunerii modului de test al gateway-ului; înlocuiți-le cu numerele contorului real.

Fiecare dispozitiv verifică tipul intrării și unitatea blocului său. Un număr greșit afișează pe dispozitiv o eroare care numește variabila modulului, de exemplu RegVolume does not point to a volume value in m³ … copy the Register number of this value from the gateway Meter tab.

Verificarea conexiunii cu Modbus test

Cu Modbus test activat în fila Server, gateway-ul oferă date de test statice: o intrare de contor la registrul 10 și o valoare de energie (unitate Wh, 1234,5678 Wh) la registrul 20. Cu variabilele implicite ale modulului, Volum de apă acceptă atunci registrul 10 ca intrare de contor (cu un avertisment că mediul contorului de test, codul 2, nu este apă) și raportează că registrul 20 nu este o valoare de volum (codul unității 5). Dacă vedeți exact aceste mesaje, adresa IP, portul, adresa slave și numerele de registru ajung la gateway așa cum trebuie. Apoi dezactivați modul de test și setați variabilele modulului pentru contorul real.

Capacitățile dispozitivelor

Toate cele trei dispozitive sunt doar pentru citire și sunt citite la fiecare 15 s. Valorile lor se schimbă doar când gateway-ul citește contorul, în ciclul său de citire.

Volum de apă

Volum de apă este indexul contorului în m³ cu trei zecimale, citit ca valoare scalată în virgulă mobilă din blocul de volum. Dispozitivul verifică și intrarea contorului:

MesajTipSemnificație
RegMeter does not point to a meter entry …EroareRegMeter indică un bloc care nu este o intrare de contor
RegMeter points to a meter with medium code …, which is not a water meter …AvertismentContorul nu este un contor de apă (coduri de mediu acceptate: apă, apă rece, apă caldă, apă fierbinte și apă cu registru dublu) — verificați RegMeter și SlaveId
The gateway could not read the meter in its last readout …EroareVerificați cablajul M-Bus, adresa contorului și lista contoarelor din gateway
Not all meter values were updated in the last gateway readoutAvertismentUltima citire nu a fost completă

Atributul de service Numărul de serie al contorului arată numărul de serie al contorului M-Bus și ajută la confirmarea faptului că șablonul citește contorul corect. Un număr de serie care conține litere este afișat ca 0.

Debit mediu de apă

Debit mediu de apă este creșterea de volum între ultimele două citiri ale gateway-ului împărțită la timpul dintre marcajele lor de timp, în l/h. Se recalculează doar când se schimbă marcajul de timp al citirii contorului, deci este media pe un ciclu de citire.

  • După prima citire, după o repornire a unității centrale Core și după o resetare a contorului (volum mai mic decât înainte) valoarea este 0 până la următoarea citire.
  • Dacă gateway-ul nu mai citește contorul, rămâne ultima medie; Volum de apă afișează atunci eroarea de citire.

Dispozitivul citește același bloc de volum ca Volum de apă. Detectarea propriu-zisă a scurgerilor — limite, program de funcționare, alarme — se configurează cu smart rules în TapHome; șablonul furnizează valoarea.

Debit de apă

Debit de apă este debitul raportat de contor, convertit în m³/h (din m³/h, m³/min sau m³/s). Nu orice contor de apă M-Bus raportează un debit; contoarele cu ultrasunete de obicei da.

Depanare

Nicio comunicare

  • Verificați dacă gateway-ul și unitatea centrală Core sunt în aceeași rețea și dacă gateway-ul răspunde la ping.
  • Verificați dacă Modbus este activat în fila Server, dacă portul este 502 și dacă nu îl blochează un firewall.
  • Folosiți modul de test descris mai sus.
  • În configurația standard gateway-ul acceptă cel mult cinci conexiuni Modbus TCP simultane; peste această limită, o conexiune nouă o închide pe cea mai veche.

O eroare numește o variabilă a modulului

Numărul din acea variabilă indică un bloc de alt tip sau altă unitate. Copiați din nou numărul din coloana Register a filei Meter; cu multi slave verificați și SlaveId. După activarea sau dezactivarea multi slave, alocați din nou adresele (Allocate) și copiați numerele noi.

Valorile nu se schimbă

Verificați ciclul de citire al gateway-ului și limita de citiri a contorului. Ora de sistem a gateway-ului trebuie să fie corectă (setată manual sau prin SNTP), altfel marcajele de timp ale citirilor și debitul mediu sunt greșite.

Mică diferență față de site-ul gateway-ului

Valoarea în virgulă mobilă are aproximativ 7 cifre semnificative, astfel încât ultimele cifre pot diferi puțin de valoarea din interfața web a gateway-ului.

Dispozitive disponibile

solvimus MBUS-GEM – contor de apă Modul
Variabile personalizate
RegMeter (numeric) = 10Începutul intrării contorului (număr de serie, ora citirii, starea citirii) — cu Modbus multi slave 10, altfel numărul din coloana Register de pe rândul contorului din fila Meter
RegVolume (numeric) = 20Începutul valorii de volum (unitate m³) — numărul din coloana Register de pe rândul volumului din fila Meter
RegFlow (numeric) = 30Începutul valorii de debit (unitate m³/h, m³/min sau m³/s) — numărul din coloana Register de pe rândul debitului din fila Meter
Volum de apă Variabilă Doar citire

Indexul contorului în m³ cu trei zecimale; afișează o eroare când gateway-ul nu a putut citi contorul

Registru: H:RegVolume+4 Float Unitate: m³ numeric
Atribute de service
Numărul de serie al contoruluiNumărul de serie al contorului M-Bus — confirmă că șablonul citește contorul corect

Volum de apă

Citire
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);
Citire (modul)
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
Atribute de service
Meter serial number
TOSTRING(MODBUSR(H, RegMeter+0, UInt32))
Debit mediu de apă Variabilă Doar citire

Debitul mediu între ultimele două citiri ale gateway-ului, în l/h — pentru detectarea scurgerilor, de exemplu apă care curge noaptea

Registru: H:RegVolume+4, H:RegMeter+4 Float, UInt32 Unitate: l/h numeric

Debit mediu de apă

Citire
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);
Debit de apă Variabilă Doar citire

Debitul raportat de contor, în m³/h; se schimbă doar la fiecare citire a gateway-ului

Registru: H:RegFlow+4 Float Unitate: m³/h numeric

Debit de apă

Citire
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);
Conexiune: Modbus TCP • Slave ID: $[SlaveId]
Îmbunătățiri posibile (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.

Surse

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

Ați găsit o problemă la acest șablon de dispozitiv?

Spuneți-ne ce nu funcționează, ce lipsește sau cum ar trebui să se comporte șablonul. Feedbackul dvs. ne ajută să păstrăm catalogul corect.

Comunitate — neverificat

Doriți să folosiți acest șablon în TapHome Core?

Deschideți acest șablon în Customer Portal pentru a-l aplica într-una dintre locuințele dvs. sau pentru a propune o îmbunătățire și a o trimite înapoi în catalog.

Deschideți în portal