{
 "manufacturer": "Carlo Gavazzi",
 "manufacturer_slug": "carlo-gavazzi",
 "model": "EM210 (AV versions)",
 "model_slug": "em210",
 "short_model": "EM210",
 "aliases": [
  "EM210",
  "EM210-72D",
  "EM210 AV"
 ],
 "equipment_type": "Energy meter (energy analyzer)",
 "applies_to": "EM210 three-phase energy analyzers, AV input versions with the RS485 Modbus RTU option, protocol version 4 revision 3 (newest variables need firmware A.5/A.6).",
 "summary": "The EM210 is a compact three-phase energy analyzer for panel or DIN mounting with an optional RS485 Modbus RTU port. Values are 32-bit integers sent low word first with fixed weights; functions 03 and 04 read the same data, up to 61 registers at a time. This map covers per-phase and system voltage, current, power, PF, THD, neutral current, imported/exported energy, hour counters, identification, setup, serial and reset registers.",
 "transport": [
  "RTU"
 ],
 "defaults": {
  "unit_id": null,
  "baud": 9600,
  "parity": "None",
  "data_bits": null,
  "stop_bits": 1,
  "tcp_port": null
 },
 "addressing": {
  "convention": "Modicon",
  "note": "Registers are printed as a 6-digit Modicon number for function 04 (3xxxxx; 4xxxxx for function 03) beside the hex physical address that goes in the frame. Wire address = physical address (300001 / 0000h is address 0). Setup registers are written with function 06 and are listed as holding registers."
 },
 "default_word_order": "CDAB",
 "firmware": "THD, neutral current and hour counters from FW A.5; wrong-connection registers from FW A.6",
 "source": {
  "title": "EM210_AV Communication Protocol",
  "doc_number": "Version 4 Revision 3",
  "revision_date": "2018-05-10",
  "url": "https://www.gavazziautomation.com/fileadmin/images/PIM/OTHERSTUFF/COMPRO/EM210_CP.pdf",
  "pages": "Data format p. 7; tables pp. 8-13"
 },
 "notes": [
  "Word order: the protocol states INT32/UINT32/UINT64 are LSW first with bytes MSB first, so 32-bit values are CDAB. The secondary address row (5100h) confirms it: 5100h is the low word.",
  "Functions 03 and 04 are equivalent; up to 61 registers per request.",
  "Left out: frequency (0033h, and 0110h in the by-phase table). Both rows give the value weight as plain 'Hz', whereas every sibling Carlo Gavazzi map uses Hz x10, so the scaling is not certain from this document.",
  "System THD rows (0088h, 0090h) always read 0 and are left out. The by-phase copy of the values (00F6h-01A8h) is not duplicated.",
  "Left out: the ASCII serial-number letters (5000h-5006h).",
  "Writing an out-of-range value makes the meter fall back to the parameter's minimum valid value.",
  "With a 1-phase or 2-phase measuring system, phase 2/3 registers read 0.",
  "Left out: kWh per pulse (Table 2.8-8). The row prints Modicom 304128 (which is physical address 101Fh) next to physical address 1020h (which would be 304129); the revision history says this Modicom address was deliberately 'updated' in v4r1, so the register address is contradictory and the row is not published."
 ],
 "integration": {
  "summary": "Read input registers 0000h-0037h with function 04 (or 03) in one request; decode INT32 values low word first and apply the fixed weights (V and W x10, A and PF x1000, kWh x10).",
  "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 system"
   },
   {
    "table": "input_register",
    "address": 49,
    "why": "PF system"
   },
   {
    "table": "input_register",
    "address": 52,
    "why": "kWh(+) total"
   },
   {
    "table": "input_register",
    "address": 78,
    "why": "kWh(-) total"
   }
  ],
  "enable": "Modbus RTU needs the RS485 communication option. Address, baud rate, parity and stop bits are in registers 2000h-2003h (or the instrument's own setup menu, see its manual).",
  "watchdog": null,
  "quirks": [
   "INT32 values are low word first (CDAB).",
   "Baud and parity codes start at 0 on the EM210 (0 = 9600, 0 = no parity), unlike the EM100/EM300 maps.",
   "Up to 61 registers per read."
  ],
  "setup": [
   "Defaults: 9600 baud, no parity, 1 stop bit.",
   "Terminate the master end with 150 ohm between B and A, and the last meter by bridging B+ to T.",
   "Use a repeater for runs longer than 1000 m or more than 160 instruments on one bus."
  ],
  "gotchas": [
   "The rear programming-lock trimmer state is reported in 0304h; check it if keypad programming is refused.",
   "This protocol covers the EM210 AV versions only; its revision history notes that MID references were removed in v3r3."
  ]
 },
 "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": "Read alone; shares 000Bh with V L3-L1 high word.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "210": "EM210 standard"
   },
   "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": "",
   "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": "",
   "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": "",
   "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 system",
   "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 system",
   "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 system",
   "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": 42,
   "documented": "300043 / 002Ah",
   "name": "VA system",
   "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 system",
   "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": "Negative = exported active power, positive = imported.",
   "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": "Negative = exported active power, positive = imported.",
   "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": "Negative = exported active power, positive = imported.",
   "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 system",
   "description": "Negative = exported active power, positive = imported.",
   "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",
    "0": "L1-L2-L3"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 52,
   "documented": "300053 / 0034h",
   "name": "kWh(+) total",
   "description": "Imported active 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": 54,
   "documented": "300055 / 0036h",
   "name": "kvarh(+) total",
   "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": 78,
   "documented": "300079 / 004Eh",
   "name": "kWh(-) total",
   "description": "Exported active 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": 90,
   "documented": "300091 / 005Ah",
   "name": "Hour counter",
   "description": "Positive (import) running hours.",
   "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": "Hour counter negative",
   "description": "Running hours while 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": 130,
   "documented": "300131 / 0082h",
   "name": "THD A L1",
   "description": "Up to 15th harmonic.",
   "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": "Neutral current",
   "description": "Calculated 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": 770,
   "documented": "300771 / 0302h",
   "name": "Version code",
   "description": "0 = version A, 1 = B, and so on.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 771,
   "documented": "300772 / 0303h",
   "name": "Revision code",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 772,
   "documented": "300773 / 0304h",
   "name": "Programming lock",
   "description": "Position of the lock trimmer on the back of the display.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "0": "Unlocked",
    "1": "Locked"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4096,
   "documented": "304097 / 1000h",
   "name": "Password",
   "description": "0-999, default 0.",
   "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": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "3Pn (default)",
    "1": "3P",
    "2": "2P",
    "3": "1P",
    "4": "3P1"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4099,
   "documented": "304100 / 1003h",
   "name": "CT ratio",
   "description": "Raw 10-9990 = CT 1.0-999.0; default 10.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4101,
   "documented": "304102 / 1005h",
   "name": "VT ratio",
   "description": "Raw 10-9990 = VT 1.0-999.0; default 10.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4114,
   "documented": "304115 / 1012h",
   "name": "Pulse output ON time",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "30 ms (default)",
    "1": "100 ms"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4356,
   "documented": "304357 / 1104h",
   "name": "Wrong-connection help",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "On",
    "1": "Off"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4357,
   "documented": "304358 / 1105h",
   "name": "Wrong-connection status",
   "description": "All bits 0 when wiring is correct.",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": {
    "0": "Wrong voltage sequence",
    "1": "Phase 1 inverted",
    "2": "Phase 2 inverted",
    "3": "Phase 3 inverted",
    "4": "Phases 1 and 2 exchanged",
    "5": "Phases 1 and 3 exchanged",
    "6": "Phases 2 and 3 exchanged",
    "7": "Phases 1, 2, 3 exchanged"
   },
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4358,
   "documented": "304359 / 1106h",
   "name": "THD calculation",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Off",
    "1": "On (default)"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4359,
   "documented": "304360 / 1107h",
   "name": "Hour counter start current",
   "description": "Raw 10-6000; default 10 (0.010 A).",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.001,
   "units": "A",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4864,
   "documented": "304865 / 1300h",
   "name": "Type of application",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "A",
    "1": "B",
    "2": "C (default)",
    "3": "D",
    "4": "E",
    "5": "F"
   },
   "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": {
    "0": "9600 (default)",
    "1": "19200",
    "2": "38400",
    "3": "57600",
    "4": "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": {
    "0": "None (default)",
    "1": "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 (default)",
    "1": "2"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 16384,
   "documented": "316385 / 4000h",
   "name": "Reset all meters",
   "description": "Write 1: clears kWh/kvarh totals and both hour counters.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_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": "holding_register",
   "address": 20736,
   "documented": "320737 / 5100h",
   "name": "Instrument secondary address",
   "description": "5100h low word, 5101h high word.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  }
 ],
 "page": "https://easymodbus.com/modbus-register-maps/carlo-gavazzi/em210",
 "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."
}
