{
  "spec_version": 1,
  "slug": "smartgen-hgm6100",
  "manufacturer": "SmartGen",
  "model": "HGM6100N series (HGM6110N / HGM6120N, incl. -4G and CAN variants)",
  "category": "Generator controller",
  "supplier_url": "https://www.smartgen.cn/download/",
  "default_configuration": {
    "protocol": "modbus_tcp",
    "port": 502,
    "unit_id": 1,
    "addressing": "zero_based",
    "byte_order": "BigEndian",
    "word_order": "HighFirst",
    "native_interface": "rs485",
    "serial": {
      "parity": "None",
      "baud_rate": 9600,
      "data_bits": 8,
      "stop_bits": 2
    }
  },
  "coils": [
    {
      "address": 0,
      "count": 1,
      "name": "Common alarm",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 1,
      "count": 1,
      "name": "Common warning alarm",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 2,
      "count": 1,
      "name": "Common shutdown alarm",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 3,
      "count": 1,
      "name": "Remote mode",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 6,
      "count": 1,
      "name": "Mains on load",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 7,
      "count": 1,
      "name": "Generator on load",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 8,
      "count": 1,
      "name": "Emergency stop",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 9,
      "count": 1,
      "name": "Over speed alarm shutdown",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 10,
      "count": 1,
      "name": "Under speed alarm shutdown",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 11,
      "count": 1,
      "name": "Speed signal loss shutdown",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 12,
      "count": 1,
      "name": "Over frequency alarm shutdown",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 13,
      "count": 1,
      "name": "Under frequency alarm shutdown",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 14,
      "count": 1,
      "name": "Over voltage alarm shutdown",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 15,
      "count": 1,
      "name": "Under voltage alarm shutdown",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 16,
      "count": 1,
      "name": "Generator over current shutdown",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 17,
      "count": 1,
      "name": "Crank failure",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 18,
      "count": 1,
      "name": "High water temperature alarm shutdown",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 19,
      "count": 1,
      "name": "Low oil pressure alarm shutdown",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 20,
      "count": 1,
      "name": "Frequency loss alarm",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 21,
      "count": 1,
      "name": "Input port shutdown alarm",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 22,
      "count": 1,
      "name": "Low fuel level shutdown alarm",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 23,
      "count": 1,
      "name": "Low coolant shutdown alarm",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 24,
      "count": 1,
      "name": "High water temperature warning alarm",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 25,
      "count": 1,
      "name": "Low oil pressure warning alarm",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 26,
      "count": 1,
      "name": "Generator over current warning alarm",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 27,
      "count": 1,
      "name": "Stop failure warning alarm",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 28,
      "count": 1,
      "name": "Low oil level warning",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 29,
      "count": 1,
      "name": "Charging failure warning",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 30,
      "count": 1,
      "name": "Battery under voltage warning alarm",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 31,
      "count": 1,
      "name": "Battery over voltage warning alarm",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 32,
      "count": 1,
      "name": "Input port warning alarm",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 33,
      "count": 1,
      "name": "Speed signal loss warning",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 34,
      "count": 1,
      "name": "Low coolant warning",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 35,
      "count": 1,
      "name": "Temperature sensor open warning",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 36,
      "count": 1,
      "name": "Oil pressure sensor open warning",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 37,
      "count": 1,
      "name": "Maintenance time due warning",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 38,
      "count": 1,
      "name": "Charger failed to charge warning",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 39,
      "count": 1,
      "name": "Over power warning",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 40,
      "count": 1,
      "name": "System in test mode",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 41,
      "count": 1,
      "name": "System in auto mode",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 42,
      "count": 1,
      "name": "System in manual mode",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 43,
      "count": 1,
      "name": "System in stop mode",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 44,
      "count": 1,
      "name": "Temperature sensor open shutdown",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 45,
      "count": 1,
      "name": "Oil pressure sensor open shutdown",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 46,
      "count": 1,
      "name": "Maintenance time due shut alarm",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 47,
      "count": 1,
      "name": "Over power shutdown alarm",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 48,
      "count": 1,
      "name": "Emergency stop input",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 49,
      "count": 1,
      "name": "Configurable input port 1",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 50,
      "count": 1,
      "name": "Configurable input port 2",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 51,
      "count": 1,
      "name": "Configurable input port 3",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 52,
      "count": 1,
      "name": "Configurable input port 4",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 53,
      "count": 1,
      "name": "Configurable input port 5",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 56,
      "count": 1,
      "name": "Starting relay output",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 57,
      "count": 1,
      "name": "Fuel relay output",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 58,
      "count": 1,
      "name": "Configurable output port 1",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 59,
      "count": 1,
      "name": "Configurable output port 2",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 60,
      "count": 1,
      "name": "Configurable output port 3",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 61,
      "count": 1,
      "name": "Configurable output port 4",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 64,
      "count": 1,
      "name": "Mains failure",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 65,
      "count": 1,
      "name": "Mains normal",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 66,
      "count": 1,
      "name": "Mains over voltage",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 67,
      "count": 1,
      "name": "Mains under voltage",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 68,
      "count": 1,
      "name": "Mains loss of phase",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 72,
      "count": 1,
      "name": "Generator normal",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 73,
      "count": 1,
      "name": "Generator over voltage",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 74,
      "count": 1,
      "name": "Generator under voltage",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 75,
      "count": 1,
      "name": "Generator over frequency",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 76,
      "count": 1,
      "name": "Generator under frequency",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 77,
      "count": 1,
      "name": "Generator over current warning",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 78,
      "count": 1,
      "name": "In scheduled not run",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 80,
      "count": 1,
      "name": "ECU shutdown",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 81,
      "count": 1,
      "name": "ECU communication failure alarm shutdown",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 88,
      "count": 1,
      "name": "ECU warning",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    },
    {
      "address": 89,
      "count": 1,
      "name": "GSM communication failure warning",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = active, 0 = inactive (function code 01 mapping)."
    }
  ],
  "discrete_inputs": [],
  "input_registers": [],
  "holding_registers": [
    {
      "address": 0,
      "count": 1,
      "name": "Mains UA",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1,
      "count": 1,
      "name": "Mains UB",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 2,
      "count": 1,
      "name": "Mains UC",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3,
      "count": 1,
      "name": "Mains UAB",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4,
      "count": 1,
      "name": "Mains UBC",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 5,
      "count": 1,
      "name": "Mains UCA",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 6,
      "count": 1,
      "name": "Mains frequency",
      "data_type": "UInt16",
      "units": "Hz",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 7,
      "count": 1,
      "name": "Generator UA",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 8,
      "count": 1,
      "name": "Generator UB",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 9,
      "count": 1,
      "name": "Generator UC",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 10,
      "count": 1,
      "name": "Generator UAB",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 11,
      "count": 1,
      "name": "Generator UBC",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 12,
      "count": 1,
      "name": "Generator UCA",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 13,
      "count": 1,
      "name": "Generator frequency",
      "data_type": "UInt16",
      "units": "Hz",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 14,
      "count": 1,
      "name": "A phase current",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 15,
      "count": 1,
      "name": "B phase current",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 16,
      "count": 1,
      "name": "C phase current",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 17,
      "count": 1,
      "name": "Water temperature value",
      "data_type": "UInt16",
      "units": "°C",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 18,
      "count": 1,
      "name": "Water temperature resistance",
      "data_type": "UInt16",
      "units": "Ω",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 19,
      "count": 1,
      "name": "Oil pressure value",
      "data_type": "UInt16",
      "units": "kPa",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 20,
      "count": 1,
      "name": "Oil pressure resistance",
      "data_type": "UInt16",
      "units": "Ω",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 21,
      "count": 1,
      "name": "Level value",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 22,
      "count": 1,
      "name": "Level resistance",
      "data_type": "UInt16",
      "units": "Ω",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 23,
      "count": 1,
      "name": "Speed",
      "data_type": "UInt16",
      "units": "rpm",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 24,
      "count": 1,
      "name": "Battery voltage",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 25,
      "count": 1,
      "name": "D+ voltage",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 26,
      "count": 1,
      "name": "Active power",
      "data_type": "UInt16",
      "units": "kW",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 27,
      "count": 1,
      "name": "Reactive power",
      "data_type": "UInt16",
      "units": "kvar",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 28,
      "count": 1,
      "name": "Apparent power",
      "data_type": "UInt16",
      "units": "kVA",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 29,
      "count": 1,
      "name": "Power factor",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 30,
      "count": 1,
      "name": "Maintenance countdown hours",
      "data_type": "UInt16",
      "units": "h",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 31,
      "count": 1,
      "name": "Maintenance countdown minutes",
      "data_type": "UInt16",
      "units": "min",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 34,
      "count": 1,
      "name": "Controller running status",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Running status code, see the generator status table (0 = at rest, 1 = preheat, 3 = crank, 9 = normal running, 11 = stop idle, ...)."
    },
    {
      "address": 35,
      "count": 1,
      "name": "Auto running status delay",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Delay value belonging to the running status."
    },
    {
      "address": 36,
      "count": 1,
      "name": "Auto running status",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Auto running status: 0 = start, 1 = shutdown, 2 = no delay."
    },
    {
      "address": 37,
      "count": 1,
      "name": "Start delay",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Delay value belonging to the auto running status."
    },
    {
      "address": 38,
      "count": 1,
      "name": "ATS running status",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "ATS running status: 0 = no delay, 1 = transfer interval."
    },
    {
      "address": 39,
      "count": 1,
      "name": "ATS running status delay",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Delay value belonging to the ATS status."
    },
    {
      "address": 40,
      "count": 1,
      "name": "Mains status",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Mains status: 0 = normal, 1 = abnormal, 2 = no delay."
    },
    {
      "address": 41,
      "count": 1,
      "name": "Mains status delay",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Delay value belonging to the mains status."
    },
    {
      "address": 42,
      "count": 1,
      "name": "Engine accumulated run time, hours MSB",
      "data_type": "UInt16",
      "units": "h",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "High word of the accumulated engine run time in hours; the pair 0042/0043 forms the hours value."
    },
    {
      "address": 43,
      "count": 1,
      "name": "Engine accumulated run time, hours LSB",
      "data_type": "UInt16",
      "units": "h",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Low word of the accumulated engine run time in hours."
    },
    {
      "address": 44,
      "count": 1,
      "name": "Engine accumulated run time, minutes",
      "data_type": "UInt16",
      "units": "min",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Minutes part of the accumulated engine run time (0-9999)."
    },
    {
      "address": 45,
      "count": 1,
      "name": "Engine accumulated run time, seconds",
      "data_type": "UInt16",
      "units": "s",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Seconds part of the accumulated engine run time (0-9999)."
    },
    {
      "address": 46,
      "count": 1,
      "name": "Accumulated start times MSB",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "High word of the accumulated start counter."
    },
    {
      "address": 47,
      "count": 1,
      "name": "Accumulated start times LSB",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Low word of the accumulated start counter."
    },
    {
      "address": 48,
      "count": 1,
      "name": "Accumulated electric energy MSB",
      "data_type": "UInt16",
      "units": "kWh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "High word of the accumulated generated energy."
    },
    {
      "address": 49,
      "count": 1,
      "name": "Accumulated electric energy LSB",
      "data_type": "UInt16",
      "units": "kWh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Low word of the accumulated generated energy."
    },
    {
      "address": 50,
      "count": 1,
      "name": "Software version",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Software version, scaled by 0.1 as printed in the table (*10)."
    },
    {
      "address": 51,
      "count": 1,
      "name": "Controller hardware version",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Hardware version, signed and scaled by 0.1 as printed in the table (*10)."
    },
    {
      "address": 52,
      "count": 1,
      "name": "A phase active power",
      "data_type": "UInt16",
      "units": "kW",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 53,
      "count": 1,
      "name": "B phase active power",
      "data_type": "UInt16",
      "units": "kW",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 54,
      "count": 1,
      "name": "C phase active power",
      "data_type": "UInt16",
      "units": "kW",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 55,
      "count": 1,
      "name": "Load output percentage",
      "data_type": "UInt16",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 58,
      "count": 1,
      "name": "Coolant level",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 59,
      "count": 1,
      "name": "Oil temperature",
      "data_type": "UInt16",
      "units": "°C",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 60,
      "count": 1,
      "name": "Coolant pressure",
      "data_type": "UInt16",
      "units": "kPa",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 61,
      "count": 1,
      "name": "Fuel pressure",
      "data_type": "UInt16",
      "units": "kPa",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 62,
      "count": 1,
      "name": "Fuel temperature",
      "data_type": "UInt16",
      "units": "°C",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 63,
      "count": 1,
      "name": "Inlet temperature",
      "data_type": "UInt16",
      "units": "°C",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 64,
      "count": 1,
      "name": "Outlet temperature",
      "data_type": "UInt16",
      "units": "°C",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 65,
      "count": 1,
      "name": "Turbo pressure",
      "data_type": "UInt16",
      "units": "kPa",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 66,
      "count": 1,
      "name": "Fuel consumption",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 79,
      "count": 1,
      "name": "Issue year",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 80,
      "count": 1,
      "name": "Issue month",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 81,
      "count": 1,
      "name": "Issue day",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 86,
      "count": 2,
      "name": "ECU running time",
      "data_type": "Int32",
      "units": "h",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "ECU running time as a signed 32-bit value at address 0086."
    }
  ],
  "combined_registers": [],
  "notes": "Diesel genset controller with an RS-485 port: reach it through a Modbus RTU-to-TCP gateway. Factory serial settings: 9600 bps (parameter 106 RS485 Baud Rate, factory value 2 = 9600 bps in the user manual), 8 data bits, no parity, 2 stop bits (the protocol document's data-frame table), slave address 1 (parameter 61 Module Address, factory value 1). Sources: SmartGen \"HGM6100-4G Genset Controller Communication Protocol\" (https://www.smartgen.cn/yun/data/download/HGM6100-4G_Protocol_en.pdf), Table 20 Function Code 01H coil map (pages 11-13) and Table 21 Function Code 03H register map (pages 14-16); serial defaults and the display units of the measured items from \"HGM6100N Series Genset Controller User Manual\" (https://www.smartgen.cn/yun/data/download/HGM6110N_6120N_6110NC_6120NC_6110CAN_6120CAN_en.pdf), parameter list page 20-23. Addressing: both tables list plain decimal addresses starting at 0000, and the protocol examples address \"starting address 0000\", so the numbers are stored unchanged as zero-based wire addresses (0010 is register 10, not 16). Scaling: the protocol table marks the scaled values in its Description column, *10 becomes 0.1 and *100 becomes 0.01; unscaled values keep 1. 32-bit values are listed as a single item with a byte count of 4 and store high word first. Deliberate omissions: the vendor's write-command coil table (Table 22, addresses 0000H-0006H for remote start/stop/auto/manual and the C/O keys) is not listed because it reuses the same coil addresses as the read-only status map and the coil area here carries only R/RW entries, so it cannot be expressed without inventing a separate address space. Reserved rows are omitted. The accumulated-fuel-consumption, SCM-temperature, controller-model, controller-time and GPS/MCUID rows (0068-0078 and 0087-0116) are left out: the vendor PDF's byte-count and address columns for that block are misprinted (e.g. \"84Bytes\" for the day field), so those rows cannot be transcribed reliably."
}
