{ "$schema": "https://raw.githubusercontent.com/nobrega8/mbmap-library/main/schema/mbmap-2.schema.json", "mbmap": 2, "vendor": "Lovato Electric", "model": "DMG800", "models": [ "DMG800" ], "vendor_website": "lovatoelectric.com", "description": "Digital multimeter", "revision": 2, "revised": "2026-11-10", "source": "Lovato Electric, DMG series Modbus communication protocol, I317 I GB 02_22", "sources": [ { "title": "DMG series - Modbus communication protocol", "version": "I317 I GB 02_22", "date": "2022-02-07", "url": "https://catalogue.lovatoelectric.com/gb_en/Product/GetDocument?doc=Technical%5CTechInstructions%5C28.%20CONTATORI%20DI%20ENERGIA%20E%20ANALIZZATORI%20DI%20RETE%5CI317IGB02_22.pdf", "note": "tables 2 and 3" } ], "notes": [ "Addresses are those of the manual; the address sent in the request is one less (address_base 1).", "Function 03 and 04 both read the measurements. 32- and 64-bit values are sent high word first.", "Serial and Ethernet communication need an EXM expansion module (RS-232, RS-485, USB or Ethernet).", "The model is reported by function 17 (Report Slave ID): type code 0xB4.", "Max (HI), min (LO), average and max demand values, harmonics, I/O and setup parameters (tables 4-8 of the manual) are not listed here.", "Tested on a DMG800 read over a Modbus TCP gateway, November 2026; 72 of 102 registers read in the first test. Checked: voltages, currents, power (current and power agree: 666 VA / 230.14 V = 2.89 A), power factor, THD, neutral current, the 32-bit and 64-bit energy counters, counters, hour meters, clock, power resolution (0.01 W) and the word order (big). Frequency read 50040, so its scale is 0.001 (50.04 Hz), not 0.01 as this map had before.", "The 64-bit energy counters and the four tariffs (6944-7063) all exist on that meter and read correctly in requests of 10, 20 and 80 registers (the tariffs were all 0, no tariff in use; the 64-bit counters match the 32-bit ones). A single request for all 120 registers (6944-7063) was refused with illegal data address, so max_read_registers is set to 80, the longest request tested.", "Cos phi (0x002C-0x0030), N-earth voltage, neutral current measured and the THD of N-earth voltage and of N current (0x0066-0x006C) are marked for the DMG900 only in the manual and were removed from this map. A DMG800 still answered the cos phi registers, but the values did not match its power factor and power (L1: 590.4 W and -306 var give 0.888, the register read 0.9931)." ], "protocol": "tcp+rtu", "unit_id": 1, "byte_order": "big", "word_order": "big", "address_base": 1, "max_read_registers": 80, "x_status": "verified", "registers": [ {"name": "Voltage L1-N", "group": "Measurements", "area": "holding", "address": 2, "type": "uint32", "scale": 0.01, "unit": "V"}, {"name": "Voltage L2-N", "group": "Measurements", "area": "holding", "address": 4, "type": "uint32", "scale": 0.01, "unit": "V"}, {"name": "Voltage L3-N", "group": "Measurements", "area": "holding", "address": 6, "type": "uint32", "scale": 0.01, "unit": "V"}, {"name": "Current L1", "group": "Measurements", "area": "holding", "address": 8, "type": "uint32", "scale": 0.0001, "unit": "A"}, {"name": "Current L2", "group": "Measurements", "area": "holding", "address": 10, "type": "uint32", "scale": 0.0001, "unit": "A"}, {"name": "Current L3", "group": "Measurements", "area": "holding", "address": 12, "type": "uint32", "scale": 0.0001, "unit": "A"}, {"name": "Voltage L1-L2", "group": "Measurements", "area": "holding", "address": 14, "type": "uint32", "scale": 0.01, "unit": "V"}, {"name": "Voltage L2-L3", "group": "Measurements", "area": "holding", "address": 16, "type": "uint32", "scale": 0.01, "unit": "V"}, {"name": "Voltage L3-L1", "group": "Measurements", "area": "holding", "address": 18, "type": "uint32", "scale": 0.01, "unit": "V"}, {"name": "Active power L1", "group": "Measurements", "area": "holding", "address": 20, "type": "int32", "scale": 0.01, "unit": "W", "description": "0.1 W resolution instead of 0.01 W when register 0x2F70 is not 0 (large CT x VT)"}, {"name": "Active power L2", "group": "Measurements", "area": "holding", "address": 22, "type": "int32", "scale": 0.01, "unit": "W", "description": "0.1 W resolution instead of 0.01 W when register 0x2F70 is not 0 (large CT x VT)"}, {"name": "Active power L3", "group": "Measurements", "area": "holding", "address": 24, "type": "int32", "scale": 0.01, "unit": "W", "description": "0.1 W resolution instead of 0.01 W when register 0x2F70 is not 0 (large CT x VT)"}, {"name": "Reactive power L1", "group": "Measurements", "area": "holding", "address": 26, "type": "int32", "scale": 0.01, "unit": "var", "description": "0.1 W resolution instead of 0.01 W when register 0x2F70 is not 0 (large CT x VT)"}, {"name": "Reactive power L2", "group": "Measurements", "area": "holding", "address": 28, "type": "int32", "scale": 0.01, "unit": "var", "description": "0.1 W resolution instead of 0.01 W when register 0x2F70 is not 0 (large CT x VT)"}, {"name": "Reactive power L3", "group": "Measurements", "area": "holding", "address": 30, "type": "int32", "scale": 0.01, "unit": "var", "description": "0.1 W resolution instead of 0.01 W when register 0x2F70 is not 0 (large CT x VT)"}, {"name": "Apparent power L1", "group": "Measurements", "area": "holding", "address": 32, "type": "uint32", "scale": 0.01, "unit": "VA", "description": "0.1 W resolution instead of 0.01 W when register 0x2F70 is not 0 (large CT x VT)"}, {"name": "Apparent power L2", "group": "Measurements", "area": "holding", "address": 34, "type": "uint32", "scale": 0.01, "unit": "VA", "description": "0.1 W resolution instead of 0.01 W when register 0x2F70 is not 0 (large CT x VT)"}, {"name": "Apparent power L3", "group": "Measurements", "area": "holding", "address": 36, "type": "uint32", "scale": 0.01, "unit": "VA", "description": "0.1 W resolution instead of 0.01 W when register 0x2F70 is not 0 (large CT x VT)"}, {"name": "Power factor L1", "group": "Measurements", "area": "holding", "address": 38, "type": "int32", "scale": 0.0001}, {"name": "Power factor L2", "group": "Measurements", "area": "holding", "address": 40, "type": "int32", "scale": 0.0001}, {"name": "Power factor L3", "group": "Measurements", "area": "holding", "address": 42, "type": "int32", "scale": 0.0001}, {"name": "Frequency", "group": "Measurements", "area": "holding", "address": 50, "type": "uint32", "scale": 0.001, "unit": "Hz"}, {"name": "Equivalent phase voltage", "group": "Measurements", "area": "holding", "address": 52, "type": "uint32", "scale": 0.01, "unit": "V"}, {"name": "Equivalent line voltage", "group": "Measurements", "area": "holding", "address": 54, "type": "uint32", "scale": 0.01, "unit": "V"}, {"name": "Equivalent current", "group": "Measurements", "area": "holding", "address": 56, "type": "uint32", "scale": 0.0001, "unit": "A"}, {"name": "Total active power", "group": "Measurements", "area": "holding", "address": 58, "type": "int32", "scale": 0.01, "unit": "W", "description": "0.1 W resolution instead of 0.01 W when register 0x2F70 is not 0 (large CT x VT)"}, {"name": "Total reactive power", "group": "Measurements", "area": "holding", "address": 60, "type": "int32", "scale": 0.01, "unit": "var", "description": "0.1 W resolution instead of 0.01 W when register 0x2F70 is not 0 (large CT x VT)"}, {"name": "Total apparent power", "group": "Measurements", "area": "holding", "address": 62, "type": "uint32", "scale": 0.01, "unit": "VA", "description": "0.1 W resolution instead of 0.01 W when register 0x2F70 is not 0 (large CT x VT)"}, {"name": "Total power factor", "group": "Measurements", "area": "holding", "address": 64, "type": "int32", "scale": 0.0001}, {"name": "Line voltage asymmetry", "group": "Measurements", "area": "holding", "address": 66, "type": "uint32", "scale": 0.01, "unit": "%"}, {"name": "Phase voltage asymmetry", "group": "Measurements", "area": "holding", "address": 68, "type": "uint32", "scale": 0.01, "unit": "%"}, {"name": "Current asymmetry", "group": "Measurements", "area": "holding", "address": 70, "type": "uint32", "scale": 0.01, "unit": "%"}, {"name": "Neutral current", "group": "Measurements", "area": "holding", "address": 72, "type": "uint32", "scale": 0.0001, "unit": "A"}, {"name": "THD voltage L1", "group": "Measurements", "area": "holding", "address": 84, "type": "uint32", "scale": 0.01, "unit": "%"}, {"name": "THD voltage L2", "group": "Measurements", "area": "holding", "address": 86, "type": "uint32", "scale": 0.01, "unit": "%"}, {"name": "THD voltage L3", "group": "Measurements", "area": "holding", "address": 88, "type": "uint32", "scale": 0.01, "unit": "%"}, {"name": "THD current L1", "group": "Measurements", "area": "holding", "address": 90, "type": "uint32", "scale": 0.01, "unit": "%"}, {"name": "THD current L2", "group": "Measurements", "area": "holding", "address": 92, "type": "uint32", "scale": 0.01, "unit": "%"}, {"name": "THD current L3", "group": "Measurements", "area": "holding", "address": 94, "type": "uint32", "scale": 0.01, "unit": "%"}, {"name": "THD voltage L1-L2", "group": "Measurements", "area": "holding", "address": 96, "type": "uint32", "scale": 0.01, "unit": "%"}, {"name": "THD voltage L2-L3", "group": "Measurements", "area": "holding", "address": 98, "type": "uint32", "scale": 0.01, "unit": "%"}, {"name": "THD voltage L3-L1", "group": "Measurements", "area": "holding", "address": 100, "type": "uint32", "scale": 0.01, "unit": "%"}, {"name": "Imported active energy (32-bit)", "group": "Energy", "area": "holding", "address": 6688, "type": "uint32", "scale": 0.01, "unit": "kWh", "description": "Rolls over after 19 999 999.99"}, {"name": "Exported active energy (32-bit)", "group": "Energy", "area": "holding", "address": 6690, "type": "uint32", "scale": 0.01, "unit": "kWh", "description": "Rolls over after 19 999 999.99"}, {"name": "Imported reactive energy (32-bit)", "group": "Energy", "area": "holding", "address": 6692, "type": "uint32", "scale": 0.01, "unit": "kvarh", "description": "Rolls over after 19 999 999.99"}, {"name": "Exported reactive energy (32-bit)", "group": "Energy", "area": "holding", "address": 6694, "type": "uint32", "scale": 0.01, "unit": "kvarh", "description": "Rolls over after 19 999 999.99"}, {"name": "Apparent energy (32-bit)", "group": "Energy", "area": "holding", "address": 6696, "type": "uint32", "scale": 0.01, "unit": "kVAh", "description": "Rolls over after 19 999 999.99"}, {"name": "Partial imported active energy (32-bit)", "group": "Energy", "area": "holding", "address": 6698, "type": "uint32", "scale": 0.01, "unit": "kWh", "description": "Rolls over after 19 999 999.99"}, {"name": "Partial exported active energy (32-bit)", "group": "Energy", "area": "holding", "address": 6700, "type": "uint32", "scale": 0.01, "unit": "kWh", "description": "Rolls over after 19 999 999.99"}, {"name": "Partial imported reactive energy (32-bit)", "group": "Energy", "area": "holding", "address": 6702, "type": "uint32", "scale": 0.01, "unit": "kvarh", "description": "Rolls over after 19 999 999.99"}, {"name": "Partial exported reactive energy (32-bit)", "group": "Energy", "area": "holding", "address": 6704, "type": "uint32", "scale": 0.01, "unit": "kvarh", "description": "Rolls over after 19 999 999.99"}, {"name": "Partial apparent energy (32-bit)", "group": "Energy", "area": "holding", "address": 6706, "type": "uint32", "scale": 0.01, "unit": "kVAh", "description": "Rolls over after 19 999 999.99"}, {"name": "Imported active energy", "group": "Energy", "area": "holding", "address": 6944, "type": "uint64", "scale": 0.01, "unit": "kWh", "description": "64-bit counter from software revision 09; older revisions roll over like the 32-bit counters"}, {"name": "Exported active energy", "group": "Energy", "area": "holding", "address": 6948, "type": "uint64", "scale": 0.01, "unit": "kWh", "description": "64-bit counter from software revision 09; older revisions roll over like the 32-bit counters"}, {"name": "Imported reactive energy", "group": "Energy", "area": "holding", "address": 6952, "type": "uint64", "scale": 0.01, "unit": "kvarh", "description": "64-bit counter from software revision 09; older revisions roll over like the 32-bit counters"}, {"name": "Exported reactive energy", "group": "Energy", "area": "holding", "address": 6956, "type": "uint64", "scale": 0.01, "unit": "kvarh", "description": "64-bit counter from software revision 09; older revisions roll over like the 32-bit counters"}, {"name": "Apparent energy", "group": "Energy", "area": "holding", "address": 6960, "type": "uint64", "scale": 0.01, "unit": "kVAh", "description": "64-bit counter from software revision 09; older revisions roll over like the 32-bit counters"}, {"name": "Partial imported active energy", "group": "Energy", "area": "holding", "address": 6964, "type": "uint64", "scale": 0.01, "unit": "kWh", "description": "64-bit counter from software revision 09; older revisions roll over like the 32-bit counters"}, {"name": "Partial exported active energy", "group": "Energy", "area": "holding", "address": 6968, "type": "uint64", "scale": 0.01, "unit": "kWh", "description": "64-bit counter from software revision 09; older revisions roll over like the 32-bit counters"}, {"name": "Partial imported reactive energy", "group": "Energy", "area": "holding", "address": 6972, "type": "uint64", "scale": 0.01, "unit": "kvarh", "description": "64-bit counter from software revision 09; older revisions roll over like the 32-bit counters"}, {"name": "Partial exported reactive energy", "group": "Energy", "area": "holding", "address": 6976, "type": "uint64", "scale": 0.01, "unit": "kvarh", "description": "64-bit counter from software revision 09; older revisions roll over like the 32-bit counters"}, {"name": "Partial apparent energy", "group": "Energy", "area": "holding", "address": 6980, "type": "uint64", "scale": 0.01, "unit": "kVAh", "description": "64-bit counter from software revision 09; older revisions roll over like the 32-bit counters"}, {"name": "Tariff 1 imported active energy", "group": "Energy tariffs", "area": "holding", "address": 6984, "type": "uint64", "scale": 0.01, "unit": "kWh", "description": "From software revision 09"}, {"name": "Tariff 1 exported active energy", "group": "Energy tariffs", "area": "holding", "address": 6988, "type": "uint64", "scale": 0.01, "unit": "kWh", "description": "From software revision 09"}, {"name": "Tariff 1 imported reactive energy", "group": "Energy tariffs", "area": "holding", "address": 6992, "type": "uint64", "scale": 0.01, "unit": "kvarh", "description": "From software revision 09"}, {"name": "Tariff 1 exported reactive energy", "group": "Energy tariffs", "area": "holding", "address": 6996, "type": "uint64", "scale": 0.01, "unit": "kvarh", "description": "From software revision 09"}, {"name": "Tariff 1 apparent energy", "group": "Energy tariffs", "area": "holding", "address": 7000, "type": "uint64", "scale": 0.01, "unit": "kVAh", "description": "From software revision 09"}, {"name": "Tariff 2 imported active energy", "group": "Energy tariffs", "area": "holding", "address": 7004, "type": "uint64", "scale": 0.01, "unit": "kWh", "description": "From software revision 09"}, {"name": "Tariff 2 exported active energy", "group": "Energy tariffs", "area": "holding", "address": 7008, "type": "uint64", "scale": 0.01, "unit": "kWh", "description": "From software revision 09"}, {"name": "Tariff 2 imported reactive energy", "group": "Energy tariffs", "area": "holding", "address": 7012, "type": "uint64", "scale": 0.01, "unit": "kvarh", "description": "From software revision 09"}, {"name": "Tariff 2 exported reactive energy", "group": "Energy tariffs", "area": "holding", "address": 7016, "type": "uint64", "scale": 0.01, "unit": "kvarh", "description": "From software revision 09"}, {"name": "Tariff 2 apparent energy", "group": "Energy tariffs", "area": "holding", "address": 7020, "type": "uint64", "scale": 0.01, "unit": "kVAh", "description": "From software revision 09"}, {"name": "Tariff 3 imported active energy", "group": "Energy tariffs", "area": "holding", "address": 7024, "type": "uint64", "scale": 0.01, "unit": "kWh", "description": "From software revision 09"}, {"name": "Tariff 3 exported active energy", "group": "Energy tariffs", "area": "holding", "address": 7028, "type": "uint64", "scale": 0.01, "unit": "kWh", "description": "From software revision 09"}, {"name": "Tariff 3 imported reactive energy", "group": "Energy tariffs", "area": "holding", "address": 7032, "type": "uint64", "scale": 0.01, "unit": "kvarh", "description": "From software revision 09"}, {"name": "Tariff 3 exported reactive energy", "group": "Energy tariffs", "area": "holding", "address": 7036, "type": "uint64", "scale": 0.01, "unit": "kvarh", "description": "From software revision 09"}, {"name": "Tariff 3 apparent energy", "group": "Energy tariffs", "area": "holding", "address": 7040, "type": "uint64", "scale": 0.01, "unit": "kVAh", "description": "From software revision 09"}, {"name": "Tariff 4 imported active energy", "group": "Energy tariffs", "area": "holding", "address": 7044, "type": "uint64", "scale": 0.01, "unit": "kWh", "description": "From software revision 09"}, {"name": "Tariff 4 exported active energy", "group": "Energy tariffs", "area": "holding", "address": 7048, "type": "uint64", "scale": 0.01, "unit": "kWh", "description": "From software revision 09"}, {"name": "Tariff 4 imported reactive energy", "group": "Energy tariffs", "area": "holding", "address": 7052, "type": "uint64", "scale": 0.01, "unit": "kvarh", "description": "From software revision 09"}, {"name": "Tariff 4 exported reactive energy", "group": "Energy tariffs", "area": "holding", "address": 7056, "type": "uint64", "scale": 0.01, "unit": "kvarh", "description": "From software revision 09"}, {"name": "Tariff 4 apparent energy", "group": "Energy tariffs", "area": "holding", "address": 7060, "type": "uint64", "scale": 0.01, "unit": "kVAh", "description": "From software revision 09"}, {"name": "Counter 1", "group": "Counters", "area": "holding", "address": 7424, "type": "uint32"}, {"name": "Counter 2", "group": "Counters", "area": "holding", "address": 7426, "type": "uint32"}, {"name": "Counter 3", "group": "Counters", "area": "holding", "address": 7428, "type": "uint32"}, {"name": "Counter 4", "group": "Counters", "area": "holding", "address": 7430, "type": "uint32"}, {"name": "Total hour meter", "group": "Hour meters", "area": "holding", "address": 7680, "type": "uint32", "unit": "s"}, {"name": "Partial hour meter", "group": "Hour meters", "area": "holding", "address": 7682, "type": "uint32", "unit": "s"}, {"name": "Clock year", "group": "Clock", "area": "holding", "address": 10480, "type": "uint16"}, {"name": "Clock month", "group": "Clock", "area": "holding", "address": 10481, "type": "uint16"}, {"name": "Clock day", "group": "Clock", "area": "holding", "address": 10482, "type": "uint16"}, {"name": "Clock hour", "group": "Clock", "area": "holding", "address": 10483, "type": "uint16"}, {"name": "Clock minutes", "group": "Clock", "area": "holding", "address": 10484, "type": "uint16"}, {"name": "Clock seconds", "group": "Clock", "area": "holding", "address": 10485, "type": "uint16"}, {"name": "System reboot", "group": "Commands", "area": "holding", "address": 12033, "type": "uint16", "access": "W", "write_min": 1, "write_max": 1, "description": "Write 1"}, {"name": "Power resolution", "group": "Status", "area": "holding", "address": 12144, "type": "uint16", "enum": {"0": "0.01 W"}, "description": "Any other value: powers are sent in 0.1 W (from software revision 09)"}, {"name": "Command", "group": "Commands", "area": "holding", "address": 12272, "type": "uint16", "access": "W", "enum": {"0": "Reset HI-LO values", "1": "Reset max demand", "2": "Reset partial energy", "3": "Reset partial hour meter", "4": "Reset external counters", "5": "Reset energy tariffs", "6": "Reset alarms", "7": "Reset limits", "11": "Reset all energy counters", "12": "Reset all hour meters", "13": "Parameters to default", "14": "Backup parameters", "15": "Restore parameters", "16": "Wiring test", "100": "Reset HI", "200": "Reset LO"}, "description": "Write with function 06; send a reboot after the parameter commands (13-15)"} ] }