{
  "$schema": "https://raw.githubusercontent.com/nobrega8/mbmap-library/main/schema/mbmap-2.schema.json",
  "mbmap": 2,
  "vendor": "Kohler",
  "model": "MPAC 1000",
  "models": ["MPAC 1000"],
  "vendor_website": "rehlko.com",
  "revision": 3,
  "revised": "2026-11-10",
  "source": "Kohler, \"Protocol Operation: Modbus Communications Protocol\", TP-6113 12/21; https://techcomm.kohler.com/techcomm/pdf/tp6113.pdf",
  "notes": [
    "MPAC 1000 automatic transfer switch controller.",
    "Addresses are zero-based: the manual register 40001 is address 0.",
    "The manual limits a read to 50 registers. Only the monitoring part of the register table is in this map.",
    "Data is available over Modbus RTU (8N1); Modbus TCP needs a Modbus/Ethernet converter."
  ],
  "parity": "N",
  "databits": 8,
  "stopbits": 1,
  "max_read_registers": 50,
  "byte_order": "big",
  "word_order": "little",
  "address_base": 0,
  "x_status": "official",
  "sources": [
    {"title": "Protocol Operation: Modbus Communications Protocol (TP-6113)", "version": "12/21", "date": "2021-12", "url": "https://techcomm.kohler.com/techcomm/pdf/tp6113.pdf", "note": "section 9; register tables also compared with edition 9/14"}
  ],
  "registers": [
    {"name": "SourceA Line-Neutral L1-L0", "area": "holding", "address": 1, "type": "uint16", "scale": 0.1, "unit": "V", "access": "R"},
    {"name": "SourceA Line-Neutral L2-L0", "area": "holding", "address": 2, "type": "uint16", "scale": 0.1, "unit": "V", "access": "R"},
    {"name": "SourceA Line-Neutral L3-L0", "area": "holding", "address": 3, "type": "uint16", "scale": 0.1, "unit": "V", "access": "R"},
    {"name": "SourceB Line-Neutral L1-L0", "area": "holding", "address": 4, "type": "uint16", "scale": 0.1, "unit": "V", "access": "R"},
    {"name": "SourceB Line-Neutral L2-L0", "area": "holding", "address": 5, "type": "uint16", "scale": 0.1, "unit": "V", "access": "R"},
    {"name": "SourceB Line-Neutral L3-L0", "area": "holding", "address": 6, "type": "uint16", "scale": 0.1, "unit": "V", "access": "R"},
    {"name": "SourceA Line Voltage L1-L2", "area": "holding", "address": 7, "type": "uint16", "scale": 0.1, "unit": "V", "access": "R"},
    {"name": "SourceA Line Voltage L2-L3", "area": "holding", "address": 8, "type": "uint16", "scale": 0.1, "unit": "V", "access": "R"},
    {"name": "SourceA Line Voltage L3-L1", "area": "holding", "address": 9, "type": "uint16", "scale": 0.1, "unit": "V", "access": "R"},
    {"name": "SourceB Line Voltage L1-L2", "area": "holding", "address": 10, "type": "uint16", "scale": 0.1, "unit": "V", "access": "R"},
    {"name": "SourceB Line Voltage L2-L3", "area": "holding", "address": 11, "type": "uint16", "scale": 0.1, "unit": "V", "access": "R"},
    {"name": "SourceB Line Voltage L3-L1", "area": "holding", "address": 12, "type": "uint16", "scale": 0.1, "unit": "V", "access": "R"},
    {"name": "SourceA Frequency", "area": "holding", "address": 13, "type": "uint16", "scale": 0.1, "unit": "Hz", "access": "R"},
    {"name": "SourceB Frequency", "area": "holding", "address": 14, "type": "uint16", "scale": 0.1, "unit": "Hz", "access": "R"},
    {"name": "SourceA Nominal Voltage", "area": "holding", "address": 23, "type": "uint16", "scale": 0.1, "unit": "V", "access": "RW"},
    {"name": "SourceB Nominal Voltage", "area": "holding", "address": 24, "type": "uint16", "scale": 0.1, "unit": "V", "access": "RW"},
    {"name": "SourceA Nominal Frequency", "area": "holding", "address": 25, "type": "uint16", "scale": 0.1, "unit": "Hz", "access": "RW"},
    {"name": "SourceB Nominal Frequency", "area": "holding", "address": 26, "type": "uint16", "scale": 0.1, "unit": "Hz", "access": "RW"},
    {"name": "SourceA Number of Phases", "area": "holding", "address": 27, "type": "uint16", "access": "RW"},
    {"name": "SourceB Number of Phases", "area": "holding", "address": 28, "type": "uint16", "access": "RW"},
    {"name": "Rated Amperage", "area": "holding", "address": 29, "type": "uint16", "access": "RW"},
    {"name": "SourceA Engine Start Time Delay", "area": "holding", "address": 31, "type": "uint16", "unit": "s", "access": "RW"},
    {"name": "SourceB Engine Start Time Delay", "area": "holding", "address": 32, "type": "uint16", "unit": "s", "access": "RW"},
    {"name": "SourceA Ext Engine Start Time Delay", "area": "holding", "address": 33, "type": "uint16", "unit": "s", "access": "RW"},
    {"name": "SourceB Ext Engine Start Time Delay", "area": "holding", "address": 34, "type": "uint16", "unit": "s", "access": "RW"},
    {"name": "SourceA Engine Cooldown Time Delay", "area": "holding", "address": 35, "type": "uint16", "unit": "s", "access": "RW"},
    {"name": "SourceB Engine Cooldown Time Delay", "area": "holding", "address": 36, "type": "uint16", "unit": "s", "access": "RW"},
    {"name": "Preferred to Standby Time Delay", "area": "holding", "address": 37, "type": "uint16", "unit": "s", "access": "RW"},
    {"name": "Standby to Preferred Time Delay", "area": "holding", "address": 38, "type": "uint16", "unit": "s", "access": "RW"},
    {"name": "Off to Preferred Time Delay", "area": "holding", "address": 39, "type": "uint16", "scale": 0.1, "unit": "s", "access": "RW"},
    {"name": "Off to Standby Time Delay", "area": "holding", "address": 40, "type": "uint16", "scale": 0.1, "unit": "s", "access": "RW"},
    {"name": "Acquire Standby Source", "area": "holding", "address": 41, "type": "uint16", "unit": "s", "access": "RW"},
    {"name": "InPhase Monitor Synch", "area": "holding", "address": 42, "type": "uint16", "unit": "s", "access": "RW"},
    {"name": "SourceA Over Volt Dropout Trip Point", "area": "holding", "address": 44, "type": "uint16", "unit": "%", "access": "RW"},
    {"name": "SourceA Over Volt Pickup Trip Point", "area": "holding", "address": 45, "type": "uint16", "unit": "%", "access": "RW"},
    {"name": "SourceA Under Volt Pickup Trip Point", "area": "holding", "address": 46, "type": "uint16", "unit": "%", "access": "RW"},
    {"name": "SourceA Under Volt Dropout Trip Point", "area": "holding", "address": 47, "type": "uint16", "unit": "%", "access": "RW"},
    {"name": "SourceA Voltage Debounce Time", "area": "holding", "address": 48, "type": "uint16", "scale": 0.1, "unit": "s", "access": "RW"},
    {"name": "SourceB Over Volt Dropout Trip Point", "area": "holding", "address": 49, "type": "uint16", "unit": "%", "access": "RW"},
    {"name": "SourceB Over Volt Pickup Trip Point", "area": "holding", "address": 50, "type": "uint16", "unit": "%", "access": "RW"},
    {"name": "SourceB Under Volt Pickup Trip Point", "area": "holding", "address": 51, "type": "uint16", "unit": "%", "access": "RW"},
    {"name": "SourceB Under Volt Dropout Trip Point", "area": "holding", "address": 52, "type": "uint16", "unit": "%", "access": "RW"},
    {"name": "SourceB Voltage Debounce Time", "area": "holding", "address": 53, "type": "uint16", "scale": 0.1, "unit": "s", "access": "RW"},
    {"name": "SourceA Over Freq Dropout Trip Point", "area": "holding", "address": 54, "type": "uint16", "unit": "%", "access": "RW"},
    {"name": "SourceA Over Freq Pickup Trip Point", "area": "holding", "address": 55, "type": "uint16", "unit": "%", "access": "RW"},
    {"name": "SourceA Under Freq Dropout Trip Point", "area": "holding", "address": 56, "type": "uint16", "unit": "%", "access": "RW"},
    {"name": "SourceA Under Freq Pickup Trip Point", "area": "holding", "address": 57, "type": "uint16", "unit": "%", "access": "RW"},
    {"name": "SourceA Freq Dropout Time", "area": "holding", "address": 58, "type": "uint16", "scale": 0.1, "unit": "s", "access": "RW"},
    {"name": "SourceB Over Freq Dropout Trip Point", "area": "holding", "address": 59, "type": "uint16", "unit": "%", "access": "RW"},
    {"name": "SourceB Over Freq Pickup Trip Point", "area": "holding", "address": 60, "type": "uint16", "unit": "%", "access": "RW"},
    {"name": "Device ID", "area": "holding", "address": 49998, "type": "uint16", "access": "R", "reference": "0x0013", "description": "Fixed controller type code"}
  ]
}
