{ "$schema": "https://raw.githubusercontent.com/nobrega8/mbmap-library/main/schema/mbmap-2.schema.json", "mbmap": 2, "vendor": "Carlo Gavazzi", "model": "EM24 Ethernet", "models": [ "EM24DINAV23XE1X", "EM24DINAV23XE1PFA", "EM24DINAV23XE1PFB", "EM24DINAV53XE1X", "EM24DINAV53XE1PFA", "EM24DINAV53XE1PFB" ], "vendor_website": "gavazziautomation.com", "description": "Three-phase energy analyzer, Modbus TCP version (EM24-DIN E1)", "revision": 1, "revised": "2026-10-14", "source": "Carlo Gavazzi EM24_E1 (Ethernet) communication protocol, version 0 revision 1.3", "sources": [ { "title": "EM24_E1 (Ethernet) communication protocol", "version": "0 rev 1.3", "url": "https://www.gavazziautomation.com/fileadmin/images/PIM/OTHERSTUFF/COMPRO/EM24_E1_CP.pdf", "note": "sections 2.3.1, 2.4 and 2.5" } ], "notes": [ "Measurements can be read with FC04 (input) or FC03 (holding): both return the same values.", "32-bit values are sent low word first.", "The same measurements are also available grouped by phase from 0x00FE to 0x017E; this map uses the table grouped by variable type.", "The RS-485 EM24-DIN models use a different protocol document and are not covered here." ], "protocol": "tcp", "port": 502, "byte_order": "big", "word_order": "little", "address_base": 0, "x_status": "official", "registers": [ {"name": "V L1-N", "group": "Voltage", "area": "input", "address": 0, "type": "int32", "scale": 0.1, "unit": "V"}, {"name": "V L2-N", "group": "Voltage", "area": "input", "address": 2, "type": "int32", "scale": 0.1, "unit": "V"}, {"name": "V L3-N", "group": "Voltage", "area": "input", "address": 4, "type": "int32", "scale": 0.1, "unit": "V"}, {"name": "V L1-L2", "group": "Voltage", "area": "input", "address": 6, "type": "int32", "scale": 0.1, "unit": "V"}, {"name": "V L2-L3", "group": "Voltage", "area": "input", "address": 8, "type": "int32", "scale": 0.1, "unit": "V"}, {"name": "V L3-L1", "group": "Voltage", "area": "input", "address": 10, "type": "int32", "scale": 0.1, "unit": "V"}, {"name": "A L1", "group": "Current", "area": "input", "address": 12, "type": "int32", "scale": 0.001, "unit": "A"}, {"name": "A L2", "group": "Current", "area": "input", "address": 14, "type": "int32", "scale": 0.001, "unit": "A"}, {"name": "A L3", "group": "Current", "area": "input", "address": 16, "type": "int32", "scale": 0.001, "unit": "A"}, {"name": "W L1", "group": "Power", "area": "input", "address": 18, "type": "int32", "scale": 0.1, "unit": "W"}, {"name": "W L2", "group": "Power", "area": "input", "address": 20, "type": "int32", "scale": 0.1, "unit": "W"}, {"name": "W L3", "group": "Power", "area": "input", "address": 22, "type": "int32", "scale": 0.1, "unit": "W"}, {"name": "VA L1", "group": "Power", "area": "input", "address": 24, "type": "int32", "scale": 0.1, "unit": "VA"}, {"name": "VA L2", "group": "Power", "area": "input", "address": 26, "type": "int32", "scale": 0.1, "unit": "VA"}, {"name": "VA L3", "group": "Power", "area": "input", "address": 28, "type": "int32", "scale": 0.1, "unit": "VA"}, {"name": "var L1", "group": "Power", "area": "input", "address": 30, "type": "int32", "scale": 0.1, "unit": "var"}, {"name": "var L2", "group": "Power", "area": "input", "address": 32, "type": "int32", "scale": 0.1, "unit": "var"}, {"name": "var L3", "group": "Power", "area": "input", "address": 34, "type": "int32", "scale": 0.1, "unit": "var"}, {"name": "V L-N sys", "group": "Voltage", "area": "input", "address": 36, "type": "int32", "scale": 0.1, "unit": "V"}, {"name": "V L-L sys", "group": "Voltage", "area": "input", "address": 38, "type": "int32", "scale": 0.1, "unit": "V"}, {"name": "W sys", "group": "Power", "area": "input", "address": 40, "type": "int32", "scale": 0.1, "unit": "W"}, {"name": "VA sys", "group": "Power", "area": "input", "address": 42, "type": "int32", "scale": 0.1, "unit": "VA"}, {"name": "var sys", "group": "Power", "area": "input", "address": 44, "type": "int32", "scale": 0.1, "unit": "var"}, {"name": "PF L1", "group": "Power", "area": "input", "address": 46, "type": "int16", "description": "Negative = leading (capacitive), positive = lagging (inductive)", "scale": 0.001}, {"name": "PF L2", "group": "Power", "area": "input", "address": 47, "type": "int16", "description": "Negative = leading (capacitive), positive = lagging (inductive)", "scale": 0.001}, {"name": "PF L3", "group": "Power", "area": "input", "address": 48, "type": "int16", "description": "Negative = leading (capacitive), positive = lagging (inductive)", "scale": 0.001}, {"name": "PF sys", "group": "Power", "area": "input", "address": 49, "type": "int16", "description": "Negative = leading (capacitive), positive = lagging (inductive)", "scale": 0.001}, {"name": "Phase sequence", "group": "Status", "area": "input", "address": 50, "type": "int16", "enum": {"-1": "L1-L3-L2", "0": "L1-L2-L3"}, "description": "Meaningful on three-phase systems only"}, {"name": "Hz", "group": "Voltage", "area": "input", "address": 51, "type": "uint16", "scale": 0.1, "unit": "Hz"}, {"name": "kWh (+) TOT", "group": "Energy", "area": "input", "address": 52, "type": "int32", "scale": 0.1, "unit": "kWh"}, {"name": "kvarh (+) TOT", "group": "Energy", "area": "input", "address": 54, "type": "int32", "scale": 0.1, "unit": "kvarh"}, {"name": "W dmd", "group": "Demand", "area": "input", "address": 56, "type": "int32", "scale": 0.1, "unit": "W"}, {"name": "W dmd max", "group": "Demand", "area": "input", "address": 58, "type": "int32", "scale": 0.1, "unit": "W"}, {"name": "kWh (+) PAR", "group": "Energy", "area": "input", "address": 60, "type": "int32", "description": "Partial counter", "scale": 0.1, "unit": "kWh"}, {"name": "kvarh (+) PAR", "group": "Energy", "area": "input", "address": 62, "type": "int32", "description": "Partial counter", "scale": 0.1, "unit": "kvarh"}, {"name": "kWh (+) L1", "group": "Energy", "area": "input", "address": 64, "type": "int32", "scale": 0.1, "unit": "kWh"}, {"name": "kWh (+) L2", "group": "Energy", "area": "input", "address": 66, "type": "int32", "scale": 0.1, "unit": "kWh"}, {"name": "kWh (+) L3", "group": "Energy", "area": "input", "address": 68, "type": "int32", "scale": 0.1, "unit": "kWh"}, {"name": "kWh (+) T1", "group": "Energy", "area": "input", "address": 70, "type": "int32", "description": "Tariff 1", "scale": 0.1, "unit": "kWh"}, {"name": "kWh (+) T2", "group": "Energy", "area": "input", "address": 72, "type": "int32", "description": "Tariff 2", "scale": 0.1, "unit": "kWh"}, {"name": "kWh (+) T3", "group": "Energy", "area": "input", "address": 74, "type": "int32", "description": "Tariff 3", "scale": 0.1, "unit": "kWh"}, {"name": "kWh (+) T4", "group": "Energy", "area": "input", "address": 76, "type": "int32", "description": "Tariff 4", "scale": 0.1, "unit": "kWh"}, {"name": "kWh (-) TOT", "group": "Energy", "area": "input", "address": 78, "type": "int32", "scale": 0.1, "unit": "kWh"}, {"name": "kvarh (-) TOT", "group": "Energy", "area": "input", "address": 80, "type": "int32", "scale": 0.1, "unit": "kvarh"}, {"name": "Hour counter", "group": "Energy", "area": "input", "address": 90, "type": "int32", "scale": 0.01, "unit": "h"}, {"name": "kvarh (+) T1", "group": "Energy", "area": "input", "address": 110, "type": "int32", "description": "Tariff 1", "scale": 0.1, "unit": "kvarh"}, {"name": "kvarh (+) T2", "group": "Energy", "area": "input", "address": 112, "type": "int32", "description": "Tariff 2", "scale": 0.1, "unit": "kvarh"}, {"name": "kvarh (+) T3", "group": "Energy", "area": "input", "address": 114, "type": "int32", "description": "Tariff 3", "scale": 0.1, "unit": "kvarh"}, {"name": "kvarh (+) T4", "group": "Energy", "area": "input", "address": 116, "type": "int32", "description": "Tariff 4", "scale": 0.1, "unit": "kvarh"}, {"name": "VA dmd", "group": "Demand", "area": "input", "address": 118, "type": "int32", "scale": 0.1, "unit": "VA"}, {"name": "VA dmd max", "group": "Demand", "area": "input", "address": 120, "type": "int32", "scale": 0.1, "unit": "VA"}, {"name": "A dmd max", "group": "Demand", "area": "input", "address": 122, "type": "int32", "scale": 0.001, "unit": "A"}, {"name": "Carlo Gavazzi identification code", "group": "Info", "area": "input", "address": 11, "type": "uint16", "enum": {"0x0670": "EM24DINAV23XE1X", "0x0671": "EM24DINAV23XE1PFA", "0x0672": "EM24DINAV23XE1PFB", "0x0673": "EM24DINAV53XE1X", "0x0674": "EM24DINAV53XE1PFA", "0x0675": "EM24DINAV53XE1PFB"}, "role": "model", "description": "Must be read on its own (length 1)"}, {"name": "Measurement firmware major", "group": "Info", "area": "input", "address": 770, "type": "uint16", "bit": 12, "bits": 4, "role": "firmware"}, {"name": "Measurement firmware minor", "group": "Info", "area": "input", "address": 770, "type": "uint16", "bit": 8, "bits": 4, "role": "firmware"}, {"name": "Measurement firmware revision", "group": "Info", "area": "input", "address": 770, "type": "uint16", "bit": 0, "bits": 8, "role": "firmware"}, {"name": "Communication firmware major", "group": "Info", "area": "input", "address": 772, "type": "uint16", "bit": 12, "bits": 4}, {"name": "Communication firmware minor", "group": "Info", "area": "input", "address": 772, "type": "uint16", "bit": 8, "bits": 4}, {"name": "Communication firmware revision", "group": "Info", "area": "input", "address": 772, "type": "uint16", "bit": 0, "bits": 8}, {"name": "Serial number", "group": "Info", "area": "input", "address": 20480, "type": "string", "length": 7, "role": "serial"}, {"name": "Front selector", "group": "Status", "area": "input", "address": 41216, "type": "uint16", "enum": {"0": "kvarh", "1": "2", "2": "1", "3": "Lock"}}, {"name": "Password", "group": "Settings", "area": "holding", "address": 4096, "type": "uint16", "access": "RW", "write_min": 0, "write_max": 9999}, {"name": "Measuring system", "group": "Settings", "area": "holding", "address": 4098, "type": "uint16", "access": "RW", "enum": {"0": "3P.n", "1": "3P.1", "2": "2P", "3": "1P", "4": "3P"}, "description": "Writable only when the selector is not in LOCK; PFA and PFB models support 3P.n only"}, {"name": "CT ratio", "group": "Settings", "area": "holding", "address": 4099, "type": "uint32", "access": "RW", "scale": 0.1, "write_min": 1, "write_max": 6975, "description": "Max 2615.0 on MID models, and CT x VT must stay within that limit; read-only on AV2 models"}, {"name": "VT ratio", "group": "Settings", "area": "holding", "address": 4101, "type": "uint32", "access": "RW", "scale": 0.1, "write_min": 1, "write_max": 6975, "description": "Read-only on AV2 and MID models; CT x VT must stay within the limit"}, {"name": "Demand interval", "group": "Settings", "area": "holding", "address": 4112, "type": "uint32", "access": "RW", "unit": "min", "write_min": 1, "write_max": 30}, {"name": "Filter span", "group": "Settings", "area": "holding", "address": 4360, "type": "uint16", "access": "RW", "write_min": 0, "write_max": 100}, {"name": "Filter coefficient", "group": "Settings", "area": "holding", "address": 4361, "type": "uint16", "access": "RW", "write_min": 1, "write_max": 32}, {"name": "Current tariff", "group": "Settings", "area": "holding", "address": 4609, "type": "uint16", "access": "RW", "enum": {"0": "Disabled", "1": "Tariff 1", "2": "Tariff 2", "3": "Tariff 3", "4": "Tariff 4"}, "description": "To change it, write 0x5A00 + tariff (e.g. 0x5A03 for tariff 3); a change resets the demand values"}, {"name": "Type of application", "group": "Settings", "area": "holding", "address": 40960, "type": "uint16", "access": "RW", "enum": {"0": "A", "1": "B", "2": "C", "3": "D", "4": "E", "5": "F", "6": "G", "7": "H"}, "description": "PFA models: A, B, C, G; PFB models: E, F, H"}, {"name": "Reset total meters", "group": "Commands", "area": "holding", "address": 16385, "type": "uint16", "access": "W", "write_min": 1, "write_max": 1, "description": "Write 1; not in LOCK position"}, {"name": "Reset hour counter", "group": "Commands", "area": "holding", "address": 16386, "type": "uint16", "access": "W", "write_min": 1, "write_max": 1, "description": "Write 1"}, {"name": "Reset all meters", "group": "Commands", "area": "holding", "address": 16387, "type": "uint16", "access": "W", "write_min": 1, "write_max": 1, "description": "Write 1; not in LOCK position"}, {"name": "Reset partial meters", "group": "Commands", "area": "holding", "address": 16388, "type": "uint16", "access": "W", "write_min": 1, "write_max": 1, "description": "Write 1"}, {"name": "Reset demand max", "group": "Commands", "area": "holding", "address": 16389, "type": "uint16", "access": "W", "write_min": 1, "write_max": 1, "description": "Write 1"} ] }