TapHome

solvimus MBUS-GEM – contor de energie termică M-Bus

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

TapHome nu are o interfață M-Bus proprie. Contoarele de energie termică cu M-Bus cu fir (EN 13757) se conectează printr-un gateway care convertește M-Bus în Modbus, iar TapHome le citește apoi ca dispozitive Modbus TCP. Acest șablon al comunității folosește gateway-ul solvimus MBUS-GEM (MBUS-GE20M, MBUS-GE80M, MBUS-GE125M, MBUS-GE250M, MBUS-GE500M): gateway-ul citește contoarele de pe propriul M-Bus și le oferă valorile ca server Modbus TCP pe portul 502.

Șablonul citește un contor de energie termică (sau un contor combinat de căldură și răcire): energia termică în kWh, volumul apei de încălzire, puterea termică, debitul și temperaturile de tur și de retur. Un modul importat reprezintă un contor; pentru fiecare contor în plus, șablonul se importă din nou. Energia termică este o variabilă simplă, nu un contor de electricitate, așa că TapHome nu o include niciodată în consumul de electricitate.

Șablon al comunității — încă netestat cu TapHome pe un gateway. Șablonul a fost scris după manualul de utilizare MBUS-GEM și nu a rulat pe un gateway, un contor de energie termică sau un simulator. Numerele sale de registru sunt provizorii și trebuie înlocuite cu numerele pe care gateway-ul le afișează pentru contorul dumneavoastră (vezi Configurare). Feedbackul din teren este binevenit. Descărcați XML-ul de pe această pagină sau obțineți-l din portalul TapHome: solvimus MBUS-GEM – M-Bus heat meter — șablon al comunității, și importați-l ca modul nou.

De ce aveți nevoie

  • Gateway solvimus MBUS-GEM — MBUS-GE20M (20 de sarcini unitare), MBUS-GE80M (80), MBUS-GE125M (125), MBUS-GE250M (250) sau MBUS-GE500M (500). O sarcină unitară înseamnă de obicei un contor.
  • Un contor de energie termică cu M-Bus cu fir (EN 13757) pe M-Bus-ul gateway-ului, sau un contor combinat de căldură și răcire.
  • Gateway-ul și TapHome Core în aceeași rețea locală.

Conectarea hardware

MBUS-GEM se montează pe o șină DIN de 35 mm. Liniile M-Bus ale contoarelor merg la bornele cu șurub M-Bus ale gateway-ului, iar rețeaua la portul său Ethernet RJ45 (10/100 Mbit/s). Gateway-ul are nevoie de o alimentare externă în curent continuu: 21,6–24,5 V DC pentru MBUS-GE20M și MBUS-GE80M, 12–36 V DC pentru MBUS-GE125M, MBUS-GE250M și MBUS-GE500M. Pornește singur după conectarea alimentării.

Configurare

Adresa de rețea a gateway-ului

MBUS-GEM este livrat cu adresa IP statică 192.168.1.101 (mască de subrețea 255.255.255.0, gateway implicit 192.168.1.254). Pagina sa web de configurare se deschide la http://192.168.1.101/; la prima autentificare administratorul trebuie să schimbe parola. Instrumentul solvimus Netdiscover găsește gateway-ul în rețea și îi schimbă adresa IP, masca de subrețea și gateway-ul implicit sau îl comută pe DHCP. Cu DHCP, adresa atribuită gateway-ului se găsește în serverul DHCP după adresa sa MAC, pe care o afișează și Netdiscover. Fără server DHCP, gateway-ul alege o adresă din intervalul 169.254.x.x.

Șablonul se adresează gateway-ului prin adresa sa IP, așa că atribuiți-i o adresă statică sau rezervați-i adresa în serverul DHCP.

Setările gateway-ului

Pe pagina web de configurare, fila Server:

  1. Setați Modbus mode pe Modbus TCP și lăsați Modbus port la 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. Activați Modbus multi slave (recomandat). Fiecare contor devine atunci un slave Modbus virtual separat, cu propria adresă (1–247), iar numerotarea registrelor reîncepe pentru fiecare contor, astfel încât contoarele de același tip primesc aceleași numere de registru.

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

Lista de contoare și ciclul de citire

Contorul de energie termică trebuie să fie în lista de contoare a gateway-ului (fila Meter), găsit prin scanare pe M-Bus sau creat manual. 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 stabilesc cât de recente sunt valorile din TapHome. Unele contoare M-Bus alimentate pe 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. Atribuie intrării contorului și fiecărei valori a contorului un bloc propriu de 10 holding registers și afișează începutul fiecărui bloc în coloana Register din fila Meter. Ordinea valorilor urmează ordinea în care contorul își trimite înregistrările M-Bus, deci depinde de modelul contorului.

SetareCe introduceți
Adresa IPAdresa gateway-ului
SlaveIdCu multi slave: numărul din coloana Register de pe rândul contorului. Fără multi slave: 255
RegMeterCu 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
RegEnergy, RegVolume, RegPower, RegFlow, RegFlowTemp, RegReturnTempNumărul din coloana Register de pe rândul valorii corespunzătoare. Coloanele Description și Unit din fila Meter arată care rând este care

Adresa IP și SlaveId sunt cerute la import; cele șapte valori Reg… sunt variabile ale modulului. Valorile lor implicite (10, 20, 30 … 70) sunt provizorii: 10 și 20 corespund modului de test al gateway-ului, celelalte doar continuă din 10 în 10. Suprascrieți-le întotdeauna.

Fiecare dispozitiv verifică tipul intrării și unitatea blocului său înainte de a afișa o valoare. Un număr greșit produce pe dispozitiv o eroare care numește variabila modulului, de exemplu RegPower does not point to a power value … – copy the Register number of this value from the gateway Meter tab.

Verificarea conexiunii

Cu Modbus test activat în fila Server, gateway-ul oferă date de test statice: intrarea contorului la registrul 10 și o valoare de energie de 1234,5678 Wh la registrul 20. Cu variabilele implicite ale modulului, Energie termică afișează atunci 1,2 kWh cu un avertisment că mediul contorului de test nu este căldură (contorul de test este un contor de electricitate). Aceasta dovedește că adresa IP, portul, adresa slave, numerele de registru și ordinea cuvintelor sunt corecte. Celelalte dispozitive raportează erori, deoarece datele de test nu au alte valori. Dezactivați apoi modul de test.

Funcțiile dispozitivului

DispozitivUnitateCe afișează
Energie termicăkWhEnergia termică cumulată, convertită din Wh sau J și rotunjită la 0,1 kWh
Volumul apei de încălzirem³Volumul cumulat al apei de încălzire
Putere termicăkWPuterea termică actuală, convertită din W sau J/h
Debitm³/hDebitul actual, convertit din m³/min sau m³/s când contorul trimite aceste unități
Temperatura de tur°CTemperatura de tur a circuitului de încălzire
Temperatura de retur°CTemperatura de retur a circuitului de încălzire

Starea contorului

Energie termică urmărește și contorul însuși. Afișează o eroare când RegMeter nu indică o intrare de contor sau când gateway-ul nu a putut citi contorul la ultima citire, și un avertisment când nu toate valorile au fost actualizate sau când mediul contorului nu este nici căldură, nici răcire. Are două atribute de service:

Atribut de serviceDescriere
Numărul de serie al contoruluiNumărul de serie al contorului, pentru a verifica dacă modulul citește contorul corect
Ultima citire a contoruluiMinute de la ultima citire a contorului de către gateway

Toate valorile se schimbă doar la fiecare citire a gateway-ului; dispozitivele interoghează gateway-ul la fiecare 15 s.

Depanare

Nicio comunicare

Verificați că Modbus este activat în fila Server, că portul este 502 de ambele părți și că nu îl blochează un firewall. TapHome și gateway-ul trebuie să fie în aceeași subrețea sau să aibă o rută funcțională; ajută un ping către gateway. Folosiți apoi verificarea conexiunii descrisă mai sus.

Eroare care numește o variabilă a modulului

Numărul din acea variabilă indică un bloc de alt tip sau de altă unitate. Copiați din nou numărul Register din fila Meter; cu multi slave verificați și SlaveId.

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 vechimea ultimei citiri este greșită.

Abatere mică față de valoarea de pe pagina web a gateway-ului

Șablonul citește valoarea în virgulă mobilă, care are aproximativ 7 cifre semnificative. Reîncărcați fila Meter a gateway-ului înainte de comparare.

Alți clienți Modbus pe același gateway

Gateway-ul deservește simultan cel mult cinci conexiuni Modbus TCP; la depășirea limitei o închide pe cea mai veche. Țineți cont de acest lucru când un sistem de management al clădirii sau un afișaj citește același gateway.

Dispozitive disponibile

solvimus MBUS-GEM – heat meter Modul
Variabile personalizate
RegMeter (numeric) = 10Începutul intrării contorului (număr de serie, ora citirii, starea citirii) — 10 cu Modbus multi slave, altfel numărul din coloana Register de pe rândul contorului din fila Meter a gateway-ului
RegEnergy (numeric) = 20Începutul valorii de energie (Wh sau J) — numărul din coloana Register de pe rândul ei din fila Meter a gateway-ului
RegVolume (numeric) = 30Începutul valorii de volum (m³) — numărul din coloana Register de pe rândul ei din fila Meter a gateway-ului
RegPower (numeric) = 40Începutul valorii de putere (W sau J/h) — numărul din coloana Register de pe rândul ei din fila Meter a gateway-ului
RegFlow (numeric) = 50Începutul valorii de debit (m³/h, m³/min sau m³/s) — numărul din coloana Register de pe rândul ei din fila Meter a gateway-ului
RegFlowTemp (numeric) = 60Începutul valorii temperaturii de tur (°C) — numărul din coloana Register de pe rândul ei din fila Meter a gateway-ului
RegReturnTemp (numeric) = 70Începutul valorii temperaturii de retur (°C) — numărul din coloana Register de pe rândul ei din fila Meter a gateway-ului
Energie termică Variabilă Doar citire

Energia termică cumulată a contorului în kWh; semnalează și când gateway-ul nu a putut citi contorul sau valorile nu sunt actualizate

Registru: H:RegEnergy+4 Float Unitate: kWh
Atribute de service
Numărul de serie al contoruluiNumărul de serie al contorului, pentru a verifica dacă modulul citește contorul corect
Ultima citire a contoruluiMinute de la ultima citire a contorului de către gateway

Energie termică

Citire
VAR info := MODBUSR(H, RegEnergy+7, UInt16);
VAR unit := GETBITS(info, 0, 8);
VAR factor := SWITCH(unit, 5, 1000, 6, 3600000, 0);
IF GETBITS(info, 8, 8) != 0 OR factor = 0
    ADDERROR(1, "RegEnergy does not point to an energy 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(ROUND(MODBUSR(H, RegEnergy+4, Float) / factor * 10) / 10);
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 != 4 AND medium != 10 AND medium != 11 AND medium != 12 AND medium != 13
        ADDWARNING(2, "RegMeter points to a meter with medium code " + TOSTRING(medium) + ", which is not a heat meter – check that RegMeter and SlaveId belong to the heat 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))
Last meter readout
DATETIME t := NOW();
VAR ts := MODBUSR(H, RegMeter+4, UInt32);
IF(ts = 0, "No readout yet", TOSTRING(ROUND((t.UNIXTIME - ts) / 60)) + " min ago")
Volumul apei de încălzire Variabilă Doar citire

Volumul cumulat al apei de încălzire care a trecut prin contor, în m³

Registru: H:RegVolume+4 Float Unitate: m³

Volumul apei de încălzire

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);
Putere termică Variabilă Doar citire
Registru: H:RegPower+4 Float Unitate: kW

Putere termică

Citire
VAR info := MODBUSR(H, RegPower+7, UInt16);
VAR unit := GETBITS(info, 0, 8);
VAR factor := SWITCH(unit, 13, 1000, 14, 3600000, 0);
IF GETBITS(info, 8, 8) != 0 OR factor = 0
    ADDERROR(1, "RegPower does not point to a power 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, RegPower+4, Float) / factor);
Debit Variabilă Doar citire
Registru: H:RegFlow+4 Float Unitate: m³/h

Debit

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);
Temperatura de tur Senzor de temperatură Doar citire

Temperatura de tur a circuitului de încălzire măsurată de contor

Registru: H:RegFlowTemp+4 Float Unitate: °C

Temperatura de tur

Citirea temperaturii
VAR info := MODBUSR(H, RegFlowTemp+7, UInt16);
VAR unit := GETBITS(info, 0, 8);
VAR factor := SWITCH(unit, 19, 1, 0);
IF GETBITS(info, 8, 8) != 0 OR factor = 0
    ADDERROR(1, "RegFlowTemp does not point to a temperature value in °C (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, RegFlowTemp+4, Float) * factor);
Temperatura de retur Senzor de temperatură Doar citire

Temperatura de retur a circuitului de încălzire măsurată de contor

Registru: H:RegReturnTemp+4 Float Unitate: °C

Temperatura de retur

Citirea temperaturii
VAR info := MODBUSR(H, RegReturnTemp+7, UInt16);
VAR unit := GETBITS(info, 0, 8);
VAR factor := SWITCH(unit, 19, 1, 0);
IF GETBITS(info, 8, 8) != 0 OR factor = 0
    ADDERROR(1, "RegReturnTemp does not point to a temperature value in °C (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, RegReturnTemp+4, Float) * factor);
Conexiune: Modbus TCP • Slave ID: $[SlaveId]
Îmbunătățiri posibile (6)
  • H:RegX+0 … H:RegX+3, H:RegX+6 Unscaled 64-bit meter value with scaling factor — The manual prefers the INT64 value with its power-of-ten scaling factor for exact billing; the template reads the FLOAT32 value (about 7 significant digits).
  • value block with unit K (code 20) Temperature difference — Many heat meters also send the temperature difference between flow and return; it would be one more value block.
  • second energy value block (combined heat/cooling meter, medium 13) Cooling energy — A combined heat/cooling meter sends a separate cooling energy value; the template reads one energy value.
  • value blocks with a storage number Historic meter values — Stored values such as the reading on the billing date appear as further value rows in the Meter tab.
  • H:RegX+8 Meter value timestamp — UNIX time the meter provides for each value (0 if none); the template uses the readout time of the meter entry instead.
  • H:0 … H:9 (slave 255) Gateway device entry — Serial number, software version and system time of the gateway itself.

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