{
 "manufacturer": "Finder",
 "manufacturer_slug": "finder",
 "model": "7M.38 three-phase energy meter (Modbus RS485)",
 "model_slug": "7m38",
 "short_model": "7M.38",
 "aliases": [
  "7M.38",
  "7M38",
  "7M.38.8.400.0212",
  "7M3884000212",
  "Finder 7M38 Modbus"
 ],
 "equipment_type": "Energy meter",
 "applies_to": "Finder 7M.38 three-phase meters with serial RS485 communication (7M.38.8.400.XXXX serial versions); the 7M.24 single-phase meter in the same document is not covered.",
 "summary": "The 7M.38 is Finder's three-phase MID energy meter for DIN rail. The RS485 version speaks Modbus RTU and offers the same measurements twice: as packed integer formats and as IEEE 754 floats. This map uses the float block (voltages, currents, powers, power factor, THD, frequency, energy counters) plus identification, status, tariff, reset and serial-port registers.",
 "transport": [
  "RTU"
 ],
 "defaults": {
  "unit_id": null,
  "baud": null,
  "parity": null,
  "data_bits": 8,
  "stop_bits": null,
  "tcp_port": null
 },
 "addressing": {
  "convention": "Modicon",
  "note": "Registers are printed as 3xxxx (input, function 04) and 4xxxx (holding, functions 03/06/16), and the document gives 30000 / 40000 as the memory reference - not 30001. Its request example reads U1 (30107) by sending start address 0x006B = 107. So the wire address is the printed number minus 30000 or 40000: Pt float 32490 is input register 2490."
 },
 "default_word_order": "ABCD",
 "firmware": null,
 "source": {
  "title": "Modbus Communication Protocol 7M24 - 7M38",
  "doc_number": "v2 (footer 07/2026)",
  "revision_date": "07/2026",
  "url": "https://cdn.findernet.com/app/uploads/Modbus-7M24-7M38_v2_30062021.pdf",
  "pages": "7M38 section: input registers pp. 23-36, holding registers pp. 37-50, data types pp. 51-53 (printed page numbers); addressing example p. 2"
 },
 "notes": [
  "Wire address = printed number - 30000 (input registers) or - 40000 (holding registers); see the 30107 / 0x006B example in the document.",
  "T_float is IEEE 754 single precision sent high word first; the document's example stores 123.45 as 42F6 E666, so floats are ABCD. T3 (signed 32-bit) is also high word first.",
  "Measurements at 30105-30190 refresh once per second; the integer energy counters every 40 ms.",
  "Left out: the integer measurement block (30105-30175 and the 355xx-357xx average/max/min copies). It uses Finder types T5/T6/T7, which pack a signed decade exponent in the top byte and the value in the low 24 bits (or sign flags for power factor); that needs custom decoding rather than a plain integer with a fixed scale. Use the float block instead.",
  "Left out: integer energy counters 30406-30445 ('mantissa x EXP(exponent register)') because the document does not define the EXP operation, and the '1000 x energy counter' block, because the intro text places it at 30426-30441 while the table lists it at 30462-30501.",
  "Left out: a second float copy of counters n1-n4 at 32638-32645 that has no function code printed; the ENERGY block at 32752-32759 is used.",
  "Energy counters n1-n4 are non-resettable, counters 1-16 are user counters that can be reset via 40031. What each counter integrates (active/reactive/apparent, which phase, which quadrants = import or export) is set in the counter's parameter and configuration registers (40421 onward); the document does not list factory assignments, so check them on the meter.",
  "Left out: CAP/IND power factor floats (32562-32569) because the sign convention is not explained, alarm flag words, logic functions, data logger, LCD, Ethernet/WiFi/M-Bus settings and the alarm/pulse-output configuration groups.",
  "The 7M.24 single-phase meter uses a separate, shorter table in the same document and is not covered here.",
  "Verifier: the document does not name a specific order code for the RS485 version; it only says '7M.38.8.400.XXXX with serial communication'. The 0212 alias comes from Finder's catalogue, not this PDF."
 ],
 "registers": [
  {
   "table": "input_register",
   "address": 1,
   "documented": "30001",
   "name": "Model number",
   "description": "16-character text, two characters per register.",
   "data_type": "STRING",
   "length": 8,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 9,
   "documented": "30009",
   "name": "Serial number",
   "description": "8-character text.",
   "data_type": "STRING",
   "length": 4,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 13,
   "documented": "30013",
   "name": "Software version",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 44,
   "documented": "30044",
   "name": "Status register",
   "description": "",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "0": "Locked",
    "4": "Clock not set"
   },
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 76,
   "documented": "30076",
   "name": "MID lock status",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "0": "Unlocked",
    "1": "Locked"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 99,
   "documented": "30099",
   "name": "Modbus max registers per read",
   "description": "Largest register count the meter accepts in one read.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 101,
   "documented": "30101",
   "name": "Phase valid measurement",
   "description": "A set bit means that phase's measurement is invalid.",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "0": "Invalid measurement phase 1",
    "1": "Invalid measurement phase 2",
    "2": "Invalid measurement phase 3"
   },
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 103,
   "documented": "30103",
   "name": "Run time",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "s",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 197,
   "documented": "30197",
   "name": "External relay status",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "0": "Off",
    "1": "On",
    "250": "Comm. error",
    "255": "Not connected"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 400,
   "documented": "30400",
   "name": "Checksum status",
   "description": "0 = no error.",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "0": "Parameter CRC error",
    "1": "Firmware CRC error",
    "2": "MID-lock error",
    "3": "Phase module 1 checksum error",
    "4": "Phase module 2 checksum error",
    "5": "Phase module 3 checksum error",
    "6": "Measurement module checksum error",
    "7": "Software checksum error",
    "8": "Calibration data checksum error",
    "9": "MID setting data checksum error",
    "10": "Setting data checksum error",
    "11": "Phase module 1 calibration checksum error",
    "12": "Phase module 2 calibration checksum error",
    "13": "Phase module 3 calibration checksum error"
   },
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 405,
   "documented": "30405",
   "name": "Current active tariff",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 2480,
   "documented": "32480",
   "name": "Run time (float)",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "s",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 2484,
   "documented": "32484",
   "name": "Uavg phase-to-neutral",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 2486,
   "documented": "32486",
   "name": "Uavg phase-to-phase",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 2488,
   "documented": "32488",
   "name": "Sum of currents",
   "description": "Sum of the three phase currents.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 2490,
   "documented": "32490",
   "name": "Active power total (Pt)",
   "description": "Signed float.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "W",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 2492,
   "documented": "32492",
   "name": "Reactive power total (Qt)",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "var",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 2494,
   "documented": "32494",
   "name": "Apparent power total (St)",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "VA",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 2496,
   "documented": "32496",
   "name": "Power factor total (PFt)",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 2498,
   "documented": "32498",
   "name": "Frequency",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "Hz",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 2500,
   "documented": "32500",
   "name": "U1",
   "description": "Phase 1 to neutral.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 2502,
   "documented": "32502",
   "name": "U2",
   "description": "Phase 2 to neutral.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 2504,
   "documented": "32504",
   "name": "U3",
   "description": "Phase 3 to neutral.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 2508,
   "documented": "32508",
   "name": "U12",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 2510,
   "documented": "32510",
   "name": "U23",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 2512,
   "documented": "32512",
   "name": "U31",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 2516,
   "documented": "32516",
   "name": "I1",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 2518,
   "documented": "32518",
   "name": "I2",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 2520,
   "documented": "32520",
   "name": "I3",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 2528,
   "documented": "32528",
   "name": "Iavg",
   "description": "Average phase current.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 2530,
   "documented": "32530",
   "name": "Active power L1 (P1)",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "W",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 2532,
   "documented": "32532",
   "name": "Active power L2 (P2)",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "W",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 2534,
   "documented": "32534",
   "name": "Active power L3 (P3)",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "W",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 2538,
   "documented": "32538",
   "name": "Reactive power L1 (Q1)",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "var",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 2540,
   "documented": "32540",
   "name": "Reactive power L2 (Q2)",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "var",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 2542,
   "documented": "32542",
   "name": "Reactive power L3 (Q3)",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "var",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 2546,
   "documented": "32546",
   "name": "Apparent power L1 (S1)",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "VA",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 2548,
   "documented": "32548",
   "name": "Apparent power L2 (S2)",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "VA",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 2550,
   "documented": "32550",
   "name": "Apparent power L3 (S3)",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "VA",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 2554,
   "documented": "32554",
   "name": "Power factor L1 (PF1)",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 2556,
   "documented": "32556",
   "name": "Power factor L2 (PF2)",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 2558,
   "documented": "32558",
   "name": "Power factor L3 (PF3)",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 2570,
   "documented": "32570",
   "name": "Angle U1-I1",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "°",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 2572,
   "documented": "32572",
   "name": "Angle U2-I2",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "°",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 2574,
   "documented": "32574",
   "name": "Angle U3-I3",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "°",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 2588,
   "documented": "32588",
   "name": "I1 THD",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 2590,
   "documented": "32590",
   "name": "I2 THD",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 2592,
   "documented": "32592",
   "name": "I3 THD",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 2594,
   "documented": "32594",
   "name": "U1 THD",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 2596,
   "documented": "32596",
   "name": "U2 THD",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 2598,
   "documented": "32598",
   "name": "U3 THD",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 2658,
   "documented": "32658",
   "name": "Internal temperature",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "°C",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 2750,
   "documented": "32750",
   "name": "Active tariff (float)",
   "description": "",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 2752,
   "documented": "32752",
   "name": "Energy counter n1",
   "description": "Non-resettable counter; quantity set by 40421/40422.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "Wh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 2754,
   "documented": "32754",
   "name": "Energy counter n2",
   "description": "Non-resettable counter; quantity set by 40425/40426.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "varh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 2756,
   "documented": "32756",
   "name": "Energy counter n3",
   "description": "Non-resettable counter; quantity set by 40429/40430.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "Wh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 2758,
   "documented": "32758",
   "name": "Energy counter n4",
   "description": "Non-resettable counter; quantity set by 40433/40434.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "varh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 2760,
   "documented": "32760",
   "name": "Energy counter 1",
   "description": "Resettable user counter; Wh, varh or VAh per its parameter 40437.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 2762,
   "documented": "32762",
   "name": "Energy counter 2",
   "description": "Resettable user counter; unit per its parameter 40441.",
   "data_type": "FLOAT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 10,
   "documented": "40010",
   "name": "Active access level",
   "description": "0 = full protection.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 12,
   "documented": "40012",
   "name": "Operator command",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "W",
   "values": {
    "1": "Save settings",
    "2": "Abort settings",
    "3": "Restart instrument",
    "4": "Restart Ethernet",
    "5": "Save settings and restart Ethernet"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 15,
   "documented": "40015",
   "name": "IR external relay command",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Off",
    "1": "On"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 30,
   "documented": "40030",
   "name": "Select active tariff",
   "description": "Tariff 1 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": 31,
   "documented": "40031",
   "name": "Reset energy counters",
   "description": "Set a bit to reset that resettable counter.",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "W",
   "values": null,
   "bits": {
    "0": "Reset counter 1",
    "1": "Reset counter 2",
    "2": "Reset counter 3",
    "3": "Reset counter 4",
    "4": "Reset counter 5",
    "5": "Reset counter 6",
    "6": "Reset counter 7",
    "7": "Reset counter 8",
    "8": "Reset counter 9",
    "9": "Reset counter 10",
    "10": "Reset counter 11",
    "11": "Reset counter 12",
    "12": "Reset counter 13",
    "13": "Reset counter 14",
    "14": "Reset counter 15",
    "15": "Reset counter 16"
   },
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 143,
   "documented": "40143",
   "name": "Connection mode",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "No mode",
    "1": "1b - single phase",
    "2": "3b - 3-phase 3-wire balanced",
    "3": "4b - 3-phase 4-wire balanced",
    "4": "3u - 3-phase 3-wire unbalanced",
    "5": "4u - 3-phase 4-wire unbalanced"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 202,
   "documented": "40202",
   "name": "Port 1 Modbus address",
   "description": "1 to 247.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 203,
   "documented": "40203",
   "name": "Port 1 baud rate",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "1200",
    "1": "2400",
    "2": "4800",
    "3": "9600",
    "4": "19200",
    "5": "38400",
    "6": "57600",
    "7": "115200"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 204,
   "documented": "40204",
   "name": "Port 1 stop bits",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "1 stop bit",
    "1": "2 stop bits"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 205,
   "documented": "40205",
   "name": "Port 1 parity",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "None",
    "1": "Odd",
    "2": "Even"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 419,
   "documented": "40419",
   "name": "Total energy calculation",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Sum of phases",
    "1": "Individual phases"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 421,
   "documented": "40421",
   "name": "Energy counter n1 parameter",
   "description": "Quantity this counter integrates.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "No parameter",
    "1": "Active power",
    "2": "Reactive power",
    "3": "Apparent power",
    "5": "Active power phase 1",
    "6": "Reactive power phase 1",
    "7": "Apparent power phase 1",
    "9": "Active power phase 2",
    "10": "Reactive power phase 2",
    "11": "Apparent power phase 2",
    "13": "Active power phase 3",
    "14": "Reactive power phase 3",
    "15": "Apparent power phase 3",
    "33": "Active power individual phases",
    "34": "Reactive power individual phases",
    "35": "Apparent power individual phases"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 422,
   "documented": "40422",
   "name": "Energy counter n1 configuration",
   "description": "Which quadrants are counted; decides import vs export.",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": {
    "0": "Quadrant I enabled",
    "1": "Quadrant II enabled",
    "2": "Quadrant III enabled",
    "3": "Quadrant IV enabled",
    "4": "Absolute value",
    "5": "Invert value"
   },
   "offset": 0
  }
 ],
 "integration": {
  "summary": "Read input registers with function 04 and decode the IEEE 754 float block, high word first: subtract 30000 from the printed number (Pt at 32490 is wire 2490). Energy comes as floats in Wh/varh at 32752 onward.",
  "minimum_registers": [
   {
    "table": "input_register",
    "address": 2500,
    "why": "U1 voltage (float, V)"
   },
   {
    "table": "input_register",
    "address": 2516,
    "why": "I1 current (float, A)"
   },
   {
    "table": "input_register",
    "address": 2490,
    "why": "Total active power (float, W)"
   },
   {
    "table": "input_register",
    "address": 2496,
    "why": "Total power factor"
   },
   {
    "table": "input_register",
    "address": 2498,
    "why": "Frequency"
   },
   {
    "table": "input_register",
    "address": 2752,
    "why": "Energy counter n1 (float, Wh)"
   },
   {
    "table": "input_register",
    "address": 2756,
    "why": "Energy counter n3 (float, Wh)"
   }
  ],
  "enable": "Modbus RTU runs on the RS485 serial versions (7M.38.8.400.XXXX). Port 1 address, baud, stop bits and parity sit in registers 40202-40205; writing settings needs the access level raised first by writing the user password to 40001 (function 16), then save with operator command 40012 = 1.",
  "watchdog": null,
  "quirks": [
   "The memory reference is 30000/40000, not 30001/40001: printed 30107 is wire address 107.",
   "Floats and 32-bit integers are high word first (ABCD).",
   "The integer measurement registers use a packed exponent format; use the float block for SCADA."
  ],
  "setup": [
   "Modbus address 1-247; baud code range 1-7 (2400 to 115200 - code 0, 1200 baud, is listed but outside the allowed min/max); parity none/odd/even; 1 or 2 stop bits; 8 data bits only.",
   "The operator command register 40012 saves (1) or aborts (2) pending setting changes and can restart the instrument (3)."
  ],
  "gotchas": [
   "Which energy counter is import and which is export depends on the counter configuration registers; verify against the display before billing.",
   "Read 30099 for the maximum number of registers the meter accepts per request."
  ]
 },
 "page": "https://easymodbus.com/modbus-register-maps/finder/7m38",
 "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."
}
