{
  "$schema": "https://raw.githubusercontent.com/nobrega8/mbmap-library/main/schema/mbmap-2.schema.json",
  "mbmap": 2,
  "vendor": "KRON",
  "model": "Mult-K Série 2",
  "models": ["Mult-K Série 2", "Mult-K Serie 2"],
  "vendor_website": "kron.com.br",
  "description": "Three-phase multimeter: voltages, currents, frequency, power, power factor, energy, demand, minimums and maximums, settings and reset commands",
  "revision": 1,
  "revised": "2026-11-08",
  "source": "KRON Protocolo MODBUS - Mult-K Série 2, rev. 1.0 (June 2016)",
  "sources": [
    {"title": "Protocolo MODBUS – Mult-K Serie 2", "version": "1.0", "date": "2016-06", "url": "https://en.kron.com.br/wp-content/uploads/2020/02/Manual-Protocolo-Modbus-Mult-k-Serie-2-Rev.1.0-1.pdf", "note": "linked in issue #143"}
  ],
  "notes": [
    "Modbus RTU on RS-485. Addresses are numbered from 1 as in the document (30.003 is input register 3, sent as 2). Commands are coils: command 006 is coil 6, sent as 5.",
    "Float values are sent with the bytes fully reversed (the document's example sends 60 Hz as 00 00 70 42), which is little byte order and little word order. That is the factory setting of holding register 2901; changing it breaks this map.",
    "Holding registers can be read or written at most 8 at a time; input registers up to 66 at a time.",
    "The baud rate (9600 to 57600 bit/s) and the format (8N1, 8N2, 8E1, 8O1) are set on the display or in holding register 7. The document gives no factory default; 9600 8N1 is assumed here.",
    "The THD registers (33.001 to 33.006) are left out: the document gives no scale or unit for them.",
    "Written from the protocol document; this map has not been tested on a device."
  ],
  "protocol": "rtu",
  "unit_id": 1,
  "baudrate": 9600,
  "parity": "N",
  "databits": 8,
  "stopbits": 1,
  "byte_order": "little",
  "word_order": "little",
  "address_base": 1,
  "max_read_registers": 8,
  "x_status": "official",
  "enums": {
    "error_low": {"0": "OK", "1": "Phase reversal or phase loss", "2": "Math error", "8": "Voltage or current over range", "16": "Incorrect restart", "128": "NFC error"},
    "error_high": {"0": "OK", "1": "Synchronising phases", "2": "Frequency out of range", "8": "Firmware protection active"},
    "baud_rate": {"0": "9600", "1": "19200", "2": "38400", "3": "57600", "4": "115200"},
    "serial_format": {"0": "8N1", "1": "8N2", "2": "8E1", "3": "8O1"},
    "frequency": {"0": "50 Hz", "1": "60 Hz"},
    "language": {"0": "Portuguese", "1": "English", "2": "Spanish", "3": "Portuguese"}
  },
  "registers": [
    {"name": "Three-phase voltage", "group": "Voltage", "area": "input", "address": 3, "type": "float32", "unit": "V"},
    {"name": "Voltage L1-L2", "group": "Voltage", "area": "input", "address": 5, "type": "float32", "unit": "V"},
    {"name": "Voltage L2-L3", "group": "Voltage", "area": "input", "address": 7, "type": "float32", "unit": "V"},
    {"name": "Voltage L3-L1", "group": "Voltage", "area": "input", "address": 9, "type": "float32", "unit": "V"},
    {"name": "Voltage L1", "group": "Voltage", "area": "input", "address": 11, "type": "float32", "unit": "V"},
    {"name": "Voltage L2", "group": "Voltage", "area": "input", "address": 13, "type": "float32", "unit": "V"},
    {"name": "Voltage L3", "group": "Voltage", "area": "input", "address": 15, "type": "float32", "unit": "V"},

    {"name": "Three-phase current", "group": "Current", "area": "input", "address": 17, "type": "float32", "unit": "A"},
    {"name": "Neutral current", "group": "Current", "area": "input", "address": 19, "type": "float32", "unit": "A"},
    {"name": "Current L1", "group": "Current", "area": "input", "address": 21, "type": "float32", "unit": "A"},
    {"name": "Current L2", "group": "Current", "area": "input", "address": 23, "type": "float32", "unit": "A"},
    {"name": "Current L3", "group": "Current", "area": "input", "address": 25, "type": "float32", "unit": "A"},

    {"name": "Frequency L1", "group": "Frequency", "area": "input", "address": 27, "type": "float32", "unit": "Hz"},
    {"name": "Frequency L2", "group": "Frequency", "area": "input", "address": 29, "type": "float32", "unit": "Hz"},
    {"name": "Frequency L3", "group": "Frequency", "area": "input", "address": 31, "type": "float32", "unit": "Hz"},

    {"name": "Total active power", "group": "Power", "area": "input", "address": 35, "type": "float32", "unit": "W"},
    {"name": "Active power L1", "group": "Power", "area": "input", "address": 37, "type": "float32", "unit": "W"},
    {"name": "Active power L2", "group": "Power", "area": "input", "address": 39, "type": "float32", "unit": "W"},
    {"name": "Active power L3", "group": "Power", "area": "input", "address": 41, "type": "float32", "unit": "W"},
    {"name": "Total reactive power", "group": "Power", "area": "input", "address": 43, "type": "float32", "unit": "var"},
    {"name": "Reactive power L1", "group": "Power", "area": "input", "address": 45, "type": "float32", "unit": "var"},
    {"name": "Reactive power L2", "group": "Power", "area": "input", "address": 47, "type": "float32", "unit": "var"},
    {"name": "Reactive power L3", "group": "Power", "area": "input", "address": 49, "type": "float32", "unit": "var"},
    {"name": "Total apparent power", "group": "Power", "area": "input", "address": 51, "type": "float32", "unit": "VA"},
    {"name": "Apparent power L1", "group": "Power", "area": "input", "address": 53, "type": "float32", "unit": "VA"},
    {"name": "Apparent power L2", "group": "Power", "area": "input", "address": 55, "type": "float32", "unit": "VA"},
    {"name": "Apparent power L3", "group": "Power", "area": "input", "address": 57, "type": "float32", "unit": "VA"},

    {"name": "Total power factor", "group": "Power factor", "area": "input", "address": 59, "type": "float32"},
    {"name": "Power factor L1", "group": "Power factor", "area": "input", "address": 61, "type": "float32"},
    {"name": "Power factor L2", "group": "Power factor", "area": "input", "address": 63, "type": "float32"},
    {"name": "Power factor L3", "group": "Power factor", "area": "input", "address": 65, "type": "float32"},

    {"name": "Three-phase voltage minimum", "group": "Minimum and maximum", "area": "input", "address": 1003, "type": "float32", "unit": "V"},
    {"name": "Three-phase voltage maximum", "group": "Minimum and maximum", "area": "input", "address": 2003, "type": "float32", "unit": "V"},
    {"name": "Voltage L1-L2 minimum", "group": "Minimum and maximum", "area": "input", "address": 1005, "type": "float32", "unit": "V"},
    {"name": "Voltage L1-L2 maximum", "group": "Minimum and maximum", "area": "input", "address": 2005, "type": "float32", "unit": "V"},
    {"name": "Voltage L2-L3 minimum", "group": "Minimum and maximum", "area": "input", "address": 1007, "type": "float32", "unit": "V"},
    {"name": "Voltage L2-L3 maximum", "group": "Minimum and maximum", "area": "input", "address": 2007, "type": "float32", "unit": "V"},
    {"name": "Voltage L3-L1 minimum", "group": "Minimum and maximum", "area": "input", "address": 1009, "type": "float32", "unit": "V"},
    {"name": "Voltage L3-L1 maximum", "group": "Minimum and maximum", "area": "input", "address": 2009, "type": "float32", "unit": "V"},
    {"name": "Voltage L1 minimum", "group": "Minimum and maximum", "area": "input", "address": 1011, "type": "float32", "unit": "V"},
    {"name": "Voltage L1 maximum", "group": "Minimum and maximum", "area": "input", "address": 2011, "type": "float32", "unit": "V"},
    {"name": "Voltage L2 minimum", "group": "Minimum and maximum", "area": "input", "address": 1013, "type": "float32", "unit": "V"},
    {"name": "Voltage L2 maximum", "group": "Minimum and maximum", "area": "input", "address": 2013, "type": "float32", "unit": "V"},
    {"name": "Voltage L3 minimum", "group": "Minimum and maximum", "area": "input", "address": 1015, "type": "float32", "unit": "V"},
    {"name": "Voltage L3 maximum", "group": "Minimum and maximum", "area": "input", "address": 2015, "type": "float32", "unit": "V"},
    {"name": "Three-phase current minimum", "group": "Minimum and maximum", "area": "input", "address": 1017, "type": "float32", "unit": "A"},
    {"name": "Three-phase current maximum", "group": "Minimum and maximum", "area": "input", "address": 2017, "type": "float32", "unit": "A"},
    {"name": "Neutral current minimum", "group": "Minimum and maximum", "area": "input", "address": 1019, "type": "float32", "unit": "A"},
    {"name": "Neutral current maximum", "group": "Minimum and maximum", "area": "input", "address": 2019, "type": "float32", "unit": "A"},
    {"name": "Current L1 minimum", "group": "Minimum and maximum", "area": "input", "address": 1021, "type": "float32", "unit": "A"},
    {"name": "Current L1 maximum", "group": "Minimum and maximum", "area": "input", "address": 2021, "type": "float32", "unit": "A"},
    {"name": "Current L2 minimum", "group": "Minimum and maximum", "area": "input", "address": 1023, "type": "float32", "unit": "A"},
    {"name": "Current L2 maximum", "group": "Minimum and maximum", "area": "input", "address": 2023, "type": "float32", "unit": "A"},
    {"name": "Current L3 minimum", "group": "Minimum and maximum", "area": "input", "address": 1025, "type": "float32", "unit": "A"},
    {"name": "Current L3 maximum", "group": "Minimum and maximum", "area": "input", "address": 2025, "type": "float32", "unit": "A"},
    {"name": "Frequency L1 minimum", "group": "Minimum and maximum", "area": "input", "address": 1027, "type": "float32", "unit": "Hz"},
    {"name": "Frequency L1 maximum", "group": "Minimum and maximum", "area": "input", "address": 2027, "type": "float32", "unit": "Hz"},
    {"name": "Frequency L2 minimum", "group": "Minimum and maximum", "area": "input", "address": 1029, "type": "float32", "unit": "Hz"},
    {"name": "Frequency L2 maximum", "group": "Minimum and maximum", "area": "input", "address": 2029, "type": "float32", "unit": "Hz"},
    {"name": "Frequency L3 minimum", "group": "Minimum and maximum", "area": "input", "address": 1031, "type": "float32", "unit": "Hz"},
    {"name": "Frequency L3 maximum", "group": "Minimum and maximum", "area": "input", "address": 2031, "type": "float32", "unit": "Hz"},
    {"name": "Total active power minimum", "group": "Minimum and maximum", "area": "input", "address": 1035, "type": "float32", "unit": "W"},
    {"name": "Total active power maximum", "group": "Minimum and maximum", "area": "input", "address": 2035, "type": "float32", "unit": "W"},
    {"name": "Active power L1 minimum", "group": "Minimum and maximum", "area": "input", "address": 1037, "type": "float32", "unit": "W"},
    {"name": "Active power L1 maximum", "group": "Minimum and maximum", "area": "input", "address": 2037, "type": "float32", "unit": "W"},
    {"name": "Active power L2 minimum", "group": "Minimum and maximum", "area": "input", "address": 1039, "type": "float32", "unit": "W"},
    {"name": "Active power L2 maximum", "group": "Minimum and maximum", "area": "input", "address": 2039, "type": "float32", "unit": "W"},
    {"name": "Active power L3 minimum", "group": "Minimum and maximum", "area": "input", "address": 1041, "type": "float32", "unit": "W"},
    {"name": "Active power L3 maximum", "group": "Minimum and maximum", "area": "input", "address": 2041, "type": "float32", "unit": "W"},
    {"name": "Total reactive power minimum", "group": "Minimum and maximum", "area": "input", "address": 1043, "type": "float32", "unit": "var"},
    {"name": "Total reactive power maximum", "group": "Minimum and maximum", "area": "input", "address": 2043, "type": "float32", "unit": "var"},
    {"name": "Reactive power L1 minimum", "group": "Minimum and maximum", "area": "input", "address": 1045, "type": "float32", "unit": "var"},
    {"name": "Reactive power L1 maximum", "group": "Minimum and maximum", "area": "input", "address": 2045, "type": "float32", "unit": "var"},
    {"name": "Reactive power L2 minimum", "group": "Minimum and maximum", "area": "input", "address": 1047, "type": "float32", "unit": "var"},
    {"name": "Reactive power L2 maximum", "group": "Minimum and maximum", "area": "input", "address": 2047, "type": "float32", "unit": "var"},
    {"name": "Reactive power L3 minimum", "group": "Minimum and maximum", "area": "input", "address": 1049, "type": "float32", "unit": "var"},
    {"name": "Reactive power L3 maximum", "group": "Minimum and maximum", "area": "input", "address": 2049, "type": "float32", "unit": "var"},
    {"name": "Total apparent power minimum", "group": "Minimum and maximum", "area": "input", "address": 1051, "type": "float32", "unit": "VA"},
    {"name": "Total apparent power maximum", "group": "Minimum and maximum", "area": "input", "address": 2051, "type": "float32", "unit": "VA"},
    {"name": "Apparent power L1 minimum", "group": "Minimum and maximum", "area": "input", "address": 1053, "type": "float32", "unit": "VA"},
    {"name": "Apparent power L1 maximum", "group": "Minimum and maximum", "area": "input", "address": 2053, "type": "float32", "unit": "VA"},
    {"name": "Apparent power L2 minimum", "group": "Minimum and maximum", "area": "input", "address": 1055, "type": "float32", "unit": "VA"},
    {"name": "Apparent power L2 maximum", "group": "Minimum and maximum", "area": "input", "address": 2055, "type": "float32", "unit": "VA"},
    {"name": "Apparent power L3 minimum", "group": "Minimum and maximum", "area": "input", "address": 1057, "type": "float32", "unit": "VA"},
    {"name": "Apparent power L3 maximum", "group": "Minimum and maximum", "area": "input", "address": 2057, "type": "float32", "unit": "VA"},
    {"name": "Total power factor minimum", "group": "Minimum and maximum", "area": "input", "address": 1059, "type": "float32"},
    {"name": "Total power factor maximum", "group": "Minimum and maximum", "area": "input", "address": 2059, "type": "float32"},
    {"name": "Power factor L1 minimum", "group": "Minimum and maximum", "area": "input", "address": 1061, "type": "float32"},
    {"name": "Power factor L1 maximum", "group": "Minimum and maximum", "area": "input", "address": 2061, "type": "float32"},
    {"name": "Power factor L2 minimum", "group": "Minimum and maximum", "area": "input", "address": 1063, "type": "float32"},
    {"name": "Power factor L2 maximum", "group": "Minimum and maximum", "area": "input", "address": 2063, "type": "float32"},
    {"name": "Power factor L3 minimum", "group": "Minimum and maximum", "area": "input", "address": 1065, "type": "float32"},
    {"name": "Power factor L3 maximum", "group": "Minimum and maximum", "area": "input", "address": 2065, "type": "float32"},

    {"name": "Active energy imported", "group": "Energy", "area": "input", "address": 201, "type": "float32", "unit": "kWh"},
    {"name": "Reactive energy imported", "group": "Energy", "area": "input", "address": 203, "type": "float32", "unit": "kvarh"},
    {"name": "Active energy exported", "group": "Energy", "area": "input", "address": 205, "type": "float32", "unit": "kWh"},
    {"name": "Reactive energy exported", "group": "Energy", "area": "input", "address": 207, "type": "float32", "unit": "kvarh"},

    {"name": "Maximum active demand", "group": "Demand", "area": "input", "address": 209, "type": "float32", "unit": "kW"},
    {"name": "Active demand", "group": "Demand", "area": "input", "address": 211, "type": "float32", "unit": "kW"},
    {"name": "Maximum apparent demand", "group": "Demand", "area": "input", "address": 213, "type": "float32", "unit": "kVA"},
    {"name": "Apparent demand", "group": "Demand", "area": "input", "address": 215, "type": "float32", "unit": "kVA"},

    {"name": "Serial number", "group": "Identity", "area": "input", "address": 1, "type": "uint32", "byte_order": "big", "word_order": "big", "role": "serial"},

    {"name": "Error code", "group": "Status", "area": "input", "address": 3901, "type": "uint16", "byte_order": "big", "bit": 0, "bits": 8, "enum": "error_low", "description": "Same as the Read Exception Status (FC07) reply"},
    {"name": "Status code", "group": "Status", "area": "input", "address": 3901, "type": "uint16", "byte_order": "big", "bit": 8, "bits": 8, "enum": "error_high"},

    {"name": "VT ratio", "group": "Settings", "area": "holding", "address": 1, "type": "float32", "access": "RW", "write_min": 0.01, "write_max": 9999.99, "description": "Potential transformer ratio (TP)"},
    {"name": "CT ratio", "group": "Settings", "area": "holding", "address": 3, "type": "float32", "access": "RW", "write_min": 0.01, "write_max": 9999.99, "description": "Current transformer ratio (TC)"},
    {"name": "Pulse constant", "group": "Settings", "area": "holding", "address": 5, "type": "uint16", "byte_order": "big", "unit": "Wh", "access": "RW", "description": "Watt-hours per pulse (KE)"},
    {"name": "Connection type", "group": "Settings", "area": "holding", "address": 6, "type": "uint16", "byte_order": "big", "bit": 8, "bits": 8, "access": "RW", "write_min": 0, "write_max": 80, "description": "TL, high byte; 0 = three elements, 4 wires. The other codes are not listed in the protocol document"},
    {"name": "Demand integration time", "group": "Settings", "area": "holding", "address": 6, "type": "uint16", "byte_order": "big", "bit": 0, "bits": 8, "unit": "min", "access": "RW", "write_min": 0, "write_max": 60, "description": "TI, low byte"},

    {"name": "Serial baud rate", "group": "Communication", "area": "holding", "address": 7, "type": "uint16", "byte_order": "big", "bit": 0, "bits": 3, "enum": "baud_rate", "access": "RW"},
    {"name": "Serial format", "group": "Communication", "area": "holding", "address": 7, "type": "uint16", "byte_order": "big", "bit": 3, "bits": 2, "enum": "serial_format", "access": "RW"},

    {"name": "Nominal frequency", "group": "Settings", "area": "holding", "address": 7, "type": "uint16", "byte_order": "big", "bit": 9, "bits": 1, "enum": "frequency", "access": "RW"},
    {"name": "Display language", "group": "Settings", "area": "holding", "address": 7, "type": "uint16", "byte_order": "big", "bit": 13, "bits": 2, "enum": "language", "access": "RW"},

    {"name": "Float byte sequence", "group": "Communication", "area": "holding", "address": 2901, "type": "uint16", "byte_order": "big", "access": "RW", "enum": {"0x3210": "F2 F1 F0 EXP (KRON default)", "0x2301": "F1 F2 EXP F0", "0x0123": "EXP F0 F1 F2"}, "description": "Byte order of the float values. This map expects the default, 0x3210"},

    {"name": "Reset active demand", "group": "Commands", "area": "coil", "address": 1, "type": "bool", "access": "W", "description": "Command 001: write ON (FC05)"},
    {"name": "Reset apparent demand", "group": "Commands", "area": "coil", "address": 2, "type": "bool", "access": "W", "description": "Command 002: write ON (FC05)"},
    {"name": "Reset maximum active demand", "group": "Commands", "area": "coil", "address": 3, "type": "bool", "access": "W", "description": "Command 003: write ON (FC05)"},
    {"name": "Reset maximum apparent demand", "group": "Commands", "area": "coil", "address": 4, "type": "bool", "access": "W", "description": "Command 004: write ON (FC05)"},
    {"name": "Reset active energy imported", "group": "Commands", "area": "coil", "address": 5, "type": "bool", "access": "W", "description": "Command 005: write ON (FC05)"},
    {"name": "Restart device", "group": "Commands", "area": "coil", "address": 6, "type": "bool", "access": "W", "description": "Command 006: write ON (FC05)"},
    {"name": "Synchronise demand calculation", "group": "Commands", "area": "coil", "address": 7, "type": "bool", "access": "W", "description": "Command 007: write ON (FC05)"},
    {"name": "Reset all energies, demands and counters", "group": "Commands", "area": "coil", "address": 40, "type": "bool", "access": "W", "description": "Command 040: write ON (FC05)"},
    {"name": "Reset reactive energy imported", "group": "Commands", "area": "coil", "address": 50, "type": "bool", "access": "W", "description": "Command 050: write ON (FC05)"},
    {"name": "Reset active energy exported", "group": "Commands", "area": "coil", "address": 51, "type": "bool", "access": "W", "description": "Command 051: write ON (FC05)"},
    {"name": "Reset reactive energy exported", "group": "Commands", "area": "coil", "address": 52, "type": "bool", "access": "W", "description": "Command 052: write ON (FC05)"},
    {"name": "Reset minimums and maximums", "group": "Commands", "area": "coil", "address": 53, "type": "bool", "access": "W", "description": "Command 053: write ON (FC05)"}
  ]
}
