sunspec-implementation-technical-note
sunspec-implementation-technical-note
7, May 2024
Contents
Overview
SolarEdge inverters support transmission of inverter-level monitoring data directly from the
inverter to a local non-SolarEdge device using the SunSpec open protocol for interoperability
between devices in renewable energy systems. This option can be used alongside the
connection to the SolarEdge monitoring server. This document describes the connection
method and the protocol and configurations needed to implement this feature.
Direct connection to a monitoring device is useful when a network connection is unavailable,
when extensive custom data processing is required, or when authorities require direct access to
monitoring data.
In many cases, it is possible – and recommended – to employ the direct connection alongside a
SolarEdge monitoring platform connection. Connection to the monitoring platform enables all
the monitoring benefits, primarily:
Proactive installer maintenance and real time troubleshooting by SolarEdge support, using
with the physical mapping available only in the monitoring platform
Module-level monitoring
Communication Technologies
SolarEdge uses an open, industry-standard communications stack to provide efficient messaging
between SolarEdge and third-party devices and applications.
SunSpec
SunSpec is an application-layer communications protocol designed to achieve interoperability
between Distributed Energy Resource (DER) components and smart grid applications.
Modbus
Modbus is a serial communications protocol typically used to connect data collection terminals
to a centralized processing unit. SolarEdge products use Modbus to perform SunSpec
messaging over two types of physical/link-layer channels:
Modbus RTU: Remote Terminal Unit (RTU) Modbus over a serial RS485 connection
Modbus TCP: Modbus over an Ethernet connection
SolarEdge systems support a single Modbus Leader only – either single Modbus RTU or
single Modbus TCP.
To check the inverter firmware versions (for inverters with the LCD):
1. Short press the LCD light button until the following screen is displayed:
I D : # # # # # # # # # #
D S P 1 / 2 : x . x x x x / x . x x x x
C P U : 0 0 0 2 . 0 4 9 6
C o u n t r y : X X X X X
Physical Connection
The connection is performed using an RS485 connector with a twisted pair cable. The
transmission mode in SolarEdge inverters is set to RTU (binary).
The COM port default properties are: 115200 bps, 8 data bits, no parity, 1 stop bit, no flow
control. Baud rate can be changed between 9600bps to 115200bps (supported from CPU
version 2.0549).
The RS485 bus can be configured to support connection either to a non-SolarEdge monitoring
device or Leader-Follower connection between SolarEdge inverters. Therefore, a Follower
inverter cannot communicate simultaneously with a Leader inverter and with a non-SolarEdge
monitoring device on the same RS485 bus.
All SolarEdge inverters with SetApp configuration have two built-in RS485 ports. An inverter can
act as Leader on both ports simultaneously. Each port on a leader inverter can connect to up to
31 follower inverters. The two ports therefore support connectivity with 62 follower inverters.
A Commercial Gateway with LCD can act as Leader on one of the built-in RS485 ports and on
the RS485 Plug-in.
For more information on the RS485 Plug-in, see:
https://www.solaredge.com/sites/default/files/RS485_expansion_kit_installation_guide.pdf
NOTE
For connectivity purposes, the Synergy Manager is considered a single inverter.
Option 2 – Use RS485-1 to connect Follower inverters to the Leader; use either RS485-2 or
RS485-E to connect the Leader to a non-SolarEdge monitoring device. Every inverter in the
Option 1 (direct connection) – Connect each inverter to the router via Ethernet cables.
Connection to the monitoring platform and to a non-SolarEdge monitoring device using a Commercial
Gateway
Use the RS485-2 bus for connection to a non-SolarEdge monitoring device. Every inverter
connected to the RS485 bus should be configured to a different device ID (MODBUS ID).
If required, use the RS485-E bus for connecting a second chain of inverters.
Connection to a non-SolarEdge monitoring device (with connection to the SolarEdge monitoring platform)
Option 1 (direct connection) – Connect each inverter to the Ethernet router via Ethernet cables.
Option 2 – Connect the Leader only to the Ethernet router via Ethernet cables.
Connect a second chain of the inverters to the Leader inverter using RS485-2/RS485-E.
If required, use the RS485-E bus for connecting a second chain of inverters.
To reach the main setup menu, access SetApp and tap Commissioning Site Communication:
To configure the inverters and gateway (when used with the Commercial
Gateway):
1. Inverter configuration: For all inverters, verify the following RS485 bus settings under the Site
Communication menu:
RS485-1 Protocol SolarEdge SolarEdge Follower
RS485-1 Device ID [a unique value 1…247]
2. Commercial Gateway configuration using the device display: Use RS485-1 to connect to the
inverters. RS485-1 bus configuration is as follows:
Communication RS485-1 Conf Device Type SolarEdge
Communication RS485-1 Conf Protocol Leader
Communication RS485-1 Conf Follower Detect
The Commercial Gateway should report the correct number of Follower inverters. If it does not,
verify the connections and terminations.
3. Use RS485-2 to connect the Commercial Gateway to the non-SolarEdge monitoring device.
Configure the RS485-2 bus settings as follows, using the device display:
Communication RS485-2 Conf Protocol SunSpec (Non-SE Logger)
The Commercial Gateway device ID is irrelevant for communications, but needs to be set to a
different ID than the one set for the inverters.
Communication RS485-2 Conf Device ID [use one of the higher IDs (e.g. 247) to make sure it
is out of scope]
The default baud rate is 115200 bps. If a different baud rate is required, select: Communication
RS485-2 Conf Baud Rate
4. Make sure the device ID of the non-SolarEdge monitoring device is different from all other
device IDs configured in the inverters and gateways.
5. Connect the Commercial Gateway to router via the Ethernet interface and configure the
following settings using the device display:
Communication Server LAN
Communication LAN Conf Set DHCP [Select Enable for DHCP or Disable for static IP
configuration]
For Static DHCP setting, configure as follows:
Communication LAN Conf Set IP [Set inverters’ IP]
Communication LAN Conf Set Mask [Set inverters’ subnet mask]
Communication LAN Conf Set Gateway [Set inverters’ gateway]
Communication LAN Conf Set DNS [Set inverters’ DNS]
6. If the router is connected to the server, select Commissioning Status and verify that
“S_OK” is displayed on the Status page.
Here, it is used for remote 3rd party monitoring and control. MODBUS TCP is agnostic of the
server connection. It works only over LAN. When configured, MODBUS TCP does not initiate a
connection - the server waits for a client to connect. Only one connection is supported.
NOTE
The MODBUS TCP function is disabled by default. When enabled, it supports TCP port 1502 by
default. Port number can be reconfigured.
NOTE
The TCP server idle time is 2 minutes. In order to leave the connection open, the request
should be made within 2 minutes. The connection can remain open without any
MODBUS requests.
2. Commercial Gateway configuration: Use RS485-1 to connect to the inverters. RS485-1 bus
configuration is as follows:
Communication RS485-1 Conf Device Type SolarEdge
Communication RS485-1 Conf Protocol Master
Communication RS485-1 Conf Follower Detect
The Commercial Gateway should report the correct number of followers. If it does not, verify the
connections and terminations.
3. Use RS485-2 to connect to the non-SolarEdge monitoring device. RS485-2 bus configuration
is as follows:
Communication RS485-2 Conf Device Type Non-SE Logger
Communication RS485-2 Conf Protocol SunSpec
The Commercial Gateway Device ID is irrelevant for communications, but needs to be set to a
different ID than the one set for the inverters.
Communication RS485-2 Conf Device ID [use one of the higher ID’s (e.g. 247) to make sure it
is out of scope]
The default baud rate is 115200 bps. If a different baud rate is required, select: Communication
RS485-2 Conf Baud Rate
4. Make sure the device ID of the non-SolarEdge monitoring device is different from all other
device IDs configured in the inverters and gateways.
5. Connect the Commercial Gateway to router via the Ethernet interface and configure the
following settings:
Communication Server LAN
Communication LAN Conf Set DHCP [Select Enable for DHCP or Disable for static IP
configuration]
For Static DHCP setting, configure as follows:
Communication LAN Conf Set IP [Set inverters’ IP]
Communication LAN Conf Set Mask [Set inverters’ subnet mask]
Communication LAN Conf Set Gateway [Set inverters’ gateway]
Communication LAN Conf Set DNS [Set inverters’ DNS]
6. If the router is connected to the server, verify that the LCD panel displays <S_OK>.
7. Verify that the LCD panel of all inverters is <S_OK>.
Here, it is used for remote 3rd party monitoring and control. MODBUS TCP is agnostic of
the server connection. It works only over LAN. When configured, MODBUS TCP does not
initiate a connection. The server waits for a client to connect. Only one connection is
supported.
NOTE
The MODBUS TCP function is disabled by default. When enabled, it supports TCP port 502 by
default. The port number can be reconfigured.
MODBUS over TCP Configuration
Error messages:
Disconnected – The Ethernet cable is not connected
Gateway Ping Failed – A ping to the 1st router failed
No IP – Either no DHCP configuration or static IP configuration (no DHCP server that
assigned an IP address) or need to define a static IP.
NOTE
The TCP server idle time is two minutes. In order to leave the connection open, the request
should be made within 2 minutes. The connection can remain open without any MODBUS
requests.
The register mapping can be downloaded from the SunSpec Alliance web page:
http://www.sunspec.org/
All parameters are defined as in the SunSpec Common block definition, except for the
C_Options register, which is set to NOT_IMPLEMENTED.
C_Manufacturer is set to SolarEdge.
C_Model is set to the appropriate inverter model, e.g. SE5000.
C_Version contains the CPU software version with leading zeroes, e.g. 0002.0611.
C_SerialNumber contains the inverter serial number.
C_DeviceAddress is the device MODBUS ID.
Address
Size Name Type Description
(base 0) (base 1)
Value = "SunS" (0x53756e53). Uniquely identifies this
40000 40001 2 C_SunSpec_ID uint32
as a SunSpec MODBUS Map
Value = 0x0001. Uniquely identifies this as a SunSpec
40002 40003 1 C_SunSpec_DID uint16
Common Model Block
C_SunSpec_Lengt
40003 40004 1 uint16 65 = Length of block in 16-bit registers
h
40004 40005 16 C_Manufacturer String(32) Value Registered with SunSpec = "SolarEdge "
40020 40021 16 C_Model String(32) SolarEdge Specific Value
40044 40045 8 C_Version String(16) SolarEdge Specific Value
40052 40053 16 C_SerialNumber String(32) SolarEdge Unique Value
40068 40069 1 C_DeviceAddress uint16 MODBUS Unit ID
1
Supported only in split-phase configurations (Japanese grid and 240V grid in North America)
Address
Size Name Type Units Description
(base 0) (base 1)
40069 40070 1 C_SunSpec_DID uint16 101 = single phase
102 = split phase
103 = three phase
40070 40071 1 C_SunSpec_Length uint16 Registers 50 = Length of model block
40071 40072 1 I_AC_Current uint16 Amps AC Total Current value
40072 40073 1 I_AC_CurrentA uint16 Amps AC Phase A Current value
40073 40074 1 I_AC_CurrentB uint16 Amps AC Phase B Current value
40074 40075 1 I_AC_CurrentC uint16 Amps AC Phase C Current value
40075 40076 1 I_AC_Current_SF int16 AC Current scale factor
40076 40077 1 I_AC_VoltageAB uint16 Volts AC Voltage Phase AB value
40077 40078 1 I_AC_VoltageBC uint16 Volts AC Voltage Phase BC value
40078 40079 1 I_AC_VoltageCA uint16 Volts AC Voltage Phase CA value
40079 40080 1 I_AC_VoltageAN 1 uint16 Volts AC Voltage Phase A to N value
40080 40081 1 I_AC_VoltageBN 1 uint16 Volts AC Voltage Phase B to N value
40081 40082 1 I_AC_VoltageCN 1 uint16 Volts AC Voltage Phase C to N value
40082 40083 1 I_AC_Voltage_SF int16 AC Voltage scale factor
40083 40084 1 I_AC_Power int16 Watts AC Power value
40084 40085 1 I_AC_Power_SF int16 AC Power scale factor
40085 40086 1 I_AC_Frequency uint16 Hertz AC Frequency value
40086 40087 1 I_AC_Frequency_SF int16 Scale factor
40087 40088 1 I_AC_VA int16 VA Apparent Power
40088 40089 1 I_AC_VA_SF int16 Scale factor
40089 40090 1 I_AC_VAR2 int16 VAR Reactive Power
40090 40091 1 I_AC_VAR_SF2 int16 Scale factor
1
Supported only in split-phase configurations (Japanese grid and 240V grid in North America).
2
For details, see the Power Configurations and Correlated Outcomes under Reactive Power Configuration
in SolarEdge Inverters, Power Control Options.
Address
Size Name Type Units Description
(base 0) (base 1)
40091 40092 1 I_AC_PF1 int16 % Power Factor
40092 40093 1 I_AC_PF_SF1 int16 Scale factor
40093 40094 2 I_AC_Energy_WH acc32 WattHours AC Lifetime Energy production
40095 40096 1 I_AC_Energy_WH_SF uint16 Scale factor
40096 40097 1 I_DC_Current uint16 Amps DC Current value
40097 40098 1 I_DC_Current_SF int16 Scale factor
40098 40099 1 I_DC_Voltage uint16 Volts DC Voltage value
40099 40100 1 I_DC_Voltage_SF int16 Scale factor
40100 40101 1 I_DC_Power int16 Watts DC Power value
40101 40102 1 I_DC_Power_SF int16 Scale factor
40103 40104 1 I_Temp_Sink int16 Degrees C Heat Sink Temperature
40106 40107 1 I_Temp_SF int16 Scale factor
40107 40108 1 I_Status uint16 Operating State
40108 40109 1 I_Status_Vendor uint16 Vendor-defined operating state and
error codes. For error description,
meaning and troubleshooting, refer
to the SolarEdge Installation Guide.
1
For details, see the Power Configurations and Correlated Outcomes under Reactive Power Configuration
in SolarEdge Inverters, Power Control Options.
Meter Models
The SunSpec Alliance Interoperability Specification describes the data models and MODBUS
register mappings for meter devices used in Renewable Energy systems. This section defines the
models for:
Single Phase Meter
Split Phase Meter
WYE (4-wire) Meter
Delta (3-wire)Meter
Energy Value
The energy value is represented by a 32-bit unsigned integer accumulator with a scale factor.
Values for import and export are provided. Unsupported or invalid accumulators may return
0x00000000. Power signs and Energy quadrants are per IEEE 1459-2000.
NOTE
Only enabled meters are readable, i.e. if meter 1 and 3 are enabled, they are readable as 1st
meter and 2nd meter (and the 3rd meter isn't readable). The meter type can be read from the Common
block Options field (the same strings that we use in the menus).
Meter 1
Address Size Name Type Units Description
(base 0) (base 1)
Common Block
40121 40122 1 C_SunSpec_DID uint16 N/A Value = 0x0001. Uniquely
identifies this as a SunSpec
Common Model Block
40122 40123 1 C_SunSpec_Length uint16 N/A 65 = Length of block in 16-bit
registers
40123 40124 16 C_Manufacturer String(32) N/A Meter manufacturer
40139 40140 16 C_Model String(32) N/A Meter model
40155 40156 8 C_Option String(16) N/A Export + Import, Production,
consumption,
40163 40164 8 C_Version String(16) N/A Meter version
40171 40172 16 C_SerialNumber String(32) N/A Meter SN
40187 40188 1 C_DeviceAddress uint16 N/A Inverter Modbus ID
1
The SolarEdge (SE) Meter does not support reading Line-to-Line (L-L) voltages via MODBUS Sunspec.
Meter 2
Address Size Name Type Units Description
(base 0) (base 1)
Common Block
40295 40296 1 C_SunSpec_DID uint16 N/A Value = 0x0001. Uniquely identifies this as a
SunSpec Common Model Block
40296 40297 1 C_SunSpec_Length uint16 N/A 65 = Length of block in 16-bit registers
40297 40298 16 C_Manufacturer String(32 N/A Meter manufacturer
)
40313 40314 16 C_Model String(32 N/A Meter model
)
40329 40330 8 C_Option String(16 N/A Export+Import, Production, Consumption,
)
40337 40338 8 C_Version String(16 N/A Meter version
)
40345 40346 16 C_SerialNumber String(32 N/A Meter SN
)
40361 40362 1 C_DeviceAddress uint16 N/A Inverter Modbus ID
Identification
40362 40363 1 C_SunSpec_DID uint16 N/A Well-known value. Uniquely identifies this as a
SunSpec MODBUS Map:
Single Phase (AN or AB) Meter (201)
Split Single Phase (ABN) Meter (202)
Wye-Connect Three Phase (ABCN) Meter (203)
Delta-Connect Three Phase (ABC) Meter(204)
40363 40364 1 C_SunSpec_Length uint16 Registers Length of meter model block
Current
40364 40365 1 M_AC_Current int16 Amps AC Current (sum of active phases)
40365 40366 1 M_AC_Current_A int16 Amps Phase A AC Current
40366 40367 1 M_AC_Current_B int16 Amps Phase B AC Current
40367 40368 1 M_AC_Current_C int16 Amps Phase C AC Current
40368 40369 1 M_AC_Current_S F int16 SF AC Current Scale Factor
Voltage
Line to Neutral Voltage
40369 40370 1 M_AC_Voltage_L int16 Volts Line to Neutral AC Voltage (average of
N active phases)
40370 40371 1 M_AC_Voltage_A int16 Volts Phase A to Neutral AC Voltage
N
40371 40372 1 M_AC_Voltage_B int16 Volts Phase B to Neutral AC Voltage
N
40372 40373 1 M_AC_Voltage_C int16 Volts Phase C to Neutral AC Voltage
N
1
The SolarEdge (SE) Meter does not support reading Line-to-Line (L-L) voltages via MODBUS Sunspec.
Meter 3
Address Size Name Type Units Description
(base 0) (base 1)
Common Block
40469 40470 1 C_SunSpec_DID uint16 N/A Value = 0x0001. Uniquely identifies this as a
SunSpec Common Model Block
40470 40471 1 C_SunSpec_Length uint16 N/A 65 = Length of block in 16-bit registers
40472 40473 16 C_Manufacturer String(32 N/A Meter manufacturer
)
40488 40489 16 C_Model String(32 N/A Meter model
)
40504 40505 8 C_Option String(16 N/A Export+Import, Production, Consumption,
)
40512 40513 8 C_Version String(16 N/A Meter version
)
40520 40521 16 C_SerialNumber String(32 N/A Meter SN
)
40536 40537 1 C_DeviceAddress uint16 N/A Inverter Modbus ID
Identification
40537 40538 1 C_SunSpec_DID uint16 N/A Well-known value. Uniquely identifies this as a
SunSpec MODBUS Map:
Single Phase (AN or AB) Meter (201)
Split Single Phase (ABN) Meter (202)
Wye-Connect Three Phase (ABCN) Meter (203)
Delta-Connect Three Phase (ABC) Meter(204)
40538 40539 1 C_SunSpec_Length uint16 Registers Length of meter model block
Current
40539 40540 1 M_AC_Current int16 Amps AC Current (sum of active phases)
40540 40541 1 M_AC_Current_A int16 Amps Phase A AC Current
40541 40542 1 M_AC_Current_B int16 Amps Phase B AC Current
40542 40543 1 M_AC_Current_C int16 Amps Phase C AC Current
1
The SolarEdge (SE) Meter does not support reading Line-to-Line (L-L) voltages via MODBUS Sunspec.
NOTE
When Modbus connection is over UDP, the Server Response Register has two extra
bytes for CRC.
When encoding the registers, note the following:
Some commands require two registers. You must write the two registers together
using Modbus function 16.
Each register contains two bytes in Big-Endian order from the most significant
byte to the least significant byte (MSB-LSB).
Each 32-bit value spans over two registers in the Little-Endian word order from
the least significant byte to the most significant byte (MSB-LSB).
If the controller does not support the Little-Endian word order, there is another
linked map using the Big-Endian word order at an offset of 0x800.
Modbus Broadcast
Modbus Broadcast write command sends the data to all devices on the bus; the client does not
receive a response.
Example of Modbus Broadcast command:
Broadcast write 1 to address 0xF300 in all slaves.
Client Request Register
Field Description Range
(Hexadecimal)
Transaction processing Client identifier. This parameter cannot be changed by XXXX
identifiers the installer.
Length of the following (sizeof(modbusID) = 1 + SizeOf(functionCode) = 1 + 0x06
fields
SizeOf(Data) = 4) = 06
NOTE
The adjustable parameters in Modbus registers are intended for long-term storage. Periodic changes in
this parameter can possibly damage the flash memory.
Timing Definitions
SE Modbus
Modbus Client
Device
Write request
Response time
Processing time
Write response
Data transfer
interval
Read request
Processing time
Read
response
NOTE
The effect on the response time is minor, according to the following:
Number of follower devices
Single or multiple read/write commands
When you add CCG as an interface, it results in a longer response time
1
To optimize the reaction time, set the Example of Write Single Register to Modify Q Filter command:. You must follow this command with a commit.
2
You need to follow static write commands with a commit. This can cause a longer response time.
https://www.solaredge.com/service/support
Before contacting us, make sure to have the following information at hand:
Model and serial number of the product in question.
The error indicated on the product SetApp mobile application LCD screen or on the monitoring
platform or by the LEDs, if there is such an indication.
System configuration information, including the type and number of modules connected
and the number and length of strings.
The communication method to the SolarEdge server, if the site is connected.
The product's software version as it appears in the ID status screen.