{
 "manufacturer": "Carlo Gavazzi",
 "manufacturer_slug": "carlo-gavazzi",
 "model": "EM300 / ET300 series (EM330, EM340, ET330, ET340)",
 "model_slug": "em330-em340-et330-et340",
 "short_model": "EM330/EM340",
 "aliases": [
  "EM330",
  "EM340",
  "ET330",
  "ET340",
  "EM331",
  "EM341",
  "EM330-DIN",
  "EM340-DIN",
  "ET340-DIN",
  "EM340DINAV23XS1X",
  "EM340DINAV23XS1PFA",
  "EM340DINAV23XS1PFB"
 ],
 "equipment_type": "Energy meter",
 "applies_to": "EM330, EM331, EM340, EM341 energy meters and ET330/ET340 bidirectional meters with the S1 (RS485 Modbus RTU) port, protocol version 2 revision 17.",
 "summary": "Carlo Gavazzi's 300 series are three-phase DIN-rail energy meters (EM) and bidirectional PV/energy transducers (ET) with an RS485 Modbus RTU port. Measurements are 32-bit integers sent low word first with fixed weights, readable with function 03 or 04 in blocks of up to 50 registers. This map covers voltages, currents, powers, power factor, frequency, demand, total/partial/phase/tariff energy, high-resolution energy totals, run hours, identification, 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 register is printed as a 6-digit Modicon number for function 04 (3xxxxx; use 4xxxxx for function 03) next to the hex physical address that goes in the frame. Wire address = physical address (300001 / 0000h is address 0). Configuration rows are written with function 06 and are listed here as holding registers; a few rows (1010h, 1012h) are printed with the hex address only."
 },
 "default_word_order": "CDAB",
 "firmware": null,
 "source": {
  "title": "EM300 Series and ET300 Series Communication Protocol",
  "doc_number": "Version 2 Revision 17",
  "revision_date": "2021-07-05",
  "url": "https://www.gavazziautomation.com/fileadmin/images/PIM/OTHERSTUFF/COMPRO/EM330_EM340_ET330_ET340_CP.pdf",
  "pages": "Data format p. 7; tables pp. 9-18"
 },
 "notes": [
  "Word order: the protocol states bytes are MSB first within a word and INT32/UINT32/UINT64 values are LSW first, so all 32-bit values are CDAB.",
  "One exception is printed in the identification table: an EM340 engineering sample (ID 340) uses MSW-LSW order. Production EM340 units report ID 341.",
  "Functions 03 and 04 are equivalent; up to 50 registers per request. Reading unlisted configuration addresses returns an illegal-address exception.",
  "Table 2.6 (0F6h-1B4h) repeats the same values grouped by phase, with PF as INT32; it is not duplicated here.",
  "Registers marked 'not available, value = 0' (THD, kVAh, tariffs 3-8, kWh(-)/kvarh(-) partial) are left out.",
  "The integer/decimal split totalizers (0400h-040Fh) are documented as available only on EM340 units made from 1 October 2018 (serial YR2018 274xxxS onward).",
  "Left out: the INT64 energy block at 0500h because the table gives no value weight; kWh-per-pulse settings (1020h, 1022h) for the same reason; and the ASCII serial-number letters (5000h-5006h).",
  "On 1-phase and 2-phase installations the unused phase registers still answer, with value 0."
 ],
 "integration": {
  "summary": "Read input registers 0000h-0033h (function 04, or 03) for live values and 0034h onward for energy; decode INT32 low word first and apply the fixed weights (V and W x10, A and PF x1000).",
  "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": 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 ID check"
   }
  ],
  "enable": "S1 versions carry the RS485 Modbus RTU port. 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).",
   "kW dmd registers are published in Watt x10.",
   "Exported energy (kWh(-)) only accumulates in measurement mode B (bidirectional) or on PFB models; in mode A both directions count as positive.",
   "Stop-bit register: values 0 and 1 both mean one stop bit; 2 stop bits only with even parity."
  ],
  "setup": [
   "Defaults: address 1, 9600 baud, no parity, 1 stop bit.",
   "Baud 9600-115200; parity none or even.",
   "Terminate the master end with 120 ohm and the last meter by bridging A- to T; repeater above 1000 m or 160 units."
  ],
  "gotchas": [
   "Total energy reset (4001h) only works on non-MID X versions.",
   "The display shows EEE on overrange (value 7FFFFFFFh)."
  ]
 },
 "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": {
    "331": "EM330 AV6",
    "332": "EM330 AV5",
    "335": "ET330 AV5",
    "336": "ET330 AV6",
    "340": "EM340 engineering sample (MSW-LSW order)",
    "341": "EM340",
    "345": "ET340",
    "346": "EM341",
    "355": "EM331"
   },
   "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": {
    "0": "L1-L2-L3",
    "1": "L1-L3-L2"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 51,
   "documented": "300052 / 0033h",
   "name": "Frequency",
   "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(+) 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": 56,
   "documented": "300057 / 0038h",
   "name": "kW demand",
   "description": "Published as Watt x10 despite the kW label.",
   "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": "kW demand peak",
   "description": "Published as Watt x10 despite the kW label.",
   "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": "",
   "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(+) tariff 1",
   "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": 72,
   "documented": "300073 / 0048h",
   "name": "kWh(+) tariff 2",
   "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": 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": 80,
   "documented": "300081 / 0050h",
   "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": 90,
   "documented": "300091 / 005Ah",
   "name": "Run hour meter",
   "description": "ET series and EM330 only.",
   "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": 96,
   "documented": "300097 / 0060h",
   "name": "kWh(-) L1",
   "description": "ET series only.",
   "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": 98,
   "documented": "300099 / 0062h",
   "name": "kWh(-) L2",
   "description": "ET series only.",
   "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": 100,
   "documented": "300101 / 0064h",
   "name": "kWh(-) L3",
   "description": "ET series only.",
   "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": 152,
   "documented": "300153 / 0098h",
   "name": "A neutral",
   "description": "ET series and EM330 only; 0 otherwise.",
   "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": "0 = revision 0, 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": 1024,
   "documented": "301025 / 0400h",
   "name": "kWh(+) total integer part",
   "description": "Whole units; add the decimal part. EM340 from Oct 2018 only.",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 1,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 1026,
   "documented": "301027 / 0402h",
   "name": "kWh(+) total decimal part",
   "description": "Thousandths, 0-999. EM340 from Oct 2018 only.",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.001,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 1028,
   "documented": "301029 / 0404h",
   "name": "kvarh(+) total integer part",
   "description": "Whole units; add the decimal part. EM340 from Oct 2018 only.",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 1,
   "units": "kvarh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 1030,
   "documented": "301031 / 0406h",
   "name": "kvarh(+) total decimal part",
   "description": "Thousandths, 0-999. EM340 from Oct 2018 only.",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.001,
   "units": "kvarh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 1032,
   "documented": "301033 / 0408h",
   "name": "kWh(-) total integer part",
   "description": "Whole units; add the decimal part. EM340 from Oct 2018 only.",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 1,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 1034,
   "documented": "301035 / 040Ah",
   "name": "kWh(-) total decimal part",
   "description": "Thousandths, 0-999. EM340 from Oct 2018 only.",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.001,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 1036,
   "documented": "301037 / 040Ch",
   "name": "kvarh(-) total integer part",
   "description": "Whole units; add the decimal part. EM340 from Oct 2018 only.",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 1,
   "units": "kvarh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "input_register",
   "address": 1038,
   "documented": "301039 / 040Eh",
   "name": "kvarh(-) total decimal part",
   "description": "Thousandths, 0-999. EM340 from Oct 2018 only.",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.001,
   "units": "kvarh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4096,
   "documented": "304097 / 1000h",
   "name": "Password",
   "description": "0-9999, EM only; always 0 on ET.",
   "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 (3-phase with neutral)",
    "1": "3P (3-phase, no neutral)",
    "2": "2P (2-phase with neutral)"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4099,
   "documented": "304100 / 1003h",
   "name": "CT ratio",
   "description": "Raw 10-10000 = CT 1.0-1000.0.",
   "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-10000 = VT 1.0-1000.0.",
   "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": "1010h",
   "name": "Demand integration time",
   "description": "1-30.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4114,
   "documented": "1012h",
   "name": "Pulse output Ton",
   "description": "",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "30 ms",
    "1": "100 ms"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4352,
   "documented": "304353 / 1100h",
   "name": "Display mode",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Full",
    "1": "Easy"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4353,
   "documented": "304354 / 1101h",
   "name": "Tariff management",
   "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": 4354,
   "documented": "304355 / 1102h",
   "name": "Home page selection",
   "description": "0-19, EM only; fixed on MID (PFA/PFB) models.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4355,
   "documented": "304356 / 1103h",
   "name": "Measurement mode",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "A (easy connection)",
    "1": "B (bidirectional)"
   },
   "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": "ET series and EM330 only.",
   "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": 4359,
   "documented": "304360 / 1107h",
   "name": "Run hour meter start-up current",
   "description": "Secondary current 0.010-6.000 A, default 0.010; ET and EM330.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.001,
   "units": "A",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4608,
   "documented": "304609 / 1200h",
   "name": "Tariff mode",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Via digital inputs",
    "1": "Via serial"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4609,
   "documented": "304610 / 1201h",
   "name": "Tariff selection via serial",
   "description": "Read-only when 1200h = 0.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "1": "Tariff 1",
    "2": "Tariff 2"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8192,
   "documented": "308193 / 2000h",
   "name": "RS485 address",
   "description": "1-247, default 1.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 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 (default)",
    "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 (default)",
    "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": "1 stop bit (default)",
    "2": "2 stop bits (even parity only)"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8196,
   "documented": "308197 / 2004h",
   "name": "Max words per read",
   "description": "Read-only; returns 50.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 16384,
   "documented": "316385 / 4000h",
   "name": "Reset partial, tariff and demand",
   "description": "Write 1: clears partial and tariff meters, kW dmd and peak.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 16385,
   "documented": "316386 / 4001h",
   "name": "Reset total energy meters",
   "description": "Write 1; non-MID (X) versions only.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 16386,
   "documented": "316387 / 4002h",
   "name": "Reset run hour meter",
   "description": "Write 1; ET series and EM330.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 20496,
   "documented": "320497 / 5010h",
   "name": "Production year",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  }
 ],
 "page": "https://easymodbus.com/modbus-register-maps/carlo-gavazzi/em330-em340-et330-et340",
 "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."
}
