{
  "$schema": "https://raw.githubusercontent.com/nobrega8/mbmap-library/main/schema/mbmap-2.schema.json",
  "mbmap": 2,
  "vendor": "Kohler",
  "model": "Decision-Maker 3500",
  "models": ["Decision-Maker 3500"],
  "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": [
    "Decision-Maker 3500 generator set 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 6; register tables also compared with edition 9/14"}
  ],
  "enums": {
    "phase_rotation": {"0": "Unknown", "1": "ABC", "2": "CBA", "3": "Single-phase"},
    "lead_lag": {"0": "Invalid", "1": "Leading", "2": "Lagging"},
    "phase_connection": {"0": "Single-phase", "1": "Dog-leg", "2": "Wye", "3": "Delta"}
  },
  "registers": [
    {"name": "RMS Generator Voltage L1-L2", "area": "holding", "address": 0, "type": "uint16", "scale": 0.01, "unit": "%", "access": "R"},
    {"name": "RMS Generator Voltage L2-L3", "area": "holding", "address": 1, "type": "uint16", "scale": 0.01, "unit": "%", "access": "R"},
    {"name": "RMS Generator Voltage L3-L1", "area": "holding", "address": 2, "type": "uint16", "scale": 0.01, "unit": "%", "access": "R"},
    {"name": "RMS Generator Voltage Line to Line Average", "area": "holding", "address": 3, "type": "uint16", "scale": 0.01, "unit": "%", "access": "R"},
    {"name": "RMS Generator Voltage L1-N", "area": "holding", "address": 4, "type": "uint16", "scale": 0.01, "unit": "%", "access": "R"},
    {"name": "RMS Generator Voltage L2-N", "area": "holding", "address": 5, "type": "uint16", "scale": 0.01, "unit": "%", "access": "R"},
    {"name": "RMS Generator Voltage L3-N", "area": "holding", "address": 6, "type": "uint16", "scale": 0.01, "unit": "%", "access": "R"},
    {"name": "RMS Generator Voltage Line to Neutral Average", "area": "holding", "address": 7, "type": "uint16", "scale": 0.01, "unit": "%", "access": "R"},
    {"name": "RMS Generator Current L1", "area": "holding", "address": 8, "type": "uint16", "scale": 0.01, "unit": "%", "access": "R"},
    {"name": "RMS Generator Current L2", "area": "holding", "address": 9, "type": "uint16", "scale": 0.01, "unit": "%", "access": "R"},
    {"name": "RMS Generator Current L3", "area": "holding", "address": 10, "type": "uint16", "scale": 0.01, "unit": "%", "access": "R"},
    {"name": "RMS Generator Current Average", "area": "holding", "address": 11, "type": "uint16", "scale": 0.01, "unit": "%", "access": "R"},
    {"name": "Generator Frequency", "area": "holding", "address": 12, "type": "uint16", "scale": 0.01, "unit": "Hz", "access": "R"},
    {"name": "Generator Real Power L1", "area": "holding", "address": 13, "type": "int16", "scale": 0.01, "unit": "%", "access": "R"},
    {"name": "Generator Real Power L2", "area": "holding", "address": 14, "type": "int16", "scale": 0.01, "unit": "%", "access": "R"},
    {"name": "Generator Real Power L3", "area": "holding", "address": 15, "type": "int16", "scale": 0.01, "unit": "%", "access": "R"},
    {"name": "Generator Total Real Power", "area": "holding", "address": 16, "type": "int16", "scale": 0.01, "unit": "%", "access": "R"},
    {"name": "Generator Reactive Power L1", "area": "holding", "address": 17, "type": "int16", "scale": 0.01, "unit": "%", "access": "R"},
    {"name": "Generator Reactive Power L2", "area": "holding", "address": 18, "type": "int16", "scale": 0.01, "unit": "%", "access": "R"},
    {"name": "Generator Reactive Power L3", "area": "holding", "address": 19, "type": "int16", "scale": 0.01, "unit": "%", "access": "R"},
    {"name": "Generator Reactive Power", "area": "holding", "address": 20, "type": "int16", "scale": 0.01, "unit": "%", "access": "R"},
    {"name": "Generator Apparent Power L1", "area": "holding", "address": 21, "type": "uint16", "scale": 0.01, "unit": "%", "access": "R"},
    {"name": "Generator Apparent Power L2", "area": "holding", "address": 22, "type": "uint16", "scale": 0.01, "unit": "%", "access": "R"},
    {"name": "Generator Apparent Power L3", "area": "holding", "address": 23, "type": "uint16", "scale": 0.01, "unit": "%", "access": "R"},
    {"name": "Generator Apparent Power", "area": "holding", "address": 24, "type": "uint16", "scale": 0.01, "unit": "%", "access": "R"},
    {"name": "Generator Power Factor L1", "area": "holding", "address": 25, "type": "int16", "scale": 0.01, "access": "R"},
    {"name": "Generator Power Factor L2", "area": "holding", "address": 26, "type": "int16", "scale": 0.01, "access": "R"},
    {"name": "Generator Power Factor L3", "area": "holding", "address": 27, "type": "int16", "scale": 0.01, "access": "R"},
    {"name": "Generator Power Factor", "area": "holding", "address": 28, "type": "int16", "scale": 0.01, "access": "R"},
    {"name": "Generator Phase Angle Voltage L1 to Voltage L2", "area": "holding", "address": 29, "type": "int16", "scale": 0.1, "unit": "°", "access": "R"},
    {"name": "Generator Phase Angle Voltage L1 to Voltage L3", "area": "holding", "address": 30, "type": "int16", "scale": 0.1, "unit": "°", "access": "R"},
    {"name": "Generator Phase Angle Voltage L1 to Current L1", "area": "holding", "address": 31, "type": "int16", "scale": 0.1, "unit": "°", "access": "R"},
    {"name": "Generator Phase Angle Voltage L2 to Current L2", "area": "holding", "address": 32, "type": "int16", "scale": 0.1, "unit": "°", "access": "R"},
    {"name": "Generator Phase Angle Voltage L3 to Current L3", "area": "holding", "address": 33, "type": "int16", "scale": 0.1, "unit": "°", "access": "R"},
    {"name": "Phase Rotation", "area": "holding", "address": 34, "type": "uint16", "access": "R", "enum": "phase_rotation"},
    {"name": "Generator L1 Current Lead/Lag", "area": "holding", "address": 35, "type": "uint16", "access": "R", "enum": "lead_lag"},
    {"name": "Generator L2 Current Lead/Lag", "area": "holding", "address": 36, "type": "uint16", "access": "R", "enum": "lead_lag"},
    {"name": "Generator L3 Current Lead/Lag", "area": "holding", "address": 37, "type": "uint16", "access": "R", "enum": "lead_lag"},
    {"name": "Generator Average Current Lead/Lag", "area": "holding", "address": 38, "type": "uint16", "access": "R", "enum": "lead_lag"},
    {"name": "RMS Bus Voltage L1-L2", "area": "holding", "address": 43, "type": "uint16", "scale": 0.01, "unit": "%", "access": "R"},
    {"name": "RMS Bus Voltage L2-L3", "area": "holding", "address": 44, "type": "uint16", "scale": 0.01, "unit": "%", "access": "R"},
    {"name": "RMS Bus Voltage L3-L1", "area": "holding", "address": 45, "type": "uint16", "scale": 0.01, "unit": "%", "access": "R"},
    {"name": "RMS Bus Voltage Average Line to Line", "area": "holding", "address": 46, "type": "uint16", "scale": 0.01, "unit": "%", "access": "R"},
    {"name": "Total Bus Real Power", "area": "holding", "address": 47, "type": "int16", "scale": 0.01, "unit": "%", "access": "R"},
    {"name": "Total Bus Reactive Power", "area": "holding", "address": 48, "type": "int16", "scale": 0.01, "unit": "%", "access": "R"},
    {"name": "Bus Frequency", "area": "holding", "address": 49, "type": "uint16", "scale": 0.01, "unit": "Hz", "access": "R"},
    {"name": "Bus Phase Rotation", "area": "holding", "address": 50, "type": "uint16", "access": "R", "enum": "phase_rotation"},
    {"name": "Phase Angle Generator Voltage L1-Bus Voltage L1", "area": "holding", "address": 51, "type": "int16", "scale": 0.1, "unit": "°", "access": "R"},
    {"name": "Speed Bias", "area": "holding", "address": 52, "type": "int16", "scale": 0.01, "unit": "%", "access": "R"},
    {"name": "Voltage Bias", "area": "holding", "address": 53, "type": "int16", "scale": 0.01, "unit": "%", "access": "R"},
    {"name": "Engine Oil Pressure", "area": "holding", "address": 58, "type": "uint16", "scale": 0.1, "unit": "kPa", "access": "R"},
    {"name": "Engine Coolant Temperature", "area": "holding", "address": 59, "type": "int16", "scale": 0.1, "unit": "°C", "access": "R"},
    {"name": "Engine Speed", "area": "holding", "address": 60, "type": "uint16", "unit": "rpm", "access": "R"},
    {"name": "Battery Voltage", "area": "holding", "address": 61, "type": "uint16", "scale": 0.1, "unit": "V", "access": "R"},
    {"name": "Controller Temperature", "area": "holding", "address": 62, "type": "int16", "scale": 0.1, "unit": "°C", "access": "R"},
    {"name": "Engine Fuel Temperature", "area": "holding", "address": 64, "type": "int16", "scale": 0.1, "unit": "°C", "access": "R"},
    {"name": "Engine Fuel Rate", "area": "holding", "address": 65, "type": "uint16", "unit": "L/h", "access": "R"},
    {"name": "Fuel Used During Last Run", "area": "holding", "address": 66, "type": "uint16", "unit": "L", "access": "R"},
    {"name": "Engine Coolant Pressure", "area": "holding", "address": 67, "type": "uint16", "scale": 0.1, "unit": "kPa", "access": "R"},
    {"name": "Engine Coolant Level", "area": "holding", "address": 68, "type": "uint16", "scale": 0.01, "unit": "%", "access": "R"},
    {"name": "Engine Oil Temperature", "area": "holding", "address": 69, "type": "int16", "scale": 0.1, "unit": "°C", "access": "R"},
    {"name": "Engine Oil Level", "area": "holding", "address": 70, "type": "uint16", "scale": 0.01, "unit": "%", "access": "R"},
    {"name": "Engine Crankcase Pressure", "area": "holding", "address": 71, "type": "uint16", "scale": 0.1, "unit": "kPa", "access": "R"},
    {"name": "Intake Air Temperature", "area": "holding", "address": 72, "type": "int16", "scale": 0.1, "unit": "°C", "access": "R"},
    {"name": "Intake Air Pressure", "area": "holding", "address": 73, "type": "uint16", "unit": "kPa", "access": "R"},
    {"name": "ECM Ambient Temperature", "area": "holding", "address": 74, "type": "int16", "scale": 0.1, "unit": "°C", "access": "R"},
    {"name": "ECM Battery Voltage", "area": "holding", "address": 75, "type": "uint16", "scale": 0.1, "unit": "V", "access": "R"},
    {"name": "ECM Model", "area": "holding", "address": 76, "type": "uint16", "access": "R"},
    {"name": "ECM Fault Codes", "area": "holding", "address": 77, "type": "uint16", "access": "R"},
    {"name": "Total Runtime Hours", "area": "holding", "address": 82, "type": "uint32", "scale": 0.1, "unit": "h", "access": "R"},
    {"name": "Total Runtime Loaded Hours", "area": "holding", "address": 84, "type": "uint32", "scale": 0.1, "unit": "h", "access": "R"},
    {"name": "Total Runtime Unloaded Hours", "area": "holding", "address": 86, "type": "uint32", "scale": 0.1, "unit": "h", "access": "R"},
    {"name": "Total Runtime kW Hours", "area": "holding", "address": 88, "type": "uint32", "unit": "kWh", "access": "R"},
    {"name": "System Voltage", "area": "holding", "address": 104, "type": "uint16", "unit": "V", "access": "RW"},
    {"name": "System Frequency", "area": "holding", "address": 105, "type": "uint16", "unit": "Hz", "access": "RW"},
    {"name": "System Phase Connection", "area": "holding", "address": 106, "type": "uint16", "access": "RW", "enum": "phase_connection"},
    {"name": "Rated Current", "area": "holding", "address": 107, "type": "uint16", "unit": "A", "access": "R"},
    {"name": "Genset kW Rating", "area": "holding", "address": 108, "type": "uint16", "scale": 0.1, "unit": "kW", "access": "R"},
    {"name": "System Battery Voltage", "area": "holding", "address": 109, "type": "uint16", "unit": "V", "access": "RW"},
    {"name": "Engine Run Speed", "area": "holding", "address": 110, "type": "uint16", "unit": "rpm", "access": "R"},
    {"name": "Total Number of Starts", "area": "holding", "address": 512, "type": "uint16", "access": "R"},
    {"name": "Total Runtime Hours Since Maintenance", "area": "holding", "address": 513, "type": "uint32", "scale": 0.1, "unit": "h", "access": "R"},
    {"name": "Total Loaded Hours Since Maintenance", "area": "holding", "address": 515, "type": "uint32", "scale": 0.1, "unit": "h", "access": "R"},
    {"name": "Total kW Hours Since Maintenance", "area": "holding", "address": 517, "type": "uint32", "unit": "kWh", "access": "R"},
    {"name": "Last Maintenance Day, Month", "area": "holding", "address": 519, "type": "uint16", "access": "R", "description": "Low byte is the day of month, high byte the month"},
    {"name": "Last Maintenance Year", "area": "holding", "address": 520, "type": "uint16", "access": "R"}
  ]
}
