{ "$schema": "https://raw.githubusercontent.com/nobrega8/mbmap-library/main/schema/mbmap-2.schema.json", "mbmap": 2, "vendor": "Carlo Gavazzi", "model": "EM24-IS", "models": ["EM24-DIN PFA", "EM24-DIN PFB", "EM24-DIN X"], "vendor_website": "gavazziautomation.com", "description": "Three-phase energy analyzer (DIN rail) with RS485 Modbus RTU (IS output option)", "revision": 2, "revised": "2026-10-17", "source": "Carlo Gavazzi, \"EM24-DIN PFA, PFB & X models Communication Protocol\", version 4 revision 0 (2012-12-03)", "sources": [{"title": "EM24-DIN PFA, PFB & X models Communication Protocol", "version": "Version 4 Revision 0", "date": "2012-12-03", "url": "https://www.gavazziautomation.com/fileadmin/images/PIM/OTHERSTUFF/COMPRO/EM24_IS_CP.pdf"}], "notes": [ "FC03 or FC04 read (the same values), FC06 writes one register; at most 11 registers per read.", "32-bit values are low word first (bytes high first in each word).", "Overflow (EEEE on the display) reads 7FFFh in the high word of the variable.", "Status and identity registers (0x0300–0x0304, 0x000B) must be read one word at a time." ], "protocol": "rtu", "unit_id": 1, "baudrate": 9600, "parity": "N", "byte_order": "big", "word_order": "little", "address_base": 0, "max_read_registers": 11, "x_status": "official", "registers": [ {"name": "Voltage L1-N", "group": "Measurements", "area": "input", "address": "0x0000", "type": "int32", "scale": 0.1, "unit": "V", "access": "R"}, {"name": "Voltage L2-N", "group": "Measurements", "area": "input", "address": "0x0002", "type": "int32", "scale": 0.1, "unit": "V", "access": "R"}, {"name": "Voltage L3-N", "group": "Measurements", "area": "input", "address": "0x0004", "type": "int32", "scale": 0.1, "unit": "V", "access": "R"}, {"name": "Voltage L1-L2", "group": "Measurements", "area": "input", "address": "0x0006", "type": "int32", "scale": 0.1, "unit": "V", "access": "R"}, {"name": "Voltage L2-L3", "group": "Measurements", "area": "input", "address": "0x0008", "type": "int32", "scale": 0.1, "unit": "V", "access": "R"}, {"name": "Voltage L3-L1", "group": "Measurements", "area": "input", "address": "0x000A", "type": "int32", "scale": 0.1, "unit": "V", "access": "R"}, {"name": "Current L1", "group": "Measurements", "area": "input", "address": "0x000C", "type": "int32", "scale": 0.001, "unit": "A", "access": "R"}, {"name": "Current L2", "group": "Measurements", "area": "input", "address": "0x000E", "type": "int32", "scale": 0.001, "unit": "A", "access": "R"}, {"name": "Current L3", "group": "Measurements", "area": "input", "address": "0x0010", "type": "int32", "scale": 0.001, "unit": "A", "access": "R"}, {"name": "Active power L1", "group": "Measurements", "area": "input", "address": "0x0012", "type": "int32", "scale": 0.1, "unit": "W", "access": "R"}, {"name": "Active power L2", "group": "Measurements", "area": "input", "address": "0x0014", "type": "int32", "scale": 0.1, "unit": "W", "access": "R"}, {"name": "Active power L3", "group": "Measurements", "area": "input", "address": "0x0016", "type": "int32", "scale": 0.1, "unit": "W", "access": "R"}, {"name": "Apparent power L1", "group": "Measurements", "area": "input", "address": "0x0018", "type": "int32", "scale": 0.1, "unit": "VA", "access": "R"}, {"name": "Apparent power L2", "group": "Measurements", "area": "input", "address": "0x001A", "type": "int32", "scale": 0.1, "unit": "VA", "access": "R"}, {"name": "Apparent power L3", "group": "Measurements", "area": "input", "address": "0x001C", "type": "int32", "scale": 0.1, "unit": "VA", "access": "R"}, {"name": "Reactive power L1", "group": "Measurements", "area": "input", "address": "0x001E", "type": "int32", "scale": 0.1, "unit": "var", "access": "R"}, {"name": "Reactive power L2", "group": "Measurements", "area": "input", "address": "0x0020", "type": "int32", "scale": 0.1, "unit": "var", "access": "R"}, {"name": "Reactive power L3", "group": "Measurements", "area": "input", "address": "0x0022", "type": "int32", "scale": 0.1, "unit": "var", "access": "R"}, {"name": "Voltage L-N system", "group": "Measurements", "area": "input", "address": "0x0024", "type": "int32", "scale": 0.1, "unit": "V", "access": "R"}, {"name": "Voltage L-L system", "group": "Measurements", "area": "input", "address": "0x0026", "type": "int32", "scale": 0.1, "unit": "V", "access": "R"}, {"name": "Active power total", "group": "Measurements", "area": "input", "address": "0x0028", "type": "int32", "scale": 0.1, "unit": "W", "access": "R"}, {"name": "Apparent power total", "group": "Measurements", "area": "input", "address": "0x002A", "type": "int32", "scale": 0.1, "unit": "VA", "access": "R"}, {"name": "Reactive power total", "group": "Measurements", "area": "input", "address": "0x002C", "type": "int32", "scale": 0.1, "unit": "var", "access": "R"}, {"name": "Active power demand", "group": "Measurements", "area": "input", "address": "0x002E", "type": "int32", "scale": 0.1, "unit": "W", "access": "R"}, {"name": "Apparent power demand", "group": "Measurements", "area": "input", "address": "0x0030", "type": "int32", "scale": 0.1, "unit": "VA", "access": "R"}, {"name": "Power factor L1", "group": "Measurements", "area": "input", "address": "0x0032", "type": "int16", "scale": 0.001, "access": "R", "description": "Negative = lead (C), positive = lag (L)"}, {"name": "Power factor L2", "group": "Measurements", "area": "input", "address": "0x0033", "type": "int16", "scale": 0.001, "access": "R"}, {"name": "Power factor L3", "group": "Measurements", "area": "input", "address": "0x0034", "type": "int16", "scale": 0.001, "access": "R"}, {"name": "Power factor total", "group": "Measurements", "area": "input", "address": "0x0035", "type": "int16", "scale": 0.001, "access": "R"}, {"name": "Phase sequence", "group": "Measurements", "area": "input", "address": "0x0036", "type": "int16", "access": "R", "enum": {"-1": "L1-L3-L2", "0": "L1-L2-L3"}, "description": "Meaningful only in 3-phase systems"}, {"name": "Frequency", "group": "Measurements", "area": "input", "address": "0x0037", "type": "int16", "scale": 0.1, "unit": "Hz", "access": "R"}, {"name": "Active power demand max", "group": "Measurements", "area": "input", "address": "0x0038", "type": "int32", "scale": 0.1, "unit": "W", "access": "R"}, {"name": "Apparent power demand max", "group": "Measurements", "area": "input", "address": "0x003A", "type": "int32", "scale": 0.1, "unit": "VA", "access": "R"}, {"name": "Current demand max", "group": "Measurements", "area": "input", "address": "0x003C", "type": "int32", "scale": 0.001, "unit": "A", "access": "R"}, {"name": "Active energy import total", "group": "Energy", "area": "input", "address": "0x003E", "type": "int32", "scale": 0.1, "unit": "kWh", "access": "R"}, {"name": "Reactive energy import total", "group": "Energy", "area": "input", "address": "0x0040", "type": "int32", "scale": 0.1, "unit": "kvarh", "access": "R"}, {"name": "Active energy import partial", "group": "Energy", "area": "input", "address": "0x0042", "type": "int32", "scale": 0.1, "unit": "kWh", "access": "R"}, {"name": "Reactive energy import partial", "group": "Energy", "area": "input", "address": "0x0044", "type": "int32", "scale": 0.1, "unit": "kvarh", "access": "R"}, {"name": "Active energy import L1", "group": "Energy", "area": "input", "address": "0x0046", "type": "int32", "scale": 0.1, "unit": "kWh", "access": "R"}, {"name": "Active energy import L2", "group": "Energy", "area": "input", "address": "0x0048", "type": "int32", "scale": 0.1, "unit": "kWh", "access": "R"}, {"name": "Active energy import L3", "group": "Energy", "area": "input", "address": "0x004A", "type": "int32", "scale": 0.1, "unit": "kWh", "access": "R"}, {"name": "Active energy import tariff 1", "group": "Energy", "area": "input", "address": "0x004C", "type": "int32", "scale": 0.1, "unit": "kWh", "access": "R"}, {"name": "Active energy import tariff 2", "group": "Energy", "area": "input", "address": "0x004E", "type": "int32", "scale": 0.1, "unit": "kWh", "access": "R"}, {"name": "Active energy import tariff 3", "group": "Energy", "area": "input", "address": "0x0050", "type": "int32", "scale": 0.1, "unit": "kWh", "access": "R"}, {"name": "Active energy import tariff 4", "group": "Energy", "area": "input", "address": "0x0052", "type": "int32", "scale": 0.1, "unit": "kWh", "access": "R"}, {"name": "Reactive energy import tariff 1", "group": "Energy", "area": "input", "address": "0x0054", "type": "int32", "scale": 0.1, "unit": "kvarh", "access": "R"}, {"name": "Reactive energy import tariff 2", "group": "Energy", "area": "input", "address": "0x0056", "type": "int32", "scale": 0.1, "unit": "kvarh", "access": "R"}, {"name": "Reactive energy import tariff 3", "group": "Energy", "area": "input", "address": "0x0058", "type": "int32", "scale": 0.1, "unit": "kvarh", "access": "R"}, {"name": "Reactive energy import tariff 4", "group": "Energy", "area": "input", "address": "0x005A", "type": "int32", "scale": 0.1, "unit": "kvarh", "access": "R"}, {"name": "Active energy export total", "group": "Energy", "area": "input", "address": "0x005C", "type": "int32", "scale": 0.1, "unit": "kWh", "access": "R"}, {"name": "Reactive energy export total", "group": "Energy", "area": "input", "address": "0x005E", "type": "int32", "scale": 0.1, "unit": "kvarh", "access": "R"}, {"name": "Hour counter", "group": "Energy", "area": "input", "address": "0x0060", "type": "int32", "scale": 0.01, "unit": "h", "access": "R"}, {"name": "Counter 1", "group": "Energy", "area": "input", "address": "0x0062", "type": "int32", "access": "R", "description": "Weight ×10, ×100 or ×1000 per the digital input format setting (0x1133–0x1135)"}, {"name": "Counter 2", "group": "Energy", "area": "input", "address": "0x0064", "type": "int32", "access": "R"}, {"name": "Counter 3", "group": "Energy", "area": "input", "address": "0x0066", "type": "int32", "access": "R"}, {"name": "Digital input 1 open", "group": "Status", "area": "input", "address": "0x0300", "type": "bool", "bit": 0, "access": "R", "description": "1 = open, 0 = closed; read this register alone"}, {"name": "Digital input 2 open", "group": "Status", "area": "input", "address": "0x0300", "type": "bool", "bit": 1, "access": "R"}, {"name": "Digital input 3 open", "group": "Status", "area": "input", "address": "0x0300", "type": "bool", "bit": 2, "access": "R"}, {"name": "Current tariff", "group": "Status", "area": "input", "address": "0x0301", "type": "uint16", "access": "R", "enum": {"0": "Tariff 1", "1": "Tariff 2", "2": "Tariff 3", "3": "Tariff 4"}}, {"name": "Front selector", "group": "Status", "area": "input", "address": "0x0304", "type": "uint16", "access": "R", "enum": {"0": "Keypad unlocked", "1": "Keypad unlocked", "2": "Keypad unlocked", "3": "Keypad locked"}}, {"name": "Carlo Gavazzi identification code", "group": "Identity", "area": "input", "address": "0x000B", "type": "uint16", "access": "R", "enum": {"71": "EM24-DIN AV9 / AV2", "72": "EM24-DIN AV5", "73": "EM24-DIN AV6"}, "role": "model", "description": "Read alone, one word at a time: the same address is the high word of Voltage L3-L1"}, {"name": "Version code", "group": "Identity", "area": "input", "address": "0x0302", "type": "uint16", "access": "R", "enum": {"0": "EM24DINAV93XO2PFA", "2": "EM24DINAV93XISPFA", "3": "EM24DINAV93XXXPFA", "4": "EM24DINAV23XO2PFA", "5": "EM24DINAV23XISPFA", "6": "EM24DINAV23XXXPFA", "7": "EM24DINAV53xO2PFA", "9": "EM24DINAV53xISPFA", "10": "EM24DINAV53xXXPFA", "64": "EM24DINAV93XO2X", "66": "EM24DINAV93XISX", "67": "EM24DINAV93XXXX", "68": "EM24DINAV23XO2X", "69": "EM24DINAV23XISX", "70": "EM24DINAV23XXXX", "71": "EM24DINAV53xO2X", "73": "EM24DINAV53xISX", "74": "EM24DINAV53xXXX", "75": "EM24DINAV63xO2X", "76": "EM24DINAV63xR2X", "77": "EM24DINAV63xISX", "78": "EM24DINAV63xXXX", "128": "EM24DINAV93XO2PFB", "130": "EM24DINAV93XISPFB", "131": "EM24DINAV93XXXPFB", "132": "EM24DINAV23XO2PFB", "133": "EM24DINAV23XISPFB", "134": "EM24DINAV23XXXPFB", "135": "EM24DINAV53xO2PFB", "137": "EM24DINAV53xISPFB", "138": "EM24DINAV53xXXPFB"}, "description": "x = D or L"}, {"name": "Revision code", "group": "Identity", "area": "input", "address": "0x0303", "type": "uint16", "access": "R", "role": "firmware"}, {"name": "Serial number letters 1-2", "group": "Identity", "area": "holding", "address": "0x1300", "type": "uint16", "access": "R", "description": "ASCII: high byte first letter, low byte second"}, {"name": "Serial number letters 3-4", "group": "Identity", "area": "holding", "address": "0x1301", "type": "uint16", "access": "R"}, {"name": "Serial number letters 5-6", "group": "Identity", "area": "holding", "address": "0x1302", "type": "uint16", "access": "R"}, {"name": "Serial number letters 7-8", "group": "Identity", "area": "holding", "address": "0x1303", "type": "uint16", "access": "R"}, {"name": "Serial number letters 9-10", "group": "Identity", "area": "holding", "address": "0x1304", "type": "uint16", "access": "R"}, {"name": "Serial number letters 11-12", "group": "Identity", "area": "holding", "address": "0x1305", "type": "uint16", "access": "R"}, {"name": "Serial number letter 13", "group": "Identity", "area": "holding", "address": "0x1306", "type": "uint16", "access": "R"}, {"name": "Password", "group": "Settings", "area": "holding", "address": "0x1100", "type": "uint16", "access": "RW", "write_min": 0, "write_max": 9999}, {"name": "Application", "group": "Settings", "area": "holding", "address": "0x1101", "type": "uint16", "access": "RW", "enum": {"0": "A application", "1": "B application", "2": "C application", "3": "D application", "4": "E application", "5": "F application", "6": "G application", "7": "H application"}, "description": "A, B, C, G on PFA only; E, F, H on PFB only; all on X"}, {"name": "Measuring system", "group": "Settings", "area": "holding", "address": "0x1102", "type": "uint16", "access": "RW", "enum": {"0": "3Pn", "1": "3P1", "2": "2P", "3": "1P", "4": "3P"}, "description": "PFA and PFB support only 3Pn"}, {"name": "Demand integration time", "group": "Settings", "area": "holding", "address": "0x1103", "type": "uint16", "unit": "min", "access": "RW", "write_min": 1, "write_max": 30}, {"name": "Selector position 3 page", "group": "Settings", "area": "holding", "address": "0x1104", "type": "uint16", "access": "RW", "enum": {"0": "Page 1", "1": "Page 2", "2": "Page 3", "3": "Page 4", "4": "Page 5", "5": "Page 6", "6": "Page 7", "7": "Page 8", "8": "Page 9", "9": "Page 10", "10": "Page 11", "11": "Page 12", "12": "Page 13", "13": "Page 14", "14": "Page 15", "15": "Page 16", "16": "Page 17", "17": "Page 18", "18": "Page 19", "19": "Page 20", "20": "Page 21", "21": "Page 22", "22": "Page 23", "23": "Page 24", "24": "Page 25", "25": "Page 26", "26": "Page 27", "27": "Page 28", "28": "Page 29", "29": "Page 30", "30": "Page 31"}}, {"name": "Selector position 2 page", "group": "Settings", "area": "holding", "address": "0x1105", "type": "uint16", "access": "RW", "enum": {"0": "Page 1", "1": "Page 2", "2": "Page 3", "3": "Page 4", "4": "Page 5", "5": "Page 6", "6": "Page 7", "7": "Page 8", "8": "Page 9", "9": "Page 10", "10": "Page 11", "11": "Page 12", "12": "Page 13", "13": "Page 14", "14": "Page 15", "15": "Page 16", "16": "Page 17", "17": "Page 18", "18": "Page 19", "19": "Page 20", "20": "Page 21", "21": "Page 22", "22": "Page 23", "23": "Page 24", "24": "Page 25", "25": "Page 26", "26": "Page 27", "27": "Page 28", "28": "Page 29", "29": "Page 30", "30": "Page 31"}}, {"name": "Selector position 1 page", "group": "Settings", "area": "holding", "address": "0x1106", "type": "uint16", "access": "RW", "enum": {"0": "Page 1", "1": "Page 2", "2": "Page 3", "3": "Page 4", "4": "Page 5", "5": "Page 6", "6": "Page 7", "7": "Page 8", "8": "Page 9", "9": "Page 10", "10": "Page 11", "11": "Page 12", "12": "Page 13", "13": "Page 14", "14": "Page 15", "15": "Page 16", "16": "Page 17", "17": "Page 18", "18": "Page 19", "19": "Page 20", "20": "Page 21", "21": "Page 22", "22": "Page 23", "23": "Page 24", "24": "Page 25", "25": "Page 26", "26": "Page 27", "27": "Page 28", "28": "Page 29", "29": "Page 30", "30": "Page 31"}}, {"name": "Selector position 0 page", "group": "Settings", "area": "holding", "address": "0x1107", "type": "uint16", "access": "RW", "enum": {"0": "Page 1", "1": "Page 2", "2": "Page 3", "3": "Page 4", "4": "Page 5", "5": "Page 6", "6": "Page 7", "7": "Page 8", "8": "Page 9", "9": "Page 10", "10": "Page 11", "11": "Page 12", "12": "Page 13", "13": "Page 14", "14": "Page 15", "15": "Page 16", "16": "Page 17", "17": "Page 18", "18": "Page 19", "19": "Page 20", "20": "Page 21", "21": "Page 22", "22": "Page 23", "23": "Page 24", "24": "Page 25", "25": "Page 26", "26": "Page 27", "27": "Page 28", "28": "Page 29", "29": "Page 30", "30": "Page 31"}}, {"name": "Filter span", "group": "Settings", "area": "holding", "address": "0x1108", "type": "uint16", "access": "RW", "write_min": 0, "write_max": 100}, {"name": "Filter coefficient", "group": "Settings", "area": "holding", "address": "0x1109", "type": "uint16", "access": "RW", "write_min": 1, "write_max": 32}, {"name": "RS485 address", "group": "Settings", "area": "holding", "address": "0x110A", "type": "uint16", "access": "RW", "write_min": 1, "write_max": 247}, {"name": "RS485 baud rate", "group": "Settings", "area": "holding", "address": "0x110B", "type": "uint16", "access": "RW", "enum": {"0": "4800", "1": "9600"}, "description": "8 data bits, no parity, 1 stop bit, fixed"}, {"name": "User 1 ID code", "group": "Settings", "area": "holding", "address": "0x110C", "type": "uint16", "access": "RW", "write_min": 1, "write_max": 9999}, {"name": "User 2 ID code", "group": "Settings", "area": "holding", "address": "0x110D", "type": "uint16", "access": "RW", "write_min": 1, "write_max": 9999}, {"name": "User 3 ID code", "group": "Settings", "area": "holding", "address": "0x110E", "type": "uint16", "access": "RW", "write_min": 1, "write_max": 9999}, {"name": "Digital input 1 function", "group": "Settings", "area": "holding", "address": "0x1121", "type": "uint16", "access": "RW", "enum": {"0": "Sync", "1": "Tariff", "2": "Gas counter", "3": "Cold water counter", "4": "Hot water counter", "5": "Hot water kWh counter", "6": "External counter", "7": "Remote (REM)"}}, {"name": "Digital input 2 function", "group": "Settings", "area": "holding", "address": "0x1122", "type": "uint16", "access": "RW", "enum": {"0": "Sync", "1": "Tariff", "2": "Gas counter", "3": "Cold water counter", "4": "Hot water counter", "5": "Hot water kWh counter", "6": "External counter", "7": "Remote (REM)"}}, {"name": "Digital input 3 function", "group": "Settings", "area": "holding", "address": "0x1123", "type": "uint16", "access": "RW", "enum": {"0": "Gas counter", "1": "Cold water counter", "2": "Hot water counter", "3": "Hot water kWh counter", "4": "External counter", "5": "Remote (REM)"}}, {"name": "Digital input 1 prescaler", "group": "Settings", "area": "holding", "address": "0x1124", "type": "uint16", "access": "RW", "write_min": 1, "write_max": 9999}, {"name": "Digital input 2 prescaler", "group": "Settings", "area": "holding", "address": "0x1125", "type": "uint16", "access": "RW", "write_min": 1, "write_max": 9999}, {"name": "Digital input 3 prescaler", "group": "Settings", "area": "holding", "address": "0x1126", "type": "uint16", "access": "RW", "write_min": 1, "write_max": 9999}, {"name": "Tariff via serial", "group": "Settings", "area": "holding", "address": "0x1127", "type": "uint16", "access": "W", "description": "Low byte 5Ah, high byte the tariff 0–3 (tariff 1–4); only when no digital input selects tariffs"}, {"name": "Digital input 1 counter format", "group": "Settings", "area": "holding", "address": "0x1133", "type": "uint16", "access": "RW", "enum": {"0": "3 decimals", "1": "2 decimals", "2": "1 decimal"}}, {"name": "Digital input 2 counter format", "group": "Settings", "area": "holding", "address": "0x1134", "type": "uint16", "access": "RW", "enum": {"0": "3 decimals", "1": "2 decimals", "2": "1 decimal"}}, {"name": "Digital input 3 counter format", "group": "Settings", "area": "holding", "address": "0x1135", "type": "uint16", "access": "RW", "enum": {"0": "3 decimals", "1": "2 decimals", "2": "1 decimal"}}, {"name": "CT ratio", "group": "Settings", "area": "holding", "address": "0x112C", "type": "uint32", "scale": 0.1, "access": "RW", "write_min": 1, "write_max": 60000}, {"name": "VT ratio", "group": "Settings", "area": "holding", "address": "0x112E", "type": "uint32", "scale": 0.1, "access": "RW", "write_min": 1, "write_max": 6000}, {"name": "Secondary address", "group": "Settings", "area": "holding", "address": "0x1307", "type": "uint32", "access": "R"}, {"name": "Reset all meters (except hour counter)", "group": "Commands", "area": "holding", "address": "0x3000", "type": "uint16", "access": "W", "enum": {"1": "Execute"}}, {"name": "Reset total meters (except hour counter)", "group": "Commands", "area": "holding", "address": "0x3001", "type": "uint16", "access": "W", "enum": {"1": "Execute"}}, {"name": "Reset partial meters", "group": "Commands", "area": "holding", "address": "0x3002", "type": "uint16", "access": "W", "enum": {"1": "Execute"}}, {"name": "Reset hour counter", "group": "Commands", "area": "holding", "address": "0x3003", "type": "uint16", "access": "W", "enum": {"1": "Execute"}}, {"name": "Reset counters 1, 2 and 3", "group": "Commands", "area": "holding", "address": "0x3004", "type": "uint16", "access": "W", "enum": {"1": "Execute"}}, {"name": "Reset demand max", "group": "Commands", "area": "holding", "address": "0x3005", "type": "uint16", "access": "W", "enum": {"1": "Execute"}} ] }