{
 "manufacturer": "inepro Metering",
 "manufacturer_slug": "inepro-metering",
 "model": "PRO380-Mod three-phase energy meter",
 "model_slug": "pro380-mod",
 "short_model": "PRO380-Mod",
 "aliases": [
  "PRO380 Mod",
  "PRO380-Mod CT",
  "PRO380-MOD",
  "inepro PRO380",
  "PRO380 MID"
 ],
 "equipment_type": "Energy meter",
 "applies_to": "PRO380-Mod and PRO380-Mod CT (RS485 Modbus RTU), current register map from PRO380 user manual version 2.18-8.",
 "summary": "The PRO380-Mod is inepro's MID-certified three-phase DIN-rail energy meter (direct connection up to 100 A, or a CT version) with an RS485 Modbus RTU port. Every measurement is an IEEE 754 float sent high word first and read with function 03 from hex address blocks 4000h (setup), 5000h (live values) and 6000h (energy). This map covers phase voltages, currents, powers, power factor, frequency, total/tariff/per-phase energy and the writable address, baud, parity, tariff, S0 and combination-code settings.",
 "transport": [
  "RTU"
 ],
 "defaults": {
  "unit_id": 1,
  "baud": 9600,
  "parity": "Even",
  "data_bits": 8,
  "stop_bits": 1,
  "tcp_port": null
 },
 "addressing": {
  "convention": "hex 0-based",
  "note": "The map prints addresses in hex and they go into the request unchanged: the manual's example frames are 01 06 4003 000A (set Modbus ID) and 01 06 6048 0002 (set tariff). So 4003h is wire address 16387 and 5012h (total active power) is 20498. Do not enter the hex numbers as decimal."
 },
 "default_word_order": "ABCD",
 "firmware": null,
 "source": {
  "title": "PRO380 Series MID Three phase energy meter PRO380-S, PRO380-Mb, PRO380-Mod - User manual",
  "doc_number": "Version 2.18-8",
  "revision_date": "2026",
  "url": "https://cdn.prod.website-files.com/6617f74190bf0a53bfd776e8/69f0b42e8df8da5157fb250d_PRO380%20user%20manual%20V2.18-8.pdf",
  "pages": "RS485 spec p. 9; display menus and settings pp. 15-19; Modbus communication p. 26; register map and write commands pp. 27-28 (Appendix A3.2)"
 },
 "notes": [
  "The PDF is the user manual linked from the official PRO380-Mod product page (ineprometering.com/product/pro380-mod-electricity-meter, documentation tab).",
  "'Float ABCD' in the map = IEEE 754 32-bit float, high word first. 'Signed' rows are 16-bit integers.",
  "Units are as printed: power in kW, kvar and kVA (not W), energy in kWh and kvarh.",
  "Left out: Voltage (5000h), Current (500Ah) and Error code (4015h) - the map marks them 'PRO1 only'.",
  "Left out: serial number (4000h), meter code (4002h), CT ratio (400Ch), LCD cycle time (4010h), checksum (401Bh) and active status word (401Dh). They are typed only as 'HEX' with no encoding given; the LCD-time example writes 0025 for 25 s, which suggests BCD. Current direction (4012h-4014h, 'ASCII') and CT mode (401Fh) are left out because their values are not described.",
  "S0 output rate (400Dh) accepts 10000, 2000, 1000, 100, 10, 1, 0.1 or 0.01 imp/kWh.",
  "The manual says the older V1.14 register map still works; it is not covered here.",
  "Baud rates differ between sections: the RS485 spec lists 1200-9600, the Modbus appendix and display menu also list 300 and 600 (and 2400). 9600, 4800 and 1200 appear in every list.",
  "The day-counter write row prints a register length of 1, but its example frame writes 2 registers (4 zero bytes) with function 16; it is listed here as a 2-register float."
 ],
 "registers": [
  {
   "table": "holding_register",
   "address": 16387,
   "documented": "4003",
   "name": "Modbus ID",
   "description": "Slave address 1-247 (default 1); write with function 06.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 16388,
   "documented": "4004",
   "name": "Baud rate",
   "description": "Baud rate as a plain number, e.g. 9600 = 0x2580.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 16389,
   "documented": "4005",
   "name": "Protocol version",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 16391,
   "documented": "4007",
   "name": "Software version",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 16393,
   "documented": "4009",
   "name": "Hardware version",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 16395,
   "documented": "400B",
   "name": "Meter amps",
   "description": "Current rating of the meter.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 16397,
   "documented": "400D",
   "name": "S0 output rate",
   "description": "Pulse output rate; write both registers with function 16.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "imp/kWh",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 16399,
   "documented": "400F",
   "name": "Combination code",
   "description": "How total energy combines forward and reverse.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "1": "Forward only",
    "4": "Reverse only",
    "5": "Forward + reverse",
    "6": "Reverse - forward",
    "9": "Forward - reverse",
    "10": "Forward - reverse (permanent once set)",
    "11": "Forward - reverse"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 16401,
   "documented": "4011",
   "name": "Parity setting",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "1": "Even",
    "2": "None",
    "3": "Odd"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 16406,
   "documented": "4016",
   "name": "Power down counter",
   "description": "Number of times the meter lost power; write 0 to reset.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 16407,
   "documented": "4017",
   "name": "Present quadrant",
   "description": "Present operating quadrant, whole meter.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 16408,
   "documented": "4018",
   "name": "L1 quadrant",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 16409,
   "documented": "4019",
   "name": "L2 quadrant",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 16410,
   "documented": "401A",
   "name": "L3 quadrant",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 20482,
   "documented": "5002",
   "name": "L1 voltage",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 20484,
   "documented": "5004",
   "name": "L2 voltage",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 20486,
   "documented": "5006",
   "name": "L3 voltage",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 20488,
   "documented": "5008",
   "name": "Grid 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": 20492,
   "documented": "500C",
   "name": "L1 current",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 20494,
   "documented": "500E",
   "name": "L2 current",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 20496,
   "documented": "5010",
   "name": "L3 current",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 20498,
   "documented": "5012",
   "name": "Total active power",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "kW",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 20500,
   "documented": "5014",
   "name": "L1 active power",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "kW",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 20502,
   "documented": "5016",
   "name": "L2 active power",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "kW",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 20504,
   "documented": "5018",
   "name": "L3 active power",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "kW",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 20506,
   "documented": "501A",
   "name": "Total reactive power",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "kvar",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 20508,
   "documented": "501C",
   "name": "L1 reactive power",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "kvar",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 20510,
   "documented": "501E",
   "name": "L2 reactive power",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "kvar",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 20512,
   "documented": "5020",
   "name": "L3 reactive power",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "kvar",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 20514,
   "documented": "5022",
   "name": "Total apparent power",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "kVA",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 20516,
   "documented": "5024",
   "name": "L1 apparent power",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "kVA",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 20518,
   "documented": "5026",
   "name": "L2 apparent power",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "kVA",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 20520,
   "documented": "5028",
   "name": "L3 apparent power",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "kVA",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 20522,
   "documented": "502A",
   "name": "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": 20524,
   "documented": "502C",
   "name": "L1 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": 20526,
   "documented": "502E",
   "name": "L2 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": 20528,
   "documented": "5030",
   "name": "L3 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": 24576,
   "documented": "6000",
   "name": "Total active energy",
   "description": "Forward and reverse combined per the combination code (400Fh).",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 24578,
   "documented": "6002",
   "name": "T1 total active energy",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 24580,
   "documented": "6004",
   "name": "T2 total active energy",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 24582,
   "documented": "6006",
   "name": "L1 total active energy",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 24584,
   "documented": "6008",
   "name": "L2 total active energy",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 24586,
   "documented": "600A",
   "name": "L3 total active energy",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 24588,
   "documented": "600C",
   "name": "Forward active energy",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 24590,
   "documented": "600E",
   "name": "T1 forward active energy",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 24592,
   "documented": "6010",
   "name": "T2 forward active energy",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 24594,
   "documented": "6012",
   "name": "L1 forward active energy",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 24596,
   "documented": "6014",
   "name": "L2 forward active energy",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 24598,
   "documented": "6016",
   "name": "L3 forward active energy",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 24600,
   "documented": "6018",
   "name": "Reverse active energy",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 24602,
   "documented": "601A",
   "name": "T1 reverse active energy",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 24604,
   "documented": "601C",
   "name": "T2 reverse active energy",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 24606,
   "documented": "601E",
   "name": "L1 reverse active energy",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 24608,
   "documented": "6020",
   "name": "L2 reverse active energy",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 24610,
   "documented": "6022",
   "name": "L3 reverse active energy",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 24612,
   "documented": "6024",
   "name": "Total reactive energy",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "kvarh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 24614,
   "documented": "6026",
   "name": "T1 total reactive energy",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "kvarh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 24616,
   "documented": "6028",
   "name": "T2 total reactive energy",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "kvarh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 24618,
   "documented": "602A",
   "name": "L1 total reactive energy",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "kvarh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 24620,
   "documented": "602C",
   "name": "L2 total reactive energy",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "kvarh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 24622,
   "documented": "602E",
   "name": "L3 total reactive energy",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "kvarh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 24624,
   "documented": "6030",
   "name": "Forward reactive energy",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "kvarh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 24626,
   "documented": "6032",
   "name": "T1 forward reactive energy",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "kvarh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 24628,
   "documented": "6034",
   "name": "T2 forward reactive energy",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "kvarh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 24630,
   "documented": "6036",
   "name": "L1 forward reactive energy",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "kvarh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 24632,
   "documented": "6038",
   "name": "L2 forward reactive energy",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "kvarh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 24634,
   "documented": "603A",
   "name": "L3 forward reactive energy",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "kvarh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 24636,
   "documented": "603C",
   "name": "Reverse reactive energy",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "kvarh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 24638,
   "documented": "603E",
   "name": "T1 reverse reactive energy",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "kvarh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 24640,
   "documented": "6040",
   "name": "T2 reverse reactive energy",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "kvarh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 24642,
   "documented": "6042",
   "name": "L1 reverse reactive energy",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "kvarh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 24644,
   "documented": "6044",
   "name": "L2 reverse reactive energy",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "kvarh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 24646,
   "documented": "6046",
   "name": "L3 reverse reactive energy",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "kvarh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 24648,
   "documented": "6048",
   "name": "Tariff",
   "description": "Active tariff; 11/12 switch tariff without saving it.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "1": "T1",
    "2": "T2",
    "11": "T1 (not saved)",
    "12": "T2 (not saved)"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 24649,
   "documented": "6049",
   "name": "Resettable day counter",
   "description": "Forward energy since last reset; write 0.0 with function 16 to reset.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "kWh",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  }
 ],
 "integration": {
  "summary": "Wire RS485 to terminals 22/23, poll unit 1 at 9600 baud 8E1 with function 03, and decode each value as a high-word-first float. Live values sit at 5002h-5031h, energy at 6000h-6047h.",
  "minimum_registers": [
   {
    "table": "holding_register",
    "address": 20482,
    "why": "L1 voltage"
   },
   {
    "table": "holding_register",
    "address": 20492,
    "why": "L1 current"
   },
   {
    "table": "holding_register",
    "address": 20498,
    "why": "Total active power (kW)"
   },
   {
    "table": "holding_register",
    "address": 20522,
    "why": "Power factor"
   },
   {
    "table": "holding_register",
    "address": 20488,
    "why": "Grid frequency"
   },
   {
    "table": "holding_register",
    "address": 24588,
    "why": "Forward (import) active energy"
   },
   {
    "table": "holding_register",
    "address": 24600,
    "why": "Reverse (export) active energy"
   }
  ],
  "enable": "The manual describes no enable step for Modbus on the -Mod variant. Set the address in display Program mode 2, and baud/parity in Program mode 3 (4-digit password, default 0000), with the inepro IR software, or over Modbus at 4003h/4004h/4011h.",
  "watchdog": null,
  "quirks": [
   "Addresses are hex: 5012h is decimal 20498 on the wire.",
   "Floats are ABCD (high word first).",
   "Power is in kW/kvar/kVA, not W.",
   "Default parity is even (8E1), not 8N1.",
   "Total active energy (6000h) follows the combination code; read forward (600Ch) and reverse (6018h) for import and export."
  ],
  "setup": [
   "RS485 on terminals 22 and 23; defaults Modbus ID 1, 9600 baud, 8 data bits, even parity, 1 stop bit.",
   "Parity can be changed to none or odd; data and stop bits are fixed.",
   "Fit a 120 ohm / 0.25 W resistor across terminals 22 and 23 at the meter when testing through an RS485 converter.",
   "The RS485 specification allows up to 60 meters (devices) on one bus; fewer at higher baud rates, depending on the converter."
  ],
  "gotchas": [
   "Combination code 10 can only be set once; a meter on C-10 cannot be switched to another mode.",
   "Program mode 3 settings (baud, parity, S0, combination code) need the display password (default 0000).",
   "On CT versions the CT ratio is set once at first power-up and cannot be changed afterwards."
  ]
 },
 "page": "https://easymodbus.com/modbus-register-maps/inepro-metering/pro380-mod",
 "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."
}
