{
 "manufacturer": "SmartGen",
 "manufacturer_slug": "smartgen",
 "model": "HGM9510N / HGM9520N / HGM9530N",
 "model_slug": "hgm9510n",
 "short_model": "HGM9510N",
 "aliases": [
  "HGM9520N",
  "HGM9530N"
 ],
 "equipment_type": "Generator controller",
 "applies_to": "HGM9510N, HGM9520N and HGM9530N paralleling genset controllers, protocol document v1.5.",
 "summary": "SmartGen's HGM9510N, HGM9520N and HGM9530N are genset paralleling controllers; the HGM9520N variant also commands a mains breaker. Two RS485 ports speak Modbus RTU and the RJ45 port speaks Modbus TCP, all with the same register tables. Status, alarms and measurements are holding registers read with FC03; remote keys are FC05 coil writes; the clock and two load-share setpoints are FC06 writes. This map covers status words, voltages, currents, powers, engine values, breaker and genset state codes, counters and the remote command coils.",
 "transport": [
  "RTU",
  "TCP"
 ],
 "defaults": {
  "unit_id": 1,
  "baud": 9600,
  "parity": "None",
  "data_bits": 8,
  "stop_bits": 1,
  "tcp_port": 502
 },
 "addressing": {
  "convention": "0-based",
  "note": "Tables print a decimal 'Modbus Address' (used here as the wire address) and a 1-based 'PLC Address' (40001 style). The document's examples confirm it: address 0174 is requested as 0x00AE and the load-share setpoint 4368 as 0x1110. Bit flags are printed as word.bit, e.g. 0000.10 = bit 10 of register 0."
 },
 "default_word_order": "CDAB",
 "firmware": null,
 "source": {
  "title": "HGM9510N/HGM9520N/HGM9530N Genset Controller Communication Protocol",
  "doc_number": null,
  "revision_date": "2024-07-22 (v1.5)",
  "url": "https://www.smartgen.cn/yun/data/download/HGM9510N_HGM9520N_HGM9530N_Protocol_en.pdf",
  "pages": "pp. 4-9 (ports, frames, function codes), 10-13 (status words and example), 14-31 (FC03 data field and notes), 31-32 (32-bit example), 33-34 (FC05 coils), 35 (FC06 setpoints), 36-41 (alarm bit table), 42-44 (status tables), 45-46 (start/stop procedure), 47 (address setting)"
 },
 "notes": [
  "32-bit values put the low 16 bits at the lower address: the document's example reads A-phase active power at 0174-0175 as E240h, 0001h and combines them to 0001E240h (123456). That is CDAB word order; it is applied to every 4-byte value in the table.",
  "The alarm area 0001-0105 is seven 15-word fields (shutdown, trip-and-stop, trip, safety trip-and-stop, safety trip, block, warning). Each field uses the same bit layout from the alarm data table; only the first word of the shutdown and warning fields is mapped here. Bits of later words are in the document (pp. 36-41).",
  "Engine temperature (0220) has no signedness printed but its range starts at -50, so it is listed as signed 16-bit.",
  "Left out: ROCOF (0136), Negative/Zero phase angle (0202-0203) and Aux. sensor values (0226, 0228) because no scale or unit is printed; Unbalanced Current (0204) because it is marked both 0-65535 and signed; Multi-unit Total Reactive Power (0285) because its unit is printed as kvarh; expansion module (AIN24/AIN8) values, per-breaker A/B counters (0341-0352), J1939 DM1/DM2 fault lists and the ECU aftertreatment/indicator block 0533-0625.",
  "A reading of 32766 means no valid data.",
  "FC06 is only accepted at 0296-0302 (clock) and at the two load-share setpoints 4368 and 4370; all other registers are read-only.",
  "Generator status codes 14 and 15 are After Stop and Stop Failure in this document (the order is reversed compared with the HGM6100N document).",
  "Left out: the per-phase, average and mains power factors (0198-0201, 0259). They are 2-byte registers with ratio 0.001, but the printed range -100.000 to 100.000 does not fit a 16-bit value at that ratio, so the scale is contradictory.",
  "Left out: the delay values that follow each state code (0261, 0263, 0265, 0267, 0269); no unit or ratio is printed for them.",
  "The RS485 data-format list gives the communication address as 1-245, while the address-assignment table elsewhere in the document says 1-254."
 ],
 "registers": [
  {
   "table": "coil",
   "address": 0,
   "documented": "0000",
   "name": "Remote Start Key (STARTS ENGINE)",
   "description": "FC05 FF00 once = Start key; the documented procedure selects Manual mode first.",
   "data_type": "BIT",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "W",
   "values": null,
   "bits": null
  },
  {
   "table": "coil",
   "address": 1,
   "documented": "0001",
   "name": "Remote Stop",
   "description": "FC05 FF00 once = Stop key; puts the controller in Stop mode.",
   "data_type": "BIT",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "W",
   "values": null,
   "bits": null
  },
  {
   "table": "coil",
   "address": 3,
   "documented": "0003",
   "name": "Remote Auto Mode",
   "description": "Write FF00 once.",
   "data_type": "BIT",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "W",
   "values": null,
   "bits": null
  },
  {
   "table": "coil",
   "address": 4,
   "documented": "0004",
   "name": "Remote Manual Mode",
   "description": "Write FF00 once.",
   "data_type": "BIT",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "W",
   "values": null,
   "bits": null
  },
  {
   "table": "coil",
   "address": 5,
   "documented": "0005",
   "name": "Remote Gen Close (9510N/9530N) / Mains Close-Open (9520N)",
   "description": "FC05 FF00 once. 9510N/9530N: gen breaker close. 9520N: mains close/open key.",
   "data_type": "BIT",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "W",
   "values": null,
   "bits": null
  },
  {
   "table": "coil",
   "address": 6,
   "documented": "0006",
   "name": "Remote Gen Open (9510N/9530N) / Gen Close-Open (9520N)",
   "description": "FC05 FF00 once. 9510N/9530N: gen breaker open. 9520N: gen close/open key.",
   "data_type": "BIT",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "W",
   "values": null,
   "bits": null
  },
  {
   "table": "coil",
   "address": 7,
   "documented": "0007",
   "name": "Remote Up Key",
   "description": "Write FF00 once.",
   "data_type": "BIT",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "W",
   "values": null,
   "bits": null
  },
  {
   "table": "coil",
   "address": 8,
   "documented": "0008",
   "name": "Remote Down Key",
   "description": "Write FF00 once.",
   "data_type": "BIT",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "W",
   "values": null,
   "bits": null
  },
  {
   "table": "coil",
   "address": 11,
   "documented": "0011",
   "name": "Remote Confirm Key",
   "description": "Write FF00 once.",
   "data_type": "BIT",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "W",
   "values": null,
   "bits": null
  },
  {
   "table": "coil",
   "address": 12,
   "documented": "0012",
   "name": "Remote Mute Key",
   "description": "Write FF00 once.",
   "data_type": "BIT",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "W",
   "values": null,
   "bits": null
  },
  {
   "table": "coil",
   "address": 15,
   "documented": "0015",
   "name": "Remote Engine Fast Stop",
   "description": "FC05 FF00 once; fast engine stop.",
   "data_type": "BIT",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "W",
   "values": null,
   "bits": null
  },
  {
   "table": "coil",
   "address": 17,
   "documented": "0017",
   "name": "Remote Alarm Reset",
   "description": "Write FF00 once.",
   "data_type": "BIT",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "W",
   "values": null,
   "bits": null
  },
  {
   "table": "coil",
   "address": 20,
   "documented": "0020",
   "name": "Remote Output 1",
   "description": "FF00 = active, 0000 = inactive.",
   "data_type": "BIT",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "W",
   "values": null,
   "bits": null
  },
  {
   "table": "coil",
   "address": 21,
   "documented": "0021",
   "name": "Remote Output 2",
   "description": "FF00 = active, 0000 = inactive.",
   "data_type": "BIT",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "W",
   "values": null,
   "bits": null
  },
  {
   "table": "coil",
   "address": 22,
   "documented": "0022",
   "name": "Remote Output 3",
   "description": "FF00 = active, 0000 = inactive.",
   "data_type": "BIT",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "W",
   "values": null,
   "bits": null
  },
  {
   "table": "coil",
   "address": 23,
   "documented": "0023",
   "name": "Remote Output 4",
   "description": "FF00 = active, 0000 = inactive.",
   "data_type": "BIT",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "W",
   "values": null,
   "bits": null
  },
  {
   "table": "coil",
   "address": 24,
   "documented": "0024",
   "name": "Remote Output 5",
   "description": "FF00 = active, 0000 = inactive.",
   "data_type": "BIT",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "W",
   "values": null,
   "bits": null
  },
  {
   "table": "coil",
   "address": 25,
   "documented": "0025",
   "name": "Remote Output 6",
   "description": "FF00 = active, 0000 = inactive.",
   "data_type": "BIT",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "W",
   "values": null,
   "bits": null
  },
  {
   "table": "coil",
   "address": 26,
   "documented": "0026",
   "name": "Remote Output 7",
   "description": "FF00 = active, 0000 = inactive.",
   "data_type": "BIT",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "W",
   "values": null,
   "bits": null
  },
  {
   "table": "coil",
   "address": 27,
   "documented": "0027",
   "name": "Remote Output 8",
   "description": "FF00 = active, 0000 = inactive.",
   "data_type": "BIT",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "W",
   "values": null,
   "bits": null
  },
  {
   "table": "coil",
   "address": 31,
   "documented": "0031",
   "name": "Remote Lock",
   "description": "FF00 = remote lock on, 0000 = off; state is bit 12 of register 0.",
   "data_type": "BIT",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "W",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 0,
   "documented": "0000",
   "name": "Summary Status Word",
   "description": "Common alarm classes and operating mode flags.",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "0": "Common Alarm",
    "1": "Common Shutdown Alarm",
    "2": "Common Warning Alarm",
    "3": "Common Trip and Stop Alarm",
    "4": "Common Trip Alarm",
    "5": "Common Safety Trip and Stop Alarm",
    "6": "Common Safety Trip Alarm",
    "7": "Common Block Alarm",
    "8": "In Test Mode",
    "9": "In Auto Mode",
    "10": "In Manual Mode",
    "11": "In Stop Mode",
    "12": "Remote Lock"
   }
  },
  {
   "table": "holding_register",
   "address": 1,
   "documented": "0001",
   "name": "Shutdown Alarms Word 1",
   "description": "First word of the 15-word shutdown alarm field (0001-0015).",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "0": "Emergency Stop",
    "1": "Overspeed",
    "2": "Underspeed",
    "3": "Speed Signal Loss",
    "4": "Gen Overfrequency",
    "5": "Gen Underfrequency",
    "6": "Gen Overvoltage",
    "7": "Gen Undervoltage",
    "8": "Crank Failure",
    "9": "Gen Overcurrent",
    "10": "Current Imbalance",
    "11": "Earth Fault",
    "12": "Reverse Power",
    "13": "Over Power",
    "14": "Loss of Excitation",
    "15": "ECU Communication Failure"
   }
  },
  {
   "table": "holding_register",
   "address": 91,
   "documented": "0091",
   "name": "Warning Alarms Word 1",
   "description": "First word of the 15-word warning field (0091-0105).",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "0": "Emergency Stop",
    "1": "Overspeed",
    "2": "Underspeed",
    "3": "Speed Signal Loss",
    "4": "Gen Overfrequency",
    "5": "Gen Underfrequency",
    "6": "Gen Overvoltage",
    "7": "Gen Undervoltage",
    "8": "Crank Failure",
    "9": "Gen Overcurrent",
    "10": "Current Imbalance",
    "11": "Earth Fault",
    "12": "Reverse Power",
    "13": "Over Power",
    "14": "Loss of Excitation",
    "15": "ECU Communication Failure"
   }
  },
  {
   "table": "holding_register",
   "address": 106,
   "documented": "0106",
   "name": "Digital Input Status",
   "description": "Physical input states.",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "0": "Emergency Stop Input",
    "1": "Aux. Input 1",
    "2": "Aux. Input 2",
    "3": "Aux. Input 3",
    "4": "Aux. Input 4",
    "5": "Aux. Input 5",
    "6": "Aux. Input 6",
    "7": "Aux. Input 7",
    "8": "Aux. Input 8",
    "9": "Aux. Input 9",
    "10": "Aux. Input 10",
    "11": "Aux. Input 11",
    "12": "Aux. Input 12",
    "13": "Aux. Input 13",
    "14": "Aux. Input 14",
    "15": "Aux. Input 15"
   }
  },
  {
   "table": "holding_register",
   "address": 108,
   "documented": "0108",
   "name": "Relay Output Status",
   "description": "Physical output states.",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "0": "Fuel Output",
    "1": "Crank Output",
    "2": "Aux. Output 1",
    "3": "Aux. Output 2",
    "4": "Aux. Output 3",
    "5": "Aux. Output 4",
    "6": "Aux. Output 5",
    "7": "Aux. Output 6",
    "8": "Aux. Output 7",
    "9": "Aux. Output 8"
   }
  },
  {
   "table": "holding_register",
   "address": 114,
   "documented": "0114",
   "name": "Mains / Gen Switch Status",
   "description": "",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "0": "Mains Normal",
    "1": "Mains On Load",
    "2": "Gen Normal",
    "3": "Gen Closed"
   }
  },
  {
   "table": "holding_register",
   "address": 120,
   "documented": "0120",
   "name": "Busbar/Mains UAB",
   "description": "",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 122,
   "documented": "0122",
   "name": "Busbar/Mains UBC",
   "description": "",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 124,
   "documented": "0124",
   "name": "Busbar/Mains UCA",
   "description": "",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 126,
   "documented": "0126",
   "name": "Busbar/Mains UA",
   "description": "",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 128,
   "documented": "0128",
   "name": "Busbar/Mains UB",
   "description": "",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 130,
   "documented": "0130",
   "name": "Busbar/Mains UC",
   "description": "",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 132,
   "documented": "0132",
   "name": "Busbar/Mains UA Phase Angle",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "°",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 133,
   "documented": "0133",
   "name": "Busbar/Mains UB Phase Angle",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "°",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 134,
   "documented": "0134",
   "name": "Busbar/Mains UC Phase Angle",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "°",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 135,
   "documented": "0135",
   "name": "Busbar/Mains Frequency",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "Hz",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 140,
   "documented": "0140",
   "name": "Gen UAB",
   "description": "",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 142,
   "documented": "0142",
   "name": "Gen UBC",
   "description": "",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 144,
   "documented": "0144",
   "name": "Gen UCA",
   "description": "",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 146,
   "documented": "0146",
   "name": "Gen UA",
   "description": "",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 148,
   "documented": "0148",
   "name": "Gen UB",
   "description": "",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 150,
   "documented": "0150",
   "name": "Gen UC",
   "description": "",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 152,
   "documented": "0152",
   "name": "Gen UA Phase Angle",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "°",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 153,
   "documented": "0153",
   "name": "Gen UB Phase Angle",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "°",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 154,
   "documented": "0154",
   "name": "Gen UC Phase Angle",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "°",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 155,
   "documented": "0155",
   "name": "Gen Frequency",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "Hz",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 156,
   "documented": "0156",
   "name": "Sync Voltage Difference",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 157,
   "documented": "0157",
   "name": "Sync Frequency Difference",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "Hz",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 158,
   "documented": "0158",
   "name": "Sync Phase Difference",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "°",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 159,
   "documented": "0159",
   "name": "Gen Active Load Actual",
   "description": "Current generator active power percentage.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 160,
   "documented": "0160",
   "name": "Gen Active Load Target",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 161,
   "documented": "0161",
   "name": "Gen Reactive Load Actual",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 162,
   "documented": "0162",
   "name": "Gen Reactive Load Target",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 163,
   "documented": "0163",
   "name": "Governor Output",
   "description": "Speed bias output, -100.0 to 100.0 %.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 164,
   "documented": "0164",
   "name": "AVR Output",
   "description": "Voltage bias output, -100.0 to 100.0 %.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 166,
   "documented": "0166",
   "name": "A Phase Current",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 167,
   "documented": "0167",
   "name": "B Phase Current",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 168,
   "documented": "0168",
   "name": "C Phase Current",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 169,
   "documented": "0169",
   "name": "Earth Current",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 170,
   "documented": "0170",
   "name": "A Phase Current Angle",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "°",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 171,
   "documented": "0171",
   "name": "B Phase Current Angle",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "°",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 172,
   "documented": "0172",
   "name": "C Phase Current Angle",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "°",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 173,
   "documented": "0173",
   "name": "Earth Current Angle",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "°",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 174,
   "documented": "0174",
   "name": "A Phase Active Power",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "kW",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 176,
   "documented": "0176",
   "name": "B Phase Active Power",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "kW",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 178,
   "documented": "0178",
   "name": "C Phase Active Power",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "kW",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 180,
   "documented": "0180",
   "name": "Total Active Power",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "kW",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 182,
   "documented": "0182",
   "name": "A Phase Reactive Power",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "kvar",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 184,
   "documented": "0184",
   "name": "B Phase Reactive Power",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "kvar",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 186,
   "documented": "0186",
   "name": "C Phase Reactive Power",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "kvar",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 188,
   "documented": "0188",
   "name": "Total Reactive Power",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "kvar",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 190,
   "documented": "0190",
   "name": "A Phase Apparent Power",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "kVA",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 192,
   "documented": "0192",
   "name": "B Phase Apparent Power",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "kVA",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 194,
   "documented": "0194",
   "name": "C Phase Apparent Power",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "kVA",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 196,
   "documented": "0196",
   "name": "Total Apparent Power",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "kVA",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 212,
   "documented": "0212",
   "name": "Engine Speed",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "rpm",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 213,
   "documented": "0213",
   "name": "Battery Voltage",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 214,
   "documented": "0214",
   "name": "Charger (D+) Voltage",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 220,
   "documented": "0220",
   "name": "Engine Temperature (sensor)",
   "description": "Analog temperature sensor; range -50 to 10000.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "°C",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 222,
   "documented": "0222",
   "name": "Oil Pressure (sensor)",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "kPa",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 224,
   "documented": "0224",
   "name": "Fuel Level (sensor)",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 232,
   "documented": "0232",
   "name": "Load Percentage",
   "description": "Range -100 to 100 %; listed as signed because the range is negative.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 234,
   "documented": "0234",
   "name": "ECU Oil Temperature",
   "description": "ECU engines only.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "°C",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 239,
   "documented": "0239",
   "name": "ECU Exhaust Temperature",
   "description": "ECU engines only.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "°C",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 241,
   "documented": "0241",
   "name": "ECU Fuel Consumption",
   "description": "ECU engines only.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "L/h",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 242,
   "documented": "0242",
   "name": "ECU Accumulated Fuel",
   "description": "ECU engines only.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "L",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 251,
   "documented": "0251",
   "name": "Mains Active Load",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 252,
   "documented": "0252",
   "name": "Mains Reactive Load",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 253,
   "documented": "0253",
   "name": "Mains Active Power",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "kW",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 255,
   "documented": "0255",
   "name": "Mains Reactive Power",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "kvar",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 257,
   "documented": "0257",
   "name": "Mains Apparent Power",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "kVA",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 260,
   "documented": "0260",
   "name": "Generator Status",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": {
    "0": "Standby",
    "1": "Preheat",
    "2": "Fuel Output",
    "3": "Crank",
    "4": "Crank Rest",
    "5": "Safety Run",
    "6": "Start Idle",
    "7": "High Speed Warming Up",
    "8": "Wait for Load",
    "9": "Normal Running",
    "10": "High Speed Cooling",
    "11": "Stop Idle",
    "12": "ETS",
    "13": "Wait for Stop",
    "14": "After Stop",
    "15": "Stop Failure"
   },
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 262,
   "documented": "0262",
   "name": "Remote Start Status",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": {
    "0": "No Delay",
    "1": "Start Delay",
    "2": "Stop Delay"
   },
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 264,
   "documented": "0264",
   "name": "Gen Breaker (ATS) Status",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": {
    "0": "Synchronizing",
    "1": "Close Delay",
    "2": "Wait for Closing",
    "3": "Closed",
    "4": "Unloading",
    "5": "Open Delay",
    "6": "Wait for Opening",
    "7": "Opened"
   },
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 266,
   "documented": "0266",
   "name": "Mains Status",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": {
    "0": "Normal",
    "1": "Normal Delay",
    "2": "Abnormal",
    "3": "Abnormal Delay"
   },
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 268,
   "documented": "0268",
   "name": "Mains Breaker (ATS) Status",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": {
    "0": "Synchronizing",
    "1": "Close Delay",
    "2": "Wait for Closing",
    "3": "Closed",
    "4": "Unloading",
    "5": "Open Delay",
    "6": "Wait for Opening",
    "7": "Opened"
   },
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 270,
   "documented": "0270",
   "name": "Accumulated Running Hours",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "h",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 271,
   "documented": "0271",
   "name": "Accumulated Running Minutes",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "min",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 272,
   "documented": "0272",
   "name": "Accumulated Running Seconds",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "s",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 273,
   "documented": "0273",
   "name": "Accumulated Start Count",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 274,
   "documented": "0274",
   "name": "Accumulated Energy kWh",
   "description": "",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 276,
   "documented": "0276",
   "name": "Accumulated Energy kvarh",
   "description": "",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "kvarh",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 278,
   "documented": "0278",
   "name": "Accumulated Energy kVAh",
   "description": "",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "kVAh",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 282,
   "documented": "0282",
   "name": "Maintenance Left Hours",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "h",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 283,
   "documented": "0283",
   "name": "Maintenance Left Minutes",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "min",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 284,
   "documented": "0284",
   "name": "Maintenance Left Seconds",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "s",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 288,
   "documented": "0288",
   "name": "Controller Model",
   "description": "Model code number.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 289,
   "documented": "0289",
   "name": "Software Version",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 290,
   "documented": "0290",
   "name": "Hardware Version",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 291,
   "documented": "0291",
   "name": "Release Year",
   "description": "Last two digits.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 292,
   "documented": "0292",
   "name": "Release Month",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 293,
   "documented": "0293",
   "name": "Release Day",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 296,
   "documented": "0296",
   "name": "Controller Time: Year",
   "description": "Last two digits; writable with FC06.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 297,
   "documented": "0297",
   "name": "Controller Time: Month",
   "description": "Writable with FC06.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 298,
   "documented": "0298",
   "name": "Controller Time: Day",
   "description": "Writable with FC06.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 299,
   "documented": "0299",
   "name": "Controller Time: Weekday",
   "description": "Writable with FC06.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 300,
   "documented": "0300",
   "name": "Controller Time: Hour",
   "description": "Writable with FC06.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 301,
   "documented": "0301",
   "name": "Controller Time: Minute",
   "description": "Writable with FC06.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 302,
   "documented": "0302",
   "name": "Controller Time: Second",
   "description": "Writable with FC06.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 303,
   "documented": "0303",
   "name": "Module MSC ID",
   "description": "Unit ID on the load-sharing (MSC) bus, 0-31.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 305,
   "documented": "0305",
   "name": "Total Modules on MSC",
   "description": "Number of controllers seen on the MSC bus.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 306,
   "documented": "0306",
   "name": "Multi-unit Total Active Power",
   "description": "Sum across paralleled sets.",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "kW",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 407,
   "documented": "0407",
   "name": "Current Run Time Hours",
   "description": "Time of the current run.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "h",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 408,
   "documented": "0408",
   "name": "Current Run Time Minutes",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "min",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 409,
   "documented": "0409",
   "name": "Current Run Time Seconds",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "s",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 410,
   "documented": "0410",
   "name": "Current Run Energy",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 412,
   "documented": "0412",
   "name": "THD 1",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 413,
   "documented": "0413",
   "name": "THD 2",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 414,
   "documented": "0414",
   "name": "THD 3",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 415,
   "documented": "0415",
   "name": "Gen Voltage Unbalance",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 511,
   "documented": "0511",
   "name": "Alarm Quantity",
   "description": "Number of active alarms.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 4368,
   "documented": "4368",
   "name": "Load Share Active Power Setpoint",
   "description": "Write-only, FC06; 0-1000 = 0.0-100.0 %. Used in gen control (constant power) mode.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "%",
   "access": "W",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 4370,
   "documented": "4370",
   "name": "Load Share Reactive Power Setpoint",
   "description": "Write-only, FC06; 0-1000 = 0.0-100.0 %.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "%",
   "access": "W",
   "values": null,
   "bits": null
  }
 ],
 "integration": {
  "summary": "Poll register 0000 for mode and common alarm flags, 0260 for genset state, 0264/0268 for breaker states, and the measurement block 0120-0259. To start: send Remote Manual (coil 4), confirm bit 10 of register 0, send Remote Start (coil 0), then follow Generator Status until Normal Running.",
  "minimum_registers": [
   {
    "table": "holding_register",
    "address": 0,
    "why": "Mode and common alarm flags"
   },
   {
    "table": "holding_register",
    "address": 260,
    "why": "Genset running state"
   },
   {
    "table": "holding_register",
    "address": 264,
    "why": "Generator breaker state"
   },
   {
    "table": "holding_register",
    "address": 146,
    "why": "Generator phase A voltage (32-bit)"
   },
   {
    "table": "holding_register",
    "address": 166,
    "why": "Phase A current"
   },
   {
    "table": "holding_register",
    "address": 180,
    "why": "Total active power (32-bit)"
   },
   {
    "table": "holding_register",
    "address": 212,
    "why": "Engine speed"
   },
   {
    "table": "coil",
    "address": 0,
    "why": "Remote start command"
   }
  ],
  "enable": "Set the controller address in the parameter menu (Controller Parameter Setting, default password 0318); the setting applies once saved. Each controller on a network needs a unique address.",
  "watchdog": null,
  "quirks": [
   "Status bits are packed into FC03 registers (word.bit notation); FC01/FC02 are not listed as supported function codes.",
   "32-bit values are low word first (CDAB).",
   "Remote key coils accept FF00 only and act once per write, like a key press. Remote outputs and Remote Lock are latched: FF00 sets, 0000 clears.",
   "Read at most 120 registers per request."
  ],
  "setup": [
   "RS485: address default 1 (1-245 per the data-format list; 1-254 per the address table), 9600 bps, 8 data bits, parity none/odd/even (default none), 1 or 2 stop bits; at least 200 ms timeout; up to 32 units per segment.",
   "The TR terminal has a built-in 120 Ω resistor; link terminals 35 and 36 to enable it at the bus ends.",
   "Ethernet: Modbus TCP on port 502, 10/100 Mbit, CAT5e or better, max 100 m per segment. The built-in switch supports ring redundancy."
  ],
  "gotchas": [
   "These controllers start engines and close breakers onto a live bus or the mains. Make sure the site is safe and the operators know before sending start, close or mode commands.",
   "The document's start sequence needs Manual mode first: a Remote Start in Auto is not part of the documented procedure. Check bit 10 of register 0 before starting.",
   "On the HGM9520N, coils 5/6 are close/open keys and the document does not say how the controller chooses between closing and opening; read the breaker state (0264/0268) first so a repeated write does not drop the load.",
   "Remote Stop switches the controller to Stop mode, which takes it out of Auto; send Remote Auto afterwards to re-arm automatic operation.",
   "The load-share setpoints 4368/4370 only act when the controller is in gen control (constant power) mode."
  ]
 },
 "page": "https://easymodbus.com/modbus-register-maps/smartgen/hgm9510n",
 "address_note": "address = 0-based Modbus wire (PDU) address; documented = as printed in the source.",
 "note": "Re-typed from the manufacturer's public documentation (see source) and verified against it. Registers vary by firmware and options; verify against the live device before writing."
}
