- Home
- Modbus register maps
- Lovato Electric
- DMG7000 / DMG7500 / DMG8000 / DMG9000 power analyzers
Power meter (power analyzer) · Modbus register map
Lovato Electric DMG7000 / DMG7500 / DMG8000 / DMG9000 power analyzers Modbus register map
Updated 24 October 2026
The DMG7000-DMG9000 are Lovato's 96x96 panel power analyzers. They answer Modbus RTU, ASCII or TCP depending on the communication port used, and EXS4 Easy Branch current modules on the same channel appear as extra Modbus nodes. Measurements are fixed-point 32-bit integers sent high word first. This map covers voltages, currents, powers, power factor, frequency, unbalance, THD, max demand, hour counter, I/O status, the real-time clock and the reset, tariff and remote-variable commands.
This page lists 58 Modbus registers for the Lovato Electric DMG7000 / DMG7500 / DMG8000 / DMG9000 power analyzers — 10 writable — with the table, 0-based wire address, data type, word order, scale, units and access of each, re-typed from Lovato Electric’s own free documentation (linked below) and checked against it.
- Manufacturer
- Lovato Electric
- Model
- DMG7000 / DMG7500 / DMG8000 / DMG9000 power analyzers
- Equipment type
- Power meter (power analyzer)
- Registers
- 58 (10 writable)
- Transport
- Modbus RTU, Modbus ASCII, Modbus TCP
- Default unit ID
- 1
- Documented addressing
- 1-based (subtract 1 for the wire address)
- 32-bit word order
- ABCD high word first (big-endian)
- Also known as
- DMG7000, DMG7500, DMG8000, DMG9000, DMG 7000, DMG 8000, DMG 9000, Lovato DMG
Integration notes: Lovato Electric DMG7000 / DMG7500 / DMG8000 / DMG9000 power analyzers
Read the measurement block with function 04 (or 03) starting at wire address 1 (printed 0x0002) and decode each pair as a 32-bit integer, high word first, applying the printed divisor. Remember to subtract 1 from every printed address.
Minimum registers to map
Addresses are 0-based wire addresses. Enough to monitor and run the unit; map more as the job needs.
| Register | Name | Type | Why | Access |
|---|---|---|---|---|
| IR 1 | L1 phase voltage | UINT32 ABCD | L1 phase voltage (V/100) | Read |
| IR 7 | L1 current | UINT32 ABCD | L1 current (A/10000) | Read |
| IR 57 | Total active power | INT32 ABCD | Total active power (kW/100000, signed) | Read |
| IR 63 | Total power factor | INT32 ABCD | Total power factor | Read |
| IR 49 | Frequency | UINT32 ABCD | Frequency | Read |
| IR 83 | THD voltage L1 | UINT32 ABCD | THD voltage L1 | Read |
| IR 2615 | Max demand active power total | INT32 ABCD | Max demand active power | Read |
Enable Modbus control & writes
Modbus runs on the meter's communication port; the protocol variant (RTU, ASCII or TCP) follows the port in use. Set the node address in parameter P07.n.01 on the DMG and P20.n.05 for each Easy Branch measuring point.
Byte order & addressing
- Printed addresses are one above the wire address (0x0002 is requested as 0x0001).
- All 32-bit values are high word first (ABCD).
- Writing 5 to 0x2F03 saves and reboots the meter with no Modbus reply; do not treat the timeout as a failure.
- Remote variables are switched by writing 0xAA (on) or 0xBB (off) to their own register.
Network setup
- Default node address is 1; Easy Branch points follow as 2, 3, 4...
- Up to 120 registers per read; one TCP client per physical port.
Watch out for
- Energy counters are not in this map; their 4-register 'Long' format is ambiguous in the manual.
- DMG9000-only rows (V4, I4, earth current, power quality) return errors or zero on the smaller models.
Lovato Electric DMG7000 / DMG7500 / DMG8000 / DMG9000 power analyzers Modbus registers
Address = 0-based wire address (the documented number is shown under it when it differs) · Order: ABCD = high word first, CDAB = low word first · Scale: engineering value = raw × scale.
| Table | Address | Name | Description | Type | Order | Scale | Units | Access | Values / bits |
|---|---|---|---|---|---|---|---|---|---|
| IR | 1doc 0x0002 | L1 phase voltage | UINT32 | ABCD | × 0.01 | V | Read | ||
| IR | 3doc 0x0004 | L2 phase voltage | UINT32 | ABCD | × 0.01 | V | Read | ||
| IR | 5doc 0x0006 | L3 phase voltage | UINT32 | ABCD | × 0.01 | V | Read | ||
| IR | 7doc 0x0008 | L1 current | UINT32 | ABCD | × 0.0001 | A | Read | ||
| IR | 9doc 0x000A | L2 current | UINT32 | ABCD | × 0.0001 | A | Read | ||
| IR | 11doc 0x000C | L3 current | UINT32 | ABCD | × 0.0001 | A | Read | ||
| IR | 13doc 0x000E | L1-L2 voltage | UINT32 | ABCD | × 0.01 | V | Read | ||
| IR | 15doc 0x0010 | L2-L3 voltage | UINT32 | ABCD | × 0.01 | V | Read | ||
| IR | 17doc 0x0012 | L3-L1 voltage | UINT32 | ABCD | × 0.01 | V | Read | ||
| IR | 19doc 0x0014 | L1 active power | Signed; negative when exporting. | INT32 | ABCD | × 0.00001 | kW | Read | |
| IR | 21doc 0x0016 | L2 active power | Signed; negative when exporting. | INT32 | ABCD | × 0.00001 | kW | Read | |
| IR | 23doc 0x0018 | L3 active power | Signed; negative when exporting. | INT32 | ABCD | × 0.00001 | kW | Read | |
| IR | 25doc 0x001A | L1 reactive power | INT32 | ABCD | × 0.00001 | kvar | Read | ||
| IR | 27doc 0x001C | L2 reactive power | INT32 | ABCD | × 0.00001 | kvar | Read | ||
| IR | 29doc 0x001E | L3 reactive power | INT32 | ABCD | × 0.00001 | kvar | Read | ||
| IR | 31doc 0x0020 | L1 apparent power | UINT32 | ABCD | × 0.00001 | kVA | Read | ||
| IR | 33doc 0x0022 | L2 apparent power | UINT32 | ABCD | × 0.00001 | kVA | Read | ||
| IR | 35doc 0x0024 | L3 apparent power | UINT32 | ABCD | × 0.00001 | kVA | Read | ||
| IR | 37doc 0x0026 | L1 power factor | INT32 | ABCD | × 0.0001 | Read | |||
| IR | 39doc 0x0028 | L2 power factor | INT32 | ABCD | × 0.0001 | Read | |||
| IR | 41doc 0x002A | L3 power factor | INT32 | ABCD | × 0.0001 | Read | |||
| IR | 49doc 0x0032 | Frequency | UINT32 | ABCD | × 0.001 | Hz | Read | ||
| IR | 51doc 0x0034 | Equivalent phase voltage | Three-phase equivalent (system) line-to-neutral voltage. | UINT32 | ABCD | × 0.01 | V | Read | |
| IR | 53doc 0x0036 | Equivalent phase-to-phase voltage | UINT32 | ABCD | × 0.01 | V | Read | ||
| IR | 55doc 0x0038 | Equivalent current | UINT32 | ABCD | × 0.0001 | A | Read | ||
| IR | 57doc 0x003A | Total active power | System (equivalent) active power, signed. | INT32 | ABCD | × 0.00001 | kW | Read | |
| IR | 59doc 0x003C | Total reactive power | INT32 | ABCD | × 0.00001 | kvar | Read | ||
| IR | 61doc 0x003E | Total apparent power | UINT32 | ABCD | × 0.00001 | kVA | Read | ||
| IR | 63doc 0x0040 | Total power factor | INT32 | ABCD | × 0.0001 | Read | |||
| IR | 65doc 0x0042 | VLL unbalance | UINT32 | ABCD | × 0.01 | % | Read | ||
| IR | 67doc 0x0044 | VLN unbalance | UINT32 | ABCD | × 0.01 | % | Read | ||
| IR | 69doc 0x0046 | Current unbalance | UINT32 | ABCD | × 0.01 | % | Read | ||
| IR | 83doc 0x0054 | THD voltage L1 | UINT32 | ABCD | × 0.01 | % | Read | ||
| IR | 85doc 0x0056 | THD voltage L2 | UINT32 | ABCD | × 0.01 | % | Read | ||
| IR | 87doc 0x0058 | THD voltage L3 | UINT32 | ABCD | × 0.01 | % | Read | ||
| IR | 89doc 0x005A | THD current L1 | UINT32 | ABCD | × 0.01 | % | Read | ||
| IR | 91doc 0x005C | THD current L2 | UINT32 | ABCD | × 0.01 | % | Read | ||
| IR | 93doc 0x005E | THD current L3 | UINT32 | ABCD | × 0.01 | % | Read | ||
| IR | 213doc 0x00D6 | I4 calculated | Neutral current calculated from the three phase currents. | UINT32 | ABCD | × 0.0001 | A | Read | |
| IR | 2565doc 0x0A06 | Max demand current L1 | UINT32 | ABCD | × 0.0001 | A | Read | ||
| IR | 2567doc 0x0A08 | Max demand current L2 | UINT32 | ABCD | × 0.0001 | A | Read | ||
| IR | 2569doc 0x0A0A | Max demand current L3 | UINT32 | ABCD | × 0.0001 | A | Read | ||
| IR | 2615doc 0x0A38 | Max demand active power total | INT32 | ABCD | × 0.00001 | kW | Read | ||
| IR | 2619doc 0x0A3C | Max demand apparent power total | UINT32 | ABCD | × 0.00001 | kVA | Read | ||
| IR | 7679doc 0x1E00 | Hour counter | Main hour meter; the table gives the unit as seconds. | UINT32 | ABCD | s | Read | ||
| IR | 8175doc 0x1FF0 | Serial number | UINT32 | ABCD | Read | ||||
| IR | 8447doc 0x2100 | Digital inputs | Input 1 in bit 0 up to input 12 in bit 11. | BITMAP16 | Read | bit 0 = Input 1; bit 1 = Input 2; bit 2 = Input 3; bit 3 = Input 4; bit 4 = Input 5; bit 5 = Input 6; bit 6 = Input 7; bit 7 = Input 8; bit 8 = Input 9; bit 9 = Input 10; bit 10 = Input 11; bit 11 = Input 12 | |||
| IR | 8463doc 0x2110 | Digital outputs | Output 1 in bit 0 up to output 12 in bit 11. | BITMAP16 | Read | bit 0 = Output 1; bit 1 = Output 2; bit 2 = Output 3; bit 3 = Output 4; bit 4 = Output 5; bit 5 = Output 6; bit 6 = Output 7; bit 7 = Output 8; bit 8 = Output 9; bit 9 = Output 10; bit 10 = Output 11; bit 11 = Output 12 | |||
| HR | 10479doc 0x28F0 | Clock year | Real-time clock; read 03/04, write 06/16. | UINT16 | Read/write | ||||
| HR | 10480doc 0x28F1 | Clock month | Real-time clock; read 03/04, write 06/16. | UINT16 | Read/write | ||||
| HR | 10481doc 0x28F2 | Clock day | Real-time clock; read 03/04, write 06/16. | UINT16 | Read/write | ||||
| HR | 10482doc 0x28F3 | Clock hour | Real-time clock; read 03/04, write 06/16. | UINT16 | Read/write | ||||
| HR | 10483doc 0x28F4 | Clock minutes | Real-time clock; read 03/04, write 06/16. | UINT16 | Read/write | ||||
| HR | 10484doc 0x28F5 | Clock seconds | Real-time clock; read 03/04, write 06/16. | UINT16 | Read/write | ||||
| HR | 12034doc 0x2F03 | Save to flash / reboot | Write 5: saves parameters and reboots; no reply comes back. | UINT16 | Write | 5 = Save and reboot | |||
| HR | 12271doc 0x2FF0 | Reset command | Write one code with function 06 to run the reset. | UINT16 | Write | 0 = Reset max/min values; 1 = Reset max demand; 2 = Reset partial and tariff energy counters; 3 = Reset partial hour counters; 4 = Reset counters; 5 = Reset alarms; 6 = Reset limit thresholds; 8 = Restore setup defaults (reboot afterwards); 12 = Reset event list; 16 = Reset power-quality statistics (DMG9000); 255 = Reset power-quality counters (DMG9000) | |||
| HR | 16895doc 0x4200 | Set energy tariff | Write the tariff number with function 06. | UINT16 | Write | 1 = Tariff 1; 2 = Tariff 2; 3 = Tariff 3; 4 = Tariff 4 | |||
| HR | 20223doc 0x4F00 | Remote variable REM1 command | REM2..REM40 follow at the next addresses (up to 0x4F27). | UINT16 | Write | 170 = Set REM1 ON (0xAA); 187 = Set REM1 OFF (0xBB) |
Notes on this map
- Byte and word order are big endian (high word first), so every 2-register value is ABCD.
- Measurement registers are read with function 03 or 04 (same data); they are listed as input registers. At most 120 registers per request; Modbus TCP accepts one connection per physical port.
- Scale is the divisor printed in the Unit column: V/100 = 0.01 V, A/10000 = 0.0001 A, kW/100000 = 0.00001 kW (0.01 W), Hz/1000, PF /10000, %/100.
- Several power rows carry a '(1)' marker in the Unit column, but no footnote text for it appears in the English/Polish, English/Chinese or English/Russian editions. The printed scale is used here; confirm power readings against the front display at commissioning.
- Left out: all energy counters (0x1B20-0x1CFC). The table gives them 4 registers each but labels the format 'Unsigned Long' / 'Signed Long', which normally means 32 bits, so the bit width cannot be decoded with certainty.
- Left out: alarm, PLC, limit and remote-variable status blocks (0x2120-0x2140, 0x4F00 read), which are 40-bit fields across 3 registers without a stated word arrangement; min/max/average copies, harmonic spectra, angles, crest and k-factors, analogue inputs, counters and the DMG9000 power-quality statistics.
- Left out: parameter setup through menu/submenu/parameter selector registers (0x5000-0x5004); the example frames use addresses one lower than the table, as noted under addressing.
- Function 0x11 (report slave ID) returns a model code: 0x70 DMG7000, 0x75 DMG7500, 0x80 DMG8000, 0x90 DMG9000, 0x40 EXS4.
- EXS4 Easy Branch measuring points answer on their own node numbers (by default the DMG is node 1 and branch points take 2, 3, ...), with the subset of registers the manual marks as available for EXS4.
- Verifier: all seven example frames in the parameter-setup section carry valid CRCs, so the minus-one rule is taken from genuine frames (0x5000->4FFF, 0x5001->5000, 0x5002->5001, 0x5004->5003, 0x2F03->2F02).
- Verifier: the energy-counter width is not settled anywhere in the document - no 64-bit statement and no example frame for the 4-register rows, and total export energy is even typed 'Signed Long' - so they stay out.
Check it against the live device. A register map tells you what the controller can expose; the unit in front of you may differ by firmware or options. Read a few registers and compare them with the unit’s own display; for a 32-bit value the float and byte-order decoder shows all four word orders at once, so a wrong word order or scale is obvious. New to this? Read what a register map is and why addresses are off by one.
Questions about the Lovato Electric DMG7000 / DMG7500 / DMG8000 / DMG9000 power analyzers
What Modbus registers does the Lovato Electric DMG7000 / DMG7500 / DMG8000 / DMG9000 power analyzers have?
This map lists 58 registers: 48 input registers, 10 holding registers. 10 of them can be written. Registers vary with firmware, options and configuration, so confirm against the device.
Are the Lovato Electric DMG7000 / DMG7500 / DMG8000 / DMG9000 power analyzers Modbus addresses 0-based or 1-based?
The manufacturer's document numbers registers 1-based (subtract 1 for the wire address). Every address on this page is the 0-based wire address you put in the request; the documented number is shown under it where it differs. The tables print hex register numbers that are one higher than the address sent on the wire. The manual's own example frames prove it: the table puts 'parameter value' at 0x5004, 'save to flash' at 0x2F03 and 'menu select' at 0x5000, and the example requests send 50 03, 2F 02 and 4F FF. So subtract 1: L1 voltage, printed 0x0002, is requested at address 0x0001. The same rule is applied to every register here.
What byte order does the Lovato Electric DMG7000 / DMG7500 / DMG8000 / DMG9000 power analyzers use for 32-bit values?
Multi-register values in this map use ABCD (high word first (big-endian)). Set your client to this order for every 32/64-bit value in the table.
What are the minimum Modbus registers to integrate the Lovato Electric DMG7000 / DMG7500 / DMG8000 / DMG9000 power analyzers?
Start with IR 1 L1 phase voltage (L1 phase voltage (V/100)); IR 7 L1 current (L1 current (A/10000)); IR 57 Total active power (Total active power (kW/100000, signed)); IR 63 Total power factor (Total power factor); IR 49 Frequency (Frequency); IR 83 THD voltage L1 (THD voltage L1); IR 2615 Max demand active power total (Max demand active power).
How do I enable Modbus control of the Lovato Electric DMG7000 / DMG7500 / DMG8000 / DMG9000 power analyzers?
Modbus runs on the meter's communication port; the protocol variant (RTU, ASCII or TCP) follows the port in use. Set the node address in parameter P07.n.01 on the DMG and P20.n.05 for each Easy Branch measuring point.
Where is the official Lovato Electric DMG7000 / DMG7500 / DMG8000 / DMG9000 power analyzers Modbus documentation?
The source is DMG7000-7500-8000-9000 / EXS4... Power analyzers Modbus manual (I676 GB PL 03 22), revision 03 22 (as coded in the document number), published free by Lovato Electric at https://datasheet.lovatoelectric.com/DOWNLOAD/Technical/TechInstructions/28.%20CONTATORI%20DI%20ENERGIA%20E%20ANALIZZATORI%20DI%20RETE/I676GBPL03_22.pdf.
Source: DMG7000-7500-8000-9000 / EXS4... Power analyzers Modbus manual · I676 GB PL 03 22 · rev. 03 22 (as coded in the document number). Register numbers, types, scaling and units are reproduced as published; descriptions are our own.