{
 "manufacturer": "Fronius",
 "manufacturer_slug": "fronius",
 "model": "Primo GEN24 / Symo GEN24 (Plus) SunSpec int+SF",
 "model_slug": "gen24-sunspec-int-sf",
 "short_model": "Fronius GEN24 int+SF",
 "aliases": [
  "Primo GEN24 Plus",
  "Symo GEN24 Plus",
  "Primo GEN24",
  "Symo GEN24",
  "Symo GEN24 10.0 Plus",
  "Primo GEN24 6.0 Plus"
 ],
 "equipment_type": "Solar inverter",
 "applies_to": "Fronius Primo/Symo GEN24 (Plus) rest-of-world variants with a battery configured, SunSpec Model Type int+SF; without a battery the MPPT model has 2 inputs and model 124 is absent.",
 "summary": "GEN24 hybrid inverters host Modbus TCP and RTU themselves and present a SunSpec map: common block, inverter model 101/103, nameplate, settings, status, immediate controls, multiple-MPPT (PV inputs 1-2 plus battery charge/discharge as inputs 3-4) and basic storage control. This map covers the 16-bit measurements, ratings, battery state of charge and every control register, each scaled through its SunSpec scale factor.",
 "transport": [
  "TCP",
  "RTU"
 ],
 "defaults": {
  "unit_id": 1,
  "baud": null,
  "parity": null,
  "data_bits": null,
  "stop_bits": null,
  "tcp_port": null
 },
 "addressing": {
  "convention": "1-based",
  "note": "Fronius numbers SunSpec registers from 40001 and says to send the register number minus one: register 40001 is read at address 40000 (0x9C40). The manual's RTU example reads register 40005 (Mn) with address bytes 9C 44 (40004)."
 },
 "default_word_order": null,
 "firmware": "Register map archive 1.2.7-2 (bundled with GEN24 firmware 1.36.x); manual 42,0410,2649 rev. 034-28092026.",
 "source": {
  "title": "Fronius GEN24 Modbus TCP & RTU (operating instructions) + Gen24_Primo_Symo_Inverter_Register_Map_Int&SF_storage_ROW.xlsx",
  "doc_number": "42,0410,2649 (034-28092026)",
  "revision_date": "2026-09",
  "url": "https://www.fronius.com/en/~/downloads/Solar%20Energy/Operating%20Instructions/42,0410,2649.pdf",
  "pages": "PDF English part: register addresses and examples pp. 68-70, unavailable values p. 71, scale factors p. 74-75, Modbus settings pp. 76-79, models pp. 80-92. Register table = XLSX sheet 'Complete Map' in https://www.fronius.com/en/~/downloads/Solar%20Energy/Operating%20Instructions/gen24-modbus-api-external-docs.zip"
 },
 "notes": [
  "Register table from Fronius' official GEN24 XLSX (gen24-modbus-api-external-docs.zip, linked from the Fronius Modbus TCP open-interfaces page); behaviour and settings from the PDF.",
  "Addresses assume SunSpec Model Type = int+SF and a battery configured. With float the inverter model is 111/113 and later models move by +10. Without a battery the MPPT model has only inputs 1-2 and the end block follows at 40304. Fronius advises walking the model chain from 40001 rather than hard-coding addresses.",
  "Word order: neither the PDF nor the XLSX states the order of 32/64-bit values, so they are left out: SID 40001-40002, WH 40094-40095, Evt1/Evt2/EvtVnd1-2 40110-40117, ActWh 40187-40190, StActCtl 40217-40218, Tms 40223-40224, and DCWH/Tms of every MPPT input. The SID is documented as 0x53756E53 'SunS', which suggests high word first, but this is not stated.",
  "DCA/DCV in the inverter model are left out: GEN24 has several DC inputs, their scale factors are marked not supported, and per-input values are in model 160.",
  "Registers marked 'not supported' in the XLSX are left out (Opt, other temperatures, VMax/VMin, ramp settings, model 160 Tmp/DCSt/DCEvt, StorAval, InBatV and similar). VAChaMax (40350) is listed as writable but its scale factor VAChaMax_SF is marked not supported, so it is left out too.",
  "Many scale factors are 'auto-scaled' (A, W, VA, VAr, WH, DCW, Ris, model 160): they change at runtime, so read a value and its SF in the same request.",
  "Unsupported values read as: int16 0x8000, uint16/enum16/bitfield16 0xFFFF, sunssf 0x8000. Phase B/C and line-line points depend on the grid connection.",
  "Settings model 121 registers are all read-only in the GEN24 map (the Datamanager map marks some writable).",
  "StVnd is documented as identical to St; the PDF lists SunSpec states 1-8.",
  "The Smart Meter is published at its own unit ID (default 200, then 201-204) with a separate common block and meter model starting at 40001; not part of this map."
 ],
 "registers": [
  {
   "table": "holding_register",
   "address": 40002,
   "documented": "40003",
   "name": "Common ID",
   "description": "Model ID of this block.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40003,
   "documented": "40004",
   "name": "Common L",
   "description": "Length of this block in registers.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "Registers",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40004,
   "documented": "40005",
   "name": "Mn",
   "description": "Manufacturer name, reads Fronius.",
   "data_type": "STRING",
   "length": 16,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40020,
   "documented": "40021",
   "name": "Md",
   "description": "Inverter model name.",
   "data_type": "STRING",
   "length": 16,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40044,
   "documented": "40045",
   "name": "Vr",
   "description": "Inverter software version.",
   "data_type": "STRING",
   "length": 8,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40052,
   "documented": "40053",
   "name": "SN",
   "description": "Serial number (may fall back to a controller ID).",
   "data_type": "STRING",
   "length": 16,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40068,
   "documented": "40069",
   "name": "DA",
   "description": "Modbus device address (unit ID).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40069,
   "documented": "40070",
   "name": "Inverter ID",
   "description": "Model ID of this block.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": {
    "101": "Single phase",
    "103": "Three phase"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40070,
   "documented": "40071",
   "name": "Inverter L",
   "description": "Length of this block in registers.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "Registers",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40071,
   "documented": "40072",
   "name": "A",
   "description": "Total AC current.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40075
   },
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40072,
   "documented": "40073",
   "name": "AphA",
   "description": "Phase A AC current.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40075
   },
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40073,
   "documented": "40074",
   "name": "AphB",
   "description": "Phase B AC current.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40075
   },
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40074,
   "documented": "40075",
   "name": "AphC",
   "description": "Phase C AC current.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40075
   },
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40075,
   "documented": "40076",
   "name": "A_SF",
   "description": "Scale factor (power of ten) for A.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40076,
   "documented": "40077",
   "name": "PPVphAB",
   "description": "Line voltage A-B.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40082
   },
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40077,
   "documented": "40078",
   "name": "PPVphBC",
   "description": "Line voltage B-C.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40082
   },
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40078,
   "documented": "40079",
   "name": "PPVphCA",
   "description": "Line voltage C-A.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40082
   },
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40079,
   "documented": "40080",
   "name": "PhVphA",
   "description": "Phase A to neutral voltage.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40082
   },
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40080,
   "documented": "40081",
   "name": "PhVphB",
   "description": "Phase B to neutral voltage.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40082
   },
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40081,
   "documented": "40082",
   "name": "PhVphC",
   "description": "Phase C to neutral voltage.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40082
   },
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40082,
   "documented": "40083",
   "name": "V_SF",
   "description": "Scale factor (power of ten) for V.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40083,
   "documented": "40084",
   "name": "W",
   "description": "AC active power.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40084
   },
   "units": "W",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40084,
   "documented": "40085",
   "name": "W_SF",
   "description": "Scale factor (power of ten) for W.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40085,
   "documented": "40086",
   "name": "Hz",
   "description": "Grid frequency.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40086
   },
   "units": "Hz",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40086,
   "documented": "40087",
   "name": "Hz_SF",
   "description": "Scale factor (power of ten) for Hz.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40087,
   "documented": "40088",
   "name": "VA",
   "description": "AC apparent power.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40088
   },
   "units": "VA",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40088,
   "documented": "40089",
   "name": "VA_SF",
   "description": "Scale factor (power of ten) for VA.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40089,
   "documented": "40090",
   "name": "VAr",
   "description": "AC reactive power.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40090
   },
   "units": "var",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40090,
   "documented": "40091",
   "name": "VAr_SF",
   "description": "Scale factor (power of ten) for VAr.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40091,
   "documented": "40092",
   "name": "PF",
   "description": "Power factor.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40092
   },
   "units": "Pct",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40092,
   "documented": "40093",
   "name": "PF_SF",
   "description": "Scale factor (power of ten) for PF.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40095,
   "documented": "40096",
   "name": "WH_SF",
   "description": "Scale factor (power of ten) for WH.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40100,
   "documented": "40101",
   "name": "DCW",
   "description": "Total DC input power.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40101
   },
   "units": "W",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40101,
   "documented": "40102",
   "name": "DCW_SF",
   "description": "Scale factor (power of ten) for DCW.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40102,
   "documented": "40103",
   "name": "TmpCab",
   "description": "Cabinet temperature.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40106
   },
   "units": "C",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40106,
   "documented": "40107",
   "name": "Tmp_SF",
   "description": "Scale factor (power of ten) for Tmp.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40107,
   "documented": "40108",
   "name": "St",
   "description": "SunSpec operating state.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": {
    "1": "Off",
    "2": "Sleeping (auto shutdown)",
    "3": "Starting",
    "4": "Producing normally (MPPT)",
    "5": "Throttled (power reduction)",
    "6": "Shutting down",
    "7": "Fault",
    "8": "Standby"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40108,
   "documented": "40109",
   "name": "StVnd",
   "description": "Vendor operating state; the map says it mirrors St.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": {
    "1": "Off",
    "2": "Sleeping (auto shutdown)",
    "3": "Starting",
    "4": "Producing normally (MPPT)",
    "5": "Throttled (power reduction)",
    "6": "Shutting down",
    "7": "Fault",
    "8": "Standby"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40121,
   "documented": "40122",
   "name": "Nameplate ID",
   "description": "Model ID of this block.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40122,
   "documented": "40123",
   "name": "Nameplate L",
   "description": "Length of this block in registers.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "Registers",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40123,
   "documented": "40124",
   "name": "DERTyp",
   "description": "Device type; this storage map lists 82 (PV with storage).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40124,
   "documented": "40125",
   "name": "WRtg",
   "description": "Rated continuous active power.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40125
   },
   "units": "W",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40125,
   "documented": "40126",
   "name": "WRtg_SF",
   "description": "Scale factor (power of ten) for WRtg.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40126,
   "documented": "40127",
   "name": "VARtg",
   "description": "Rated apparent power.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40127
   },
   "units": "VA",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40127,
   "documented": "40128",
   "name": "VARtg_SF",
   "description": "Scale factor (power of ten) for VARtg.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40128,
   "documented": "40129",
   "name": "VArRtgQ1",
   "description": "Rated reactive power, quadrant 1.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40132
   },
   "units": "var",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40129,
   "documented": "40130",
   "name": "VArRtgQ2",
   "description": "Rated reactive power, quadrant 2.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40132
   },
   "units": "var",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40130,
   "documented": "40131",
   "name": "VArRtgQ3",
   "description": "Rated reactive power, quadrant 3.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40132
   },
   "units": "var",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40131,
   "documented": "40132",
   "name": "VArRtgQ4",
   "description": "Rated reactive power, quadrant 4.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40132
   },
   "units": "var",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40132,
   "documented": "40133",
   "name": "VArRtg_SF",
   "description": "Scale factor (power of ten) for VArRtg.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40133,
   "documented": "40134",
   "name": "ARtg",
   "description": "Rated AC current.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40134
   },
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40134,
   "documented": "40135",
   "name": "ARtg_SF",
   "description": "Scale factor (power of ten) for ARtg.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40135,
   "documented": "40136",
   "name": "PFRtgQ1",
   "description": "Minimum power factor capability, quadrant 1.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40139
   },
   "units": "cos()",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40136,
   "documented": "40137",
   "name": "PFRtgQ2",
   "description": "Minimum power factor capability, quadrant 2.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40139
   },
   "units": "cos()",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40137,
   "documented": "40138",
   "name": "PFRtgQ3",
   "description": "Minimum power factor capability, quadrant 3.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40139
   },
   "units": "cos()",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40138,
   "documented": "40139",
   "name": "PFRtgQ4",
   "description": "Minimum power factor capability, quadrant 4.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40139
   },
   "units": "cos()",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40139,
   "documented": "40140",
   "name": "PFRtg_SF",
   "description": "Scale factor (power of ten) for PFRtg.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40140,
   "documented": "40141",
   "name": "WHRtg",
   "description": "Rated storage energy.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40141
   },
   "units": "Wh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40141,
   "documented": "40142",
   "name": "WHRtg_SF",
   "description": "Scale factor (power of ten) for WHRtg.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40144,
   "documented": "40145",
   "name": "MaxChaRte",
   "description": "Maximum battery charge power.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40145
   },
   "units": "W",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40145,
   "documented": "40146",
   "name": "MaxChaRte_SF",
   "description": "Scale factor (power of ten) for MaxChaRte.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40146,
   "documented": "40147",
   "name": "MaxDisChaRte",
   "description": "Maximum battery discharge power.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40147
   },
   "units": "W",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40147,
   "documented": "40148",
   "name": "MaxDisChaRte_SF",
   "description": "Scale factor (power of ten) for MaxDisChaRte.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40149,
   "documented": "40150",
   "name": "Settings ID",
   "description": "Model ID of this block.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40150,
   "documented": "40151",
   "name": "Settings L",
   "description": "Length of this block in registers.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "Registers",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40151,
   "documented": "40152",
   "name": "WMax",
   "description": "Maximum active power setting.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40171
   },
   "units": "W",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40152,
   "documented": "40153",
   "name": "VRef",
   "description": "Reference voltage at the grid connection point.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40172
   },
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40153,
   "documented": "40154",
   "name": "VRefOfs",
   "description": "Voltage offset between grid connection point and inverter.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40173
   },
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40156,
   "documented": "40157",
   "name": "VAMax",
   "description": "Maximum apparent power setting.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40175
   },
   "units": "VA",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40157,
   "documented": "40158",
   "name": "VArMaxQ1",
   "description": "Reactive power limit, quadrant 1.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40176
   },
   "units": "var",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40158,
   "documented": "40159",
   "name": "VArMaxQ2",
   "description": "Reactive power limit, quadrant 2.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40176
   },
   "units": "var",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40159,
   "documented": "40160",
   "name": "VArMaxQ3",
   "description": "Reactive power limit, quadrant 3.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40176
   },
   "units": "var",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40160,
   "documented": "40161",
   "name": "VArMaxQ4",
   "description": "Reactive power limit, quadrant 4.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40176
   },
   "units": "var",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40162,
   "documented": "40163",
   "name": "PFMinQ1",
   "description": "Minimum power factor setting, quadrant 1.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40178
   },
   "units": "cos()",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40163,
   "documented": "40164",
   "name": "PFMinQ2",
   "description": "Minimum power factor setting, quadrant 2.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40178
   },
   "units": "cos()",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40164,
   "documented": "40165",
   "name": "PFMinQ3",
   "description": "Minimum power factor setting, quadrant 3.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40178
   },
   "units": "cos()",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40165,
   "documented": "40166",
   "name": "PFMinQ4",
   "description": "Minimum power factor setting, quadrant 4.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40178
   },
   "units": "cos()",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40171,
   "documented": "40172",
   "name": "WMax_SF",
   "description": "Scale factor (power of ten) for WMax.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40172,
   "documented": "40173",
   "name": "VRef_SF",
   "description": "Scale factor (power of ten) for VRef.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40173,
   "documented": "40174",
   "name": "VRefOfs_SF",
   "description": "Scale factor (power of ten) for VRefOfs.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40175,
   "documented": "40176",
   "name": "VAMax_SF",
   "description": "Scale factor (power of ten) for VAMax.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40176,
   "documented": "40177",
   "name": "VArMax_SF",
   "description": "Scale factor (power of ten) for VArMax.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40178,
   "documented": "40179",
   "name": "PFMin_SF",
   "description": "Scale factor (power of ten) for PFMin.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40181,
   "documented": "40182",
   "name": "Status ID",
   "description": "Model ID of this block.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40182,
   "documented": "40183",
   "name": "Status L",
   "description": "Length of this block in registers.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "Registers",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40183,
   "documented": "40184",
   "name": "PVConn",
   "description": "PV inverter connection status bits.",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "0": "Connected",
    "1": "Available",
    "2": "Operating"
   },
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40184,
   "documented": "40185",
   "name": "StorConn",
   "description": "Storage connection status bits.",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "0": "Connected",
    "1": "Available",
    "2": "Operating"
   },
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40185,
   "documented": "40186",
   "name": "ECPConn",
   "description": "Grid feed-in status.",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "0": "Connected to grid (feeding)"
   },
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40218,
   "documented": "40219",
   "name": "TmSrc",
   "description": "",
   "data_type": "STRING",
   "length": 4,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40225,
   "documented": "40226",
   "name": "Ris",
   "description": "Insulation resistance.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40226
   },
   "units": "ohms",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40226,
   "documented": "40227",
   "name": "Ris_SF",
   "description": "Scale factor (power of ten) for Ris.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40227,
   "documented": "40228",
   "name": "Controls ID",
   "description": "Model ID of this block.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40228,
   "documented": "40229",
   "name": "Controls L",
   "description": "Length of this block in registers.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "Registers",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40229,
   "documented": "40230",
   "name": "Conn_WinTms",
   "description": "Random start window for connect/disconnect commands.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "Secs",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40230,
   "documented": "40231",
   "name": "Conn_RvrtTms",
   "description": "Fallback timer for the connect/disconnect command; 0 = no fallback.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "Secs",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40231,
   "documented": "40232",
   "name": "Conn",
   "description": "Write 0 for standby (no feed-in), 1 to resume feed-in.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Disconnected (standby)",
    "1": "Connected (feeding grid)"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40232,
   "documented": "40233",
   "name": "WMaxLimPct",
   "description": "Active power limit as percent of WMax.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40250
   },
   "units": "% WMax",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40233,
   "documented": "40234",
   "name": "WMaxLimPct_WinTms",
   "description": "Random start window for the power limit.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "Secs",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40234,
   "documented": "40235",
   "name": "WMaxLimPct_RvrtTms",
   "description": "Fallback timer for the power limit; restarts on every Modbus message, 0 = none.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "Secs",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40235,
   "documented": "40236",
   "name": "WMaxLimPct_RmpTms",
   "description": "Ramp time to the new power limit.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "Secs",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40236,
   "documented": "40237",
   "name": "WMaxLim_Ena",
   "description": "Starts (1) or ends (0) the power limit.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Disabled",
    "1": "Enabled"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40237,
   "documented": "40238",
   "name": "OutPFSet",
   "description": "Fixed power factor setpoint (signed, see sign convention).",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40251
   },
   "units": "cos()",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40238,
   "documented": "40239",
   "name": "OutPFSet_WinTms",
   "description": "Random start window for the power factor setpoint.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "Secs",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40239,
   "documented": "40240",
   "name": "OutPFSet_RvrtTms",
   "description": "Fallback timer for the power factor setpoint; 0 = none.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "Secs",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40240,
   "documented": "40241",
   "name": "OutPFSet_RmpTms",
   "description": "Ramp time to the new power factor.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "Secs",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40241,
   "documented": "40242",
   "name": "OutPFSet_Ena",
   "description": "Starts (1) or ends (0) the fixed power factor mode.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Disabled",
    "1": "Enabled"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40243,
   "documented": "40244",
   "name": "VArMaxPct",
   "description": "Fixed reactive power as percent of VArMax.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40252
   },
   "units": "% VArMax",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40245,
   "documented": "40246",
   "name": "VArPct_WinTms",
   "description": "Random start window for the reactive power setpoint.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "Secs",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40246,
   "documented": "40247",
   "name": "VArPct_RvrtTms",
   "description": "Fallback timer for the reactive power setpoint; 0 = none.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "Secs",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40247,
   "documented": "40248",
   "name": "VArPct_RmpTms",
   "description": "Ramp time to the new reactive power value.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "Secs",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40248,
   "documented": "40249",
   "name": "VArPct_Mod",
   "description": "Reactive power limit mode (read-only).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": {
    "2": "VAr limit as % of VArMax"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40249,
   "documented": "40250",
   "name": "VArPct_Ena",
   "description": "Starts (1) or ends (0) the fixed reactive power mode.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Disabled",
    "1": "Enabled"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40250,
   "documented": "40251",
   "name": "WMaxLimPct_SF",
   "description": "Scale factor (power of ten) for WMaxLimPct.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40251,
   "documented": "40252",
   "name": "OutPFSet_SF",
   "description": "Scale factor (power of ten) for OutPFSet.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40252,
   "documented": "40253",
   "name": "VArPct_SF",
   "description": "Scale factor (power of ten) for VArPct.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40253,
   "documented": "40254",
   "name": "MPPT ID",
   "description": "Model ID of this block.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40254,
   "documented": "40255",
   "name": "MPPT L",
   "description": "Length of this block in registers.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "Registers",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40255,
   "documented": "40256",
   "name": "MPPT DCA_SF",
   "description": "Scale factor (power of ten) for DCA.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40256,
   "documented": "40257",
   "name": "MPPT DCV_SF",
   "description": "Scale factor (power of ten) for DCV.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40257,
   "documented": "40258",
   "name": "MPPT DCW_SF",
   "description": "Scale factor (power of ten) for DCW.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40258,
   "documented": "40259",
   "name": "MPPT DCWH_SF",
   "description": "Scale factor (power of ten) for DCWH.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40261,
   "documented": "40262",
   "name": "N",
   "description": "Number of DC inputs reported in this model.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40263,
   "documented": "40264",
   "name": "module/1/ID",
   "description": "Input number 1.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40264,
   "documented": "40265",
   "name": "module/1/IDStr",
   "description": "Label of DC input 1.",
   "data_type": "STRING",
   "length": 8,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40272,
   "documented": "40273",
   "name": "module/1/DCA",
   "description": "DC current of input 1.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40255
   },
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40273,
   "documented": "40274",
   "name": "module/1/DCV",
   "description": "DC voltage of input 1.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40256
   },
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40274,
   "documented": "40275",
   "name": "module/1/DCW",
   "description": "DC power of input 1.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40257
   },
   "units": "W",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40283,
   "documented": "40284",
   "name": "module/2/ID",
   "description": "Input number 2.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40284,
   "documented": "40285",
   "name": "module/2/IDStr",
   "description": "Label of DC input 2.",
   "data_type": "STRING",
   "length": 8,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40292,
   "documented": "40293",
   "name": "module/2/DCA",
   "description": "DC current of input 2.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40255
   },
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40293,
   "documented": "40294",
   "name": "module/2/DCV",
   "description": "DC voltage of input 2.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40256
   },
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40294,
   "documented": "40295",
   "name": "module/2/DCW",
   "description": "DC power of input 2.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40257
   },
   "units": "W",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40303,
   "documented": "40304",
   "name": "module/3/ID",
   "description": "Input number 3.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40304,
   "documented": "40305",
   "name": "module/3/IDStr",
   "description": "Label of input 3, reads StCha 3 (battery charge path).",
   "data_type": "STRING",
   "length": 8,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40312,
   "documented": "40313",
   "name": "module/3/DCA",
   "description": "Battery charge current; 0 while discharging.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40255
   },
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40313,
   "documented": "40314",
   "name": "module/3/DCV",
   "description": "Battery port voltage (since fw 1.31; earlier 0 while discharging).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40256
   },
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40314,
   "documented": "40315",
   "name": "module/3/DCW",
   "description": "Battery charge power; 0 while discharging.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40257
   },
   "units": "W",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40323,
   "documented": "40324",
   "name": "module/4/ID",
   "description": "Input number 4.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40324,
   "documented": "40325",
   "name": "module/4/IDStr",
   "description": "Label of input 4, reads StDisCha 4 (battery discharge path).",
   "data_type": "STRING",
   "length": 8,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40332,
   "documented": "40333",
   "name": "module/4/DCA",
   "description": "Battery discharge current; 0 while charging.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40255
   },
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40333,
   "documented": "40334",
   "name": "module/4/DCV",
   "description": "Battery port voltage (since fw 1.31; earlier 0 while charging).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40256
   },
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40334,
   "documented": "40335",
   "name": "module/4/DCW",
   "description": "Battery discharge power; 0 while charging.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40257
   },
   "units": "W",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40343,
   "documented": "40344",
   "name": "Storage ID",
   "description": "Model ID of this block.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40344,
   "documented": "40345",
   "name": "Storage L",
   "description": "Length of this block in registers.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "Registers",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40345,
   "documented": "40346",
   "name": "WChaMax",
   "description": "Reference power for InWRte/OutWRte: max of charge and discharge rating; 0 without battery.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40361
   },
   "units": "W",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40346,
   "documented": "40347",
   "name": "WChaGra",
   "description": "Maximum charge ramp.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40362
   },
   "units": "% WChaMax/sec",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40347,
   "documented": "40348",
   "name": "WDisChaGra",
   "description": "Maximum discharge ramp.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40362
   },
   "units": "% WChaMax/sec",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40348,
   "documented": "40349",
   "name": "StorCtl_Mod",
   "description": "Activates the charge and/or discharge limit window.",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": {
    "0": "Charge limit (InWRte) active",
    "1": "Discharge limit (OutWRte) active"
   },
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40350,
   "documented": "40351",
   "name": "MinRsvPct",
   "description": "Minimum battery reserve, percent of capacity.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40364
   },
   "units": "% WChaMax",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40351,
   "documented": "40352",
   "name": "ChaState",
   "description": "Battery state of charge.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40365
   },
   "units": "% AhrRtg",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40354,
   "documented": "40355",
   "name": "ChaSt",
   "description": "Battery operating status.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": {
    "1": "Off",
    "2": "Empty",
    "3": "Discharging",
    "4": "Charging",
    "5": "Full",
    "6": "Holding",
    "7": "Testing"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40355,
   "documented": "40356",
   "name": "OutWRte",
   "description": "Discharge limit, percent of WChaMax; negative forces charging.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40368
   },
   "units": "% WChaMax",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40356,
   "documented": "40357",
   "name": "InWRte",
   "description": "Charge limit, percent of WChaMax; negative forces discharging.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": {
    "table": "holding_register",
    "address": 40368
   },
   "units": "% WChaMax",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40358,
   "documented": "40359",
   "name": "InOutWRte_RvrtTms",
   "description": "Fallback timer for the charge/discharge window (0-28800 s).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "Secs",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40360,
   "documented": "40361",
   "name": "ChaGriSet",
   "description": "Allows or blocks battery charging from the grid.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "RW",
   "values": {
    "0": "PV only (grid charging disabled)",
    "1": "Grid charging enabled"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40361,
   "documented": "40362",
   "name": "WChaMax_SF",
   "description": "Scale factor (power of ten) for WChaMax.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40362,
   "documented": "40363",
   "name": "WChaDisChaGra_SF",
   "description": "Scale factor (power of ten) for WChaDisChaGra.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40364,
   "documented": "40365",
   "name": "MinRsvPct_SF",
   "description": "Scale factor (power of ten) for MinRsvPct.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40365,
   "documented": "40366",
   "name": "ChaState_SF",
   "description": "Scale factor (power of ten) for ChaState.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40368,
   "documented": "40369",
   "name": "InOutWRte_SF",
   "description": "Scale factor (power of ten) for InOutWRte.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40369,
   "documented": "40370",
   "name": "End ID",
   "description": "End-of-map marker, reads 0xFFFF.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40370,
   "documented": "40371",
   "name": "End L",
   "description": "End block length, reads 0.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  }
 ],
 "integration": {
  "summary": "In the inverter web UI (Communication > Modbus) enable the TCP server, select int+SF and tick Allow Control if you need writes; then poll unit ID 1. Read registers 40070-40109 (wire addresses 40069-40108) for live data, register 40352 (address 40351) for battery SoC, and use models 123/124 for power limits and battery windows.",
  "minimum_registers": [
   {
    "table": "holding_register",
    "address": 40069,
    "why": "Inverter model ID (101/103) - confirms int+SF layout"
   },
   {
    "table": "holding_register",
    "address": 40083,
    "why": "AC power"
   },
   {
    "table": "holding_register",
    "address": 40084,
    "why": "AC power scale factor (auto-scaled)"
   },
   {
    "table": "holding_register",
    "address": 40107,
    "why": "Operating state"
   },
   {
    "table": "holding_register",
    "address": 40351,
    "why": "Battery state of charge"
   },
   {
    "table": "holding_register",
    "address": 40365,
    "why": "SoC scale factor"
   },
   {
    "table": "holding_register",
    "address": 40232,
    "why": "Active power limit %"
   },
   {
    "table": "holding_register",
    "address": 40236,
    "why": "Enable/disable the power limit"
   },
   {
    "table": "holding_register",
    "address": 40250,
    "why": "Power limit scale factor"
   }
  ],
  "enable": "Inverter web interface > Communication > Modbus: choose TCP Server and/or RTU Server, set SunSpec Model Type (int+SF for this map), and activate 'Allow Control' for on/off, power reduction, power factor, reactive power and battery commands. 'Restrict Control' limits control to fixed IP addresses. Writes to models 123/124 raise an exception when control is not allowed.",
  "watchdog": "Model 123 controls have *_RvrtTms fallback timers (0-28800 s) that restart with every Modbus message; on expiry the control ends and the next-priority mode takes over. 0 (default) keeps the setting until disabled. Model 124 has InOutWRte_RvrtTms (0-28800 s) for the battery window.",
  "quirks": [
   "Off-by-one: SunSpec registers are numbered from 40001; request number minus one (40001 -> 40000).",
   "Switching float/int+SF changes the address of every model after the inverter model.",
   "Battery power appears as MPPT inputs 3 (charge) and 4 (discharge); only one is non-zero at a time.",
   "Storage window sign convention: negative power = charging, positive = discharging; OutWRte/InWRte may be negative to force charging or discharging.",
   "Writes to read-only or unsupported registers are silently ignored; out-of-range values return exception 3."
  ],
  "setup": [
   "TCP: inverter unit ID is always 1 (identify devices by IP address); port 502 or 1502 selectable in the web UI.",
   "RTU: set Inverter address (1-247, factory 1), interface M0 or M1, baud and parity in the web UI; each inverter on the bus needs a unique address.",
   "RTU wiring: 120-ohm termination enabled at both line ends, shielded twisted pair, single-point grounding, strict daisy chain.",
   "Smart Meter unit ID is set via 'Meter address offset' (factory 200)."
  ],
  "gotchas": [
   "Query sequentially (at most 2 requests in parallel) with a response timeout of at least 1 s; read blocks rather than single registers.",
   "Grid charging via ChaGriSet only works if 'battery charging from DNO grid' is also enabled in the system settings (the two are AND-linked).",
   "Changing InWRte/OutWRte/StorCtl_Mod shows up in Solar.web as Forced Recharge or Energy saving mode.",
   "After changing a value of an active mode (e.g. a new WMaxLimPct), re-write the matching _Ena register with 1."
  ]
 },
 "page": "https://easymodbus.com/modbus-register-maps/fronius/gen24-sunspec-int-sf",
 "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."
}
