{
  "$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"}
  ]
}
