All devices

SunSpec Alliance · Solar inverter

Generic SunSpec inverter + meter (models 1, 103, 203) Modbus register map

Download JSONSupplier documentationSuggest an edit

Default configuration

Protocol
Modbus TCP
Port
502
Unit ID
1
Addressing
0-based
Byte order
Big endian
Word order
High word first

Register map

AddressCountNameTypeUnitScaleAccess
400002
SunSpec identifier ("SunS")
0x53756E53. Test for it to find the map; if it is missing, the device uses a different base address (0, 1, 50000, ...).
UInt32-1R
400021
SunSpec model ID (common)
1 = common model.
UInt16-1R
400031
SunSpec common model length
Number of registers that follow this field (65 in this layout). Use it to step to the next model.
UInt16-1R
4000416
Manufacturer
Ascii-1R
4002016
Model
Ascii-1R
400368
Options
Model-specific option codes, e.g. the meter type on devices that expose a meter.
Ascii-1R
400448
Firmware version
Ascii-1R
4005216
Serial number
Ascii-1R
400681
Modbus unit ID
UInt16-1R
400691
SunSpec model ID (inverter)
101 = single phase, 102 = split phase, 103 = three phase. If the ID is 111/112/113 the device uses the float variant and every offset after this one changes.
UInt16-1R
400701
SunSpec inverter model length
50 registers follow in the int+SF models (60 in the float models 111-113).
UInt16-1R
400711
AC current, total
Raw value; apply A_SF at 40075 (engineering value = raw x 10^SF).
UInt16A1R
400721
AC current, phase A
UInt16A1R
400731
AC current, phase B
UInt16A1R
400741
AC current, phase C
UInt16A1R
400751
AC current scale factor (A_SF)
SunSpec scale factor, 10^SF.
Int16-1R
400761
AC voltage, phase A-B
Raw value; apply V_SF at 40082.
UInt16V1R
400791
AC voltage, phase A-N
UInt16V1R
400801
AC voltage, phase B-N
UInt16V1R
400811
AC voltage, phase C-N
UInt16V1R
400821
AC voltage scale factor (V_SF)
SunSpec scale factor, 10^SF.
Int16-1R
400831
AC active power
Raw value; apply W_SF at 40084.
Int16W1R
400841
AC power scale factor (W_SF)
SunSpec scale factor, 10^SF.
Int16-1R
400851
AC frequency
Raw value; apply Hz_SF at 40086.
UInt16Hz1R
400861
AC frequency scale factor (Hz_SF)
SunSpec scale factor, 10^SF.
Int16-1R
400871
AC apparent power
Raw value; apply VA_SF at 40088.
Int16VA1R
400891
AC reactive power
Raw value; apply VAr_SF at 40090.
Int16var1R
400911
Power factor
Raw value; apply PF_SF at 40092.
Int16%1R
400932
AC lifetime energy
Raw value; apply WH_SF at 40095. Divide by 1000 for kWh.
UInt32Wh1R
400951
AC lifetime energy scale factor (WH_SF)
SunSpec scale factor, 10^SF.
Int16-1R
401001
DC power
Raw value; apply DCW_SF at 40101. On multi-MPPT devices this is the total DC power.
Int16W1R
401011
DC power scale factor (DCW_SF)
SunSpec scale factor, 10^SF.
Int16-1R
401021
Cabinet temperature
Raw value; apply Tmp_SF at 40106.
Int16°C1R
401061
Temperature scale factor (Tmp_SF)
SunSpec scale factor, 10^SF.
Int16-1R
401071
Inverter operating state
1 = Off, 2 = Sleeping, 3 = Starting, 4 = MPPT, 5 = Throttled, 6 = Shutting down, 7 = Fault, 8 = Standby.
UInt16-1R
401092
Inverter events 1
Bit field: 0 = ground fault, 1 = input over voltage, 3 = DC disconnect, 5 = cabinet open, 6 = manual shutdown, 7 = over temperature, 12 = blown fuse, 13 = under temperature, 14 = memory loss, 15 = arc detection.
UInt32-1R
401211
SunSpec model ID (meter common)
1 = common model. Only present when a meter is exposed after the inverter.
UInt16-1R
401221
Meter common model length
UInt16-1R
401231
SunSpec model ID (meter)
201 = single phase, 202 = split phase, 203 = three phase wye, 204 = three phase delta. Offset 0 of the meter model.
UInt16-1R
401241
AC current, total
Raw value; apply A_SF at 40127.
Int16A1R
401251
AC current, phase A
Int16A1R
401261
AC current, phase B
Int16A1R
401271
AC current, phase C
Int16A1R
401281
Meter current scale factor (A_SF)
SunSpec scale factor, 10^SF.
Int16-1R
401291
AC voltage, line to neutral (average)
Raw value; apply V_SF at 40136.
Int16V1R
401311
AC voltage, phase A-N
Int16V1R
401321
AC voltage, phase B-N
Int16V1R
401331
AC voltage, phase C-N
Int16V1R
401361
Meter voltage scale factor (V_SF)
SunSpec scale factor, 10^SF.
Int16-1R
401371
AC frequency
Raw value; apply Hz_SF at 40138.
Int16Hz1R
401381
Meter frequency scale factor (Hz_SF)
SunSpec scale factor, 10^SF.
Int16-1R
401391
AC active power, total
Raw value; apply W_SF at 40143. Positive = import from the grid unless the meter is configured as a production meter.
Int16W1R
401401
AC active power, phase A
Int16W1R
401411
AC active power, phase B
Int16W1R
401421
AC active power, phase C
Int16W1R
401431
Meter power scale factor (W_SF)
SunSpec scale factor, 10^SF.
Int16-1R
401491
AC reactive power, total
Int16var1R
401541
Power factor (average)
Int16%1R
401592
Total exported energy
Raw value; apply TotWh_SF at 40175.
UInt32Wh1R
401672
Total imported energy
Raw value; apply TotWh_SF at 40175.
UInt32Wh1R
401751
Meter energy scale factor (TotWh_SF)
SunSpec scale factor, 10^SF.
Int16-1R

Notes

SunSpec is the vendor-neutral Modbus map that most modern inverters, meters and batteries expose: a chain of numbered models, each starting with its model ID and its length in registers, beginning with the common model (ID 1) that carries the manufacturer, model and serial number. This file describes the layout most devices use: base address 40000, common model 40000-40068, three-phase inverter model 103 at 40069 and a three-phase wye meter model 203 at 40121. The base address is not part of the standard - 40000, 40001, 0, 1 and 50000 all occur - and devices insert extra models (120 nameplate, 121 basic settings, 122 extended status, 123 immediate controls, 124 storage control, 160 multiple MPPT), so verify the actual chain: test for "SunS" at the base address, then read the model ID and length at the start of every model and step forward by two plus the length. If the inverter model ID is 111, 112 or 113 the device uses the float variants and the layout of that model (and every address after it) differs from this map. Values in this map use the SunSpec int+SF encoding, so engineering value = raw value x 10^scale factor, with the scale factor registers listed next to their values; scale factors are set by the device and can be negative. Points a device does not implement read as 0xFFFF (uint16, enum16), 0x8000 (int16, sunssf) or 0xFFFFFFFF (acc32); filter those values. Register addresses here are wire addresses; add 1 if your client numbers registers from 1. Source: SunSpec Alliance specifications and the published SunSpec model definitions (models 1, 103 and 203).