{
 "manufacturer": "Accuenergy",
 "manufacturer_slug": "accuenergy",
 "model": "Acuvim II Series",
 "model_slug": "acuvim-ii",
 "short_model": "Acuvim II",
 "aliases": [
  "Acuvim IIR",
  "Acuvim IIW"
 ],
 "equipment_type": "Power meter",
 "applies_to": "Accuenergy Acuvim II series multifunction power meters (manual 1040E1303, V3.2.16 revised September 2026).",
 "summary": "The Acuvim II is a panel-mount multifunction power and energy meter with an RS485 Modbus RTU port, plus optional expansion modules (second RS485, Ethernet with Modbus TCP, I/O). All data lives in holding registers addressed by hex number: system settings and status as 16-bit words, live readings as 32-bit floats from 4000H, energy as 32-bit integers from 4048H, 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": "The manual lists each register as a hex address (e.g. 4000H) with its decimal equivalent (16384); that number is sent on the wire unchanged. Its example query for frequency uses start address 40 00H."
 },
 "default_word_order": "ABCD",
 "firmware": null,
 "source": {
  "title": "Acuvim II Series Power Meter User Manual",
  "doc_number": "V3.2.16",
  "revision_date": "2026-09",
  "url": "https://www.accuenergy.com/wp-content/uploads/Acuvim-II-Power-Meter-User-Manual-1040E1303.pdf",
  "pages": "Chapter 6, pp. 187-210 and 223-224 (PDF pages 189-212, 225-226)"
 },
 "notes": [
  "Word order: the manual's read example returns frequency 50.00 Hz as 42 48 00 00 and voltages as 42 C7 CC CD, high word first; dword values are defined as high word first (Rx = high word x 65536 + low word). All 32-bit values here are ABCD.",
  "IMPORTANT - primary vs secondary: Basic Parameter Mode (101DH) controls the real-time float block (4000H-4047H and 4600H-4605H). 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, Rogowski (100 mV/50 Hz) and 80/100/200 mA 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 is 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), default 0 = Primary: the energy table gives Rx/10 for primary mode, and the worked write example (0A9D4089H = 17807783.3 kWh) matches. Mode 1 (Secondary) is Rx/1000. Mode 2 is labelled 'Primary in 0.01kWh' in the settings table but grouped with Rx/1000 in the energy table and shown as 1 Wh resolution on the display menu, so its resolution is unclear. Scale 0.1 in this map is valid only with 1019H = 0, and each energy register says so.",
  "Left out: Reactive and apparent power demand (4044H/4046H), because the table gives them each other's formula and unit.",
  "Left out: channel 1/2 baud rate (1002H, 102FH): listed as 16-bit words with a 2400-115200 range, which cannot fit a word, so the encoding is unclear.",
  "Left out: PT1 (1005H-1006H) and PT2 (1007H) because their decimal ranges (50.0 ...) are not matched by a stated scale.",
  "The 0FFEH protocol register lists '2: BACnet MS/TP' in the table but its note says 1 selects BACnet, so only 0 = Modbus is given.",
  "Not covered: 100 ms metering block (3000H), max/min, harmonics per order, sequence components, TOU, alarms, data logs, I/O module settings and SunSpec registers.",
  "When writing with function 10H, one command may only modify one register region (system parameters, status, clock, alarm settings, I/O settings, logs).",
  "Left out: net active and net reactive energy (4052H, 4056H). The table types them 'int32', but the manual's data-type section defines only word, int, dword (high word first) and float, so the signed 32-bit encoding and word order are not stated."
 ],
 "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. The BACnet code is printed inconsistently (see notes).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "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 or 100 mA",
    "80": "80 mA",
    "200": "200 mA"
   },
   "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",
    "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": 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 (RS485 or Ethernet 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": 16384,
   "documented": "4000H-4001H",
   "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": 16386,
   "documented": "4002H-4003H",
   "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": 16388,
   "documented": "4004H-4005H",
   "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": 16390,
   "documented": "4006H-4007H",
   "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": 16392,
   "documented": "4008H-4009H",
   "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": 16394,
   "documented": "400AH-400BH",
   "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": 16396,
   "documented": "400CH-400DH",
   "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": 16398,
   "documented": "400EH-400FH",
   "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": 16400,
   "documented": "4010H-4011H",
   "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": 16402,
   "documented": "4012H-4013H",
   "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": 16404,
   "documented": "4014H-4015H",
   "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": 16406,
   "documented": "4016H-4017H",
   "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": 16408,
   "documented": "4018H-4019H",
   "name": "Average phase 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": 16410,
   "documented": "401AH-401BH",
   "name": "Neutral 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": 16412,
   "documented": "401CH-401DH",
   "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": 16414,
   "documented": "401EH-401FH",
   "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": 16416,
   "documented": "4020H-4021H",
   "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": 16418,
   "documented": "4022H-4023H",
   "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": 16420,
   "documented": "4024H-4025H",
   "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": 16422,
   "documented": "4026H-4027H",
   "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": 16424,
   "documented": "4028H-4029H",
   "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": 16426,
   "documented": "402AH-402BH",
   "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": 16428,
   "documented": "402CH-402DH",
   "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": 16430,
   "documented": "402EH-402FH",
   "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": 16432,
   "documented": "4030H-4031H",
   "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": 16434,
   "documented": "4032H-4033H",
   "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": 16436,
   "documented": "4034H-4035H",
   "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": 16438,
   "documented": "4036H-4037H",
   "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": 16440,
   "documented": "4038H-4039H",
   "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": 16442,
   "documented": "403AH-403BH",
   "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": 16444,
   "documented": "403CH-403DH",
   "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": 16446,
   "documented": "403EH-403FH",
   "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": 16448,
   "documented": "4040H-4041H",
   "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": 16450,
   "documented": "4042H-4043H",
   "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": 16456,
   "documented": "4048H-4049H",
   "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": 16458,
   "documented": "404AH-404BH",
   "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": 16460,
   "documented": "404CH-404DH",
   "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": 16462,
   "documented": "404EH-404FH",
   "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": 16464,
   "documented": "4050H-4051H",
   "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": 16468,
   "documented": "4054H-4055H",
   "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": 16472,
   "documented": "4058H-4059H",
   "name": "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": 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
  },
  {
   "table": "holding_register",
   "address": 17920,
   "documented": "4600H-4601H",
   "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": 17922,
   "documented": "4602H-4603H",
   "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": 17924,
   "documented": "4604H-4605H",
   "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": 17952,
   "documented": "4620H-4621H",
   "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": 17954,
   "documented": "4622H-4623H",
   "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": 17956,
   "documented": "4624H-4625H",
   "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": 17958,
   "documented": "4626H-4627H",
   "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": 17960,
   "documented": "4628H-4629H",
   "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": 17962,
   "documented": "462AH-462BH",
   "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
  }
 ],
 "integration": {
  "summary": "Poll 4000H-403BH with function 03 (30 floats, high word first) for frequency, voltages, currents, power and PF, and 4048H-4059H for energy counters. Set Basic Parameter Mode 101DH = 1 so floats are already primary values.",
  "minimum_registers": [
   {
    "table": "holding_register",
    "address": 16384,
    "why": "Frequency"
   },
   {
    "table": "holding_register",
    "address": 16386,
    "why": "Phase 1 voltage"
   },
   {
    "table": "holding_register",
    "address": 16402,
    "why": "Phase A current"
   },
   {
    "table": "holding_register",
    "address": 16418,
    "why": "Total system power"
   },
   {
    "table": "holding_register",
    "address": 16442,
    "why": "Total power factor"
   },
   {
    "table": "holding_register",
    "address": 16456,
    "why": "Import active energy"
   },
   {
    "table": "holding_register",
    "address": 16458,
    "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) from the front panel or software. Writable registers are changed with function 10H; relays on I/O modules 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 registers are integers scaled by the energy display mode, not floats.",
   "A single 10H write may not span two register regions."
  ],
  "setup": [
   "Channel 1 defaults: address 1, 19200 bps, no parity with 1 stop bit (parity code 3).",
   "When channel 2 uses the Ethernet module, the manual says to set channel 2 to 38400 bps and None1 parity.",
   "Set wiring type (1003H/1004H), CT1/CT2 and PT ratios to match the installation before relying on readings."
  ],
  "gotchas": [
   "System status flags (102EH) must be cleared after reading or new alarm/SOE records are not stored properly.",
   "Writing 1 to Clear energy (1016H) erases the energy counters."
  ]
 },
 "page": "https://easymodbus.com/modbus-register-maps/accuenergy/acuvim-ii",
 "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."
}
