{
 "manufacturer": "Accuenergy",
 "manufacturer_slug": "accuenergy",
 "model": "Acuvim-L Series",
 "model_slug": "acuvim-l",
 "short_model": "Acuvim-L",
 "aliases": [
  "Acuvim-CL",
  "Acuvim-EL"
 ],
 "equipment_type": "Power meter",
 "applies_to": "Accuenergy Acuvim-L series multifunction power and energy meters, user manual V4 (V 4.1.12, revised March 2026).",
 "summary": "The Acuvim-L is a panel-mount multifunction power and energy meter with RS485 Modbus RTU and optional expansion modules (Ethernet with Modbus TCP, I/O). All register data is in holding registers at hex addresses: settings and status as 16-bit words, real-time readings as 32-bit floats from 2180H, energy as scaled 32-bit integers from 2080H and THD as scaled 16-bit values. Relays and digital inputs on I/O modules use coil and discrete-input functions.",
 "transport": [
  "RTU",
  "TCP"
 ],
 "defaults": {
  "unit_id": 1,
  "baud": 19200,
  "parity": "None",
  "data_bits": 8,
  "stop_bits": 1,
  "tcp_port": null
 },
 "addressing": {
  "convention": "hex 0-based",
  "note": "Each register is listed by hex address (e.g. 2180H) with its decimal value (8576); that number goes on the wire unchanged, as in the manual's query example with start address 40 00H."
 },
 "default_word_order": "ABCD",
 "firmware": null,
 "source": {
  "title": "Acuvim-L Multifunction Power and Energy Meter Users Manual",
  "doc_number": "V 4.1.12",
  "revision_date": "2026-03",
  "url": "https://www.accuenergy.com/wp-content/uploads/Acuvim-L-Multifunction-Power-and-Energy-Meter-User-Manual-v4.pdf",
  "pages": "Chapter 6, PDF pages 158-172 (examples, data types, settings, floats, energy) and 183 (THD)"
 },
 "notes": [
  "Word order: the read example returns frequency 50.00 Hz as 42 48 00 00 (high word first) and dword values are defined as high word first. All 32-bit values here are ABCD.",
  "IMPORTANT - primary vs secondary: Basic Parameter Mode (101DH) controls the real-time float block (Table 6-19, 2180H-21D3H). Its default is 0 = Secondary. Only with 101DH = 1 do the registers hold primary values, and only then are the scales and units in this map correct for voltage, current, power and demand. In secondary mode the manual gives primary voltage = value x PT1/PT2, current = value x CT1/CT2, power = value x (PT1/PT2) x (CT1/CT2) / 1000 (kW, kvar, kVA). For 333 mV and Rogowski (100 mV/50 Hz, 120 mV/60 Hz) CT options the manual says to use CT2 = 1 in that calculation, so the raw current value is then not a secondary-side ampere reading. This map cannot express a ratio taken from other registers, and PT1/PT2 are not mapped (see below), so set 101DH = 1 before using these registers. Frequency, power factor, unbalance and load type are the same in both modes.",
  "Power, reactive power, apparent power and power demand floats are divided by 1000 to give kW, kvar and kVA (primary mode), so scale 0.001 is used with those units.",
  "Energy scale depends on Energy Display Mode (1019H). The manual states the default is 'Primary 0.1 Mode' (register value 0, 'Primary in kWh'), for which the energy table gives Rx/10; scale 0.1 in this map is valid only in that mode and each energy register says so. Secondary mode (1) is Rx/1000. Mode 2 is labelled 'Primary in 0.01kWh' in the settings table but 'Primary 0.001 Mode' (Rx/1000) in the energy table, so its resolution is unclear.",
  "The manual's worked examples read the 4000H block (frequency at 4000H, energy at 4048H), but the v4 address tables list real-time floats at 3000H and 2180H and energy at 2080H. This map uses the tabulated 2180H/2080H addresses.",
  "Left out: net active/reactive/apparent energy (2086H, 2096H, 20A6H), typed uint32 but with a signed range; reactive and apparent power demand (21C8H/21CAH), whose formulas and units are swapped in the table.",
  "Left out: channel 1/2 baud rate (1002H, 102FH) and PT1/PT2 (1005H-1007H), whose encodings in a 16-bit word are not explained.",
  "Not covered: 3000H basic block (duplicates 2180H), harmonics by order, max/min, TOU, alarms, logs and I/O module settings.",
  "The channel 1 protocol register (0FFEH) lists 2 = BACnet MS/TP in the table, but the note under the table says 1 selects BACnet, so only 0 = Modbus is given.",
  "The energy table prints apparent-energy units as kVA; they are given here as kVAh.",
  "The address-block discrepancy above has not been checked on a meter: the worked examples and the historical-log section use 4000H (frequency) and 4002H (phase A voltage), while the register tables give 2180H/2080H. If 2180H returns an exception on older firmware, compare with the Acuvim II map."
 ],
 "registers": [
  {
   "table": "coil",
   "address": 0,
   "documented": "0000H",
   "name": "Relay 1",
   "description": "Requires an I/O module with relays. FF00H on, 0000H off.",
   "data_type": "BIT",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "coil",
   "address": 1,
   "documented": "0001H",
   "name": "Relay 2",
   "description": "Requires an I/O module with relays.",
   "data_type": "BIT",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "discrete_input",
   "address": 0,
   "documented": "0000H",
   "name": "DI1",
   "description": "Requires an I/O module with digital inputs.",
   "data_type": "BIT",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "discrete_input",
   "address": 1,
   "documented": "0001H",
   "name": "DI2",
   "description": "Requires an I/O module with digital inputs.",
   "data_type": "BIT",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "discrete_input",
   "address": 2,
   "documented": "0002H",
   "name": "DI3",
   "description": "Requires an I/O module with digital inputs.",
   "data_type": "BIT",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "discrete_input",
   "address": 3,
   "documented": "0003H",
   "name": "DI4",
   "description": "Requires an I/O module with digital inputs.",
   "data_type": "BIT",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4093,
   "documented": "0FFDH",
   "name": "Frequency selection",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "50 Hz",
    "1": "60 Hz"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4094,
   "documented": "0FFEH",
   "name": "Channel 1 communication protocol",
   "description": "0 = Modbus (default). The BACnet code is printed inconsistently (see notes).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Modbus"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4095,
   "documented": "0FFFH",
   "name": "Channel 1 parity",
   "description": "Default 3.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Even",
    "1": "Odd",
    "2": "None, 2 stop bits",
    "3": "None, 1 stop bit"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4096,
   "documented": "1000H",
   "name": "Password",
   "description": "0 to 9999.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4097,
   "documented": "1001H",
   "name": "Channel 1 address",
   "description": "Modbus address 1 to 247. Default 1.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4099,
   "documented": "1003H",
   "name": "Voltage input wiring type",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "3LN",
    "1": "1LN",
    "2": "2LL",
    "3": "3LL",
    "4": "1LL"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4100,
   "documented": "1004H",
   "name": "Current input wiring type",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "3CT",
    "1": "1CT",
    "2": "2CT"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4104,
   "documented": "1008H",
   "name": "CT1",
   "description": "CT primary current in A; range depends on CT type.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4105,
   "documented": "1009H",
   "name": "CT2",
   "description": "CT secondary rating; allowed codes depend on meter CT option.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "5": "5 A",
    "1": "1 A",
    "333": "333 mV",
    "100": "100 mV/50 Hz; 120 mV/60 Hz"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4106,
   "documented": "100AH",
   "name": "kWh pulse constant",
   "description": "1 to 60000. Default 5000.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4107,
   "documented": "100BH",
   "name": "kvarh pulse constant",
   "description": "1 to 60000. Default 5000.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4108,
   "documented": "100CH",
   "name": "LCD backlight time",
   "description": "0 to 120.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4109,
   "documented": "100DH",
   "name": "Demand interval",
   "description": "1 to 30. Default 15.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4110,
   "documented": "100EH",
   "name": "Demand method",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Fixed window",
    "1": "Sliding window",
    "2": "Thermal",
    "3": "Rolling window"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4111,
   "documented": "100FH",
   "name": "Clear demand",
   "description": "Write 1 to clear demand.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "1": "Clear"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4112,
   "documented": "1010H",
   "name": "Clear max/min",
   "description": "Write 1 to clear max/min records.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "1": "Clear"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4113,
   "documented": "1011H",
   "name": "Clear run hours",
   "description": "Write 1 to clear the run-time counter.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "1": "Clear"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4114,
   "documented": "1012H",
   "name": "Current I1 direction",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Positive",
    "1": "Negative"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4115,
   "documented": "1013H",
   "name": "Current I2 direction",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Positive",
    "1": "Negative"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4116,
   "documented": "1014H",
   "name": "Current I3 direction",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Positive",
    "1": "Negative"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4117,
   "documented": "1015H",
   "name": "VAR/PF convention",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "IEC",
    "1": "IEEE"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4118,
   "documented": "1016H",
   "name": "Clear energy",
   "description": "Write 1 to clear energy counters.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "1": "Clear"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4121,
   "documented": "1019H",
   "name": "Energy display mode",
   "description": "Changes energy register resolution; see notes.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Primary in kWh",
    "1": "Secondary",
    "2": "Primary in 0.01 kWh"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4125,
   "documented": "101DH",
   "name": "Basic parameter mode",
   "description": "Selects primary- or secondary-side values in float registers.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Secondary",
    "1": "Primary"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4127,
   "documented": "101FH",
   "name": "Seal status",
   "description": "0x0A means sealed; anything else unsealed.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "10": "Sealed"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4135,
   "documented": "1027H",
   "name": "Line N current method",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Calculated",
    "1": "Measured"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4142,
   "documented": "102EH",
   "name": "System status",
   "description": "New-record flags; clear after reading.",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "0": "New alarm record",
    "1": "New SOE record"
   },
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4144,
   "documented": "1030H",
   "name": "Channel 2 parity",
   "description": "Second port (communication module).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Even",
    "1": "Odd",
    "2": "None, 2 stop bits",
    "3": "None, 1 stop bit"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4145,
   "documented": "1031H",
   "name": "Channel 2 address",
   "description": "1 to 247. Default 1.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4146,
   "documented": "1032H",
   "name": "Alarm record number",
   "description": "0 = none; 1 to 16 = latest alarm record.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4148,
   "documented": "1034H-1035H",
   "name": "Run time",
   "description": "Meter running hours, 0.01 h resolution.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "h",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4150,
   "documented": "1036H",
   "name": "Modules connection status",
   "description": "1 = I/O module connected.",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "0": "AXM-IO11",
    "1": "AXM-IO12",
    "2": "AXM-IO21",
    "3": "AXM-IO22",
    "4": "AXM-IO31",
    "5": "AXM-IO32"
   },
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4159,
   "documented": "103FH",
   "name": "Clock week",
   "description": "0 to 6.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4160,
   "documented": "1040H",
   "name": "Clock year",
   "description": "2000 to 2099.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4161,
   "documented": "1041H",
   "name": "Clock month",
   "description": "1 to 12.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4162,
   "documented": "1042H",
   "name": "Clock day",
   "description": "1 to 31.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4163,
   "documented": "1043H",
   "name": "Clock hour",
   "description": "0 to 23.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4164,
   "documented": "1044H",
   "name": "Clock minute",
   "description": "0 to 59.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4165,
   "documented": "1045H",
   "name": "Clock second",
   "description": "0 to 59.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8320,
   "documented": "2080H-2081H",
   "name": "Import active energy",
   "description": "Scale 0.1 only with energy display mode 1019H = 0 (default); mode 1 is Rx/1000.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.1,
   "units": "kWh",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8322,
   "documented": "2082H-2083H",
   "name": "Export active energy",
   "description": "Scale 0.1 only with energy display mode 1019H = 0 (default); mode 1 is Rx/1000.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.1,
   "units": "kWh",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8324,
   "documented": "2084H-2085H",
   "name": "Total active energy",
   "description": "Scale 0.1 only with energy display mode 1019H = 0 (default); mode 1 is Rx/1000.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.1,
   "units": "kWh",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8328,
   "documented": "2088H-2089H",
   "name": "Active energy Q1",
   "description": "Scale 0.1 only with energy display mode 1019H = 0 (default); mode 1 is Rx/1000.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.1,
   "units": "kWh",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8330,
   "documented": "208AH-208BH",
   "name": "Active energy Q2",
   "description": "Scale 0.1 only with energy display mode 1019H = 0 (default); mode 1 is Rx/1000.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.1,
   "units": "kWh",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8332,
   "documented": "208CH-208DH",
   "name": "Active energy Q3",
   "description": "Scale 0.1 only with energy display mode 1019H = 0 (default); mode 1 is Rx/1000.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.1,
   "units": "kWh",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8334,
   "documented": "208EH-208FH",
   "name": "Active energy Q4",
   "description": "Scale 0.1 only with energy display mode 1019H = 0 (default); mode 1 is Rx/1000.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.1,
   "units": "kWh",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8336,
   "documented": "2090H-2091H",
   "name": "Import reactive energy",
   "description": "Scale 0.1 only with energy display mode 1019H = 0 (default); mode 1 is Rx/1000.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.1,
   "units": "kvarh",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8338,
   "documented": "2092H-2093H",
   "name": "Export reactive energy",
   "description": "Scale 0.1 only with energy display mode 1019H = 0 (default); mode 1 is Rx/1000.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.1,
   "units": "kvarh",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8340,
   "documented": "2094H-2095H",
   "name": "Total reactive energy",
   "description": "Scale 0.1 only with energy display mode 1019H = 0 (default); mode 1 is Rx/1000.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.1,
   "units": "kvarh",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8352,
   "documented": "20A0H-20A1H",
   "name": "Import apparent energy",
   "description": "Scale 0.1 only with energy display mode 1019H = 0 (default); mode 1 is Rx/1000.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.1,
   "units": "kVAh",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8354,
   "documented": "20A2H-20A3H",
   "name": "Export apparent energy",
   "description": "Scale 0.1 only with energy display mode 1019H = 0 (default); mode 1 is Rx/1000.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.1,
   "units": "kVAh",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8356,
   "documented": "20A4H-20A5H",
   "name": "Total apparent energy",
   "description": "Scale 0.1 only with energy display mode 1019H = 0 (default); mode 1 is Rx/1000.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.1,
   "units": "kVAh",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8368,
   "documented": "20B0H-20B1H",
   "name": "Phase A import active energy",
   "description": "Scale 0.1 only with energy display mode 1019H = 0 (default); mode 1 is Rx/1000.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.1,
   "units": "kWh",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8370,
   "documented": "20B2H-20B3H",
   "name": "Phase A export active energy",
   "description": "Scale 0.1 only with energy display mode 1019H = 0 (default); mode 1 is Rx/1000.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.1,
   "units": "kWh",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8372,
   "documented": "20B4H-20B5H",
   "name": "Phase B import active energy",
   "description": "Scale 0.1 only with energy display mode 1019H = 0 (default); mode 1 is Rx/1000.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.1,
   "units": "kWh",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8374,
   "documented": "20B6H-20B7H",
   "name": "Phase B export active energy",
   "description": "Scale 0.1 only with energy display mode 1019H = 0 (default); mode 1 is Rx/1000.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.1,
   "units": "kWh",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8376,
   "documented": "20B8H-20B9H",
   "name": "Phase C import active energy",
   "description": "Scale 0.1 only with energy display mode 1019H = 0 (default); mode 1 is Rx/1000.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.1,
   "units": "kWh",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8378,
   "documented": "20BAH-20BBH",
   "name": "Phase C export active energy",
   "description": "Scale 0.1 only with energy display mode 1019H = 0 (default); mode 1 is Rx/1000.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.1,
   "units": "kWh",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8576,
   "documented": "2180H-2181H",
   "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": 8578,
   "documented": "2182H-2183H",
   "name": "Phase 1 voltage",
   "description": "Primary volts only if 101DH = 1; default 0 gives secondary-mode values, see notes.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8580,
   "documented": "2184H-2185H",
   "name": "Phase 2 voltage",
   "description": "Primary volts only if 101DH = 1; default 0 gives secondary-mode values, see notes.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8582,
   "documented": "2186H-2187H",
   "name": "Phase 3 voltage",
   "description": "Primary volts only if 101DH = 1; default 0 gives secondary-mode values, see notes.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8584,
   "documented": "2188H-2189H",
   "name": "Average phase voltage",
   "description": "Primary volts only if 101DH = 1; default 0 gives secondary-mode values, see notes.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8586,
   "documented": "218AH-218BH",
   "name": "Line voltage 1-2",
   "description": "Primary volts only if 101DH = 1; default 0 gives secondary-mode values, see notes.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8588,
   "documented": "218CH-218DH",
   "name": "Line voltage 2-3",
   "description": "Primary volts only if 101DH = 1; default 0 gives secondary-mode values, see notes.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8590,
   "documented": "218EH-218FH",
   "name": "Line voltage 3-1",
   "description": "Primary volts only if 101DH = 1; default 0 gives secondary-mode values, see notes.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8592,
   "documented": "2190H-2191H",
   "name": "Average line voltage",
   "description": "Primary volts only if 101DH = 1; default 0 gives secondary-mode values, see notes.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8594,
   "documented": "2192H-2193H",
   "name": "Phase A current",
   "description": "Primary amps only if 101DH = 1; default 0 gives secondary-mode values, see notes.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8596,
   "documented": "2194H-2195H",
   "name": "Phase B current",
   "description": "Primary amps only if 101DH = 1; default 0 gives secondary-mode values, see notes.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8598,
   "documented": "2196H-2197H",
   "name": "Phase C current",
   "description": "Primary amps only if 101DH = 1; default 0 gives secondary-mode values, see notes.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8600,
   "documented": "2198H-2199H",
   "name": "Neutral current calculated",
   "description": "Primary amps only if 101DH = 1; default 0 gives secondary-mode values, see notes.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8602,
   "documented": "219AH-219BH",
   "name": "Neutral current measured",
   "description": "Primary amps only if 101DH = 1; default 0 gives secondary-mode values, see notes.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8604,
   "documented": "219CH-219DH",
   "name": "Total current",
   "description": "Primary amps only if 101DH = 1; default 0 gives secondary-mode values, see notes.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8606,
   "documented": "219EH-219FH",
   "name": "Average current",
   "description": "Primary amps only if 101DH = 1; default 0 gives secondary-mode values, see notes.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8608,
   "documented": "21A0H-21A1H",
   "name": "Phase A power",
   "description": "Value/1000 = primary kW only if 101DH = 1; secondary mode needs PT/CT ratios, see notes.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.001,
   "units": "kW",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8610,
   "documented": "21A2H-21A3H",
   "name": "Phase B power",
   "description": "Value/1000 = primary kW only if 101DH = 1; secondary mode needs PT/CT ratios, see notes.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.001,
   "units": "kW",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8612,
   "documented": "21A4H-21A5H",
   "name": "Phase C power",
   "description": "Value/1000 = primary kW only if 101DH = 1; secondary mode needs PT/CT ratios, see notes.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.001,
   "units": "kW",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8614,
   "documented": "21A6H-21A7H",
   "name": "Total system power",
   "description": "Value/1000 = primary kW only if 101DH = 1; secondary mode needs PT/CT ratios, see notes.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.001,
   "units": "kW",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8616,
   "documented": "21A8H-21A9H",
   "name": "Phase A reactive power",
   "description": "Value/1000 = primary kvar only if 101DH = 1; secondary mode needs PT/CT ratios, see notes.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.001,
   "units": "kvar",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8618,
   "documented": "21AAH-21ABH",
   "name": "Phase B reactive power",
   "description": "Value/1000 = primary kvar only if 101DH = 1; secondary mode needs PT/CT ratios, see notes.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.001,
   "units": "kvar",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8620,
   "documented": "21ACH-21ADH",
   "name": "Phase C reactive power",
   "description": "Value/1000 = primary kvar only if 101DH = 1; secondary mode needs PT/CT ratios, see notes.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.001,
   "units": "kvar",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8622,
   "documented": "21AEH-21AFH",
   "name": "Total reactive power",
   "description": "Value/1000 = primary kvar only if 101DH = 1; secondary mode needs PT/CT ratios, see notes.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.001,
   "units": "kvar",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8624,
   "documented": "21B0H-21B1H",
   "name": "Phase A apparent power",
   "description": "Value/1000 = primary kVA only if 101DH = 1; secondary mode needs PT/CT ratios, see notes.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.001,
   "units": "kVA",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8626,
   "documented": "21B2H-21B3H",
   "name": "Phase B apparent power",
   "description": "Value/1000 = primary kVA only if 101DH = 1; secondary mode needs PT/CT ratios, see notes.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.001,
   "units": "kVA",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8628,
   "documented": "21B4H-21B5H",
   "name": "Phase C apparent power",
   "description": "Value/1000 = primary kVA only if 101DH = 1; secondary mode needs PT/CT ratios, see notes.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.001,
   "units": "kVA",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8630,
   "documented": "21B6H-21B7H",
   "name": "Total apparent power",
   "description": "Value/1000 = primary kVA only if 101DH = 1; secondary mode needs PT/CT ratios, see notes.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.001,
   "units": "kVA",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8632,
   "documented": "21B8H-21B9H",
   "name": "Phase A power factor",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8634,
   "documented": "21BAH-21BBH",
   "name": "Phase B power factor",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8636,
   "documented": "21BCH-21BDH",
   "name": "Phase C power factor",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8638,
   "documented": "21BEH-21BFH",
   "name": "Total power factor",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8640,
   "documented": "21C0H-21C1H",
   "name": "Voltage unbalance",
   "description": "Raw value is a fraction; x100 gives percent.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 100,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8642,
   "documented": "21C2H-21C3H",
   "name": "Current unbalance",
   "description": "Raw value is a fraction; x100 gives percent.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 100,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8644,
   "documented": "21C4H-21C5H",
   "name": "Load characteristic",
   "description": "Character code of load type.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "76": "L (inductive)",
    "67": "C (capacitive)",
    "82": "R (resistive)"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8646,
   "documented": "21C6H-21C7H",
   "name": "Power demand",
   "description": "Value/1000 = primary kW only if 101DH = 1; secondary mode needs PT/CT ratios, see notes.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.001,
   "units": "kW",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8652,
   "documented": "21CCH-21CDH",
   "name": "Phase A current demand",
   "description": "Primary amps only if 101DH = 1; default 0 gives secondary-mode values, see notes.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8654,
   "documented": "21CEH-21CFH",
   "name": "Phase B current demand",
   "description": "Primary amps only if 101DH = 1; default 0 gives secondary-mode values, see notes.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8656,
   "documented": "21D0H-21D1H",
   "name": "Phase C current demand",
   "description": "Primary amps only if 101DH = 1; default 0 gives secondary-mode values, see notes.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8658,
   "documented": "21D2H-21D3H",
   "name": "Neutral current demand",
   "description": "Primary amps only if 101DH = 1; default 0 gives secondary-mode values, see notes.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 16474,
   "documented": "405AH",
   "name": "THD V1 (V12)",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 16475,
   "documented": "405BH",
   "name": "THD V2 (V31)",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 16476,
   "documented": "405CH",
   "name": "THD V3 (V23)",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 16477,
   "documented": "405DH",
   "name": "THD voltage average",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 16478,
   "documented": "405EH",
   "name": "THD I1",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 16479,
   "documented": "405FH",
   "name": "THD I2",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 16480,
   "documented": "4060H",
   "name": "THD I3",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 16481,
   "documented": "4061H",
   "name": "THD current average",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  }
 ],
 "integration": {
  "summary": "Read the floats at 2180H-21D3H with function 03 (high word first) for voltage, current, power, PF and demand, and the uint32 energy counters from 2080H. Set Basic Parameter Mode 101DH = 1 so floats are already primary values.",
  "minimum_registers": [
   {
    "table": "holding_register",
    "address": 8576,
    "why": "Frequency"
   },
   {
    "table": "holding_register",
    "address": 8578,
    "why": "Phase 1 voltage"
   },
   {
    "table": "holding_register",
    "address": 8594,
    "why": "Phase A current"
   },
   {
    "table": "holding_register",
    "address": 8614,
    "why": "Total system power"
   },
   {
    "table": "holding_register",
    "address": 8638,
    "why": "Total power factor"
   },
   {
    "table": "holding_register",
    "address": 8320,
    "why": "Import active energy"
   },
   {
    "table": "holding_register",
    "address": 8322,
    "why": "Export active energy"
   },
   {
    "table": "holding_register",
    "address": 4125,
    "why": "Primary/secondary mode for float readings"
   }
  ],
  "enable": "Channel 1 must be set to Modbus (0FFEH = 0, the default). Writable registers are changed with function 10H; relays on an I/O module are switched with function 05.",
  "watchdog": null,
  "quirks": [
   "All register data is read with function 03; the manual lists no function 04. Relays use functions 01/05 and digital inputs function 02.",
   "Float readings are secondary-mode values unless Basic Parameter Mode 101DH is set to 1 (Primary); the default is Secondary.",
   "Energy counters are integers whose resolution follows the energy display mode."
  ],
  "setup": [
   "Channel 1 defaults: address 1, 19200 bps, no parity with 1 stop bit (parity code 3).",
   "Set wiring type (1003H/1004H) and CT/PT ratios to match the installation before relying on readings."
  ],
  "gotchas": [
   "System status flags (102EH) should be cleared after reading or new alarm/SOE records may not be stored.",
   "Writing 1 to Clear energy (1016H) erases the energy counters."
  ]
 },
 "page": "https://easymodbus.com/modbus-register-maps/accuenergy/acuvim-l",
 "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."
}
