SolarEdge SunSpec Inverter Modbus register map
SolarEdge inverters can expose their monitoring data to a non-SolarEdge logger through a read-only SunSpec map over Modbus RTU or Modbus TCP. The map covers AC and DC measurements, energy, temperature and operating state.
- Protocol
- Modbus RTU and Modbus TCP
- Defaults
- RS485: 115200 bps, 8 data bits, no parity, 1 stop bit. Modbus TCP is off by default; the port is 1502 with SolarEdge Go setup and 502 with LCD setup. Default unit ID over Ethernet is 1 (p. 6, 13-16).
- Addresses in the manual
- 0-based protocol addresses, as sent on the wire
- 32 and 64-bit values
- Not stated in the manual
- Registers listed
- 45
- Checked against
- Version 3.3, October 2026
Address base. The tables give two columns. The base 0 column is the protocol address on the wire (SunSpec common block starts at 40000, inverter model block at 40069); the base 1 column is the PLC style number and is one higher. This file records the base 0 column (p. 17-18). Address 40000 in the manual is address 40000 on the wire.
Word order. The meter section says Modbus registers are big-endian with the most significant value at the lowest address, but the appendix says 32-bit values in command encoding use little-endian word order. The document does not state the word order for the inverter acc32 and uint32 values in this map.
Modbus Poll and the Modbus protocol itself count from 0. The "Wire address" column is the number to type into Modbus Poll.
Downloads
The register table has every column on this page. The blocks file imports into Modbus Poll. The template JSON holds the same blocks plus unit, scale and access for scripts.
Registers
| Manual | Wire | Register | Type | Regs | Unit | Scale | Access | Area |
|---|---|---|---|---|---|---|---|---|
| 40000 | 40000 | SunSpec map identifier "SunS"C_SunSpec_ID · Fixed value 0x53756E53, marks the start of a SunSpec map. |
uint32 | 2 | 1 | R | Holding (FC03) | |
| 40002 | 40002 | Common model identifierC_SunSpec_DID · Fixed value 1 for the SunSpec common block. |
uint16 | 1 | 1 | R | Holding (FC03) | |
| 40003 | 40003 | Common block lengthC_SunSpec_Length · Block length in registers, 65. |
uint16 | 1 | 1 | R | Holding (FC03) | |
| 40004 | 40004 | Manufacturer nameC_Manufacturer · Reads "SolarEdge". |
string | 16 | 1 | R | Holding (FC03) | |
| 40020 | 40020 | Inverter modelC_Model · Model string such as SE5000. |
string | 16 | 1 | R | Holding (FC03) | |
| 40044 | 40044 | Firmware versionC_Version · CPU software version with leading zeros. |
string | 8 | 1 | R | Holding (FC03) | |
| 40052 | 40052 | Serial numberC_SerialNumber |
string | 16 | 1 | R | Holding (FC03) | |
| 40068 | 40068 | Modbus unit IDC_DeviceAddress · Modbus ID configured in the inverter. |
uint16 | 1 | 1 | R | Holding (FC03) | |
| 40069 | 40069 | Inverter model identifierI_SunSpec_DID · 101 single phase, 102 split phase, 103 three phase. |
uint16 | 1 | 1 | R | Holding (FC03) | |
| 40070 | 40070 | Inverter model lengthI_SunSpec_Length · Model block length in registers, 50. |
uint16 | 1 | 1 | R | Holding (FC03) | |
| 40071 | 40071 | AC total currentI_AC_Current · Raw value is multiplied by 10^SF, where SF is the signed scale factor in register 40075. The scale is not fixed, read the scale factor register. |
uint16 | 1 | A | 1 | R | Holding (FC03) |
| 40072 | 40072 | AC phase A currentI_AC_Current_A · Raw value is multiplied by 10^SF, where SF is the signed scale factor in register 40075. The scale is not fixed, read the scale factor register. |
uint16 | 1 | A | 1 | R | Holding (FC03) |
| 40073 | 40073 | AC phase B currentI_AC_Current_B · Raw value is multiplied by 10^SF, where SF is the signed scale factor in register 40075. The scale is not fixed, read the scale factor register. |
uint16 | 1 | A | 1 | R | Holding (FC03) |
| 40074 | 40074 | AC phase C currentI_AC_Current_C · Raw value is multiplied by 10^SF, where SF is the signed scale factor in register 40075. The scale is not fixed, read the scale factor register. |
uint16 | 1 | A | 1 | R | Holding (FC03) |
| 40075 | 40075 | AC current scale factorI_AC_Current_SF |
int16 | 1 | 1 | R | Holding (FC03) | |
| 40076 | 40076 | AC voltage phase A to BI_AC_Voltage_AB · Raw value is multiplied by 10^SF, where SF is the signed scale factor in register 40082. The scale is not fixed, read the scale factor register. |
uint16 | 1 | V | 1 | R | Holding (FC03) |
| 40077 | 40077 | AC voltage phase B to CI_AC_Voltage_BC · Raw value is multiplied by 10^SF, where SF is the signed scale factor in register 40082. The scale is not fixed, read the scale factor register. |
uint16 | 1 | V | 1 | R | Holding (FC03) |
| 40078 | 40078 | AC voltage phase C to AI_AC_Voltage_CA · Raw value is multiplied by 10^SF, where SF is the signed scale factor in register 40082. The scale is not fixed, read the scale factor register. |
uint16 | 1 | V | 1 | R | Holding (FC03) |
| 40079 | 40079 | AC voltage phase A to neutralI_AC_Voltage_AN · Raw value is multiplied by 10^SF, where SF is the signed scale factor in register 40082. The scale is not fixed, read the scale factor register. Only meaningful in split-phase configurations. |
uint16 | 1 | V | 1 | R | Holding (FC03) |
| 40080 | 40080 | AC voltage phase B to neutralI_AC_Voltage_BN · Raw value is multiplied by 10^SF, where SF is the signed scale factor in register 40082. The scale is not fixed, read the scale factor register. Only meaningful in split-phase configurations. |
uint16 | 1 | V | 1 | R | Holding (FC03) |
| 40081 | 40081 | AC voltage phase C to neutralI_AC_Voltage_CN · Raw value is multiplied by 10^SF, where SF is the signed scale factor in register 40082. The scale is not fixed, read the scale factor register. Only meaningful in split-phase configurations. |
uint16 | 1 | V | 1 | R | Holding (FC03) |
| 40082 | 40082 | AC voltage scale factorI_AC_Voltage_SF |
int16 | 1 | 1 | R | Holding (FC03) | |
| 40083 | 40083 | AC active powerI_AC_Power · Raw value is multiplied by 10^SF, where SF is the signed scale factor in register 40084. The scale is not fixed, read the scale factor register. |
int16 | 1 | W | 1 | R | Holding (FC03) |
| 40084 | 40084 | AC power scale factorI_AC_Power_SF |
int16 | 1 | 1 | R | Holding (FC03) | |
| 40085 | 40085 | AC frequencyI_AC_Frequency · Raw value is multiplied by 10^SF, where SF is the signed scale factor in register 40086. The scale is not fixed, read the scale factor register. |
uint16 | 1 | Hz | 1 | R | Holding (FC03) |
| 40086 | 40086 | AC frequency scale factorI_AC_Frequency_SF |
int16 | 1 | 1 | R | Holding (FC03) | |
| 40087 | 40087 | AC apparent powerI_AC_VA · Raw value is multiplied by 10^SF, where SF is the signed scale factor in register 40088. The scale is not fixed, read the scale factor register. |
int16 | 1 | VA | 1 | R | Holding (FC03) |
| 40088 | 40088 | Apparent power scale factorI_AC_VA_SF |
int16 | 1 | 1 | R | Holding (FC03) | |
| 40089 | 40089 | AC reactive powerI_AC_VAR · Raw value is multiplied by 10^SF, where SF is the signed scale factor in register 40090. The scale is not fixed, read the scale factor register. |
int16 | 1 | var | 1 | R | Holding (FC03) |
| 40090 | 40090 | Reactive power scale factorI_AC_VAR_SF |
int16 | 1 | 1 | R | Holding (FC03) | |
| 40091 | 40091 | AC power factorI_AC_PF · Raw value is multiplied by 10^SF, where SF is the signed scale factor in register 40092. The scale is not fixed, read the scale factor register. |
int16 | 1 | % | 1 | R | Holding (FC03) |
| 40092 | 40092 | Power factor scale factorI_AC_PF_SF |
int16 | 1 | 1 | R | Holding (FC03) | |
| 40093 | 40093 | Lifetime AC energy productionI_AC_Energy_WH · Accumulator that only increases. Raw value is multiplied by 10^SF, where SF is the signed scale factor in register 40095. The scale is not fixed, read the scale factor register. |
uint32 | 2 | Wh | 1 | R | Holding (FC03) |
| 40095 | 40095 | Energy scale factorI_AC_Energy_WH_SF · Listed as uint16 in the manual even though it is a signed scale factor in the SunSpec model. |
uint16 | 1 | 1 | R | Holding (FC03) | |
| 40096 | 40096 | DC input currentI_DC_Current · Raw value is multiplied by 10^SF, where SF is the signed scale factor in register 40097. The scale is not fixed, read the scale factor register. |
uint16 | 1 | A | 1 | R | Holding (FC03) |
| 40097 | 40097 | DC current scale factorI_DC_Current_SF |
int16 | 1 | 1 | R | Holding (FC03) | |
| 40098 | 40098 | DC input voltageI_DC_Voltage · Raw value is multiplied by 10^SF, where SF is the signed scale factor in register 40099. The scale is not fixed, read the scale factor register. |
uint16 | 1 | V | 1 | R | Holding (FC03) |
| 40099 | 40099 | DC voltage scale factorI_DC_Voltage_SF |
int16 | 1 | 1 | R | Holding (FC03) | |
| 40100 | 40100 | DC input powerI_DC_Power · Raw value is multiplied by 10^SF, where SF is the signed scale factor in register 40101. The scale is not fixed, read the scale factor register. |
int16 | 1 | W | 1 | R | Holding (FC03) |
| 40101 | 40101 | DC power scale factorI_DC_Power_SF |
int16 | 1 | 1 | R | Holding (FC03) | |
| 40103 | 40103 | Heat sink temperatureI_Temp_Sink · Raw value is multiplied by 10^SF, where SF is the signed scale factor in register 40106. The scale is not fixed, read the scale factor register. |
int16 | 1 | °C | 1 | R | Holding (FC03) |
| 40106 | 40106 | Temperature scale factorI_Temp_SF |
int16 | 1 | 1 | R | Holding (FC03) | |
| 40107 | 40107 | Operating stateI_Status · 1 off, 2 sleeping, 3 grid monitoring or wake-up, 4 producing power, 5 production curtailed, 6 shutting down, 7 fault, 8 maintenance or setup. |
uint16 | 1 | 1 | R | Holding (FC03) | |
| 40108 | 40108 | Vendor operating state and error codeI_Status_Vendor · Use for firmware versions up to 3.19.xx. Error meanings are in the SolarEdge installation guide. |
uint16 | 1 | 1 | R | Holding (FC03) | |
| 40119 | 40119 | Vendor status with controller type and error codeI_Status_Vendor4 · Upper 16 bits give the controller type, lower 16 bits the error code. Added in version 3.2 of the note. |
uint32 | 2 | 1 | R | Holding (FC03) |
Scale is the number to multiply the raw value by to get the unit. Types with more than one register (32 and 64-bit) follow the word order above.
Open in Modbus Poll
- Download the Modbus Poll blocks file.
- Open Modbus Poll, connect to the device and set its unit ID. The manual does not state the word order for 32-bit values. Check one known value (a voltage or a counter) and switch the setting if it reads wrong.
- In the blocks panel on the right, click Import CSV and pick the file. CSV import is a Pro feature. Without Pro, Modbus Poll polls the first 20 values of your blocks.
- The wire addresses are already in the file, so there is no 0-based or 1-based conversion to do.
Once the values look right, export the tag list to Ignition, Kepware, Node-RED, Home Assistant or Voltrus SCADA.
Source and accuracy
Manufacturer document: Technical Note, SolarEdge Inverters - SunSpec Logging (knowledge-center.solaredge.com)
Version 3.3, October 2026, p. 14-21. Read on 2026-10-24.
Addresses, types, units and scale are taken from the document above. Names and descriptions are written by Voltrus. Firmware versions can differ, so confirm a value on your own device before you rely on it.
Found a mistake? Report it by email with the register address and the manual page.