· M-Bus· wired· EN 13757· protokol· master-slave· bus· UART· varmemåler· måler
M-Bus wired protokol — master-slave, signalniveauer og topologi
M-Bus wired (EN 13757-2): master-slave topologi, signalniveauer, multidrop bus, adressering, kommunikationssekvens og forskellen fra wM-Bus trådløs.
Af M-Bus Gateway
M-Bus wired er forgængeren til wM-Bus — stadig udbredt i ældre bygninger og varmecentraler. Her er den tekniske opbygning.
M-Bus vs. wM-Bus: Hvornår bruger man hvad?
M-Bus wired (EN 13757-2):
→ 1990'erne–2010: Standard i nye bygninger
→ 2-leder bus (signalkabel)
→ Op til 250 målere pr. master
→ Rækkevidde: 1.000m (standard), 4.000m (repeatere)
→ Hastighed: 300, 2.400 eller 9.600 baud
→ Bruges stadig i: Fjernvarmecentraler, store installationer
→ Kræver kabling — ikke praktisk til renovering
wM-Bus (EN 13757-4):
→ 2010+: Standard i nye installationer
→ Trådløs 868 MHz (Norden: 169 MHz alternativ)
→ Rækkevidde: 50-200m indendørs
→ Ingen kabling — god til renovering og HCA-skift
Hvornår bruge M-Bus wired?
→ Eksisterende kablede installationer (ældre ejendomme)
→ Varmecentraler (fordelingsstation med mange målere i kælder)
→ Industri (EMI-miljøer hvor radio ikke er pålideligt)
→ Varmemålere der mangler radio-modul
Signallag: M-Bus elektrisk protokol
M-Bus bruger current loop signalering (ikke RS-232 spænding):
Hviletilstand (Mark/Logisk 1):
→ Master sender: 36V DC på bus
→ Ström: 1mA (hvile)
Logisk 0 (Space):
→ Master sender: 36V → 24V (spændigsfald)
→ Slave detekterer spændingsfald som logisk 0
Slave → Master kommunikation:
→ Slave modulerer strøm (ikke spænding)
→ Logisk 1: 1,5mA
→ Logisk 0: 11-20mA (current loop modulation)
→ Master detekterer strømvariationer via shunt-resistor
Elektrisk karakteristik:
Busspænding: 36V DC (±5V)
Load pr. slave: Max 1,5mA hvile + 20mA peak
Max belastning: 250 mA → max ~125 målere pr. master ved 2mA pr. måler
Kabel: Standard telekabel (0,8mm kobber), IKKE UTP Ethernet
Polaritet: Ikke-polaritetsafhængig (kan vendes 180°)
Adressering: Primær og sekundær
Primær adressering (1 byte, 0-250):
→ Simpel men begrænset: Kun 250 adresser pr. master
→ Konfigureres af installatør
→ Brugt til: Enkle installationer, direkte aflæsning
Sekundær adressering (8 bytes):
→ Fabrikant-ID (2 bytes) + Serienummer (4 bytes) + Version + Type
→ Global unik adresse (samme som wM-Bus)
→ Wildcard-søgning: Frekvensinddelingsalgoritme (binary search)
→ Nødvendig ved: Mere end 250 målere, auto-discovery
Auto-discovery (sekundær):
1. Master sender WILDCARD (FF FF FF FF FF FF FF FF)
2. Alle målere svarer
3. Master deler bitvis → identificerer én måler ad gangen
4. Gentages til alle målere identificeret
Tidsforbrug: ~2-5 min pr. 100 målere
Kommunikationssekvens
M-Bus kommunikation (master initieret — slave svarer aldrig uopfordret):
1. Master → Slave: REQ_UD2 (Request User Data 2)
→ Start byte: 10h
→ C-felt: 5Bh (REQ_UD2)
→ Adresse: 05h (primær adresse 5)
→ Checksum
→ Stop byte: 16h
2. Slave → Master: RSP_UD (Response User Data)
→ L-felt: Payload-længde
→ Data records (DIB+VIB+data) — samme format som wM-Bus
→ Checksum
→ Stop byte: 16h
Timing:
→ Master venter 330ms (standard) på svar
→ Lange payloads: 500ms–2s
→ Polling alle 60 målere ved 2400 baud: ~3 min
Python M-Bus library:
pip install pyMeterBus # Implements EN 13757-3 application layer
Topologi og kabler
Star-topologi (anbefalet til nye installationer):
Master → Hub → Slave 1
→ Slave 2
→ Slave 3
Fordel: Nemmere fejlfinding, isoleret kabesfejl
Bus-topologi (eksisterende installationer):
Master ─── Slave 1 ─── Slave 2 ─── Slave 3
Fordel: Mindre kabling
Ulempe: Ét kabelbrud = alle mister forbindelse
Terminering:
→ IKKE nødvendig (current loop, ikke differentielt signal)
→ Ingen pullup/pulldown resistorer nødvendige
Kabellængde vs. impedans:
0-1.000m: Standardkabel (0,8mm)
1-4.000m: Kræver repeater ELLER tykkere kabel (1,5mm)
> 4.000m: Anbefal wM-Bus i stedet — trådløs er lettere at udvide
Multiplexer til M-Bus:
→ En enkelt RS-232/USB serial port er master
→ USB-til-M-Bus converter: ex. Relay MBus Master
→ 1 USB = op til 32 eller 250 slaver (afhænger af converter)
Integration med platformen
# Platform: Læs M-Bus wired via serial port
# (Brugt ved fjernvarmemålere i kælder-central)
import serial
import meterbus # pyMeterBus library
async def read_mbus_meter(
port: str, # "/dev/ttyUSB1" (separat fra wM-Bus dongle /dev/wmbus)
address: int, # Primær M-Bus adresse 0-250
) -> dict:
with serial.Serial(port, 2400, 8, "E", 1, timeout=1.0) as ser:
# Ping meter:
meterbus.send_ping_frame(ser, address)
frame = meterbus.load(meterbus.recv_frame(ser))
# Request data:
meterbus.send_request_frame(ser, address)
data_frame = meterbus.load(meterbus.recv_frame(ser))
return {
"address": address,
"manufacturer": data_frame.header.manufacturer_id.decode(),
"serial": data_frame.header.identification_no,
"records": [
{"value": r.value, "unit": r.unit}
for r in data_frame.records
],
}
Konklusion
M-Bus wired er stadig relevant i ældre og store installationer med eksisterende kabling. Protokollen bruger current loop signalering på 2-leder bus — polaritetsuafhængig og robust. Sekundær adressering via 8-byte global adresse er identisk med wM-Bus header. For nye installationer foretrækkes wM-Bus trådløs (ingen kabling, men kortere rækkevidde).