{
  "$schema": "https://raw.githubusercontent.com/nobrega8/mbmap-library/main/schema/mbmap-2.schema.json",
  "mbmap": 2,
  "vendor": "Lovato Electric",
  "model": "DMG300",
  "models": ["DMG300", "DMG 300"],
  "vendor_website": "lovatoelectric.com",
  "description": "Lovato DMG300 digital multimeter/power analyser; Modbus RTU, ASCII or TCP through its communication port or expansion modules",
  "revision": 2,
  "revised": "2026-10-17",
  "source": "Lovato Electric, \"DMG series Modbus communication protocol\", I317IGB02_22",
  "sources": [{"title": "Digital multimeters-analyzers DMG series, Communication protocol Modbus", "version": "I317IGB02_22", "url": "https://datasheet.lovatoelectric.com/DOWNLOAD/Technical/TechInstructions/28.%20CONTATORI%20DI%20ENERGIA%20E%20ANALIZZATORI%20DI%20RETE/I317IGB02_22.pdf", "note": "measure tables (table 2 onwards); rows marked for this model"}],
  "notes": [
    "Addresses are the table addresses of the protocol, which are 1-based: the query uses the table address minus one.",
    "Measurements are read with FC04; 32-bit values are high word first.",
    "Not in this map: the maximum, minimum and average blocks (0x0400-0x0A62), commands (0x2FF0), event log, setup parameters and waveforms."
  ],
  "protocol": "tcp+rtu",
  "unit_id": 1,
  "baudrate": 9600,
  "parity": "N",
  "databits": 8,
  "stopbits": 1,
  "byte_order": "big",
  "word_order": "big",
  "address_base": 1,
  "x_status": "official",
  "registers": [
    {"name": "L1 Phase Voltage", "group": "Measurements", "area": "input", "address": 2, "type": "uint32", "scale": 0.01, "unit": "V", "access": "R"},
    {"name": "L2 Phase Voltage", "group": "Measurements", "area": "input", "address": 4, "type": "uint32", "scale": 0.01, "unit": "V", "access": "R"},
    {"name": "L3 Phase Voltage", "group": "Measurements", "area": "input", "address": 6, "type": "uint32", "scale": 0.01, "unit": "V", "access": "R"},
    {"name": "L1 Current", "group": "Measurements", "area": "input", "address": 8, "type": "uint32", "scale": 0.0001, "unit": "A", "access": "R"},
    {"name": "L2 Current", "group": "Measurements", "area": "input", "address": 10, "type": "uint32", "scale": 0.0001, "unit": "A", "access": "R"},
    {"name": "L3 Current", "group": "Measurements", "area": "input", "address": 12, "type": "uint32", "scale": 0.0001, "unit": "A", "access": "R"},
    {"name": "L1-L2 Voltage", "group": "Measurements", "area": "input", "address": 14, "type": "uint32", "scale": 0.01, "unit": "V", "access": "R"},
    {"name": "L2-L3 Voltage", "group": "Measurements", "area": "input", "address": 16, "type": "uint32", "scale": 0.01, "unit": "V", "access": "R"},
    {"name": "L3-L1 Voltage", "group": "Measurements", "area": "input", "address": 18, "type": "uint32", "scale": 0.01, "unit": "V", "access": "R"},
    {"name": "L1 Active Power", "group": "Measurements", "area": "input", "address": 20, "type": "int32", "scale": 0.01, "unit": "W", "access": "R", "description": "Power scale may change with the device setting (see protocol note on power measurements)"},
    {"name": "L2 Active Power", "group": "Measurements", "area": "input", "address": 22, "type": "int32", "scale": 0.01, "unit": "W", "access": "R", "description": "Power scale may change with the device setting (see protocol note on power measurements)"},
    {"name": "L3 Active Power", "group": "Measurements", "area": "input", "address": 24, "type": "int32", "scale": 0.01, "unit": "W", "access": "R", "description": "Power scale may change with the device setting (see protocol note on power measurements)"},
    {"name": "L1 Reactive Power", "group": "Measurements", "area": "input", "address": 26, "type": "int32", "scale": 0.01, "unit": "var", "access": "R", "description": "Power scale may change with the device setting (see protocol note on power measurements)"},
    {"name": "L2 Reactive Power", "group": "Measurements", "area": "input", "address": 28, "type": "int32", "scale": 0.01, "unit": "var", "access": "R", "description": "Power scale may change with the device setting (see protocol note on power measurements)"},
    {"name": "L3 Reactive Power", "group": "Measurements", "area": "input", "address": 30, "type": "int32", "scale": 0.01, "unit": "var", "access": "R", "description": "Power scale may change with the device setting (see protocol note on power measurements)"},
    {"name": "L1 Apparent Power", "group": "Measurements", "area": "input", "address": 32, "type": "uint32", "scale": 0.01, "unit": "VA", "access": "R", "description": "Power scale may change with the device setting (see protocol note on power measurements)"},
    {"name": "L2 Apparent Power", "group": "Measurements", "area": "input", "address": 34, "type": "uint32", "scale": 0.01, "unit": "VA", "access": "R", "description": "Power scale may change with the device setting (see protocol note on power measurements)"},
    {"name": "L3 Apparent Power", "group": "Measurements", "area": "input", "address": 36, "type": "uint32", "scale": 0.01, "unit": "VA", "access": "R", "description": "Power scale may change with the device setting (see protocol note on power measurements)"},
    {"name": "L1 Power Factor", "group": "Measurements", "area": "input", "address": 38, "type": "int32", "scale": 0.0001, "access": "R"},
    {"name": "L2 Power Factor", "group": "Measurements", "area": "input", "address": 40, "type": "int32", "scale": 0.0001, "access": "R"},
    {"name": "L3 Power Factor", "group": "Measurements", "area": "input", "address": 42, "type": "int32", "scale": 0.0001, "access": "R"},
    {"name": "Frequency", "group": "Measurements", "area": "input", "address": 50, "type": "uint32", "scale": 0.001, "unit": "Hz", "access": "R"},
    {"name": "Equivalent Phase Voltage", "group": "Measurements", "area": "input", "address": 52, "type": "uint32", "scale": 0.01, "unit": "V", "access": "R"},
    {"name": "Equivalent Phase-To-Phase Voltage", "group": "Measurements", "area": "input", "address": 54, "type": "uint32", "scale": 0.01, "unit": "V", "access": "R"},
    {"name": "Equivalent Current", "group": "Measurements", "area": "input", "address": 56, "type": "uint32", "scale": 0.0001, "unit": "A", "access": "R"},
    {"name": "Equivalent Active Power", "group": "Measurements", "area": "input", "address": 58, "type": "int32", "scale": 0.01, "unit": "W", "access": "R"},
    {"name": "Equivalent Reactive Power", "group": "Measurements", "area": "input", "address": 60, "type": "int32", "scale": 0.01, "unit": "var", "access": "R"},
    {"name": "Equivalent Apparent Power", "group": "Measurements", "area": "input", "address": 62, "type": "uint32", "scale": 0.01, "unit": "VA", "access": "R"},
    {"name": "Equivalent Power Factor", "group": "Measurements", "area": "input", "address": 64, "type": "int32", "scale": 0.0001, "access": "R"},
    {"name": "Phase-Phase Voltage asymmetry", "group": "Measurements", "area": "input", "address": 66, "type": "uint32", "scale": 0.01, "unit": "%", "access": "R"},
    {"name": "Phase-neutral Voltage asymmetry", "group": "Measurements", "area": "input", "address": 68, "type": "uint32", "scale": 0.01, "unit": "%", "access": "R"},
    {"name": "Current Asymmetry", "group": "Measurements", "area": "input", "address": 70, "type": "uint32", "scale": 0.01, "unit": "%", "access": "R"},
    {"name": "Neutral Current", "group": "Measurements", "area": "input", "address": 72, "type": "uint32", "scale": 0.0001, "unit": "A", "access": "R"},
    {"name": "L1 Voltage THD", "group": "Measurements", "area": "input", "address": 84, "type": "uint32", "scale": 0.01, "unit": "%", "access": "R"},
    {"name": "L2 Voltage THD", "group": "Measurements", "area": "input", "address": 86, "type": "uint32", "scale": 0.01, "unit": "%", "access": "R"},
    {"name": "L3 Voltage THD", "group": "Measurements", "area": "input", "address": 88, "type": "uint32", "scale": 0.01, "unit": "%", "access": "R"},
    {"name": "L1 Current THD", "group": "Measurements", "area": "input", "address": 90, "type": "uint32", "scale": 0.01, "unit": "%", "access": "R"},
    {"name": "L2 Current THD", "group": "Measurements", "area": "input", "address": 92, "type": "uint32", "scale": 0.01, "unit": "%", "access": "R"},
    {"name": "L3 Current THD", "group": "Measurements", "area": "input", "address": 94, "type": "uint32", "scale": 0.01, "unit": "%", "access": "R"},
    {"name": "L1-2 Voltage THD", "group": "Measurements", "area": "input", "address": 96, "type": "uint32", "scale": 0.01, "unit": "%", "access": "R"},
    {"name": "L2-3 Voltage THD", "group": "Measurements", "area": "input", "address": 98, "type": "uint32", "scale": 0.01, "unit": "%", "access": "R"},
    {"name": "L3-1 Voltage THD", "group": "Measurements", "area": "input", "address": 100, "type": "uint32", "scale": 0.01, "unit": "%", "access": "R"},
    {"name": "Total imported Active Energy", "group": "Energy", "area": "input", "address": 6688, "type": "uint32", "scale": 0.01, "unit": "kWh", "access": "R"},
    {"name": "Total exported Active Energy", "group": "Energy", "area": "input", "address": 6690, "type": "uint32", "scale": 0.01, "unit": "kWh", "access": "R"},
    {"name": "Total imported Reactive Energy", "group": "Energy", "area": "input", "address": 6692, "type": "uint32", "scale": 0.01, "unit": "kvarh", "access": "R"},
    {"name": "Total exported Reactive Energy", "group": "Energy", "area": "input", "address": 6694, "type": "uint32", "scale": 0.01, "unit": "kvarh", "access": "R"},
    {"name": "Total Apparent Energy", "group": "Energy", "area": "input", "address": 6696, "type": "uint32", "scale": 0.01, "unit": "kVAh", "access": "R"},
    {"name": "Partial imported Active Energy", "group": "Energy", "area": "input", "address": 6698, "type": "uint32", "scale": 0.01, "unit": "kWh", "access": "R"},
    {"name": "Partial exported Active Energy", "group": "Energy", "area": "input", "address": 6700, "type": "uint32", "scale": 0.01, "unit": "kWh", "access": "R"},
    {"name": "Partial imported Reactive Energy", "group": "Energy", "area": "input", "address": 6702, "type": "uint32", "scale": 0.01, "unit": "kvarh", "access": "R"},
    {"name": "Partial exported Reactive Energy", "group": "Energy", "area": "input", "address": 6704, "type": "uint32", "scale": 0.01, "unit": "kvarh", "access": "R"},
    {"name": "Partial Apparent Energy", "group": "Energy", "area": "input", "address": 6706, "type": "uint32", "scale": 0.01, "unit": "kVAh", "access": "R"},
    {"name": "Total imported Active Energy (64-bit)", "group": "Energy", "area": "input", "address": 6944, "type": "uint64", "scale": 0.01, "unit": "kWh", "access": "R"},
    {"name": "Total exported Active Energy (64-bit)", "group": "Energy", "area": "input", "address": 6948, "type": "uint64", "scale": 0.01, "unit": "kWh", "access": "R"},
    {"name": "Total imported Reactive Energy (64-bit)", "group": "Energy", "area": "input", "address": 6952, "type": "uint64", "scale": 0.01, "unit": "kvarh", "access": "R"},
    {"name": "Total exported Reactive Energy (64-bit)", "group": "Energy", "area": "input", "address": 6956, "type": "uint64", "scale": 0.01, "unit": "kvarh", "access": "R"},
    {"name": "Total Apparent Energy (64-bit)", "group": "Energy", "area": "input", "address": 6960, "type": "uint64", "scale": 0.01, "unit": "kVAh", "access": "R"},
    {"name": "Partial imported Active Energy (64-bit)", "group": "Energy", "area": "input", "address": 6964, "type": "uint64", "scale": 0.01, "unit": "kWh", "access": "R"},
    {"name": "Partial exported Active Energy (64-bit)", "group": "Energy", "area": "input", "address": 6968, "type": "uint64", "scale": 0.01, "unit": "kWh", "access": "R"},
    {"name": "Partial imported Reactive Energy (64-bit)", "group": "Energy", "area": "input", "address": 6972, "type": "uint64", "scale": 0.01, "unit": "kvarh", "access": "R"},
    {"name": "Partial exported Reactive Energy (64-bit)", "group": "Energy", "area": "input", "address": 6976, "type": "uint64", "scale": 0.01, "unit": "kvarh", "access": "R"},
    {"name": "Partial Apparent Energy (64-bit)", "group": "Energy", "area": "input", "address": 6980, "type": "uint64", "scale": 0.01, "unit": "kVAh", "access": "R"},
    {"name": "Imported Active Energy Tariff 1 (64-bit)", "group": "Energy", "area": "input", "address": 6984, "type": "uint64", "scale": 0.01, "unit": "kWh", "access": "R"},
    {"name": "Exported Active Energy Tariff 1 (64-bit)", "group": "Energy", "area": "input", "address": 6988, "type": "uint64", "scale": 0.01, "unit": "kWh", "access": "R"},
    {"name": "Imported Reactive Energy Tariff 1 (64-bit)", "group": "Energy", "area": "input", "address": 6992, "type": "uint64", "scale": 0.01, "unit": "kvarh", "access": "R"},
    {"name": "Exported Reactive Energy Tariff 1 (64-bit)", "group": "Energy", "area": "input", "address": 6996, "type": "uint64", "scale": 0.01, "unit": "kvarh", "access": "R"},
    {"name": "Apparent Energy Tariff 1 (64-bit)", "group": "Energy", "area": "input", "address": 7000, "type": "uint64", "scale": 0.01, "unit": "kVAh", "access": "R"},
    {"name": "Imported Active Energy Tariff 2 (64-bit)", "group": "Energy", "area": "input", "address": 7004, "type": "uint64", "scale": 0.01, "unit": "kWh", "access": "R"},
    {"name": "Apparent Energy Tariff 2 (64-bit)", "group": "Energy", "area": "input", "address": 7020, "type": "uint64", "scale": 0.01, "unit": "kVAh", "access": "R"},
    {"name": "Imported Active Energy Tariff 3 (64-bit)", "group": "Energy", "area": "input", "address": 7024, "type": "uint64", "scale": 0.01, "unit": "kWh", "access": "R"},
    {"name": "Apparent Energy Tariff 3 (64-bit)", "group": "Energy", "area": "input", "address": 7040, "type": "uint64", "scale": 0.01, "unit": "kVAh", "access": "R"},
    {"name": "Imported Active Energy Tariff 4 (64-bit)", "group": "Energy", "area": "input", "address": 7044, "type": "uint64", "scale": 0.01, "unit": "kWh", "access": "R"},
    {"name": "Apparent Energy Tariff 4 (64-bit)", "group": "Energy", "area": "input", "address": 7060, "type": "uint64", "scale": 0.01, "unit": "kVAh", "access": "R"},
    {"name": "Counter 1", "group": "Counters", "area": "input", "address": 7424, "type": "uint32", "access": "R"},
    {"name": "Counter 2", "group": "Counters", "area": "input", "address": 7426, "type": "uint32", "access": "R"},
    {"name": "Counter 3", "group": "Counters", "area": "input", "address": 7428, "type": "uint32", "access": "R"},
    {"name": "Counter 4", "group": "Counters", "area": "input", "address": 7430, "type": "uint32", "access": "R"},
    {"name": "Total Hour meter", "group": "Counters", "area": "input", "address": 7680, "type": "uint32", "unit": "s", "access": "R"},
    {"name": "Partial Hour meter", "group": "Counters", "area": "input", "address": 7682, "type": "uint32", "unit": "s", "access": "R"},
    {"name": "Input 1", "group": "I/O", "area": "input", "address": 8449, "type": "uint16", "access": "R", "enum": {"0": "Off", "1": "On"}},
    {"name": "Input 8", "group": "I/O", "area": "input", "address": 8456, "type": "uint16", "access": "R", "enum": {"0": "Off", "1": "On"}},
    {"name": "Output 1", "group": "I/O", "area": "input", "address": 8465, "type": "uint16", "access": "R", "enum": {"0": "Off", "1": "On"}},
    {"name": "Output 8", "group": "I/O", "area": "input", "address": 8472, "type": "uint16", "access": "R", "enum": {"0": "Off", "1": "On"}},
    {"name": "Alarm 1", "group": "I/O", "area": "input", "address": 8481, "type": "uint16", "access": "R"},
    {"name": "Alarm 8", "group": "I/O", "area": "input", "address": 8488, "type": "uint16", "access": "R"},
    {"name": "Boolean 1", "group": "I/O", "area": "input", "address": 8497, "type": "uint16", "access": "R", "enum": {"0": "Off", "1": "On"}},
    {"name": "Boolean 8", "group": "I/O", "area": "input", "address": 8504, "type": "uint16", "access": "R", "enum": {"0": "Off", "1": "On"}},
    {"name": "Limit 1", "group": "I/O", "area": "input", "address": 8513, "type": "uint16", "access": "R", "enum": {"0": "Off", "1": "On"}},
    {"name": "Limit 8", "group": "Measurements", "area": "input", "address": 328, "type": "uint16", "access": "R", "enum": {"0": "Off", "1": "On"}},
    {"name": "Remote 1", "group": "I/O", "area": "input", "address": 20224, "type": "uint16", "access": "R", "enum": {"0": "Off", "1": "On"}},
    {"name": "Remote 8", "group": "I/O", "area": "input", "address": 20231, "type": "uint16", "access": "R", "enum": {"0": "Off", "1": "On"}}
  ]
}
