{
  "spec_version": 1,
  "slug": "chint-cps-sca-t",
  "manufacturer": "CHINT Power Systems",
  "model": "CPS SCA-T series three-phase string inverter (Modbus Protocol V4.16)",
  "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": [],
  "holding_registers": [
    {
      "address": 4097,
      "count": 1,
      "name": "Phase A voltage",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4098,
      "count": 1,
      "name": "Phase A current",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4099,
      "count": 2,
      "name": "Phase A power",
      "data_type": "UInt32",
      "units": "W",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4101,
      "count": 1,
      "name": "Phase A frequency",
      "data_type": "UInt16",
      "units": "Hz",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4102,
      "count": 1,
      "name": "Phase B voltage",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4103,
      "count": 1,
      "name": "Phase B current",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4104,
      "count": 2,
      "name": "Phase B power",
      "data_type": "UInt32",
      "units": "W",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4106,
      "count": 1,
      "name": "Phase B frequency",
      "data_type": "UInt16",
      "units": "Hz",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4107,
      "count": 1,
      "name": "Phase C voltage",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4108,
      "count": 1,
      "name": "Phase C current",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4109,
      "count": 2,
      "name": "Phase C power",
      "data_type": "UInt32",
      "units": "W",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4111,
      "count": 1,
      "name": "Phase C frequency",
      "data_type": "UInt16",
      "units": "Hz",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4112,
      "count": 1,
      "name": "PV1 voltage",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4113,
      "count": 1,
      "name": "PV1 current",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4114,
      "count": 2,
      "name": "MPPT1 power",
      "data_type": "UInt32",
      "units": "W",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4116,
      "count": 1,
      "name": "PV2 voltage",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4117,
      "count": 1,
      "name": "PV2 current",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4118,
      "count": 2,
      "name": "MPPT2 power",
      "data_type": "UInt32",
      "units": "W",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4120,
      "count": 1,
      "name": "PV3 voltage",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4121,
      "count": 1,
      "name": "PV3 current",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4122,
      "count": 2,
      "name": "MPPT3 power",
      "data_type": "UInt32",
      "units": "W",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4124,
      "count": 1,
      "name": "Inner temperature",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4125,
      "count": 1,
      "name": "Inverter mode",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Enum; the document refers to its Inverter Mode table."
    },
    {
      "address": 4126,
      "count": 2,
      "name": "Error code",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "The document refers to its Error Code table."
    },
    {
      "address": 4129,
      "count": 2,
      "name": "Total energy",
      "data_type": "UInt32",
      "units": "kWh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4131,
      "count": 2,
      "name": "Total generation time",
      "data_type": "UInt32",
      "units": "h",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "The document's unit column says 'Hour'."
    },
    {
      "address": 4135,
      "count": 2,
      "name": "Today energy",
      "data_type": "UInt32",
      "units": "Wh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4151,
      "count": 2,
      "name": "Active power",
      "data_type": "UInt32",
      "units": "W",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4153,
      "count": 2,
      "name": "Reactive power",
      "data_type": "Int32",
      "units": "VAr",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4155,
      "count": 2,
      "name": "Today peak power",
      "data_type": "UInt32",
      "units": "W",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4157,
      "count": 1,
      "name": "Power factor",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 0.001,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4158,
      "count": 1,
      "name": "PV4 voltage",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4159,
      "count": 1,
      "name": "PV4 current",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4160,
      "count": 2,
      "name": "MPPT4 power",
      "data_type": "UInt32",
      "units": "W",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 6656,
      "count": 8,
      "name": "Device model",
      "data_type": "Ascii",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "ASCII text, e.g. PV 30KTL."
    },
    {
      "address": 6672,
      "count": 8,
      "name": "Device serial number",
      "data_type": "Ascii",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "ASCII text, e.g. 1234-123456789."
    },
    {
      "address": 6680,
      "count": 1,
      "name": "Modbus protocol version",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "e.g. 0x1234 = V12.34."
    },
    {
      "address": 6684,
      "count": 3,
      "name": "Software version",
      "data_type": "Ascii",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "ASCII text."
    },
    {
      "address": 6691,
      "count": 3,
      "name": "Software build date",
      "data_type": "Ascii",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "ASCII text."
    },
    {
      "address": 6715,
      "count": 1,
      "name": "MPPT number",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = one MPPT; the document's example prints 1."
    },
    {
      "address": 6724,
      "count": 1,
      "name": "Rated voltage",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "e.g. 2200 = 220.0 V."
    },
    {
      "address": 6725,
      "count": 1,
      "name": "Rated frequency",
      "data_type": "UInt16",
      "units": "Hz",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R",
      "description": "e.g. 5000 = 50.00 Hz."
    },
    {
      "address": 6726,
      "count": 1,
      "name": "Rated power",
      "data_type": "UInt16",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "e.g. 1500 = 1500 W."
    },
    {
      "address": 6728,
      "count": 1,
      "name": "Grid phase number",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = single phase, 3 = three phase."
    }
  ],
  "combined_registers": [],
  "notes": "Source: CHINT Power Systems \"CPS SCA-T Modbus Protocol V4.16 EN\", vendor-hosted at https://chint.it/wp-content/uploads/product-docs/CPS-SCA-T/Manuali/CPS-SCA-T%20Modbus%20Protocol%20V4.16_EN.pdf (the document names no model list; its device-model example is 'PV 30KTL'). Section 1 states the serial framing: Modbus RTU, half duplex, 9600 bps, 8 data bits, no parity, 1 stop bit; the technical-terms table in that section is printed with its right-hand column shifted by one row, so the slave address is taken from the worked frames in section 3, which all use address 01, and it is modifiable. The map is read with function code 0x03 only ('RO: Read only, only support 0x03 command'), so every row is a holding register. Addresses are printed in hex and are wire addresses, so addressing is zero_based; the scale and unit are printed together in the document's Unit column (0.1V, 0.01A, 0.1W, kwh, wh, ...) and are separated here. This seed carries the device-information block (2.1) and the real-time measurement block (2.2). Sections 2.3 parameters, 2.4 history log and 2.5-2.7 day/month/year energy are left out: in the published PDF their definition, address and value columns are printed as separate streams that drift against each other (in 2.3 the definition 'Unbalance voltage limit' sits beside 0x510F while the address stream has already passed 0x510E on the previous line, and the value ranges do not line up either), so transcribing them would mean guessing. Write-only inverter control 0x6001 is part of that block and is omitted with it. CHINT publishes a separate 403X map ('100 kW-480 V & 50 kW-208 V Inverter Protocol', function code 0x04 from base 0x0000) for the SCA100K-T-US-480 and SCA50K-T-US-208 models; that is a different document, seeded separately as chint-cps-sca-403x."
}
