Se Modbus Interface For Solaredge Terramax Inverter Technical Note
Se Modbus Interface For Solaredge Terramax Inverter Technical Note
0 May 2024
Overview
SolarEdge inverters supports the 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, 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, employing the direct connection alongside a SolarEdge Monitoring platform
connection is possible- and recommended. Connection to the Monitoring platform enables all
the monitoring benefits, primarily:
Proactive installer maintenance and real-time troubleshooting by SolarEdge support, using
the physical mapping available on 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 used to connect data collection terminals to a
centralized processing unit. SolarEdge products use Modbus to perform SunSpec messaging
over two types of physical or 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 – either a single Modbus RTU or a single
Modbus TCP.
SunSpec support
The SolarEdge TerraMax inverter is SunSpec-supported and can be configured by SetApp.
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 connections to a non-SolarEdge monitoring
device. For a Leader-Follower connection between TerraMax SolarEdge inverters, CAN-Bus must
be used.
The SolarEdge TerraMax inverter with SetApp configuration has one built-in RS485-1 and one
CAN-Bus port. The Lead inverter connects to up to 12 follower inverters, through the CAN-Bus
Port.
Option 2 – Connect the Leader only to the Ethernet router via Ethernet cables.
To reach the main setup menu, access SetApp and tap Commissioning Site Communication:
1
Supported only in split-phase configurations (Japanese grid and 240V grid in North America)
Address
(base Size Name Type Description
(base 1)
0)
Value = "SunS" (0x53756e53).
40000 40001 2 C_SunSpec_ID uint32 Uniquely identifies this as a SunSpec
MODBUS Map
Value = 0x0001. Uniquely identifies
40002 40003 1 C_SunSpec_DID uint16 this as a SunSpec Common Model
Block
40003 40004 1 C_SunSpec_Length uint16 65 = Length of block in 16-bit registers
String(3 Value Registered with SunSpec =
40004 40005 16 C_Manufacturer
2) "SolarEdge "
String(3
40020 40021 16 C_Model SolarEdge Specific Value
2)
String(1
40044 40045 8 C_Version SolarEdge Specific Value
6)
String(3
40052 40053 16 C_SerialNumber SolarEdge Unique Value
2)
40068 40069 1 C_DeviceAddress uint16 MODBUS Unit ID
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_VAR int16 VAR Reactive Power
40090 40091 1 I_AC_VAR_SF int16 Scale factor
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)
40091 40092 1 I_AC_PF int16 % Power Factor
40092 40093 1 I_AC_PF_SF int16 Scale factor
40093 40094 2 I_AC_Energy_WH acc32 WattHours AC Lifetime Energy
production
40095 40096 1 I_AC_Energy_WH_ uint16 Scale factor
SF
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
Troubleshooting Alerts.
2. Issue a Commit Power Control Settings command on address 0xF100 (set to 1) to put the
settings into effect. This command stops production and restarts the inverter.
3. Initialize the enhanced power control settings on addresses 0xF308–0xF320.
4. Enable Dynamic Power Control (set to 1). It is 0 (disabled) by default.
NOTE
Dynamic Power Control should be enabled only after the initialization of the enhanced power
control operation in the previous step.
Configurations of this map can also be changed dynamically.
Fall-back CosPhi sets the fallback limit for the dynamic CosPhi control.
Active Power Ramp-up Rate controls the ramp-up rate of the dynamic active power change.
It is set as the percentage per minute of the inverter’s active power limit register setting. A
value of -1 indicates that the ramp-up is disabled and that the change is immediate.
Active Power Ramp-down Rate controls the ramp-down rate of the dynamic active power
change. It is set as the percentage per minute of the inverter’s active power limit register
setting. A value of -1 indicates that the ramp-down is disabled and that the change is
immediate.
Reactive Power Ramp-up Rate controls the ramp-up rate of the dynamic reactive power
change. It is set as the percentage per minute of the inverter’s reactive power limit register
setting. A value of -1 indicates that the ramp-up is disabled and that the change is
immediate.
Reactive Power Ramp-down Rate controls the ramp-down rate of the dynamic reactive
power change. It is set as the percentage per minute of the inverter’s reactive power limit
register setting. A value of -1 indicates that the ramp-down is disabled and that the change
is immediate.
Phi Change Rate controls the change rate of the dynamic angle change. It is set in radians
per minute.
The properties of the registers described above are detailed in the table below.
Value
Address Size R/W Name Type Units
Range
F308 1 R/W Active/Reactive Preference Uint16 0 or 1 N/A
F309 1 R/W CosPhi/Q Preference Uint16 0 or 1 N/A
F310 2 R/W Command Timeout Uint32 0-65535 Sec
F312 2 R/W Fall-back Active Power Limit Float32 0-100 %
F314 2 R/W Fall-back Reactive Power Limit Float32 -100 to %
+100
F316 2 R/W Fall-back CosPhi Float32 -1 to 1 N/A
F318 2 R/W Active Power Ramp-up Rate Float32 -1*, 0-100 %/min
F31A 2 R/W Active Power Ramp-down Rate Float32 -1*, 0-100 %/min
F31C 2 R/W Reactive Power Ramp-up Rate Float32 -1*, 0-100 %/min
F31E 2 R/W Reactive Power Ramp-down Float32 %/min
-1*, 0-100
Rate
F320 2 R/W Phi Change Rate Float32 rad/mi
0 - pi
n
Dynamic Active Power Limit controls the active power limit of the inverter dynamically. It is
set as the percentage of the Active Power Limit register setting. The dynamic active power
limit can be sent in Modbus broadcast. In broadcast mode, the leader inverter sends a
request to all followers. No response is returned.
The Modbus address space consists of 256 addresses:
0 From 1 to 247 From 248 to 255
Broadcast address Individual follower inverter Reserved
addresses
Dynamic Reactive Power Limit: This register dynamically controls the reactive power limit of
the inverter. It is set as the percentage of the Reactive Power Limit register setting.
Dynamic Cos Phi Limit controls the CosPhi of the inverter dynamically. The sign of CosPhi
determines the sign of the expected reactive power.
Value
Address Size R/W Name Type Units
Range
F322 2 R/W Dynamic Active Power Float32 %
0-100
Limit
F324 2 R/W Dynamic Reactive Float32 -100 to %
Power Limit +100
F326 2 R/W Dynamic CosPhi Limit Float32 -1 to 1 N/A
When accessing the registers, note the following:
Each register contains two bytes in big-endian order (MSB-LSB).
Each 32-bit value spans over two registers in the little-endian word order (LSB-MSB).
• If the controller does not support the little-endian word order, another map using
the big-endian word order correlating to this one exists at an offset of 0x800 from
this map.
• The two registers must be written together using Modbus function 16.
The following table summarizes all the registers mentioned above, in order of address:
Address Size R/W Name Type Value Range Units
F300 1 R/W Enable Dynamic Power Control Uint16 0 or 1 N/A
F304 2 R Max Active Power Float32 Inverter W
rating
F308 1 R/W Active/Reactive Preference Uint16 0 or 1 N/A
F309 1 R/W CosPhi/Q Preference Uint16 0 or 1 N/A
F310 2 R/W Command Timeout Uint32 0-65535 Sec
F312 2 R/W Fall-back Active Power Limit Float32 0-100 %
F314 2 R/W Fall-back Reactive Power Limit Float32 -100 to +100 %
F316 2 R/W Fall-back CosPhi Float32 -1 to 1 N/A
F318 2 R/W Active Power Ramp-up Rate Float32 -1*, 0-100 %/min
F31A 2 R/W Active Power Ramp-down Rate Float32 -1*, 0-100 %/min
NOTE:
The KVAR value should be set to
within ±60% of the kW value printed
on the inverter nameplate.
For example, if “100 kW” is printed
on the inverter, then the value
should be set between -60 KVAR
and +60 KVAR.
Function code Executes commands from the leader device to follower 0x00
devices
Main functions:
0x03 – Read holding register
0x06 – Preset single register
0x10 – Preset multiple registers
Data Numerical value 0x000000
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 data to all devices on the bus; the client does not
receive a response.
For example:
Broadcast write 1 to address 0xF300 in all followers.
Client request register
Field Description Range
(Hexadecimal)
Transaction processing Client identifier. The user cannot change this XXXX
identifiers parameter.
Length of the following (sizeof(modbusID) = 1 + SizeOf(functionCode) = 1 + 0x06
fields
SizeOf(Data) = 4) = 06
For example:
Write 600ms to Q filter time in register D21E.
Use the following fields to structure your command:
Field Description Range
(Hexadecimal)
Transaction processing Client identifier. The user cannot change this XXXX
identifiers parameter.
Length of the following (sizeof(modbusID) = 1 + SizeOf(functionCode) = 1 0x06
fields + SizeOf(Data) = 4) = 06
Modbus ID Identifies a device in a network 0x01
Function code Preset multiple rigester 0x10
Data Numerical values 0xD2 1E 00 02 04 00
00 02 58. (write 600 to
0xD21E)
NOTE
The adjustable parameters in Modbus registers are intended for long-term storage.
Periodic changes in this parameter may damage the flash memory.
interface.
Timing definitions
Timing performance
Command type Timing Definitions Time [s]
Read Response time (includes Processing time) < 0.5 s
Response time (includes Processing time) < 0.5 s
Reaction time of Active Power (P) <1s
Write
setpoint (dynamic) Reactive Power (Q) <4s
Commit < 1.5 s1
NOTE
Changing the number of follower devices, or performing single/multiple
read/write commands has a minor effect on response time.
Adding a Communication Commercial Gateway (CCG) as an interface may cause
longer response times.
To optimize the reaction time, set the following register in the table below to 600ms. This also
requires a commit command:
Address Name Size Type Units
(base 0) (base 1)
D21E D21F QFilterTime 2 uint32 ms
1Static write command needs to be followed by a commit. This may cause a longer response time.
https://www.solaredge.com/service/support
Before contacting us, please make sure you have the following information at hand:
The 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.
The 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.