{
 "manufacturer": "Carlo Gavazzi",
 "manufacturer_slug": "carlo-gavazzi",
 "model": "EM530 / EM540 three-phase energy meters (RS485 Modbus)",
 "model_slug": "em530-em540",
 "short_model": "EM530/EM540",
 "aliases": [
  "EM530",
  "EM540",
  "EM530DINAV53XS1X",
  "EM530DINAV53XS1PFA",
  "EM530DINAV53XS1PFB",
  "EM530DINAV53XS1PFC",
  "EM540DINAV23XS1X",
  "EM540DINAV23XS1PFA",
  "EM540DINAV23XS1PFB",
  "EM540DINAV23XS1PFC",
  "EM500 series"
 ],
 "equipment_type": "Energy meter",
 "applies_to": "EM530 (CT-connected) and EM540 (direct-connected) with the S1 RS485 port, X and MID (PFA/PFB/PFC) versions, protocol document version 1.3.",
 "summary": "The EM530 and EM540 are Carlo Gavazzi's three-phase DIN-rail energy meters (EM530 CT-connected, EM540 direct-connected). The S1 versions talk Modbus RTU on RS485; live values and energy totals are 32-bit integers sent low word first with fixed weights, and functions 03 and 04 return the same data. This map covers volts, amps, powers, PF, frequency, THD, demand, total/partial/phase/tariff energy, run hours, identity, setup, serial settings and resets.",
 "transport": [
  "RTU"
 ],
 "defaults": {
  "unit_id": 1,
  "baud": 9600,
  "parity": "None",
  "data_bits": null,
  "stop_bits": 1,
  "tcp_port": null
 },
 "addressing": {
  "convention": "Modicon",
  "note": "Each row shows a 6-digit Modicon number for function 04 (3xxxxx; swap the leading 3 for 4 with function 03) and the hex physical address that goes in the frame. Wire address = physical address: 300001 / 0000h is address 0."
 },
 "default_word_order": "CDAB",
 "firmware": null,
 "source": {
  "title": "EM530/EM540 Modbus Communication Protocol (public version)",
  "doc_number": "Version 1.3",
  "revision_date": "2024-02-13",
  "url": "https://www.gavazziautomation.com/fileadmin/images/PIM/OTHERSTUFF/COMPRO/EM500_CPP_Mod_V1.3_13022024.pdf",
  "pages": "Functions p. 4; data format p. 10; part numbers p. 11; tables pp. 12-14, 17-31"
 },
 "notes": [
  "Word order: section 3.1 says bytes are MSB first inside each word and INT32/UINT32/UINT64 values are sent LSW first, so every 32-bit value here is CDAB.",
  "Functions 03 and 04 return the same data; configuration rows are listed as holding registers because they are written with 06/10.",
  "Left out: the INT64 Wh/varh energy block at 0500h-0533h, because the data-format section states word order for INT32, UINT32 and UINT64 but not INT64. The INT32 kWh x0.1 registers carry the same totals.",
  "Left out: the energy offset registers (4100h-4214h), factory reset (4020h), alarm and pulse-output settings, display/screen-saver pages and the configurable name, to keep the map to what an integrator needs.",
  "Left out: table 4.2 (00F6h onward), which repeats the same values grouped by phase.",
  "The identification code is printed at 000Bh (300012), which is also the high word of V L3-L1 (000Ah-000Bh). The document lists both and says the ID table is read one word at a time; read 000Bh on its own to get the model code.",
  "Rows printed as 'n.a.' or 'not available, value = 0' are skipped.",
  "The revision history inside the PDF ends at Rev. 1.3 dated 3 June 2021 while the cover says 13 February 2024; the cover date is used.",
  "The frame tables show 1-20 registers per read while the text says up to 125; keep read blocks to 20 registers to be safe.",
  "Table 4.12 prints Modicon 304357 for both 1104h and 1105h; the physical address 1105h is used for the wrong-connection status (304357 is the Modicon number of 1104h)."
 ],
 "registers": [
  {
   "table": "input_register",
   "address": 0,
   "documented": "300001 / 0000h",
   "name": "V L1-N",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 2,
   "documented": "300003 / 0002h",
   "name": "V L2-N",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 4,
   "documented": "300005 / 0004h",
   "name": "V L3-N",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 6,
   "documented": "300007 / 0006h",
   "name": "V L1-L2",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 8,
   "documented": "300009 / 0008h",
   "name": "V L2-L3",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 10,
   "documented": "300011 / 000Ah",
   "name": "V L3-L1",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 11,
   "documented": "300012 / 000Bh",
   "name": "Carlo Gavazzi identification code",
   "description": "Model code, e.g. 1760 = EM540 X.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "1744": "EM530 X",
    "1745": "EM530 PFA",
    "1746": "EM530 PFB",
    "1747": "EM530 PFC",
    "1760": "EM540 X",
    "1761": "EM540 PFA",
    "1762": "EM540 PFB",
    "1763": "EM540 PFC"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 12,
   "documented": "300013 / 000Ch",
   "name": "A L1",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.001,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 14,
   "documented": "300015 / 000Eh",
   "name": "A L2",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.001,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 16,
   "documented": "300017 / 0010h",
   "name": "A L3",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.001,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 18,
   "documented": "300019 / 0012h",
   "name": "W L1",
   "description": "Negative = exported power.",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "units": "W",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 20,
   "documented": "300021 / 0014h",
   "name": "W L2",
   "description": "Negative = exported power.",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "units": "W",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 22,
   "documented": "300023 / 0016h",
   "name": "W L3",
   "description": "Negative = exported power.",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "units": "W",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 24,
   "documented": "300025 / 0018h",
   "name": "VA L1",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "units": "VA",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 26,
   "documented": "300027 / 001Ah",
   "name": "VA L2",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "units": "VA",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 28,
   "documented": "300029 / 001Ch",
   "name": "VA L3",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "units": "VA",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 30,
   "documented": "300031 / 001Eh",
   "name": "var L1",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "units": "var",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 32,
   "documented": "300033 / 0020h",
   "name": "var L2",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "units": "var",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 34,
   "documented": "300035 / 0022h",
   "name": "var L3",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "units": "var",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 36,
   "documented": "300037 / 0024h",
   "name": "V L-N sys",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 38,
   "documented": "300039 / 0026h",
   "name": "V L-L sys",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 40,
   "documented": "300041 / 0028h",
   "name": "W sys",
   "description": "Negative = exported power.",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "units": "W",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 42,
   "documented": "300043 / 002Ah",
   "name": "VA sys",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "units": "VA",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 44,
   "documented": "300045 / 002Ch",
   "name": "var sys",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "units": "var",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 46,
   "documented": "300047 / 002Eh",
   "name": "PF L1",
   "description": "Sign follows power direction: negative = exporting.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.001,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 47,
   "documented": "300048 / 002Fh",
   "name": "PF L2",
   "description": "Sign follows power direction: negative = exporting.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.001,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 48,
   "documented": "300049 / 0030h",
   "name": "PF L3",
   "description": "Sign follows power direction: negative = exporting.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.001,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 49,
   "documented": "300050 / 0031h",
   "name": "PF sys",
   "description": "Sign follows power direction: negative = exporting.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.001,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 50,
   "documented": "300051 / 0032h",
   "name": "Phase sequence",
   "description": "Meaningful on 3-phase systems only.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "-1": "L1-L3-L2",
    "1": "L1-L2-L3"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 51,
   "documented": "300052 / 0033h",
   "name": "Hz",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "units": "Hz",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 52,
   "documented": "300053 / 0034h",
   "name": "kWh (+) TOT",
   "description": "Imported active energy total.",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 54,
   "documented": "300055 / 0036h",
   "name": "kvarh (+) TOT",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "units": "kvarh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 56,
   "documented": "300057 / 0038h",
   "name": "W sys DMD",
   "description": "System active power demand.",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "units": "W",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 58,
   "documented": "300059 / 003Ah",
   "name": "W sys DMD MAX",
   "description": "Peak system power demand.",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "units": "W",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 60,
   "documented": "300061 / 003Ch",
   "name": "kWh (+) PARTIAL",
   "description": "Resettable imported energy.",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 62,
   "documented": "300063 / 003Eh",
   "name": "kvarh (+) PARTIAL",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "units": "kvarh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 64,
   "documented": "300065 / 0040h",
   "name": "kWh (+) L1",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 66,
   "documented": "300067 / 0042h",
   "name": "kWh (+) L2",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 68,
   "documented": "300069 / 0044h",
   "name": "kWh (+) L3",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 70,
   "documented": "300071 / 0046h",
   "name": "kWh (+) t1",
   "description": "Imported energy on tariff 1.",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 72,
   "documented": "300073 / 0048h",
   "name": "kWh (+) t2",
   "description": "Imported energy on tariff 2.",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 78,
   "documented": "300079 / 004Eh",
   "name": "kWh (-) TOT",
   "description": "Exported active energy total.",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 80,
   "documented": "300081 / 0050h",
   "name": "kvarh (-) TOT",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "units": "kvarh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 82,
   "documented": "300083 / 0052h",
   "name": "kWh (-) PARTIAL",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 84,
   "documented": "300085 / 0054h",
   "name": "kvarh (-) PARTIAL",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "units": "kvarh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 86,
   "documented": "300087 / 0056h",
   "name": "kVAh TOT",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "units": "kVAh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 88,
   "documented": "300089 / 0058h",
   "name": "kVAh PARTIAL",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "units": "kVAh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 90,
   "documented": "300091 / 005Ah",
   "name": "Run hour meter",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.01,
   "units": "h",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 92,
   "documented": "300093 / 005Ch",
   "name": "Run hour meter kWh (-)",
   "description": "Hours spent exporting.",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.01,
   "units": "h",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 110,
   "documented": "300111 / 006Eh",
   "name": "Run hour meter PARTIAL",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.01,
   "units": "h",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 112,
   "documented": "300113 / 0070h",
   "name": "Run hour meter kWh (-) PARTIAL",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.01,
   "units": "h",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 114,
   "documented": "300115 / 0072h",
   "name": "PF L1 (lead/lag)",
   "description": "Negative = leading (capacitive), positive = lagging (inductive).",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.001,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 115,
   "documented": "300116 / 0073h",
   "name": "PF L2 (lead/lag)",
   "description": "Negative = leading (capacitive), positive = lagging (inductive).",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.001,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 116,
   "documented": "300117 / 0074h",
   "name": "PF L3 (lead/lag)",
   "description": "Negative = leading (capacitive), positive = lagging (inductive).",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.001,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 117,
   "documented": "300118 / 0075h",
   "name": "PF sys (lead/lag)",
   "description": "Negative = leading (capacitive), positive = lagging (inductive).",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.001,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 118,
   "documented": "300119 / 0076h",
   "name": "Load type L1",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "1": "Inductive (L)",
    "-1": "Capacitive (C)"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 119,
   "documented": "300120 / 0077h",
   "name": "Load type L2",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "1": "Inductive (L)",
    "-1": "Capacitive (C)"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 120,
   "documented": "300121 / 0078h",
   "name": "Load type L3",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "1": "Inductive (L)",
    "-1": "Capacitive (C)"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 121,
   "documented": "300122 / 0079h",
   "name": "Load type sys",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "1": "Inductive (L)",
    "-1": "Capacitive (C)"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 130,
   "documented": "300131 / 0082h",
   "name": "THD A L1",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.01,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 132,
   "documented": "300133 / 0084h",
   "name": "THD A L2",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.01,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 134,
   "documented": "300135 / 0086h",
   "name": "THD A L3",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.01,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 138,
   "documented": "300139 / 008Ah",
   "name": "THD V L1-N",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.01,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 140,
   "documented": "300141 / 008Ch",
   "name": "THD V L2-N",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.01,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 142,
   "documented": "300143 / 008Eh",
   "name": "THD V L3-N",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.01,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 146,
   "documented": "300147 / 0092h",
   "name": "THD V L1-L2",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.01,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 148,
   "documented": "300149 / 0094h",
   "name": "THD V L2-L3",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.01,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 150,
   "documented": "300151 / 0096h",
   "name": "THD V L3-L1",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.01,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 152,
   "documented": "300153 / 0098h",
   "name": "An",
   "description": "Neutral current.",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.001,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 154,
   "documented": "300155 / 009Ah",
   "name": "I1 DMD",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.001,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 156,
   "documented": "300157 / 009Ch",
   "name": "I2 DMD",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.001,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 158,
   "documented": "300159 / 009Eh",
   "name": "I3 DMD",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.001,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 160,
   "documented": "300161 / 00A0h",
   "name": "I1 DMDMAX",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.001,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 162,
   "documented": "300163 / 00A2h",
   "name": "I2 DMDMAX",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.001,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 164,
   "documented": "300165 / 00A4h",
   "name": "I3 DMDMAX",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.001,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 172,
   "documented": "300173 / 00ACh",
   "name": "W1 DMD",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "units": "W",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 174,
   "documented": "300175 / 00AEh",
   "name": "W2 DMD",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "units": "W",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 176,
   "documented": "300177 / 00B0h",
   "name": "W3 DMD",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "units": "W",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 178,
   "documented": "300179 / 00B2h",
   "name": "W1 DMDMAX",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "units": "W",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 180,
   "documented": "300181 / 00B4h",
   "name": "W2 DMDMAX",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "units": "W",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 182,
   "documented": "300183 / 00B6h",
   "name": "W3 DMDMAX",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "units": "W",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 214,
   "documented": "300215 / 00D6h",
   "name": "VA DMD",
   "description": "System apparent power demand.",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "units": "VA",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 216,
   "documented": "300217 / 00D8h",
   "name": "VA DMD MAX",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "units": "VA",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 768,
   "documented": "300769 / 0300h",
   "name": "Digital input status",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "0": "Open",
    "1": "Closed"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 769,
   "documented": "300770 / 0301h",
   "name": "Active tariff",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "0": "None",
    "1": "Tariff 1",
    "2": "Tariff 2"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 770,
   "documented": "300771 / 0302h",
   "name": "Firmware version",
   "description": "High byte: major (bits 4-7) and minor (bits 0-3); low byte: revision.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 774,
   "documented": "300775 / 0306h",
   "name": "Alarm status",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "0": "Not active (or delay running)",
    "1": "Active"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 1340,
   "documented": "301341 / 053Ch",
   "name": "Hz (high resolution)",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.001,
   "units": "Hz",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 1342,
   "documented": "301343 / 053Eh",
   "name": "Run hour life counter",
   "description": "Lifetime hours; not cleared by the total reset.",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.01,
   "units": "h",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 20480,
   "documented": "320481 / 5000h",
   "name": "Serial number",
   "description": "13 ASCII characters, two per register, high byte first.",
   "data_type": "STRING",
   "length": 7,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 20487,
   "documented": "320488 / 5007h",
   "name": "Production year",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 20498,
   "documented": "320499 / 5012h",
   "name": "Device state",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "0": "Run",
    "1": "Fault",
    "2": "Configuration error (phase/terminal setup)"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4096,
   "documented": "304097 / 1000h",
   "name": "Password",
   "description": "0 = no password, up 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": 4098,
   "documented": "304099 / 1002h",
   "name": "Measuring system",
   "description": "MID models accept only 0 and 1.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "3Pn (3-phase + neutral)",
    "1": "3P (3-phase, no neutral)",
    "2": "2P (2-phase + neutral)"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4099,
   "documented": "304100 / 1003h",
   "name": "Current transformer ratio",
   "description": "10-20000 = CT 1.0-2000.0. Read-only on MID; absent on AV2 models.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4112,
   "documented": "304113 / 1010h",
   "name": "Demand integration time",
   "description": "",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "1 min",
    "1": "5 min",
    "2": "10 min",
    "3": "15 min",
    "4": "20 min",
    "5": "30 min",
    "6": "60 min"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4353,
   "documented": "304354 / 1101h",
   "name": "Tariff selection by Modbus",
   "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": 4355,
   "documented": "304356 / 1103h",
   "name": "Measurement mode",
   "description": "Read-only on MID models, fixed by part number.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "A (absolute)",
    "1": "B (accumulate by phase)",
    "2": "C (bidirectional)"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4356,
   "documented": "304357 / 1104h",
   "name": "Wrong connection detection",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Disabled",
    "1": "Enabled"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4357,
   "documented": "304357 / 1105h",
   "name": "Wrong connection status",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "0": "Correct",
    "1": "Connection error"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8192,
   "documented": "308193 / 2000h",
   "name": "RS485 address",
   "description": "1-247.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8193,
   "documented": "308194 / 2001h",
   "name": "RS485 baud rate",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "1": "9600",
    "2": "19200",
    "3": "38400",
    "4": "57600",
    "5": "115200"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8194,
   "documented": "308195 / 2002h",
   "name": "RS485 parity",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "1": "None",
    "2": "Even"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8195,
   "documented": "308196 / 2003h",
   "name": "RS485 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": 8196,
   "documented": "308197 / 2004h",
   "name": "RS485 reply delay",
   "description": "0-1000 ms.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "ms",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 16387,
   "documented": "316388 / 4003h",
   "name": "Reset total counters",
   "description": "Write 1. Non-MID (X) models only; lifetime hours kept.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "W",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 16388,
   "documented": "316389 / 4004h",
   "name": "Reset partial counters",
   "description": "Write 1. Clears partial energy and partial hours.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "W",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 16389,
   "documented": "316390 / 4005h",
   "name": "Reset demand",
   "description": "Write 1. Clears DMD and DMD max.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "W",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 16390,
   "documented": "316391 / 4006h",
   "name": "Reset tariff counters",
   "description": "Write 1.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "W",
   "values": null,
   "bits": null,
   "offset": 0
  }
 ],
 "integration": {
  "summary": "Read input registers 0000h-0033h (function 04 or 03) for live values and 0034h-005Dh for energy, in blocks of up to 20 registers. Decode INT32 low word first and apply the fixed weights: V, W, VA, var and kWh x0.1, A and PF x0.001, Hz x0.1.",
  "minimum_registers": [
   {
    "table": "input_register",
    "address": 0,
    "why": "V L1-N"
   },
   {
    "table": "input_register",
    "address": 12,
    "why": "A L1"
   },
   {
    "table": "input_register",
    "address": 40,
    "why": "W sys"
   },
   {
    "table": "input_register",
    "address": 49,
    "why": "PF sys"
   },
   {
    "table": "input_register",
    "address": 51,
    "why": "Frequency"
   },
   {
    "table": "input_register",
    "address": 52,
    "why": "kWh(+) total"
   },
   {
    "table": "input_register",
    "address": 78,
    "why": "kWh(-) total"
   },
   {
    "table": "input_register",
    "address": 11,
    "why": "Model check"
   }
  ],
  "enable": "Only the S1 versions have the RS485 Modbus port. Set address, baud, parity and stop bits from the front menu or registers 2000h-2003h.",
  "watchdog": null,
  "quirks": [
   "INT32 values are low word first (CDAB).",
   "PF at 002Eh-0031h is signed by power direction; the lead/lag sign is in the separate PF rows at 0072h-0075h.",
   "Exported energy (kWh(-)) counting depends on measurement mode (1103h); on MID models the mode is fixed by the part number (PFA/PFB/PFC)."
  ],
  "setup": [
   "Defaults: address 1, 9600 baud, no parity, 1 stop bit.",
   "Baud 9600-115200; parity none or even.",
   "Terminate both bus ends with 120 ohm; on the meter, bridge B+ to T on the last unit. Use a repeater beyond 1000 m or more than 160 instruments on one bus."
  ],
  "gotchas": [
   "Reset registers always read 0; writing 1 runs the command.",
   "Total-counter reset (4003h) and CT changes are blocked on MID versions.",
   "Reading an unlisted address returns an illegal-data-address exception, so do not read across gaps."
  ]
 },
 "page": "https://easymodbus.com/modbus-register-maps/carlo-gavazzi/em530-em540",
 "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."
}
