Zum Hauptinhalt springen

M-Bus (Zählererfassung)

M-Bus (Meter-Bus) ist ein nach EN 13757 standardisiertes Kommunikationsprotokoll speziell für die Zählererfassung von Versorgungsmedien. Hauptmarkt sind Wärmezähler, Gaszähler, Stromzähler und Wasserzähler.

Der M-Bus-Treiber des Gateway unterstützt M-Bus over TCP (also drahtlose oder drahtgebundene Zähler, die über ein M-Bus-Master-Gateway auf TCP umgesetzt werden).


Eingabewerte im Registrierungsformular

EingabefeldWas einzutragen istBeispiel
IP-AdresseIP des M-Bus-Gateway192.168.0.150
PortM-Bus-TCP-Port10001 (Herstellerstandard bei Relay / Sentec / ETM u. ä.)
Baudrate (baudrate)Gateway ↔ Zähler2400 (Standard) / 9600
Antwort-Timeout (request-timeout)Wartezeit auf Zählerantwort (ms)5000
Ein Zähler vs. mehrere Zähler

An einer M-Bus-Linie können bis zu 250 Zähler betrieben werden. Damit mehrere Zähler gleichzeitig unter einer einzigen „Verbindung“ registriert werden können, enthält die Tag-seitige Adressnotation die zählerbezogene Adresse (primary oder secondary).


PLC-Adressnotation der Tags

Jeder M-Bus-Zähler besitzt unterschiedliche „Records“ (Momentanwert, Zählerstand, Einheit usw.). Die Notation gliedert sich in die zwei Teile <meter>:<record>.

Zählerauswahl

NotationBedeutung
addr:5Primary address 5
select:12345678:KAM:01:04Secondary-Auswahl — <id>:<mfg>:<ver>:<med>
select:12345678Nur Secondary-ID (mfg/ver/med als Wildcard FF)

mfg ist der 3-stellige Herstellercode (z. B. KAM = Kamstrup), ver die Firmware-Version, med das Medium (1=Oil, 4=Heat, 7=Water usw.).

Record (Data-Block-Index)

Die Antwort eines Zählers enthält mehrere Datenblöcke (DIB/VIB), die der Reihe nach mit den Indizes 0, 1, 2, ... versehen sind. Das Gateway stellt sie über die Notation Index + Unterfeld bereit.

NotationBedeutung
1:0Feld 0 von Datenblock 1 (meist der „aktuelle Wert“)
1:unitEinheit von Datenblock 1 (Zeichenkette)
1:tariffTariff von Datenblock 1 (Tarifkennung)
1:storageStorage number von Datenblock 1

Beispiel für die vollständige Notation: addr:5:1:0 — Wert von Datenblock 1 des Zählers mit Primary 5.

Oder: select:12345678:KAM:01:04:3:0 — Wert von Datenblock 3 eines Kamstrup-Wärmezählers.


Zuordnung der Datenformate

M-Bus-WertDatenformatFormatzusatz
Zählerstand / Messwert (Gleitkomma)FloatREAL
Ganzzahliger ZählerIntegerDW (32-bit) oder (leer)
Einheit / HerstellercodeStringSTR[8]
Tariff- / Storage-NummerInteger(leer)

M-Bus-Zähler mischen verschiedene Kodierungen wie BCD, 32-Bit-Integer, 64-Bit-Integer oder IEEE-Gleitkomma. Da der Treiber anhand der DIB-/VIB-Header automatisch dekodiert und den „physikalischen Wert“ bereitstellt, genügt in den meisten Fällen Float : REAL.


Häufige Probleme und Lösungen

Symptom / MeldungMögliche UrsacheLösung
„Address not responding“Primary nicht vergeben / AdresskonfliktMit dem „M-Bus scan“ des Gateway die tatsächlich antwortenden Primary-Adressen ermitteln
„Invalid secondary“Tippfehler in einem der vier Secondary-Felder (id/mfg/ver/med)8-stellige Seriennummer auf dem Zählertypenschild und den dort angegebenen 3-stelligen mfg-Code erneut prüfen
Wert zu groß / zu klein (Faktor 1000)SkalierungsfehlerM-Bus skaliert normalerweise automatisch. Bleibt der Wert falsch, per Formel korrigieren
Häufige „Timeout“-MeldungenBaudraten stimmen nicht übereinBaudrate zwischen Gateway und Zähler angleichen (meist 2400)
Datenblocknummer unklarReihenfolge ist je Zähler unterschiedlichMit der „M-Bus telegram view“ des Gateway die Rohantwort ansehen und die Indizes zuordnen
Primary oder Secondary?

Bei bis zu 5–10 Zählern an einer Linie ist Primary die einfachere Wahl. Bei mehr als 100 Zählern oder in Systemen mit dynamisch wechselnden Primary-Adressen ist Secondary (auf Basis der Seriennummer) stabiler.


Häufig verwendete Beispiele

Standardregistrierung eines Wärmezählers (heat meter):

Tag-NameAdresseDatenformatFormatzusatz
Wärmemenge kumuliert (kWh)addr:5:1:0FloatREAL
Durchflussmenge kumuliert (m³)addr:5:2:0FloatREAL
Momentanleistung (kW)addr:5:3:0FloatREAL
Vorlauftemperatur (°C)addr:5:4:0FloatREAL
Rücklauftemperatur (°C)addr:5:5:0FloatREAL
Seriennummer des Zählersaddr:5:0:idStringSTR[8]

Ausführlichere Beispiele / automatisierte Registrierung

Siehe die M-Bus-Beispiele unter Erweitert — REST API.