{
  "$schema": "https://raw.githubusercontent.com/nobrega8/mbmap-library/main/schema/mbmap-2.schema.json",
  "mbmap": 2,
  "vendor": "Deep Sea Electronics",
  "model": "DSE86xx",
  "models": ["DSE8610", "DSE8620", "DSE8660"],
  "vendor_website": "deepseaelectronics.com",
  "description": "Generator set and mains synchronising controllers (86xx family), GenComm Modbus protocol: engine, generator, mains and bus measurements and named alarms",
  "revision": 1,
  "revised": "2026-10-18",
  "source": "\"Modbus register DEEPSEA 86XXX\", 7-page register excerpt (GenComm pages 4 and 8), not a Deep Sea Electronics publication",
  "notes": [
    "Address = page * 256 + offset: page 4 (base 1024) holds the basic instrumentation and page 8 (base 2048) the named alarm conditions.",
    "32-bit values are sent high word first. Signed values are marked as such in the excerpt.",
    "Each named alarm register holds four 4-bit alarm conditions, the first alarm in bits 12-15.",
    "Unimplemented or out-of-range values read as the GenComm sentinel values (0xFFFF, 0x7FFF, ...).",
    "Serial settings follow the controller configuration; the 9600 8N2 values here are the GenComm defaults used by the other DSE maps."
  ],
  "protocol": "rtu",
  "baudrate": 9600,
  "parity": "N",
  "databits": 8,
  "stopbits": 2,
  "byte_order": "big",
  "word_order": "big",
  "address_base": 0,
  "max_read_registers": 125,
  "x_status": "unofficial",
  "enums": {
    "phase_rotation": {"0": "Indeterminate", "1": "L1-L2-L3", "2": "L3-L2-L1", "3": "Phase error"},
    "alarm_condition": {"0": "Disabled digital input", "1": "Not active", "2": "Warning", "3": "Shutdown", "4": "Electrical trip", "8": "Inactive indication", "9": "Inactive indication (displayed)", "10": "Active indication", "15": "Unimplemented"}
  },
  "sentinels": {
    "uint16": {"0xFFFF": "Unimplemented", "0xFFFE": "Over measurable range", "0xFFFD": "Under measurable range", "0xFFFC": "Transducer fault", "0xFFFB": "Bad data", "0xFFFA": "High digital input", "0xFFF9": "Low digital input"},
    "int16": {"0x7FFF": "Unimplemented", "0x7FFE": "Over measurable range", "0x7FFD": "Under measurable range", "0x7FFC": "Transducer fault", "0x7FFB": "Bad data", "0x7FFA": "High digital input", "0x7FF9": "Low digital input"},
    "uint32": {"0xFFFFFFFF": "Unimplemented", "0xFFFFFFFE": "Over measurable range", "0xFFFFFFFD": "Under measurable range", "0xFFFFFFFC": "Transducer fault", "0xFFFFFFFB": "Bad data", "0xFFFFFFFA": "High digital input", "0xFFFFFFF9": "Low digital input"},
    "int32": {"0x7FFFFFFF": "Unimplemented", "0x7FFFFFFE": "Over measurable range", "0x7FFFFFFD": "Under measurable range", "0x7FFFFFFC": "Transducer fault", "0x7FFFFFFB": "Bad data", "0x7FFFFFFA": "High digital input", "0x7FFFFFF9": "Low digital input"}
  },
  "registers": [
    {"name": "Oil pressure", "group": "Engine", "area": "holding", "address": 1024, "type": "uint16", "unit": "kPa", "access": "R", "comment": "Page 4 - basic instrumentation (base 1024)"},
    {"name": "Coolant temperature", "group": "Engine", "area": "holding", "address": 1025, "type": "int16", "unit": "°C", "access": "R"},
    {"name": "Oil temperature", "group": "Engine", "area": "holding", "address": 1026, "type": "int16", "unit": "°C", "access": "R"},
    {"name": "Fuel level", "group": "Engine", "area": "holding", "address": 1027, "type": "uint16", "unit": "%", "access": "R"},
    {"name": "Charge alternator voltage", "group": "Engine", "area": "holding", "address": 1028, "type": "uint16", "scale": 0.1, "unit": "V", "access": "R"},
    {"name": "Engine battery voltage", "group": "Engine", "area": "holding", "address": 1029, "type": "uint16", "scale": 0.1, "unit": "V", "access": "R"},
    {"name": "Engine speed", "group": "Engine", "area": "holding", "address": 1030, "type": "uint16", "unit": "rpm", "access": "R"},
    {"name": "Generator frequency", "group": "Generator", "area": "holding", "address": 1031, "type": "uint16", "scale": 0.1, "unit": "Hz", "access": "R"},
    {"name": "Generator L1-N voltage", "group": "Generator", "area": "holding", "address": 1032, "type": "uint32", "scale": 0.1, "unit": "V", "access": "R"},
    {"name": "Generator L2-N voltage", "group": "Generator", "area": "holding", "address": 1034, "type": "uint32", "scale": 0.1, "unit": "V", "access": "R"},
    {"name": "Generator L3-N voltage", "group": "Generator", "area": "holding", "address": 1036, "type": "uint32", "scale": 0.1, "unit": "V", "access": "R"},
    {"name": "Generator L1-L2 voltage", "group": "Generator", "area": "holding", "address": 1038, "type": "uint32", "scale": 0.1, "unit": "V", "access": "R"},
    {"name": "Generator L2-L3 voltage", "group": "Generator", "area": "holding", "address": 1040, "type": "uint32", "scale": 0.1, "unit": "V", "access": "R"},
    {"name": "Generator L3-L1 voltage", "group": "Generator", "area": "holding", "address": 1042, "type": "uint32", "scale": 0.1, "unit": "V", "access": "R"},
    {"name": "Generator L1 current", "group": "Generator", "area": "holding", "address": 1044, "type": "uint32", "scale": 0.1, "unit": "A", "access": "R"},
    {"name": "Generator L2 current", "group": "Generator", "area": "holding", "address": 1046, "type": "uint32", "scale": 0.1, "unit": "A", "access": "R"},
    {"name": "Generator L3 current", "group": "Generator", "area": "holding", "address": 1048, "type": "uint32", "scale": 0.1, "unit": "A", "access": "R"},
    {"name": "Generator earth current", "group": "Generator", "area": "holding", "address": 1050, "type": "uint32", "scale": 0.1, "unit": "A", "access": "R"},
    {"name": "Generator L1 active power", "group": "Generator", "area": "holding", "address": 1052, "type": "int32", "unit": "W", "access": "R"},
    {"name": "Generator L2 active power", "group": "Generator", "area": "holding", "address": 1054, "type": "int32", "unit": "W", "access": "R"},
    {"name": "Generator L3 active power", "group": "Generator", "area": "holding", "address": 1056, "type": "int32", "unit": "W", "access": "R"},
    {"name": "Generator current lag/lead", "group": "Generator", "area": "holding", "address": 1058, "type": "int16", "unit": "°", "access": "R"},
    {"name": "Mains frequency", "group": "Mains", "area": "holding", "address": 1059, "type": "uint16", "scale": 0.1, "unit": "Hz", "access": "R"},
    {"name": "Mains L1-N voltage", "group": "Mains", "area": "holding", "address": 1060, "type": "uint32", "scale": 0.1, "unit": "V", "access": "R"},
    {"name": "Mains L2-N voltage", "group": "Mains", "area": "holding", "address": 1062, "type": "uint32", "scale": 0.1, "unit": "V", "access": "R"},
    {"name": "Mains L3-N voltage", "group": "Mains", "area": "holding", "address": 1064, "type": "uint32", "scale": 0.1, "unit": "V", "access": "R"},
    {"name": "Mains L1-L2 voltage", "group": "Mains", "area": "holding", "address": 1066, "type": "uint32", "scale": 0.1, "unit": "V", "access": "R"},
    {"name": "Mains L2-L3 voltage", "group": "Mains", "area": "holding", "address": 1068, "type": "uint32", "scale": 0.1, "unit": "V", "access": "R"},
    {"name": "Mains L3-L1 voltage", "group": "Mains", "area": "holding", "address": 1070, "type": "uint32", "scale": 0.1, "unit": "V", "access": "R"},
    {"name": "Mains voltage phase lag/lead", "group": "Mains", "area": "holding", "address": 1072, "type": "int16", "unit": "°", "access": "R"},
    {"name": "Generator phase rotation", "group": "Generator", "area": "holding", "address": 1073, "type": "uint16", "access": "R", "enum": "phase_rotation"},
    {"name": "Mains phase rotation", "group": "Mains", "area": "holding", "address": 1074, "type": "uint16", "access": "R", "enum": "phase_rotation"},
    {"name": "Mains current lag/lead", "group": "Mains", "area": "holding", "address": 1075, "type": "int16", "unit": "°", "access": "R"},
    {"name": "Mains L1 current", "group": "Mains", "area": "holding", "address": 1076, "type": "uint32", "scale": 0.1, "unit": "A", "access": "R"},
    {"name": "Mains L2 current", "group": "Mains", "area": "holding", "address": 1078, "type": "uint32", "scale": 0.1, "unit": "A", "access": "R"},
    {"name": "Mains L3 current", "group": "Mains", "area": "holding", "address": 1080, "type": "uint32", "scale": 0.1, "unit": "A", "access": "R"},
    {"name": "Mains earth current", "group": "Mains", "area": "holding", "address": 1082, "type": "uint32", "scale": 0.1, "unit": "A", "access": "R"},
    {"name": "Mains L1 active power", "group": "Mains", "area": "holding", "address": 1084, "type": "int32", "unit": "W", "access": "R"},
    {"name": "Mains L2 active power", "group": "Mains", "area": "holding", "address": 1086, "type": "int32", "unit": "W", "access": "R"},
    {"name": "Mains L3 active power", "group": "Mains", "area": "holding", "address": 1088, "type": "int32", "unit": "W", "access": "R"},
    {"name": "Bus current lag/lead", "group": "Bus", "area": "holding", "address": 1090, "type": "int16", "unit": "°", "access": "R"},
    {"name": "Bus frequency", "group": "Bus", "area": "holding", "address": 1091, "type": "uint16", "scale": 0.1, "unit": "Hz", "access": "R"},
    {"name": "Bus L1-N voltage", "group": "Bus", "area": "holding", "address": 1092, "type": "uint32", "scale": 0.1, "unit": "V", "access": "R"},
    {"name": "Bus L2-N voltage", "group": "Bus", "area": "holding", "address": 1094, "type": "uint32", "scale": 0.1, "unit": "V", "access": "R"},
    {"name": "Bus L3-N voltage", "group": "Bus", "area": "holding", "address": 1096, "type": "uint32", "scale": 0.1, "unit": "V", "access": "R"},
    {"name": "Bus L1-L2 voltage", "group": "Bus", "area": "holding", "address": 1098, "type": "uint32", "scale": 0.1, "unit": "V", "access": "R"},
    {"name": "Bus L2-L3 voltage", "group": "Bus", "area": "holding", "address": 1100, "type": "uint32", "scale": 0.1, "unit": "V", "access": "R"},
    {"name": "Bus L3-L1 voltage", "group": "Bus", "area": "holding", "address": 1102, "type": "uint32", "scale": 0.1, "unit": "V", "access": "R"},
    {"name": "Number of named alarms", "group": "Alarms", "area": "holding", "address": 2048, "type": "uint16", "access": "R", "comment": "Page 8 - named alarm conditions (base 2048)"},
    {"name": "Emergency stop alarm", "group": "Alarms", "area": "holding", "address": 2049, "type": "uint16", "bit": 12, "bits": 4, "access": "R", "enum": "alarm_condition"},
    {"name": "Low oil pressure alarm", "group": "Alarms", "area": "holding", "address": 2049, "type": "uint16", "bit": 8, "bits": 4, "access": "R", "enum": "alarm_condition"},
    {"name": "High coolant temperature alarm", "group": "Alarms", "area": "holding", "address": 2049, "type": "uint16", "bit": 4, "bits": 4, "access": "R", "enum": "alarm_condition"},
    {"name": "High oil temperature alarm", "group": "Alarms", "area": "holding", "address": 2049, "type": "uint16", "bit": 0, "bits": 4, "access": "R", "enum": "alarm_condition"},
    {"name": "Under speed alarm", "group": "Alarms", "area": "holding", "address": 2050, "type": "uint16", "bit": 12, "bits": 4, "access": "R", "enum": "alarm_condition"},
    {"name": "Over speed alarm", "group": "Alarms", "area": "holding", "address": 2050, "type": "uint16", "bit": 8, "bits": 4, "access": "R", "enum": "alarm_condition"},
    {"name": "Fail to start alarm", "group": "Alarms", "area": "holding", "address": 2050, "type": "uint16", "bit": 4, "bits": 4, "access": "R", "enum": "alarm_condition"},
    {"name": "Fail to come to rest alarm", "group": "Alarms", "area": "holding", "address": 2050, "type": "uint16", "bit": 0, "bits": 4, "access": "R", "enum": "alarm_condition"},
    {"name": "Loss of speed sensing alarm", "group": "Alarms", "area": "holding", "address": 2051, "type": "uint16", "bit": 12, "bits": 4, "access": "R", "enum": "alarm_condition"},
    {"name": "Generator low voltage alarm", "group": "Alarms", "area": "holding", "address": 2051, "type": "uint16", "bit": 8, "bits": 4, "access": "R", "enum": "alarm_condition"},
    {"name": "Generator high voltage alarm", "group": "Alarms", "area": "holding", "address": 2051, "type": "uint16", "bit": 4, "bits": 4, "access": "R", "enum": "alarm_condition"},
    {"name": "Generator low frequency alarm", "group": "Alarms", "area": "holding", "address": 2051, "type": "uint16", "bit": 0, "bits": 4, "access": "R", "enum": "alarm_condition"},
    {"name": "Generator high frequency alarm", "group": "Alarms", "area": "holding", "address": 2052, "type": "uint16", "bit": 12, "bits": 4, "access": "R", "enum": "alarm_condition"},
    {"name": "Generator high current alarm", "group": "Alarms", "area": "holding", "address": 2052, "type": "uint16", "bit": 8, "bits": 4, "access": "R", "enum": "alarm_condition"},
    {"name": "Generator earth fault alarm", "group": "Alarms", "area": "holding", "address": 2052, "type": "uint16", "bit": 4, "bits": 4, "access": "R", "enum": "alarm_condition"},
    {"name": "Generator reverse power alarm", "group": "Alarms", "area": "holding", "address": 2052, "type": "uint16", "bit": 0, "bits": 4, "access": "R", "enum": "alarm_condition"},
    {"name": "Air flap alarm", "group": "Alarms", "area": "holding", "address": 2053, "type": "uint16", "bit": 12, "bits": 4, "access": "R", "enum": "alarm_condition"},
    {"name": "Oil pressure sender fault alarm", "group": "Alarms", "area": "holding", "address": 2053, "type": "uint16", "bit": 8, "bits": 4, "access": "R", "enum": "alarm_condition"},
    {"name": "Coolant temperature sender fault alarm", "group": "Alarms", "area": "holding", "address": 2053, "type": "uint16", "bit": 4, "bits": 4, "access": "R", "enum": "alarm_condition"},
    {"name": "Oil temperature sender fault alarm", "group": "Alarms", "area": "holding", "address": 2053, "type": "uint16", "bit": 0, "bits": 4, "access": "R", "enum": "alarm_condition"},
    {"name": "Fuel level sender fault alarm", "group": "Alarms", "area": "holding", "address": 2054, "type": "uint16", "bit": 12, "bits": 4, "access": "R", "enum": "alarm_condition"},
    {"name": "Magnetic pickup fault alarm", "group": "Alarms", "area": "holding", "address": 2054, "type": "uint16", "bit": 8, "bits": 4, "access": "R", "enum": "alarm_condition"},
    {"name": "Loss of AC speed signal alarm", "group": "Alarms", "area": "holding", "address": 2054, "type": "uint16", "bit": 4, "bits": 4, "access": "R", "enum": "alarm_condition"},
    {"name": "Charge alternator failure alarm", "group": "Alarms", "area": "holding", "address": 2054, "type": "uint16", "bit": 0, "bits": 4, "access": "R", "enum": "alarm_condition"},
    {"name": "Low battery voltage alarm", "group": "Alarms", "area": "holding", "address": 2055, "type": "uint16", "bit": 12, "bits": 4, "access": "R", "enum": "alarm_condition"},
    {"name": "High battery voltage alarm", "group": "Alarms", "area": "holding", "address": 2055, "type": "uint16", "bit": 8, "bits": 4, "access": "R", "enum": "alarm_condition"},
    {"name": "Low fuel level alarm", "group": "Alarms", "area": "holding", "address": 2055, "type": "uint16", "bit": 4, "bits": 4, "access": "R", "enum": "alarm_condition"},
    {"name": "High fuel level alarm", "group": "Alarms", "area": "holding", "address": 2055, "type": "uint16", "bit": 0, "bits": 4, "access": "R", "enum": "alarm_condition"}
  ]
}
