{
 "manufacturer": "Janitza",
 "manufacturer_slug": "janitza",
 "model": "UMG 512-PRO power quality analyser (Modbus RTU / Modbus TCP)",
 "model_slug": "umg-512-pro",
 "short_model": "UMG 512-PRO",
 "aliases": [
  "UMG512-PRO",
  "UMG 512",
  "UMG512",
  "UMG 512 PRO",
  "Janitza UMG512-PRO"
 ],
 "equipment_type": "Power meter (power quality analyser)",
 "applies_to": "UMG 512-PRO power quality analyser, per address list 1.054.016.3.k (08/2023).",
 "summary": "The UMG 512-PRO is Janitza's power quality analyser with four voltage and four current channels; the list covers both its RS-485 settings and IP network settings. Measurements are big-endian 32-bit floats that include the CT/VT ratios. This map covers the 19000-19120 'frequently required readings' block, total power factor, the fourth channel sum, energy totals, digital I/O, transformer ratios and the energy reset commands.",
 "transport": [
  "RTU",
  "TCP"
 ],
 "defaults": {
  "unit_id": null,
  "baud": null,
  "parity": "None",
  "data_bits": 8,
  "stop_bits": 2,
  "tcp_port": null
 },
 "addressing": {
  "convention": "0-based",
  "note": "Addresses are printed as the protocol address and sent unchanged: 19000 is requested as 19000. The list starts at address 0 (real-time clock), which only fits 0-based numbering. In a 1-based or Modicon tool enter 19001 / 419001."
 },
 "default_word_order": "ABCD",
 "firmware": null,
 "source": {
  "title": "Power Quality Analyser UMG 512-PRO - Modbus-address and Formulary",
  "doc_number": "1.054.016.3.k",
  "revision_date": "2023-08",
  "url": "https://www.janitza.com/files/download/manuals/current/UMG512-PRO/janitza-mal-umg512pro-en.pdf",
  "pages": "Functions p. 4; transfer parameters, byte order, number formats p. 5; frequently required readings p. 12; date/time and measured values pp. 13-17; energy pp. 42-49; other values pp. 50-51"
 },
 "notes": [
  "Byte order: the list says its addresses return data big-endian (high byte first, high word in the lower register = ABCD). Adding 32768 to an address returns the same value little-endian; that mirror block is not listed.",
  "Data types in the list: short = signed 16-bit, int = signed 32-bit, uint = unsigned 32-bit, float = IEEE 754 32-bit. Float and integer values include the CT/VT ratios; short values do not.",
  "19068 in the frequently-read block is the consumed energy of tariff 1 (rate 1) only, so it is left out; the all-tariff consumed and delivered totals are taken from the energy table (6508 / 6520).",
  "The energy-table rows 6464-6594 are marked RD/WR in the list (counters can be preset), so they are listed as RW; the same totals in the 19000 block are read-only.",
  "19636 (total power factor) is printed RD/WR; it is a measured value, so do not write it.",
  "Transfer parameters (p. 5): 9.6 to 921.6 kbps, 8 data bits, no parity, the device sends 2 stop bits. The list gives no default baud rate or device address, and no Modbus TCP port.",
  "Left out: device serial number, RS-485 address, mode and baud rows (6856-6864), because the list marks them 'only for internal use'; the strings and internal configuration rows; harmonics, flicker, min/max/mean blocks, event and transient settings.",
  "The list itself does not name Modbus TCP or a TCP port; TCP is listed as a transport because the list carries IP address, mask and gateway settings. Confirm in the device user manual."
 ],
 "registers": [
  {
   "table": "holding_register",
   "address": 3921,
   "documented": "3921",
   "name": "Current sum L1-L4 (vector)",
   "description": "Vector sum of all four current inputs.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 3929,
   "documented": "3929",
   "name": "CosPhi total (fundamental)",
   "description": "CosPhi of the mains-frequency component, L1-L3.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 3997,
   "documented": "3997",
   "name": "Nominal frequency",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "Hz",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4209,
   "documented": "4209",
   "name": "Internal temperature",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "°C",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 6474,
   "documented": "6474",
   "name": "Apparent energy L1-L4",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "VAh",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 6508,
   "documented": "6508",
   "name": "Real energy L1-L3, consumed",
   "description": "Energy table copy; writable (preset).",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "Wh",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 6510,
   "documented": "6510",
   "name": "Real energy L1-L4, consumed",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "Wh",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 6520,
   "documented": "6520",
   "name": "Real energy L1-L3, delivered",
   "description": "Energy table copy; writable (preset).",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "Wh",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 6522,
   "documented": "6522",
   "name": "Real energy L1-L4, delivered",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "Wh",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 6630,
   "documented": "6630",
   "name": "Digital output 1 status",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Not active",
    "1": "Active"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 6631,
   "documented": "6631",
   "name": "Digital output 2 status",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Not active",
    "1": "Active"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 6632,
   "documented": "6632",
   "name": "Digital input 1 status",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "0": "Not active",
    "1": "Active"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 6633,
   "documented": "6633",
   "name": "Digital input 2 status",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "0": "Not active",
    "1": "Active"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 6654,
   "documented": "6654",
   "name": "Delete real energy counters",
   "description": "Write 1 to clear all real energy counters.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 6655,
   "documented": "6655",
   "name": "Delete reactive energy counters",
   "description": "Write 1 to clear all reactive energy counters.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 6689,
   "documented": "6689",
   "name": "CT L1-L3 primary",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "A",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 6691,
   "documented": "6691",
   "name": "CT L4 primary",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "A",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 6693,
   "documented": "6693",
   "name": "CT L1-L3 secondary",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "A",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 6695,
   "documented": "6695",
   "name": "CT L4 secondary",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "A",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 6697,
   "documented": "6697",
   "name": "VT L1-L3 primary",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "V",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 6699,
   "documented": "6699",
   "name": "VT L4 primary",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "V",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 6701,
   "documented": "6701",
   "name": "VT L1-L3 secondary",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "V",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19000,
   "documented": "19000",
   "name": "Voltage L1-N",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19002,
   "documented": "19002",
   "name": "Voltage L2-N",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19004,
   "documented": "19004",
   "name": "Voltage L3-N",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19006,
   "documented": "19006",
   "name": "Voltage L1-L2",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19008,
   "documented": "19008",
   "name": "Voltage L2-L3",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19010,
   "documented": "19010",
   "name": "Voltage L3-L1",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19012,
   "documented": "19012",
   "name": "Current L1",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19014,
   "documented": "19014",
   "name": "Current L2",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19016,
   "documented": "19016",
   "name": "Current L3",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19018,
   "documented": "19018",
   "name": "Neutral current (vector sum)",
   "description": "Calculated vector sum of the three phase currents.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19020,
   "documented": "19020",
   "name": "Real power L1",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "W",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19022,
   "documented": "19022",
   "name": "Real power L2",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "W",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19024,
   "documented": "19024",
   "name": "Real power L3",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "W",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19026,
   "documented": "19026",
   "name": "Real power total",
   "description": "Sum of L1-L3.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "W",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19028,
   "documented": "19028",
   "name": "Apparent power L1",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "VA",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19030,
   "documented": "19030",
   "name": "Apparent power L2",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "VA",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19032,
   "documented": "19032",
   "name": "Apparent power L3",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "VA",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19034,
   "documented": "19034",
   "name": "Apparent power total",
   "description": "Sum of L1-L3.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "VA",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19036,
   "documented": "19036",
   "name": "Reactive power L1 (fundamental)",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "var",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19038,
   "documented": "19038",
   "name": "Reactive power L2 (fundamental)",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "var",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19040,
   "documented": "19040",
   "name": "Reactive power L3 (fundamental)",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "var",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19042,
   "documented": "19042",
   "name": "Reactive power total (fundamental)",
   "description": "Sum of L1-L3.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "var",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19044,
   "documented": "19044",
   "name": "CosPhi L1 (fundamental)",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19046,
   "documented": "19046",
   "name": "CosPhi L2 (fundamental)",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19048,
   "documented": "19048",
   "name": "CosPhi L3 (fundamental)",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19050,
   "documented": "19050",
   "name": "Frequency",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "Hz",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19052,
   "documented": "19052",
   "name": "Rotation field",
   "description": "Float: 1 = clockwise, 0 = none, -1 = anticlockwise.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19054,
   "documented": "19054",
   "name": "Real energy L1",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "Wh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19056,
   "documented": "19056",
   "name": "Real energy L2",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "Wh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19058,
   "documented": "19058",
   "name": "Real energy L3",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "Wh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19060,
   "documented": "19060",
   "name": "Real energy L1-L3",
   "description": "Three-phase total, not split into consumed and delivered.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "Wh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19062,
   "documented": "19062",
   "name": "Real energy L1, consumed",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "Wh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19064,
   "documented": "19064",
   "name": "Real energy L2, consumed",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "Wh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19066,
   "documented": "19066",
   "name": "Real energy L3, consumed",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "Wh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19070,
   "documented": "19070",
   "name": "Real energy L1, delivered",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "Wh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19072,
   "documented": "19072",
   "name": "Real energy L2, delivered",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "Wh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19074,
   "documented": "19074",
   "name": "Real energy L3, delivered",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "Wh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19076,
   "documented": "19076",
   "name": "Real energy L1-L3, delivered",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "Wh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19084,
   "documented": "19084",
   "name": "Apparent energy L1-L3",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "VAh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19092,
   "documented": "19092",
   "name": "Reactive energy L1-L3 (fundamental)",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "varh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19100,
   "documented": "19100",
   "name": "Reactive energy inductive L1-L3 (fundamental)",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "varh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19108,
   "documented": "19108",
   "name": "Reactive energy capacitive L1-L3 (fundamental)",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "varh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19110,
   "documented": "19110",
   "name": "THD voltage L1-N",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19112,
   "documented": "19112",
   "name": "THD voltage L2-N",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19114,
   "documented": "19114",
   "name": "THD voltage L3-N",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19116,
   "documented": "19116",
   "name": "THD current L1",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19118,
   "documented": "19118",
   "name": "THD current L2",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19120,
   "documented": "19120",
   "name": "THD current L3",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19636,
   "documented": "19636",
   "name": "Power factor total",
   "description": "Total real power / total apparent power (L1-L3).",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19716,
   "documented": "19716",
   "name": "Transformer ratio lock",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "0": "Not locked",
    "1": "Locked"
   },
   "bits": null,
   "offset": 0
  }
 ],
 "integration": {
  "summary": "Read holding registers (function 03) from 19000 over Modbus TCP or RTU: the block gives volts, amps, power, CosPhi, frequency, energy and THD as big-endian floats. For all-tariff energy totals read 6508 (consumed) and 6520 (delivered); 19636 gives the total power factor.",
  "minimum_registers": [
   {
    "table": "holding_register",
    "address": 19000,
    "why": "Voltage L1-N"
   },
   {
    "table": "holding_register",
    "address": 19012,
    "why": "Current L1"
   },
   {
    "table": "holding_register",
    "address": 19026,
    "why": "Total real power"
   },
   {
    "table": "holding_register",
    "address": 19636,
    "why": "Total power factor"
   },
   {
    "table": "holding_register",
    "address": 19050,
    "why": "Frequency"
   },
   {
    "table": "holding_register",
    "address": 6508,
    "why": "Consumed real energy, all tariffs"
   },
   {
    "table": "holding_register",
    "address": 6520,
    "why": "Delivered real energy, all tariffs"
   }
  ],
  "enable": "The address list does not describe how to enable Modbus or pick the port; it only lists the RS-485 and IP settings rows (several marked internal use).",
  "watchdog": null,
  "quirks": [
   "Addresses are used as printed (0-based).",
   "Floats are ABCD; add 32768 to an address to get the same value little-endian.",
   "Energy is in Wh and varh, not kWh."
  ],
  "setup": [
   "RS-485: 8 data bits, no parity; the device transmits 2 stop bits (the master may use 1 or 2).",
   "Set CT/VT ratios (6689-6701) so the float values read in primary units; 19716 shows whether the ratios are locked."
  ],
  "gotchas": [
   "19068 is tariff 1 only; use 6508 for the consumed total.",
   "Writing to the RW energy rows presets the counters."
  ]
 },
 "page": "https://easymodbus.com/modbus-register-maps/janitza/umg-512-pro",
 "address_note": "address = 0-based Modbus wire (PDU) address; documented = as printed in the source.",
 "note": "Re-typed from the manufacturer's public documentation (see source) and verified against it. Registers vary by firmware and options; verify against the live device before writing."
}
