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
| Eingabefeld | Was einzutragen ist | Beispiel |
|---|---|---|
| IP-Adresse | IP des M-Bus-Gateway | 192.168.0.150 |
| Port | M-Bus-TCP-Port | 10001 (Herstellerstandard bei Relay / Sentec / ETM u. ä.) |
| Baudrate (baudrate) | Gateway ↔ Zähler | 2400 (Standard) / 9600 |
| Antwort-Timeout (request-timeout) | Wartezeit auf Zählerantwort (ms) | 5000 |
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
| Notation | Bedeutung |
|---|---|
addr:5 | Primary address 5 |
select:12345678:KAM:01:04 | Secondary-Auswahl — <id>:<mfg>:<ver>:<med> |
select:12345678 | Nur 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.
| Notation | Bedeutung |
|---|---|
1:0 | Feld 0 von Datenblock 1 (meist der „aktuelle Wert“) |
1:unit | Einheit von Datenblock 1 (Zeichenkette) |
1:tariff | Tariff von Datenblock 1 (Tarifkennung) |
1:storage | Storage 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-Wert | Datenformat | Formatzusatz |
|---|---|---|
| Zählerstand / Messwert (Gleitkomma) | Float | REAL |
| Ganzzahliger Zähler | Integer | DW (32-bit) oder (leer) |
| Einheit / Herstellercode | String | STR[8] |
| Tariff- / Storage-Nummer | Integer | (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 / Meldung | Mögliche Ursache | Lösung |
|---|---|---|
| „Address not responding“ | Primary nicht vergeben / Adresskonflikt | Mit 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) | Skalierungsfehler | M-Bus skaliert normalerweise automatisch. Bleibt der Wert falsch, per Formel korrigieren |
| Häufige „Timeout“-Meldungen | Baudraten stimmen nicht überein | Baudrate zwischen Gateway und Zähler angleichen (meist 2400) |
| Datenblocknummer unklar | Reihenfolge ist je Zähler unterschiedlich | Mit der „M-Bus telegram view“ des Gateway die Rohantwort ansehen und die Indizes zuordnen |
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-Name | Adresse | Datenformat | Formatzusatz |
|---|---|---|---|
| Wärmemenge kumuliert (kWh) | addr:5:1:0 | Float | REAL |
| Durchflussmenge kumuliert (m³) | addr:5:2:0 | Float | REAL |
| Momentanleistung (kW) | addr:5:3:0 | Float | REAL |
| Vorlauftemperatur (°C) | addr:5:4:0 | Float | REAL |
| Rücklauftemperatur (°C) | addr:5:5:0 | Float | REAL |
| Seriennummer des Zählers | addr:5:0:id | String | STR[8] |
Ausführlichere Beispiele / automatisierte Registrierung
Siehe die M-Bus-Beispiele unter Erweitert — REST API.