Products/M-Center/M-Bus to Modbus TCP

M-CenterApplication

M-Bus to Modbus TCP: all meters via one register map

Controllers, PLCs and control systems almost always speak Modbus TCP. With the Modbus TCP server licence, the EMU M-Center provides the values of all M-Bus meters via Modbus TCP. The register addresses follow a fixed table by OBIS code.

Key facts

  • Port 502, one Modbus device address per meter, big endian.
  • Every value can be read as float32 and as uint64.
  • With an OBIS code entered, every reading sits at a fixed address, regardless of the meter manufacturer.
  • Status registers show whether the last readout of a meter succeeded.
  • Licence Modbus TCP server (M-Bus to Modbus TCP): article number 210.300.04.
2885.6Professional IIDevice 9 · SN 22090156
1412.3Professional IIDevice 10 · SN 22090157
3207.9Professional IIDevice 11 · SN 22090158
EMU M-CenterM-Bus master · Modbus TCP server · 10:2C:EF:02:6C:B9
EMU M-CenterModbus TCP server
OBIS 1-0:1.8.0 → register 1000
Device 9SN 22090156–
Device 10SN 22090157–
Device 11SN 22090158–
PLC / control systemModbus TCP client · 192.168.1.20
Values in the PLC
Device 9Import total–
Device 10Import total–
Device 11Import total–
M-Bus request

The M-Center polls each Professional II over the two-wire line (REQ_UD2). The meter responds with its readings (RSP_UD).

Simplified illustration. Serial numbers, addresses and values are examples. In operation, the M-Center reads every 15 minutes by default.

Connection parameters

ParameterValue
TCP port502
Device address (slave ID)the «Modbus TCP Server device number» of the meter in the M-Center
Byte orderBig endian
Word orderMSB → LSB
Register numberingfrom 1

Every meter in the M-Center gets its own device address. The target system therefore does not read one large register block but addresses each meter by its address, as on a Modbus line with many devices.

The register numbers in the manual start at 1. Some programs expect the address from 0, i.e. 1029 instead of 1030. Check the numbering once against a known meter reading.

Two routes to a reading

By register number of the meter

The n-th register of a meter is at 12000 + 30 × n (float32) and 12002 + 30 × n (uint64). Register 0 is therefore at 12000, register 3 at 12090. This works without further settings, but the position depends on the meter model.

By OBIS code

Enter the OBIS code for the registers in the M-Center. Every reading then sits at a fixed address, no matter which meter delivers it. An extract from the table:

OBIS codeReadingfloat32uint64
1-0:1.8.0Active energy import, total10001002
1-0:1.8.1Active energy import, tariff 110301032
1-0:1.8.2Active energy import, tariff 210601062
1-0:2.8.0Active energy export, total11501152
1-0:3.8.0Reactive energy import, total13001302
1-0:4.8.0Reactive energy export, total14501452
1-0:1.7.0Active power import, total17501752
1-0:2.7.0Active power export, total18701872
1-0:11.7.0Current, total23502352
1-0:32.7.0Voltage phase 124702472
1-0:14.7.0Frequency26502652
8-0:1.0.0Volume cold water30003002
9-0:1.0.0Volume hot water30303032
7-0:3.0.0Volume gas30603062
5-0:1.0.0Energy cooling meter40004002
4-0:1.0.0Meter reading heat meter40604062
Extract. The complete table with tariffs, phases and temperatures is in the M-Center manual, chapter Modbus Server.

The unit corresponds to the unit set for the register in the M-Center. A divisor entered there is already applied.

Status registers: did the readout succeed?

Informationfloat32uint64
Readout interval1188011882
Status code1191011912
Timestamp of the last readout attempt1194011942
Timestamp of the last successful readout1197011972

Read these registers as uint64, because float32 only approximates large numbers. Status code 1 means: last readout successful. 2: last readout not successful. 3: readout successful, but the meter itself reports a fault. Anyone who reads these registers notices immediately when a meter stops responding.

Example with modpoll

An EMU Professional II has device address 9 in the M-Center. Its register 3 carries the OBIS code 1-0:1.8.1. Both queries return the import tariff 1 reading as a floating-point number:

modpoll -1 -m tcp -t 4:float -i -f -r 1030 -a 9 -c 1 -p 502 <M-Center-IP>
modpoll -1 -m tcp -t 4:float -i -f -r 12090 -a 9 -c 1 -p 502 <M-Center-IP>

Do not confuse: Modbus TCP client

Licence 210.300.04 turns the M-Center into a Modbus TCP server: other systems read values from the M-Center. Licence 210.200.03 is the opposite direction. With it, the M-Center itself reads up to 20 devices via Modbus TCP, for example charging stations or inverters.

Order numbers

ItemArticle numberShop
M-Center for 20 M-Bus devices210.000.00Shop: EMU M-Center 210.000.00 →
M-Bus licence 20 → 250 devices210.020.03Shop: M-Center M-Bus-Lizenz 20 → 250 Geräte 210.020.03 →
Modbus TCP licence (M-Bus to Modbus TCP)210.300.04
Modbus TCP licence 20 devices (client)210.200.03

Order online in the EMU Metering shop.

Frequently asked questions


Why float32 and uint64?

float32 is convenient but rounds large meter readings. uint64 delivers the value without rounding. For billing and status registers use uint64.

Do I need to know the register position for every meter?

No, if you enter OBIS codes. Then, for example, the import tariff 1 reading is at address 1030 for every meter; only the device address changes.

Can I also query Modbus RTU meters via Modbus TCP?

The M-Center reads up to 64 Modbus RTU devices via its two RS-485 interfaces. With an OBIS code entered, their values sit in the same register map.

Read more


SEITEEMU M-CenterProduct SEITEM-Center in LoxoneGuide SEITEM-Center in Home AssistantGuide PDFM-Center manualPDF

Connect meters to a PLC?


Send us the meter list. We will help with addresses, OBIS codes and licences.

Phone
+41 (0)41 545 03 00

Technical support
helpdesk [at] emuag.ch
Support form →