{
 "manufacturer": "Janitza",
 "manufacturer_slug": "janitza",
 "model": "UMG 509-PRO power quality analyser (Modbus RTU / Modbus TCP)",
 "model_slug": "umg-509-pro",
 "short_model": "UMG 509-PRO",
 "aliases": [
  "UMG509-PRO",
  "UMG 509PRO",
  "UMG509PRO",
  "Janitza UMG 509"
 ],
 "equipment_type": "Power meter (power quality analyser)",
 "applies_to": "UMG 509-PRO per Modbus address list 1.059.004.2.n (06/2024).",
 "summary": "The UMG 509-PRO is a Janitza power quality analyser with a fourth voltage and current channel, an RS-485 port and network (IP) settings. Measurements are big-endian 32-bit floats; the 19000-19120 'frequently required readings' block is the same one used across Janitza meters. This map covers that block, the fourth channel, total power factor, consumed energy, digital I/O, transformer ratios and identity/network settings, with access rights as printed in the list.",
 "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 (system time), 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 Analyser UMG 509-PRO - Modbus-address and Formulary",
  "doc_number": "1.059.004.2.n",
  "revision_date": "2024-06",
  "url": "https://www.janitza.com/files/download/manuals/current/UMG509-PRO/janitza-mal-umg509pro-en.pdf",
  "pages": "Transfer parameters, byte order p. 5; frequently required readings p. 12; main values pp. 14-15; energy p. 26; other values pp. 30-32"
 },
 "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.",
  "Float and integer values include the CT/VT ratios; short-format values do not. Only floats and 32-bit integers are used for measurements here.",
  "Access (R / RW) is copied from the list's RD/WR column.",
  "Left out: 19068 (consumed L1-L3 on tariff 1 only); the consumed total is at 13995 (_WH_V[4]).",
  "Left out: the energy delete commands 14141/14142 (_DEL_WH/_DEL_QH) because the list says '1 = delete' but marks them read-only (RD), so write access is unclear.",
  "Left out: RS-485 mode and baud rate (14328/14330), which have no value coding in the list, plus harmonics, min/max/mean blocks, display, PTP and password rows.",
  "Measured values refresh every 200 ms.",
  "The address list gives the serial framing and the IP/DHCP registers but does not name the Modbus TCP port; the port is left blank here."
 ],
 "registers": [
  {
   "table": "holding_register",
   "address": 2059,
   "documented": "2059",
   "name": "Voltage L4-N",
   "description": "Fourth voltage input.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 2067,
   "documented": "2067",
   "name": "Current L4",
   "description": "Fourth current input (measured neutral or extra feeder).",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 2109,
   "documented": "2109",
   "name": "Power factor total L1-L3",
   "description": "P sum / sqrt(P sum^2 + Q sum^2) over 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": 2197,
   "documented": "2197",
   "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": 13995,
   "documented": "13995",
   "name": "Real energy L1-L3, consumed",
   "description": "Three-phase consumed (import) energy total.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "Wh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 14117,
   "documented": "14117",
   "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": 14118,
   "documented": "14118",
   "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": 14119,
   "documented": "14119",
   "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": 14120,
   "documented": "14120",
   "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": 14176,
   "documented": "14176",
   "name": "CT primary L1",
   "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": 14178,
   "documented": "14178",
   "name": "CT primary L2",
   "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": 14180,
   "documented": "14180",
   "name": "CT primary L3",
   "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": 14182,
   "documented": "14182",
   "name": "CT primary L4",
   "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": 14184,
   "documented": "14184",
   "name": "CT secondary L1",
   "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": 14186,
   "documented": "14186",
   "name": "CT secondary L2",
   "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": 14188,
   "documented": "14188",
   "name": "CT secondary L3",
   "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": 14190,
   "documented": "14190",
   "name": "CT secondary L4",
   "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": 14192,
   "documented": "14192",
   "name": "VT primary L1",
   "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": 14194,
   "documented": "14194",
   "name": "VT primary L2",
   "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": 14196,
   "documented": "14196",
   "name": "VT primary L3",
   "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": 14200,
   "documented": "14200",
   "name": "VT secondary L1",
   "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": 14202,
   "documented": "14202",
   "name": "VT secondary L2",
   "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": 14204,
   "documented": "14204",
   "name": "VT secondary L3",
   "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": 14322,
   "documented": "14322",
   "name": "Serial number",
   "description": "The list marks this row 'only for internal use'.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 14326,
   "documented": "14326",
   "name": "RS-485 Modbus address",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 14332,
   "documented": "14332",
   "name": "IP address",
   "description": "Packed 32-bit IPv4 address.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 14334,
   "documented": "14334",
   "name": "Subnet mask",
   "description": "Packed 32-bit IPv4 mask.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 14336,
   "documented": "14336",
   "name": "Gateway address",
   "description": "Packed 32-bit IPv4 gateway.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 14338,
   "documented": "14338",
   "name": "DHCP mode",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "DHCP off",
    "1": "DHCP on"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 14406,
   "documented": "14406",
   "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": 17435,
   "documented": "17435",
   "name": "Firmware release",
   "description": "Text, 16 characters (8 registers).",
   "data_type": "STRING",
   "length": 8,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 17477,
   "documented": "17477",
   "name": "Gateway timeout",
   "description": "Reply timeout when the device acts as Modbus gateway/master.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "ms",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 17998,
   "documented": "17998",
   "name": "Hardware index",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "",
   "access": "R",
   "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 L1-L3)",
   "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 L1-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": 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 L1-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": 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 L1-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": 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",
   "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",
   "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
  }
 ],
 "integration": {
  "summary": "Read holding registers (function 03) from 19000: 60 registers give volts, amps, power, CosPhi, frequency and per-phase energy as big-endian floats; 19060-19077 adds three-phase and delivered energy in Wh. Use Modbus TCP over Ethernet or RTU on RS-485.",
  "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": 19034,
    "why": "Total apparent power"
   },
   {
    "table": "holding_register",
    "address": 2109,
    "why": "Total power factor"
   },
   {
    "table": "holding_register",
    "address": 19050,
    "why": "Frequency"
   },
   {
    "table": "holding_register",
    "address": 13995,
    "why": "Consumed energy total"
   },
   {
    "table": "holding_register",
    "address": 19076,
    "why": "Delivered energy total"
   }
  ],
  "enable": "Modbus is available on Ethernet and on the RS-485 port. Set the Modbus address (14326) and IP/DHCP settings on the device or in GridVis.",
  "watchdog": null,
  "quirks": [
   "Addresses are used as printed (0-based).",
   "Floats are ABCD (high word first); add 32768 to an address for little-endian.",
   "Energy is in Wh and varh, not kWh.",
   "Rotation field (19052) is a float: 1, 0 or -1."
  ],
  "setup": [
   "RS-485 on the device itself: 8 data bits, no parity, 2 stop bits; baud 9.6, 19.2, 38.4, 57.6, 115.2 or 921.6 kbps.",
   "Set CT/VT ratios (14176-14206) so the floats read in primary units."
  ],
  "gotchas": [
   "19068 in the frequent block is tariff 1 consumed energy only; use 13995 for the full consumed total.",
   "Many rows in the settings area are marked 'only for internal use'; do not write them."
  ]
 },
 "page": "https://easymodbus.com/modbus-register-maps/janitza/umg-509-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."
}
