{
  "spec_version": 1,
  "slug": "chint-cps-sca-403x",
  "manufacturer": "CHINT Power Systems",
  "model": "SCA100K-T-US-480 / SCA50K-T-US-208 (403X protocol)",
  "category": "Solar inverter",
  "supplier_url": "https://www.chintpowersystems.com/downloads/",
  "default_configuration": {
    "protocol": "modbus_tcp",
    "port": 502,
    "unit_id": 1,
    "addressing": "zero_based",
    "byte_order": "BigEndian",
    "word_order": "HighFirst",
    "native_interface": "rs485",
    "serial": {
      "parity": "None",
      "baud_rate": 9600,
      "data_bits": 8,
      "stop_bits": 1
    }
  },
  "coils": [],
  "discrete_inputs": [],
  "input_registers": [
    {
      "address": 0,
      "count": 1,
      "name": "Device type",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Enum: 0x404D = SCA100K/SCA50K."
    },
    {
      "address": 4,
      "count": 1,
      "name": "Protocol version (BCD)",
      "data_type": "Hex",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "BCD-coded. If the value is 0xAABB, AA is the low byte of the DSP software version and BB the low byte of the LCD software version."
    },
    {
      "address": 5,
      "count": 1,
      "name": "Minor version (BCD)",
      "data_type": "Hex",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "BCD-coded."
    },
    {
      "address": 10,
      "count": 10,
      "name": "Model",
      "data_type": "Ascii",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "10 registers of ASCII text, e.g. SCA100K-T-US-480."
    },
    {
      "address": 22,
      "count": 2,
      "name": "Total energy to grid",
      "data_type": "UInt32",
      "units": "kWh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Register 0x0016 holds the high 16 bits and 0x0017 the low 16 bits, e.g. 0x01562318 = 22,422,296 kWh."
    },
    {
      "address": 24,
      "count": 1,
      "name": "Energy to grid, current day",
      "data_type": "UInt16",
      "units": "kWh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 26,
      "count": 1,
      "name": "Power factor",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 0.001,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 27,
      "count": 1,
      "name": "Maximum AC active power, current day",
      "data_type": "UInt16",
      "units": "kW",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 28,
      "count": 1,
      "name": "Grid-feed time, current day",
      "data_type": "UInt16",
      "units": "min",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Cumulative time from the start of grid feeding to now, in one day."
    },
    {
      "address": 29,
      "count": 1,
      "name": "AC active power",
      "data_type": "UInt16",
      "units": "kW",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 30,
      "count": 1,
      "name": "AC apparent power",
      "data_type": "UInt16",
      "units": "kVA",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 31,
      "count": 1,
      "name": "Grid voltage Uab",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 32,
      "count": 1,
      "name": "Grid voltage Ubc",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 33,
      "count": 1,
      "name": "Grid voltage Uca",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 34,
      "count": 1,
      "name": "Grid A phase current",
      "data_type": "Int16",
      "units": "A",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 35,
      "count": 1,
      "name": "Grid B phase current",
      "data_type": "Int16",
      "units": "A",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 36,
      "count": 1,
      "name": "Grid C phase current",
      "data_type": "Int16",
      "units": "A",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 43,
      "count": 1,
      "name": "Grid frequency",
      "data_type": "UInt16",
      "units": "Hz",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 44,
      "count": 1,
      "name": "Heatsink temperature",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "INV module temperature."
    },
    {
      "address": 45,
      "count": 1,
      "name": "Ambient temperature",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Internal ambient temperature."
    },
    {
      "address": 59,
      "count": 1,
      "name": "AC reactive power",
      "data_type": "Int16",
      "units": "kvar",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 69,
      "count": 1,
      "name": "PV input total power",
      "data_type": "UInt16",
      "units": "kW",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 70,
      "count": 1,
      "name": "Maximum active power",
      "data_type": "UInt16",
      "units": "kW",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 71,
      "count": 1,
      "name": "Maximum apparent power",
      "data_type": "UInt16",
      "units": "kVA",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 72,
      "count": 1,
      "name": "DSP safety specification version",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 32768,
      "count": 1,
      "name": "Line voltage Uab",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 32769,
      "count": 1,
      "name": "Line voltage Ubc",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 32770,
      "count": 1,
      "name": "Line voltage Uca",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 32771,
      "count": 1,
      "name": "A phase voltage",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 32772,
      "count": 1,
      "name": "B phase voltage",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 32773,
      "count": 1,
      "name": "C phase voltage",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 32774,
      "count": 1,
      "name": "A phase grid frequency",
      "data_type": "UInt16",
      "units": "Hz",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 32775,
      "count": 1,
      "name": "B phase grid frequency",
      "data_type": "UInt16",
      "units": "Hz",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 32776,
      "count": 1,
      "name": "C phase grid frequency",
      "data_type": "UInt16",
      "units": "Hz",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 32777,
      "count": 1,
      "name": "Grid phase sequence",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = positive."
    },
    {
      "address": 32778,
      "count": 1,
      "name": "Grid voltage unbalance",
      "data_type": "UInt16",
      "units": "%",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 32779,
      "count": 1,
      "name": "Grid system frequency",
      "data_type": "UInt16",
      "units": "Hz",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 32780,
      "count": 1,
      "name": "N-PE voltage",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 32787,
      "count": 1,
      "name": "Voltage harmonics L1",
      "data_type": "UInt16",
      "units": "%",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 32788,
      "count": 1,
      "name": "Voltage harmonics L2",
      "data_type": "UInt16",
      "units": "%",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 32789,
      "count": 1,
      "name": "Voltage harmonics L3",
      "data_type": "UInt16",
      "units": "%",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 33024,
      "count": 1,
      "name": "Phase A current",
      "data_type": "Int16",
      "units": "A",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 33025,
      "count": 1,
      "name": "Phase B current",
      "data_type": "Int16",
      "units": "A",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 33026,
      "count": 1,
      "name": "Phase C current",
      "data_type": "Int16",
      "units": "A",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 33027,
      "count": 1,
      "name": "A phase active power",
      "data_type": "Int16",
      "units": "kW",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 33028,
      "count": 1,
      "name": "B phase active power",
      "data_type": "Int16",
      "units": "kW",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 33029,
      "count": 1,
      "name": "C phase active power",
      "data_type": "Int16",
      "units": "kW",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 33030,
      "count": 1,
      "name": "Three-phase total active power",
      "data_type": "Int16",
      "units": "kW",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 33031,
      "count": 1,
      "name": "A phase reactive power",
      "data_type": "Int16",
      "units": "kVAr",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "The document prints the unit as 1 kVAR with scale factor -1; its Min/Max cells are the ones that read N/A."
    },
    {
      "address": 33032,
      "count": 1,
      "name": "B phase reactive power",
      "data_type": "Int16",
      "units": "kVAr",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "The document prints the unit as 1 kVAR with scale factor -1; its Min/Max cells are the ones that read N/A."
    },
    {
      "address": 33033,
      "count": 1,
      "name": "C phase reactive power",
      "data_type": "Int16",
      "units": "kVAr",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "The document prints the unit as 1 kVAR with scale factor -1; its Min/Max cells are the ones that read N/A."
    },
    {
      "address": 33034,
      "count": 1,
      "name": "Three-phase total reactive power",
      "data_type": "Int16",
      "units": "kVAr",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "The document prints the unit as 1 kVAR with scale factor -1; its Min/Max cells are the ones that read N/A."
    },
    {
      "address": 33035,
      "count": 1,
      "name": "A phase power factor",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 0.001,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 33036,
      "count": 1,
      "name": "B phase power factor",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 0.001,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 33037,
      "count": 1,
      "name": "C phase power factor",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 0.001,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 33038,
      "count": 1,
      "name": "Three-phase power factor",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 0.001,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 33039,
      "count": 1,
      "name": "A phase inverter voltage",
      "data_type": "Int16",
      "units": "V",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 33040,
      "count": 1,
      "name": "B phase inverter voltage",
      "data_type": "Int16",
      "units": "V",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 33041,
      "count": 1,
      "name": "C phase inverter voltage",
      "data_type": "Int16",
      "units": "V",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 33280,
      "count": 1,
      "name": "PV input mode",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Enum; 2 = string independent."
    },
    {
      "address": 33281,
      "count": 1,
      "name": "Total DC input power",
      "data_type": "UInt16",
      "units": "kW",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 33282,
      "count": 1,
      "name": "MPPT1 voltage",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 33283,
      "count": 1,
      "name": "MPPT1 current",
      "data_type": "Int16",
      "units": "A",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 33284,
      "count": 1,
      "name": "MPPT2 voltage",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 33285,
      "count": 1,
      "name": "MPPT2 current",
      "data_type": "Int16",
      "units": "A",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 33286,
      "count": 1,
      "name": "MPPT3 voltage",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 33287,
      "count": 1,
      "name": "MPPT3 current",
      "data_type": "Int16",
      "units": "A",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 33330,
      "count": 1,
      "name": "MPPT4 voltage",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 33331,
      "count": 1,
      "name": "MPPT4 current",
      "data_type": "Int16",
      "units": "A",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 33332,
      "count": 1,
      "name": "MPPT5 voltage",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 33333,
      "count": 1,
      "name": "MPPT5 current",
      "data_type": "Int16",
      "units": "A",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 33334,
      "count": 1,
      "name": "MPPT6 voltage",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 33335,
      "count": 1,
      "name": "MPPT6 current",
      "data_type": "Int16",
      "units": "A",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 33538,
      "count": 1,
      "name": "Inverter module temperature",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 33539,
      "count": 1,
      "name": "Internal ambient temperature",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 33540,
      "count": 1,
      "name": "Insulation resistance",
      "data_type": "Int16",
      "units": "kΩ",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 33541,
      "count": 1,
      "name": "Leakage current (GFCI)",
      "data_type": "Int16",
      "units": "mA",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 33542,
      "count": 1,
      "name": "A phase DC current component",
      "data_type": "Int16",
      "units": "mA",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 33543,
      "count": 1,
      "name": "B phase DC current component",
      "data_type": "Int16",
      "units": "mA",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 33544,
      "count": 1,
      "name": "C phase DC current component",
      "data_type": "Int16",
      "units": "mA",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 33554,
      "count": 1,
      "name": "Power plate temperature",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 33555,
      "count": 1,
      "name": "Boost temperature",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 33560,
      "count": 1,
      "name": "Core fit temperature",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 33651,
      "count": 1,
      "name": "Bus current",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 33652,
      "count": 1,
      "name": "Junction box temperature",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 33684,
      "count": 1,
      "name": "DC plug temperature",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 33685,
      "count": 1,
      "name": "AC plug temperature",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    }
  ],
  "holding_registers": [],
  "combined_registers": [],
  "notes": "Source: CHINT Power Systems \"100 kW-480 V & 50 kW-208 V Inverter Protocol - CPS Inverter Model Data Mapping Specification for 403X\", applicable models SCA100K-T-US-480 / SCA50K-T-US-208, applicable firmware V01.15, document version V03.00 (2026-01-26), vendor-hosted at https://www.chintpowersystems.com/wp-content/uploads/2026/02/CPS-1000Vdc-100kW-50kW-208V-Modbus-Map-2-5-2026.pdf. Section 1 gives the factory port settings: address 1 (default), 9600 bps (default), parity none, 1 stop bit; the map is read with function code 0x04 from base 0x0000, so every row is an input register. Section 2.1 states that register 0x0016 carries the high 16 bits and 0x0017 the low 16 bits of the total energy, so the seed declares word_order HighFirst; the other 32-bit rows follow the same layout. Scale factors are the document's exponents (0, -1, -2, -3 = 1, 0.1, 0.01, 0.001) and the addresses are the printed hex wire addresses, so addressing is zero_based. Deliberate omissions: the serial number (0x0006-0x0009, BCD over four registers), the uint64 timestamp (0x0030), the fault and warning bit words 0x0034-0x00xx and 0x0065-0x0081 (their bit meanings are in Section 5 and would need that table), the 24 string-current/string-voltage registers 0x8244-0x8298 (documented but only meaningful on models wired for many strings), and the 0x8112-0x8114 adjustment block, whose first row prints an exponent of +1 in a column where the other rows are percentages. Reactive-power rows 0x8107-0x810A carry the document's own unit, 1 kVAR with scale factor -1; the N/A cells beside them are the Min/Max columns. The CPS SCA-T Modbus Protocol V4.16 map (holding registers from 0x1000, function code 0x03) is a different CHINT document and is seeded separately as chint-cps-sca-t."
}
