{
 "manufacturer": "SmartGen",
 "manufacturer_slug": "smartgen",
 "model": "HGM7100N Series",
 "model_slug": "hgm7100n",
 "short_model": "HGM7100N",
 "aliases": [
  "HGM7110N",
  "HGM7120N"
 ],
 "equipment_type": "Generator controller",
 "applies_to": "HGM7110N (auto start) and HGM7120N (AMF) genset controllers, protocol document v1.3.",
 "summary": "SmartGen's HGM7100N controllers run a single genset (HGM7110N) or a genset with automatic mains failure transfer (HGM7120N). The RS485 port is a Modbus RTU slave: alarms, modes and I/O are packed bit words, measurements and counters are 16-bit holding registers (FC03), and front-panel keys are mirrored as FC05 coils. This map covers the status and alarm words, frequencies, currents, power factor, battery voltage, state codes, counters, clock and the remote command coils; values without a printed scale and all 32-bit values are left out (see notes).",
 "transport": [
  "RTU"
 ],
 "defaults": {
  "unit_id": null,
  "baud": 9600,
  "parity": "None",
  "data_bits": 8,
  "stop_bits": 1,
  "tcp_port": null
 },
 "addressing": {
  "convention": "0-based",
  "note": "The appendix prints decimal addresses 0000-0284 and they are used as the wire address. Two examples confirm it: the FC05 example writes coil 0000 (Remote Start) at 0x0000, and the FC06 example writes 00E3H (= 227, Controller Time day) inside the FC06-writable range 0225-0231."
 },
 "default_word_order": null,
 "firmware": null,
 "source": {
  "title": "HGM7100N Genset Controller Communication Protocol",
  "doc_number": null,
  "revision_date": "2025-06-21 (v1.3)",
  "url": "https://www.smartgen.cn/yun/data/download/HGM7100N_Protocol_en.pdf",
  "pages": "pp. 4-11 (frame format, function codes, examples), 12-25 (FC03/FC06 data field), 25-26 (FC05 coils), 26-27 (status tables)"
 },
 "notes": [
  "The document prints no units at all. Units are kept only where the document prints a multiplier ((*10) or (*100)) and the quantity name fixes the unit: frequency (Hz), phase current (A), battery and charger voltage (V); plus registers whose name states hour, minute or second. (*10) means the raw value is ten times the real value (scale 0.1), (*100) means scale 0.01.",
  "Left out because no scale or unit is printed: mains and gen phase and line voltages (0055-0060, 0075-0080), voltage phase angles (0061-0063, 0081-0083), load percentage (0140), engine speed (0141), the analog sensor values and resistances (0148-0157), the ECU-only J1939 values (0162-0170) and the state delay values (0190, 0192, 0194, 0196).",
  "Left out: all 4-byte values (per-phase and total kW, kvar and kVA at 0103-0126, current energy, average and historical power at 0134-0139, total fuel at 0171-0172, total kWh/kvarh/kVAh at 0203-0208 and the MCU ID). The document never states which register of a pair holds the high word, so the word order cannot be established from it.",
  "Bit words list bit 0 (LSB) first; reserved bits are omitted from the bit lists.",
  "FC06 is accepted only at 0199-0210 (run-time, start and energy counters) and 0225-0231 (clock); every other register is read-only. Of the writable counters only the 16-bit ones are mapped."
 ],
 "registers": [
  {
   "table": "coil",
   "address": 0,
   "documented": "0000",
   "name": "Remote Start Key (STARTS ENGINE)",
   "description": "FC05 FF00 = Start key; can crank the engine.",
   "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 Key",
   "description": "FC05 FF00 = Stop 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": 3,
   "documented": "0003",
   "name": "Remote Auto Key",
   "description": "Write FF00.",
   "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 Key",
   "description": "Write FF00.",
   "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 C/O Mains Key (7120N) / Close Gen Key (7110N)",
   "description": "FC05 FF00. 7120N: change-over to mains. 7110N: close gen breaker.",
   "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 C/O Gen Key (7120N) / Open Gen Key (7110N)",
   "description": "FC05 FF00. 7120N: change-over to gen. 7110N: open gen breaker.",
   "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.",
   "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.",
   "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": 9,
   "documented": "0009",
   "name": "Remote Left Key",
   "description": "Write FF00.",
   "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": 10,
   "documented": "0010",
   "name": "Remote Right Key",
   "description": "Write FF00.",
   "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.",
   "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.",
   "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": 13,
   "documented": "0013",
   "name": "Remote Backup Generator Start",
   "description": "Special application only.",
   "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": 14,
   "documented": "0014",
   "name": "Remote Backup Generator Stop",
   "description": "Special application only.",
   "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": "Write FF00.",
   "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": 19,
   "documented": "0019",
   "name": "Remote Control Output 1",
   "description": "1 (FF00) = active, 0 (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": 20,
   "documented": "0020",
   "name": "Remote Control Output 2",
   "description": "1 (FF00) = active, 0 (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 Control Output 3",
   "description": "1 (FF00) = active, 0 (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 Control Output 4",
   "description": "1 (FF00) = active, 0 (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 Control Output 5",
   "description": "1 (FF00) = active, 0 (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 Control Output 6",
   "description": "1 (FF00) = active, 0 (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": 30,
   "documented": "0030",
   "name": "Remote Lock/Unlock",
   "description": "1 (FF00) = lock, 0 (0000) = unlock.",
   "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": "Common Status Word",
   "description": "Common alarm classes and operating mode.",
   "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 Open Without Shutdown",
    "5": "Common Trip and Stop Alarm & Common Shutdown Alarm",
    "9": "System In Auto Mode",
    "10": "System In Manual Mode",
    "11": "System In Stop Mode"
   }
  },
  {
   "table": "holding_register",
   "address": 1,
   "documented": "0001",
   "name": "Shutdown Alarms Word 1",
   "description": "",
   "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 Alarm",
    "1": "Over Speed Alarm Shutdown",
    "2": "Under Speed Alarm Shutdown",
    "3": "Loss of Speed Signal Alarm",
    "4": "Gen Over Frequency Alarm Shutdown",
    "5": "Gen Under Frequency Shutdown",
    "6": "Gen Over Volt Shutdown",
    "7": "Gen Under Volt Shutdown",
    "8": "Fail to Start Alarm",
    "9": "Gen Over Current Shutdown",
    "10": "Maintenance Time Due Alarm Shutdown",
    "12": "Reverse Power Alarm Shutdown",
    "13": "Over Power Alarm Shutdown",
    "14": "High Temp. Input Alarm Shutdown",
    "15": "Low Oil Pressure Input Alarm Shutdown"
   }
  },
  {
   "table": "holding_register",
   "address": 2,
   "documented": "0002",
   "name": "Shutdown Alarms Word 2",
   "description": "",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "1": "Low Level Input Alarm Shutdown",
    "8": "Temp. Sensor Open Circuit",
    "9": "High Temp. Alarm Shutdown",
    "12": "Oil Pressure Sensor Open Circuit",
    "14": "Low Oil Pressure Alarm Shutdown"
   }
  },
  {
   "table": "holding_register",
   "address": 3,
   "documented": "0003",
   "name": "Shutdown Alarms Word 3",
   "description": "",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "0": "Level Sensor Open Circuit",
    "2": "Low Level Alarm Shutdown",
    "4": "Flexible Sensor 1 Open Circuit",
    "5": "Flexible Sensor 1 High Alarm Shutdown",
    "6": "Flexible Sensor 1 Low Alarm Shutdown",
    "8": "Flexible Sensor 2 Open Circuit",
    "9": "Flexible Sensor 2 High Alarm Shutdown",
    "10": "Flexible Sensor 2 Low Alarm Shutdown"
   }
  },
  {
   "table": "holding_register",
   "address": 8,
   "documented": "0008",
   "name": "Input Shutdown Alarms",
   "description": "",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "0": "Input 1 Shutdown",
    "1": "Input 2 Shutdown",
    "2": "Input 3 Shutdown",
    "3": "Input 4 Shutdown",
    "4": "Input 5 Shutdown",
    "5": "Input 6 Shutdown",
    "6": "Input 7 Shutdown"
   }
  },
  {
   "table": "holding_register",
   "address": 12,
   "documented": "0012",
   "name": "Trip and Stop Alarms",
   "description": "",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "0": "Over Current Trip Shutdown",
    "1": "Maintenance Time Due Trip Shutdown",
    "2": "Reverse Power Trip Shutdown",
    "3": "Over Power Trip Shutdown",
    "4": "Input 1 Trip Shutdown",
    "5": "Input 2 Trip Shutdown",
    "6": "Input 3 Trip Shutdown",
    "7": "Input 4 Trip Shutdown",
    "8": "Input 5 Trip Shutdown",
    "9": "Input 6 Trip Shutdown",
    "10": "Input 7 Trip Shutdown"
   }
  },
  {
   "table": "holding_register",
   "address": 16,
   "documented": "0016",
   "name": "Trip Alarms",
   "description": "",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "0": "Over Current Trip",
    "1": "Maintenance Time Due Trip",
    "2": "Reverse Power Trip",
    "3": "Over Power Trip",
    "4": "Input 1 Trip",
    "5": "Input 2 Trip",
    "6": "Input 3 Trip",
    "7": "Input 4 Trip",
    "8": "Input 5 Trip",
    "9": "Input 6 Trip",
    "10": "Input 7 Trip"
   }
  },
  {
   "table": "holding_register",
   "address": 20,
   "documented": "0020",
   "name": "Warning Alarms Word 1",
   "description": "",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "0": "Over Speed Warning",
    "1": "Under Speed Warning",
    "2": "Loss of Speed Signal Warning",
    "3": "Gen Over Frequency Warning",
    "4": "Gen Under Frequency Warning",
    "5": "Gen Over Volt Warning",
    "6": "Gen Under Volt Warning",
    "7": "Gen Over Current Warning",
    "8": "Fail to Stop Warning",
    "9": "Fail to Charge Warning",
    "10": "Battery Over Volt Warning",
    "11": "Battery Under Volt Warning",
    "12": "Maintenance Time Due Warning",
    "13": "Reverse Power Warning",
    "14": "Over Power Warning"
   }
  },
  {
   "table": "holding_register",
   "address": 21,
   "documented": "0021",
   "name": "Warning Alarms Word 2",
   "description": "",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "0": "Gen Loss of Phase Warning",
    "1": "Gen Reverse Phase Sequence Warning",
    "7": "Fail to Switch Warning",
    "8": "Temp. Sensor Open Circuit",
    "9": "High Temp. Warning",
    "10": "Low Temp. Warning",
    "12": "Oil Pressure Sensor Open Circuit",
    "14": "Low Oil Pressure Warning"
   }
  },
  {
   "table": "holding_register",
   "address": 22,
   "documented": "0022",
   "name": "Warning Alarms Word 3",
   "description": "",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "0": "Level Sensor Open Circuit",
    "2": "Low Level Warning",
    "4": "Flexible Sensor 1 Open Circuit",
    "5": "Flexible Sensor 1 High",
    "6": "Flexible Sensor 1 Low",
    "8": "Flexible Sensor 2 Open Circuit",
    "9": "Flexible Sensor 2 High",
    "10": "Flexible Sensor 2 Low"
   }
  },
  {
   "table": "holding_register",
   "address": 26,
   "documented": "0026",
   "name": "Warning Alarms Word 4",
   "description": "",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "15": "Cycle Start Comm. Failure Warning"
   }
  },
  {
   "table": "holding_register",
   "address": 29,
   "documented": "0029",
   "name": "Input Warning Alarms",
   "description": "",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "0": "Input 1 Warning",
    "1": "Input 2 Warning",
    "2": "Input 3 Warning",
    "3": "Input 4 Warning",
    "4": "Input 5 Warning",
    "5": "Input 6 Warning",
    "6": "Input 7 Warning",
    "12": "Box Temp. High Warning"
   }
  },
  {
   "table": "holding_register",
   "address": 31,
   "documented": "0031",
   "name": "Indications Word 1",
   "description": "",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "0": "Alarm Shutdown Inhibit Indication",
    "1": "Maintenance Time Due Indication",
    "2": "In Scheduled Not Run Indication"
   }
  },
  {
   "table": "holding_register",
   "address": 32,
   "documented": "0032",
   "name": "Indications Word 2",
   "description": "",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "6": "Auto Mode Input",
    "7": "Auto Mode Inactive",
    "10": "Alt. Config. 1 Indication",
    "11": "Alt. Config. 2 Indication",
    "12": "Alt. Config. 3 Indication",
    "13": "Over Current Indication",
    "14": "Reverse Power Indication",
    "15": "Over Power Indication"
   }
  },
  {
   "table": "holding_register",
   "address": 33,
   "documented": "0033",
   "name": "Input Indications",
   "description": "",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "0": "Input 1 Indication",
    "1": "Input 2 Indication",
    "2": "Input 3 Indication",
    "3": "Input 4 Indication",
    "4": "Input 5 Indication",
    "5": "Input 6 Indication",
    "6": "Input 7 Indication"
   }
  },
  {
   "table": "holding_register",
   "address": 34,
   "documented": "0034",
   "name": "Mains / Gen Indications",
   "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 Indication",
    "1": "Mains Abnormal Indication",
    "2": "Gen Normal Running Indication",
    "3": "Gen Shutdown Indication",
    "4": "Mains On-load Indication",
    "5": "Gen On-load Indication",
    "6": "In Auto Mode Indication",
    "7": "Not In Auto Mode Indication"
   }
  },
  {
   "table": "holding_register",
   "address": 35,
   "documented": "0035",
   "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 Input Status",
    "1": "Input 1 Status",
    "2": "Input 2 Status",
    "3": "Input 3 Status",
    "4": "Input 4 Status",
    "5": "Input 5 Status",
    "6": "Input 6 Status",
    "7": "Input 7 Status"
   }
  },
  {
   "table": "holding_register",
   "address": 37,
   "documented": "0037",
   "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 Relay Output Status",
    "1": "Starting Relay Output Status",
    "2": "Programmable Output 1 Status",
    "3": "Programmable Output 2 Status",
    "4": "Programmable Output 3 Status",
    "5": "Programmable Output 4 Status",
    "6": "Programmable Output 5 Status",
    "7": "Programmable Output 6 Status"
   }
  },
  {
   "table": "holding_register",
   "address": 43,
   "documented": "0043",
   "name": "Front Panel LED Status",
   "description": "Mains/gen normal and closed, alarm and running indicators.",
   "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 Closed",
    "2": "Gen Normal",
    "3": "Gen Closed",
    "4": "Alarm Indicator Status",
    "5": "Running Indicator Status"
   }
  },
  {
   "table": "holding_register",
   "address": 44,
   "documented": "0044",
   "name": "Mains Fault 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 Abnormal",
    "1": "Mains Over Volt",
    "2": "Mains Under Volt",
    "3": "Mains Over Frequency",
    "4": "Mains Under Frequency",
    "5": "Mains Loss Of Phase",
    "6": "Mains Reverse Phase Sequence",
    "7": "Mains Blackout"
   }
  },
  {
   "table": "holding_register",
   "address": 45,
   "documented": "0045",
   "name": "Input Active 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": "Input 1 Active",
    "1": "Input 2 Active",
    "2": "Input 3 Active",
    "3": "Input 4 Active",
    "4": "Input 5 Active",
    "5": "Input 6 Active",
    "6": "Input 7 Active"
   }
  },
  {
   "table": "holding_register",
   "address": 64,
   "documented": "0064",
   "name": "Mains Frequency",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "Hz",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 84,
   "documented": "0084",
   "name": "Gen Frequency",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "Hz",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 95,
   "documented": "0095",
   "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": 96,
   "documented": "0096",
   "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": 97,
   "documented": "0097",
   "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": 127,
   "documented": "0127",
   "name": "A-Phase Power Factor",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 128,
   "documented": "0128",
   "name": "B-Phase Power Factor",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 129,
   "documented": "0129",
   "name": "C-Phase Power Factor",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 130,
   "documented": "0130",
   "name": "Average Power Factor",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 131,
   "documented": "0131",
   "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": 132,
   "documented": "0132",
   "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": 133,
   "documented": "0133",
   "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": 142,
   "documented": "0142",
   "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": 143,
   "documented": "0143",
   "name": "Charger 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": 189,
   "documented": "0189",
   "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": "Pre-heat",
    "2": "Fuel Output",
    "3": "Crank",
    "4": "Crank Interval",
    "5": "Safety On Delay",
    "6": "Start Idle",
    "7": "Warming Up",
    "8": "Waiting for Load",
    "9": "Normal Running",
    "10": "Cooling",
    "11": "Stop Idle",
    "12": "ETS",
    "13": "Waiting for Stop",
    "14": "Fail to Stop",
    "15": "After Stop"
   },
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 191,
   "documented": "0191",
   "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": 193,
   "documented": "0193",
   "name": "Switch Status",
   "description": "Transfer switch / breaker state.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": {
    "0": "Off Load",
    "1": "Mains On-load",
    "2": "Gen On-load",
    "3": "Open Delay",
    "4": "Switch Transfer Delay",
    "5": "Mains Close Delay",
    "6": "Gen Close Delay",
    "7": "Waiting for Breaker Open",
    "8": "Waiting for Gen Close",
    "9": "Waiting for Mains Close",
    "10": "Normal"
   },
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 195,
   "documented": "0195",
   "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": "Mains Normal",
    "1": "Mains Normal Delay",
    "2": "Mains Abnormal",
    "3": "Mains Abnormal Delay"
   },
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 199,
   "documented": "0199",
   "name": "Total Running Hours",
   "description": "Writable with FC06 (preset).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "h",
   "access": "RW",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 200,
   "documented": "0200",
   "name": "Total Running Minutes",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "min",
   "access": "RW",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 201,
   "documented": "0201",
   "name": "Total Running Seconds",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "s",
   "access": "RW",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 202,
   "documented": "0202",
   "name": "Total Start Count",
   "description": "",
   "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": 211,
   "documented": "0211",
   "name": "Maintenance Countdown 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": 212,
   "documented": "0212",
   "name": "Maintenance Countdown 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": 213,
   "documented": "0213",
   "name": "Maintenance Countdown 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": 217,
   "documented": "0217",
   "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": 218,
   "documented": "0218",
   "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": 219,
   "documented": "0219",
   "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": 220,
   "documented": "0220",
   "name": "Issue Date: 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": 221,
   "documented": "0221",
   "name": "Issue Date: 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": 222,
   "documented": "0222",
   "name": "Issue Date: 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": 225,
   "documented": "0225",
   "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": 226,
   "documented": "0226",
   "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": 227,
   "documented": "0227",
   "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": 228,
   "documented": "0228",
   "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": 229,
   "documented": "0229",
   "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": 230,
   "documented": "0230",
   "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": 231,
   "documented": "0231",
   "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
  }
 ],
 "integration": {
  "summary": "Poll holding registers 0000-0045 for alarms, modes and I/O, 0064-0143 for measurements and 0189-0213 for states and counters with FC03. Remote keys are single FC05 writes of FF00 to coils 0000-0015.",
  "minimum_registers": [
   {
    "table": "holding_register",
    "address": 0,
    "why": "Common alarm and mode flags"
   },
   {
    "table": "holding_register",
    "address": 189,
    "why": "Genset running state"
   },
   {
    "table": "holding_register",
    "address": 193,
    "why": "Transfer switch state"
   },
   {
    "table": "holding_register",
    "address": 34,
    "why": "Mains/gen normal and on-load flags"
   },
   {
    "table": "holding_register",
    "address": 84,
    "why": "Generator frequency"
   },
   {
    "table": "holding_register",
    "address": 95,
    "why": "Phase A current"
   },
   {
    "table": "holding_register",
    "address": 142,
    "why": "Battery voltage"
   },
   {
    "table": "coil",
    "address": 0,
    "why": "Remote start key"
   }
  ],
  "enable": "Give each controller a unique slave address (the protocol allows 1-255) in the controller parameters before networking several units; the document does not state the default address.",
  "watchdog": null,
  "quirks": [
   "Only FC03, FC05 and FC06 are supported; status bits are read from holding registers, not with FC01/FC02.",
   "Read at most 125 registers per request.",
   "Coil writes accept FF00 (on) or 0000 (off); any other value is ignored. The command coils are named after the front-panel keys.",
   "Frames with a CRC error get no reply at all; other request errors return exception codes 01 (function), 02 (address) or 03 (value)."
  ],
  "setup": [
   "9600 bps, 8 data bits, no parity, 1 stop bit (2 stop bits can be set).",
   "Up to 32 slaves per RS485 line in master-slave mode."
  ],
  "gotchas": [
   "This controller starts a real engine and switches load between mains and generator. Make sure the genset and switchgear are safe to operate before sending start, transfer or mode commands.",
   "Remote Stop acts like pressing the panel Stop key. Check the mode bits in register 0000 afterwards and send Remote Auto if the set must stay ready for a mains failure.",
   "Writing the run-time or start counters (0199-0210) overwrites service history; only do it deliberately."
  ]
 },
 "page": "https://easymodbus.com/modbus-register-maps/smartgen/hgm7100n",
 "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."
}
