TapHome

solvimus MBUS-GEM – wodomierz M-Bus

Modbus TCP
Dodane przez
Ostatnia aktualizacja: 11. 2026
solvimus MBUS-GEM – wodomierz M-Bus

TapHome nie ma własnego interfejsu M-Bus. Przewodowy wodomierz M-Bus podłącza się przez bramkę z M-Bus na Modbus, a TapHome odczytuje go jako urządzenie Modbus TCP. Ten szablon korzysta z bramki solvimus MBUS-GEM (MBUS-GE20M, MBUS-GE80M, MBUS-GE125M, MBUS-GE250M, MBUS-GE500M): bramka odczytuje liczniki na swojej magistrali M-Bus i udostępnia ich dane jako serwer Modbus TCP na porcie 502. Jeden zaimportowany moduł to jeden wodomierz; dla kolejnych liczników szablon importuje się ponownie.

Szablon odczytuje objętość wody w m³, przepływ zgłaszany przez sam licznik i średni przepływ między dwoma odczytami bramki w l/h. Średni przepływ służy do wykrywania wycieków: smart rules w TapHome mogą porównywać go z limitami, na przykład aby włączyć alarm, gdy woda płynie także w nocy.

Szablon społeczności — jeszcze nie testowany na sprzęcie. Szablon powstał w portalu TapHome na podstawie instrukcji obsługi solvimus MBUS-GEM (wersja 1.31). Nie działał ani na prawdziwej bramce z licznikiem, ani na symulatorze. Jego numery rejestrów (RegMeter, RegVolume, RegFlow) są wartościami zastępczymi: po imporcie instalator ustawia je według kolumny Register na karcie Meter bramki. Zanim zaczniesz polegać na wartościach, sprawdź połączenie trybem testowym bramki (zob. Konfiguracja); doświadczenia z praktyki są mile widziane. Pobierz XML na tej stronie lub z portalu TapHome: solvimus MBUS-GEM – wodomierz M-Bus — szablon społeczności, i zaimportuj go jako nowy moduł.

Czego potrzebujesz

  • Bramki solvimus MBUS-GEM dla przewodowego M-Bus z Modbus TCP: MBUS-GE20M, MBUS-GE80M, MBUS-GE125M, MBUS-GE250M lub MBUS-GE500M. MBUS-GEWM to wariant dla bezprzewodowego M-Bus i ten szablon go nie obejmuje.
  • Przewodowego wodomierza M-Bus (EN 13757), który bramka potrafi odczytać. Ultradźwiękowe wodomierze zwykle zgłaszają też przepływ.
  • Bramki i jednostki sterującej Core w tej samej sieci lokalnej.

Połączenie sprzętowe

MBUS-GEM montuje się na szynie DIN 35 mm; ma zaciski śrubowe dla M-Bus i zasilania oraz port Ethernet RJ45 (10/100 Mbit/s).

ModelObciążenia jednostkowe M-BusSzerokośćZasilaniePrędkość M-Bus
MBUS-GE20M202 moduły21,6–24,5 VDCmaks. 19200 bps
MBUS-GE80M802 moduły21,6–24,5 VDCmaks. 19200 bps
MBUS-GE125M1253 moduły12–36 VDCmaks. 9600 bps
MBUS-GE250M2503 moduły12–36 VDCmaks. 9600 bps
MBUS-GE500M5003 moduły12–36 VDCmaks. 9600 bps

Jedno obciążenie jednostkowe (UL) odpowiada zwykle jednemu licznikowi.

  1. Podłącz linię M-Bus wodomierza do zacisków M-Bus bramki.
  2. Podłącz bramkę kablem Ethernet do sieci lokalnej.
  3. Podłącz zewnętrzny zasilacz 24 VDC. Bramka uruchomi się sama.

Konfiguracja

Sieć i lista liczników

Bramka jest dostarczana ze statycznym adresem IP 192.168.1.101 (maska podsieci 255.255.255.0, brama sieciowa 192.168.1.254); jej interfejs WWW otwiera się pod http://192.168.1.101/. Przy pierwszym logowaniu administrator musi zmienić hasło. Narzędzie Netdiscover firmy solvimus znajduje bramkę w sieci i potrafi przełączyć ją na inny adres statyczny lub na DHCP; przy DHCP przydzielony adres znajdziesz w serwerze DHCP po adresie MAC bramki. Bez serwera DHCP bramka wybiera adres z zakresu 169.254.x.x. Szablon łączy się z bramką po adresie IP, dlatego nadaj jej stały adres lub rezerwację DHCP.

W interfejsie WWW wyszukaj liczniki na magistrali M-Bus, aby wodomierz pojawił się na liście liczników na karcie Meter razem ze swoimi wartościami (objętość i przepływ, jeśli licznik go zgłasza).

Ustawienia Modbus na karcie Server

  1. Ustaw Modbus mode na Modbus TCP i pozostaw Modbus port na 502.
  2. Pozostaw Modbus float only wyłączone. Ten tryb usuwa pola typu i jednostki, które sprawdza szablon.
  3. Pozostaw Modbus swap wyłączone. Szablon oczekuje domyślnej kolejności słów (najbardziej znaczące słowo pierwsze).
  4. Zalecane jest włączenie Modbus multi slave. Każdy licznik staje się wtedy osobnym wirtualnym slave Modbus z własnym adresem (1–247), a numeracja rejestrów zaczyna się od nowa dla każdego licznika, więc liczniki tego samego typu mają te same numery rejestrów.

Po włączeniu lub wyłączeniu multi slave adresy na karcie Meter trzeba przydzielić ponownie (menu kontekstowe Allocate).

Cykl odczytu

Bramka odczytuje liczniki niezależnie od zapytań Modbus: według Readout cycle na karcie Configuration lub według Cycle (w sekundach) danego licznika na karcie Meter. Te ustawienia decydują o tym, jak świeże są wartości w TapHome. Niektóre bateryjne liczniki M-Bus pozwalają tylko na ograniczoną liczbę odczytów dziennie; zanim wybierzesz krótki cykl, sprawdź kartę katalogową licznika.

Ustawienia szablonu po imporcie

Bramka nie ma stałej tabeli rejestrów. Każdy wpis licznika i każda wartość licznika dostaje własny blok 10 rejestrów holding, a początek każdego bloku pokazuje kolumna Register na karcie Meter. Kolejność wartości odpowiada kolejności, w jakiej licznik wysyła swoje rekordy M-Bus, więc różni się między modelami liczników. Dlatego szablon przechowuje początek każdego bloku w zmiennej modułu i z niej oblicza każdy adres rejestru.

UstawienieGdzieWartość
Adres IPParametr importuAdres bramki (okno importu proponuje 192.168.1.100; bramka jest dostarczana z 192.168.1.101)
SlaveIdParametr importu (domyślnie 1)Z multi slave: liczba w kolumnie Register w wierszu licznika. Bez multi slave: 255
RegMeterZmienna modułu (domyślnie 10)Z multi slave: 10 (wpis licznika zaczyna się w każdym wirtualnym slave od 10). Bez multi slave: liczba w kolumnie Register w wierszu licznika
RegVolumeZmienna modułu (domyślnie 20)Liczba w kolumnie Register w wierszu objętości (jednostka m³)
RegFlowZmienna modułu (domyślnie 30)Liczba w kolumnie Register w wierszu przepływu (jednostka m³/h, m³/min lub m³/s)

Wartości domyślne 10, 20 i 30 pasują tylko do układu trybu testowego bramki; zastąp je numerami prawdziwego licznika.

Każde urządzenie sprawdza typ wpisu i jednostkę swojego bloku. Błędny numer pokazuje na urządzeniu błąd z nazwą zmiennej modułu, na przykład RegVolume does not point to a volume value in m³ … copy the Register number of this value from the gateway Meter tab.

Sprawdzenie połączenia przez Modbus test

Gdy na karcie Server włączony jest Modbus test, bramka udostępnia statyczne dane testowe: wpis licznika w rejestrze 10 i wartość energii (jednostka Wh, 1234,5678 Wh) w rejestrze 20. Przy domyślnych zmiennych modułu Objętość wody przyjmuje wtedy rejestr 10 jako wpis licznika (z ostrzeżeniem, że medium licznika testowego, kod 2, nie jest wodą) i zgłasza, że rejestr 20 nie jest wartością objętości (kod jednostki 5). Jeśli widzisz dokładnie te komunikaty, adres IP, port, adres slave i numery rejestrów docierają do bramki tak, jak powinny. Potem wyłącz tryb testowy i ustaw zmienne modułu dla prawdziwego licznika.

Możliwości urządzeń

Wszystkie trzy urządzenia są tylko do odczytu i są odczytywane co 15 s. Ich wartości zmieniają się tylko wtedy, gdy bramka odczyta licznik, w swoim cyklu odczytu.

Objętość wody

Objętość wody to stan wodomierza w m³ z dokładnością do trzech miejsc po przecinku, odczytany jako skalowana wartość zmiennoprzecinkowa z bloku objętości. Urządzenie sprawdza też wpis licznika:

KomunikatTypZnaczenie
RegMeter does not point to a meter entry …BłądRegMeter wskazuje blok, który nie jest wpisem licznika
RegMeter points to a meter with medium code …, which is not a water meter …OstrzeżenieLicznik nie jest wodomierzem (akceptowane kody medium: woda, woda zimna, woda ciepła, woda gorąca i woda z podwójnym rejestrem) — sprawdź RegMeter i SlaveId
The gateway could not read the meter in its last readout …BłądSprawdź okablowanie M-Bus, adres licznika i listę liczników w bramce
Not all meter values were updated in the last gateway readoutOstrzeżenieOstatni odczyt nie był kompletny

Atrybut serwisowy Numer seryjny licznika pokazuje numer seryjny licznika M-Bus i pomaga potwierdzić, że szablon odczytuje właściwy licznik. Numer seryjny zawierający litery jest pokazywany jako 0.

Średni przepływ wody

Średni przepływ wody to przyrost objętości między dwoma ostatnimi odczytami bramki podzielony przez czas między ich znacznikami czasu, w l/h. Jest przeliczany tylko wtedy, gdy zmieni się znacznik czasu odczytu licznika, więc jest to średnia z jednego cyklu odczytu.

  • Po pierwszym odczycie, po ponownym uruchomieniu jednostki sterującej Core i po wyzerowaniu licznika (objętość mniejsza niż wcześniej) wartość wynosi 0 aż do następnego odczytu.
  • Jeśli bramka przestanie odczytywać licznik, zostaje ostatnia średnia; Objętość wody pokazuje wtedy błąd odczytu.

Urządzenie odczytuje ten sam blok objętości co Objętość wody. Samo wykrywanie wycieków — limity, godziny otwarcia, alarmy — ustawiasz za pomocą smart rules w TapHome; szablon dostarcza wartość.

Przepływ wody

Przepływ wody to przepływ zgłaszany przez sam licznik, przeliczony na m³/h (z m³/h, m³/min lub m³/s). Nie każdy wodomierz M-Bus zgłasza przepływ; liczniki ultradźwiękowe zwykle tak.

Rozwiązywanie problemów

Brak komunikacji

  • Sprawdź, czy bramka i jednostka sterująca Core są w tej samej sieci i czy bramka odpowiada na ping.
  • Sprawdź, czy Modbus jest włączony na karcie Server, czy port to 502 i czy nie blokuje go zapora sieciowa.
  • Użyj opisanego wyżej trybu testowego.
  • Bramka w konfiguracji standardowej przyjmuje jednocześnie do pięciu połączeń Modbus TCP; powyżej tego limitu nowe połączenie zamyka najstarsze.

Błąd podaje nazwę zmiennej modułu

Numer w tej zmiennej wskazuje blok innego typu lub jednostki. Przepisz numer ponownie z kolumny Register na karcie Meter; przy multi slave sprawdź też SlaveId. Po włączeniu lub wyłączeniu multi slave przydziel adresy ponownie (Allocate) i przepisz nowe numery.

Wartości się nie zmieniają

Sprawdź cykl odczytu bramki i limit odczytów licznika. Czas systemowy bramki musi być poprawny (ustawiony ręcznie lub przez SNTP), w przeciwnym razie znaczniki czasu odczytu i średni przepływ są błędne.

Niewielka różnica względem strony bramki

Wartość zmiennoprzecinkowa ma około 7 cyfr znaczących, więc ostatnie cyfry mogą się nieznacznie różnić od wartości w interfejsie WWW bramki.

Dostępne urządzenia

solvimus MBUS-GEM – wodomierz Moduł
Zmienne niestandardowe
RegMeter (numeric) = 10Początek wpisu licznika (numer seryjny, czas odczytu, stan odczytu) — przy Modbus multi slave 10, w przeciwnym razie liczba z kolumny Register w wierszu licznika na karcie Meter
RegVolume (numeric) = 20Początek wartości objętości (jednostka m³) — liczba z kolumny Register w wierszu objętości na karcie Meter
RegFlow (numeric) = 30Początek wartości przepływu (jednostka m³/h, m³/min lub m³/s) — liczba z kolumny Register w wierszu przepływu na karcie Meter
Objętość wody Zmienna Tylko do odczytu

Stan wodomierza w m³ z dokładnością do trzech miejsc po przecinku; pokazuje błąd, gdy bramka nie mogła odczytać licznika

Rejestr: H:RegVolume+4 Float Jednostka: m³ numeric
Atrybuty serwisowe
Numer seryjny licznikaNumer seryjny licznika M-Bus — potwierdza, że szablon odczytuje właściwy licznik

Objętość wody

Odczyt
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);
Odczyt (moduł)
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
Atrybuty serwisowe
Meter serial number
TOSTRING(MODBUSR(H, RegMeter+0, UInt32))
Średni przepływ wody Zmienna Tylko do odczytu

Średni przepływ między dwoma ostatnimi odczytami bramki w l/h — do wykrywania wycieków, na przykład gdy woda płynie w nocy

Rejestr: H:RegVolume+4, H:RegMeter+4 Float, UInt32 Jednostka: l/h numeric

Średni przepływ wody

Odczyt
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);
Przepływ wody Zmienna Tylko do odczytu

Przepływ zgłaszany przez sam licznik, w m³/h; zmienia się tylko przy każdym odczycie bramki

Rejestr: H:RegFlow+4 Float Jednostka: m³/h numeric

Przepływ wody

Odczyt
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);
Połączenie: Modbus TCP • Slave ID: $[SlaveId]
Możliwe ulepszenia (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.

Źródła

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

Znalazłeś problem z tym szablonem urządzenia?

Napisz nam, co nie działa, czego brakuje lub jak powinien zachowywać się szablon. Twoja opinia pomaga nam utrzymać katalog dokładnym.

Społeczność — niezweryfikowane

Chcesz tego użyć w swoim TapHome Core?

Otwórz ten szablon w portalu klienta, aby zastosować go w swoim domu, lub zaproponuj modyfikację i wyślij ją z powrotem do katalogu.

Otwórz w portalu