{ "$schema": "https://raw.githubusercontent.com/nobrega8/mbmap-library/main/schema/mbmap-2.schema.json", "mbmap": 2, "vendor": "eTactica", "model": "EM-SC/EM-FC", "models": ["EM-SC", "EM-FC"], "vendor_website": "bms-systems.co.uk", "description": "3-phase power meter (split-core or flexible-coil CTs), Modbus RTU. Base address 0x2000 (=8192 decimal). Common: vendor/product/firmware IDs, command, comms settings at 8192-8206. EM-specific: frequency at 8207 (mHz); phase currents at 8208-8211 (mA, u32); phase voltages at 8214-8218 (mV, u32); per-phase PF at 8222-8224 (×100); status at 8225; CT full-scale at 8226; cumulative energy at 8232 (mWh, s64) and reactive at 8239 (mVArh, s64). EM2 extended (fw≥4.0): 1-sec and 60-sec RMS averages, per-phase energy counters (µWh/µVArh, s64) at 8449-8549; last-cycle values and per-phase PF signs at 8536-8553.", "revision": 2, "source": "Omni Console device library (OmniCoreST), modbus-library/etactica-em-sc-fc.toml; Source: etactica-power-meter-em-modbus-register-map.pdf (v2.1, 2018-04-10). Not verified against the manufacturer's documentation", "notes": [ "eTactica EM-SC/EM-FC.", "Converted automatically from the Omni Console device library (OmniCoreST).", "Not verified against the manufacturer's documentation.", "Corrections are welcome (CONTRIBUTING.md). Change x_status once this table has been checked against the manual.", "| eTactica EM-SC / EM-FC Power Meter (Modbus RTU RS-485)", "|", "| Source: etactica-power-meter-em-modbus-register-map.pdf (v2.1, 2018-04-10)", "| Models: EM-SC (split-core current sensors), EM-FC (flexible-coil current sensors)", "| Protocol: Modbus RTU; FC03 read holding registers, FC16 write multiple registers", "| Default RS-485: 19200 baud, 8 data bits, Even parity, 1 stop bit (firmware ≥3.2 configurable)", "| Default Modbus slave ID: last byte of serial number (configurable via 0x2009)", "|", "| ADDRESSING: All addresses in this file are native PDU addresses (0-based).", "| Register 0x2000 = decimal 8192. Some tools show these as 48193 (Modicon holding register).", "| DATA FORMAT: Big-Endian, MSB first. Unsigned 16-bit unless noted.", "| Size-2 registers: u32 stored in 2 consecutive registers (MSB first).", "| Size-4 registers: signed 64-bit stored in 4 consecutive registers (MSB first);", "| represented here as two u32 entries: (high 32-bit) at base, (low 32-bit) at base+2." ], "byte_order": "big", "word_order": "big", "address_base": 0, "x_status": "unofficial", "x_origin": "omniconsole", "registers": [ {"name": "Vendor ID", "area": "holding", "address": 8192, "type": "uint16", "access": "R"}, {"name": "Product ID", "area": "holding", "address": 8193, "type": "uint16", "access": "R"}, {"name": "Firmware version", "area": "holding", "address": 8194, "type": "uint16", "access": "R"}, {"name": "Serial number bytes 0-1", "area": "holding", "address": 8195, "type": "uint16", "access": "R"}, {"name": "Serial number bytes 2-3", "area": "holding", "address": 8196, "type": "uint16", "access": "R"}, {"name": "Serial number bytes 4-5", "area": "holding", "address": 8197, "type": "uint16", "access": "R"}, {"name": "Command", "area": "holding", "address": 8198, "type": "uint16", "access": "R"}, {"name": "Total register count", "area": "holding", "address": 8199, "type": "uint16", "access": "R"}, {"name": "Serial communication settings", "area": "holding", "address": 8200, "type": "uint16", "access": "R"}, {"name": "Modbus slave ID", "area": "holding", "address": 8201, "type": "uint16", "access": "R"}, {"name": "CPU temperature", "area": "holding", "address": 8206, "type": "uint16", "access": "R"}, {"name": "Frequency", "area": "holding", "address": 8207, "type": "uint16", "access": "R"}, {"name": "Phase 1 current (1s avg)", "area": "holding", "address": 8208, "type": "uint32", "access": "R"}, {"name": "Phase 2 current (1s avg)", "area": "holding", "address": 8210, "type": "uint32", "access": "R"}, {"name": "Phase 3 current (1s avg)", "area": "holding", "address": 8212, "type": "uint32", "access": "R"}, {"name": "Phase 1 voltage (1s avg)", "area": "holding", "address": 8214, "type": "uint32", "access": "R"}, {"name": "Phase 2 voltage (1s avg)", "area": "holding", "address": 8216, "type": "uint32", "access": "R"}, {"name": "Phase 3 voltage (1s avg)", "area": "holding", "address": 8218, "type": "uint32", "access": "R"}, {"name": "Power factor phase 1 (×100)", "area": "holding", "address": 8222, "type": "int16", "access": "R"}, {"name": "Power factor phase 2 (×100)", "area": "holding", "address": 8223, "type": "int16", "access": "R"}, {"name": "Power factor phase 3 (×100)", "area": "holding", "address": 8224, "type": "int16", "access": "R"}, {"name": "Status", "area": "holding", "address": 8225, "type": "uint16", "access": "R"}, {"name": "CT nominal full-scale amperage", "area": "holding", "address": 8226, "type": "uint16", "access": "R"}, {"name": "Cumulative active energy mWh (high 32-bit)", "area": "holding", "address": 8232, "type": "uint32", "access": "R"}, {"name": "Cumulative active energy mWh (low 32-bit)", "area": "holding", "address": 8234, "type": "uint32", "access": "R"}, {"name": "Cumulative reactive energy mVArh (high 32-bit)", "area": "holding", "address": 8239, "type": "uint32", "access": "R"}, {"name": "Cumulative reactive energy mVArh (low 32-bit)", "area": "holding", "address": 8241, "type": "uint32", "access": "R"}, {"name": "CPU temperature (EM2)", "area": "holding", "address": 8448, "type": "uint16", "access": "R"}, {"name": "Cumulative active energy µWh (high 32-bit)", "area": "holding", "address": 8449, "type": "uint32", "access": "R"}, {"name": "Cumulative active energy µWh (low 32-bit)", "area": "holding", "address": 8451, "type": "uint32", "access": "R"}, {"name": "Cumulative reactive energy µVArh (high 32-bit)", "area": "holding", "address": 8453, "type": "uint32", "access": "R"}, {"name": "Cumulative reactive energy µVArh (low 32-bit)", "area": "holding", "address": 8455, "type": "uint32", "access": "R"}, {"name": "Phase 1 RMS voltage 1s avg (mV)", "area": "holding", "address": 8457, "type": "uint32", "access": "R"}, {"name": "Phase 2 RMS voltage 1s avg (mV)", "area": "holding", "address": 8459, "type": "uint32", "access": "R"}, {"name": "Phase 3 RMS voltage 1s avg (mV)", "area": "holding", "address": 8461, "type": "uint32", "access": "R"}, {"name": "Phase 1 RMS current 1s avg (mA)", "area": "holding", "address": 8463, "type": "uint32", "access": "R"}, {"name": "Phase 2 RMS current 1s avg (mA)", "area": "holding", "address": 8465, "type": "uint32", "access": "R"}, {"name": "Phase 3 RMS current 1s avg (mA)", "area": "holding", "address": 8467, "type": "uint32", "access": "R"}, {"name": "Power factor phase 1 1s avg (×10000)", "area": "holding", "address": 8469, "type": "int16", "access": "R"}, {"name": "Power factor phase 2 1s avg (×10000)", "area": "holding", "address": 8470, "type": "int16", "access": "R"}, {"name": "Power factor phase 3 1s avg (×10000)", "area": "holding", "address": 8471, "type": "int16", "access": "R"}, {"name": "Frequency 1s avg (mHz)", "area": "holding", "address": 8472, "type": "uint16", "access": "R"}, {"name": "Phase 1 active import µWh (high)", "area": "holding", "address": 8473, "type": "uint32", "access": "R"}, {"name": "Phase 1 active import µWh (low)", "area": "holding", "address": 8475, "type": "uint32", "access": "R"}, {"name": "Phase 2 active import µWh (high)", "area": "holding", "address": 8477, "type": "uint32", "access": "R"}, {"name": "Phase 2 active import µWh (low)", "area": "holding", "address": 8479, "type": "uint32", "access": "R"}, {"name": "Phase 3 active import µWh (high)", "area": "holding", "address": 8481, "type": "uint32", "access": "R"}, {"name": "Phase 3 active import µWh (low)", "area": "holding", "address": 8483, "type": "uint32", "access": "R"}, {"name": "Phase 1 active export µWh (high)", "area": "holding", "address": 8485, "type": "uint32", "access": "R"}, {"name": "Phase 1 active export µWh (low)", "area": "holding", "address": 8487, "type": "uint32", "access": "R"}, {"name": "Phase 2 active export µWh (high)", "area": "holding", "address": 8489, "type": "uint32", "access": "R"}, {"name": "Phase 2 active export µWh (low)", "area": "holding", "address": 8491, "type": "uint32", "access": "R"}, {"name": "Phase 3 active export µWh (high)", "area": "holding", "address": 8493, "type": "uint32", "access": "R"}, {"name": "Phase 3 active export µWh (low)", "area": "holding", "address": 8495, "type": "uint32", "access": "R"}, {"name": "Phase 1 reactive import µVArh (high)", "area": "holding", "address": 8497, "type": "uint32", "access": "R"}, {"name": "Phase 1 reactive import µVArh (low)", "area": "holding", "address": 8499, "type": "uint32", "access": "R"}, {"name": "Phase 2 reactive import µVArh (high)", "area": "holding", "address": 8501, "type": "uint32", "access": "R"}, {"name": "Phase 2 reactive import µVArh (low)", "area": "holding", "address": 8503, "type": "uint32", "access": "R"}, {"name": "Phase 3 reactive import µVArh (high)", "area": "holding", "address": 8505, "type": "uint32", "access": "R"}, {"name": "Phase 3 reactive import µVArh (low)", "area": "holding", "address": 8507, "type": "uint32", "access": "R"}, {"name": "Phase 1 reactive export µVArh (high)", "area": "holding", "address": 8509, "type": "uint32", "access": "R"}, {"name": "Phase 1 reactive export µVArh (low)", "area": "holding", "address": 8511, "type": "uint32", "access": "R"}, {"name": "Phase 2 reactive export µVArh (high)", "area": "holding", "address": 8513, "type": "uint32", "access": "R"}, {"name": "Phase 2 reactive export µVArh (low)", "area": "holding", "address": 8515, "type": "uint32", "access": "R"}, {"name": "Phase 3 reactive export µVArh (high)", "area": "holding", "address": 8517, "type": "uint32", "access": "R"}, {"name": "Phase 3 reactive export µVArh (low)", "area": "holding", "address": 8519, "type": "uint32", "access": "R"}, {"name": "Phase 1 RMS voltage 60s avg (mV)", "area": "holding", "address": 8521, "type": "uint32", "access": "R"}, {"name": "Phase 2 RMS voltage 60s avg (mV)", "area": "holding", "address": 8523, "type": "uint32", "access": "R"}, {"name": "Phase 3 RMS voltage 60s avg (mV)", "area": "holding", "address": 8525, "type": "uint32", "access": "R"}, {"name": "Phase 1 RMS current 60s avg (mA)", "area": "holding", "address": 8527, "type": "uint32", "access": "R"}, {"name": "Phase 2 RMS current 60s avg (mA)", "area": "holding", "address": 8529, "type": "uint32", "access": "R"}, {"name": "Phase 3 RMS current 60s avg (mA)", "area": "holding", "address": 8531, "type": "uint32", "access": "R"}, {"name": "Power factor phase 1 60s avg (×10000)", "area": "holding", "address": 8533, "type": "int16", "access": "R"}, {"name": "Power factor phase 2 60s avg (×10000)", "area": "holding", "address": 8534, "type": "int16", "access": "R"}, {"name": "Power factor phase 3 60s avg (×10000)", "area": "holding", "address": 8535, "type": "int16", "access": "R"}, {"name": "Phase 1 RMS voltage last cycle (mV)", "area": "holding", "address": 8536, "type": "uint32", "access": "R"}, {"name": "Phase 2 RMS voltage last cycle (mV)", "area": "holding", "address": 8538, "type": "uint32", "access": "R"}, {"name": "Phase 3 RMS voltage last cycle (mV)", "area": "holding", "address": 8540, "type": "uint32", "access": "R"}, {"name": "Phase 1 RMS current last cycle (mA)", "area": "holding", "address": 8542, "type": "uint32", "access": "R"}, {"name": "Phase 2 RMS current last cycle (mA)", "area": "holding", "address": 8544, "type": "uint32", "access": "R"}, {"name": "Phase 3 RMS current last cycle (mA)", "area": "holding", "address": 8546, "type": "uint32", "access": "R"}, {"name": "Power factor phase 1 latest (×10000)", "area": "holding", "address": 8548, "type": "int16", "access": "R"}, {"name": "Power factor phase 2 latest (×10000)", "area": "holding", "address": 8549, "type": "int16", "access": "R"}, {"name": "Power factor phase 3 latest (×10000)", "area": "holding", "address": 8550, "type": "int16", "access": "R"}, {"name": "Power factor sign phase 1", "area": "holding", "address": 8551, "type": "int16", "access": "R"}, {"name": "Power factor sign phase 2", "area": "holding", "address": 8552, "type": "int16", "access": "R"}, {"name": "Power factor sign phase 3", "area": "holding", "address": 8553, "type": "int16", "access": "R"} ] }