SunSpec Modbus
Rev 3.3
This document provides a method for reading inverter information(voltage,
current, power, etc.) via the standard Modbus protocol.
© All Rights Reserved
Table of Contents
1. Hardware description ...............................................................................................................................................3
2. Software configuration ............................................................................................................................................ 4
2.1 Open ECU local page ......................................................................................................................................4
2.2 Configure SunSpec Modbus function ..................................................................................................... 4
2.3 Host serial port configuration ................................................................................................................... 4
3. SunSpec (PICS) - Allocation Tables ...........................................................................................................................6
SunSpec Modbus 1
0.Check support
Only ECUs that meet the conditions are supported.
ID rules Version Support
2160XXXXXXXX 1.3.7 or above √
ECU-R
2162XXXXXXXX 2.0.2 or above √
ECU-B 2163XXXXXXXX ALL versions ×
ECU-C 215XXXXXXXXX C1.1.3 or above √
SunSpec Modbus 2
1. Hardware description
We support two modbus modes:Modbus-RTU and Modbus-TCP
RTU needs 485 bus connection, TCP needs network connection.
ECU-R’s RS485 communication interface is between power hole and RJ45 network port.
It can be connected by Serial line.
ECU-C’s RS485 interface is on the surface. It can be connected by Serial line.
SunSpec Modbus 3
2. Software configuration
2.1 Config switch, buad and address
Open “EMAmanager” -> ECU APP -> Workspace -> Modbus Configuration
Figure 1
2.2 Configure SunSpec Modbus function
Select “On” in Switch menu to turn on the SunSpec Modbus function. Select a baud rate in
the second menu. Configure Inverters’ address in the address text box. Finally, click Save to
finish configuration.
2.3 Host serial port configuration
The host’s RS485 port must be configured to the same baud rate, 8 data bits, 1 stop bit, none
parity bit, but ignore baud rate with TCP-modbus.
SunSpec Modbus 4
2. Software configuration
RTU: Must be connected to RS485
Inverter’s modbus address
Serial device
TCP: No need to connect RS485
ECU’s IP address
Inverter’s modbus address
Fixed value:502
NOTE: This tool is for debugging only, other similar tools can also be used.
SunSpec Modbus 5
3. SunSpec (PICS) - Allocation Tables
Basic information table:
eg.(if Address=1)
RS485 send:01 03 9C 44 00 05 EB 8C
Will recv:01 03 0A 41 50 73 79 73 74 65 6D 73 00 35 7B
01:device address(defined in Settings)
03:fixed value,means Read Holding Register
9C 44:Convert to decimal is 40004,so this command is used to read Manufacturer(string)
00 05:How many registers are read
EB 8C:CRC check (CRC-16/MODBUS x16+x15+x2+1)
0A:length of response content,this is 10
41 50 73 79 73 74 65 6D 73 00:response content,10 bytes,Corresponding ascii,get “APsystems”
35 7B:CRC check (CRC-16/MODBUS x16+x15+x2+1)
Note:Modbus-TCP don't need CRC check, but need 6 bytes protocol header
TCP send: 00 01 00 00 00 06 01 03 9C 44 00 05
Will recv: 00 01 00 00 00 0D 01 03 0A 41 50 73 79 73 74 65 6D 73 00
“00 01 00 00”is arbitrary.
“00 06”is the length of data
SunSpec Modbus 6
for single phase inverter monitoring table:
RS485 send:01 03 9C 88 00 05 2B B3
Will recv:01 03 0A 01 C2 01 C2 00 00 00 00 FF FE DE 66
A_SF(sunssf) = 0xFFFE=-2; Amps(A)(uint16) = (0x01C2) * 10^A_SF = 450*10^-2 = 4.5A
RS485 send:01 03 9C AC 00 01 6A 7B
Will recv:01 03 02 00 04 B9 87
Operating State(enum16) = 0x0004=4,means MPPT mode
SunSpec Modbus 7
RS485 send:01 03 9C AE 00 01 CB BB
Will recv:01 03 02 81 23 99 CD
Event1(bitfield32) = 0x8123=1000000100100011B,means exist
GROUND_FAULT,OVER_TEMP,AC_OVER_VOLT,MEMORY_LOSS,HW_TEST_FAILURE at the same time.
for single phase inverter monitoring using float values:
RS485 send:01 03 9C BC 00 02 2B BF
Will recv:01 03 04 40 90 51 EC D3 C3
Amps = IEEE754(0x409051EC) = 4.51,units A
SunSpec Modbus 8
for three phase inverter monitoring table:
RS485 send:01 03 9C 88 00 05 2B B3
Will recv:01 03 0A 05 49 01 C2 01 C3 01 C4 FF FE 88 84
A_SF(sunssf) = 0xFFFE=-2;
Amps(A)(uint16) = (0x0549) * 10^A_SF = 1353*10^-2 = 13.53A
Amps PhaseA = (0x01C2) * 10^A_SF = 450*10^-2 = 4.5A
Amps PhaseB = (0x01C3) * 10^A_SF = 451*10^-2 = 4.51A
Amps PhaseC = (0x01C4) * 10^A_SF = 452*10^-2 = 4.52A
SunSpec Modbus 9
RS485 send:01 03 9C AC 00 01 6A 7B
Will recv:01 03 02 00 04 B9 87
Operating State(enum16) = 0x0004=4,means MPPT mode
RS485 send:01 03 9C AE 00 01 CB BB
Will recv:01 03 02 81 23 99 CD
Event1(bitfield32) = 0x8123=1000000100100011B,means exist
GROUND_FAULT,OVER_TEMP,AC_OVER_VOLT,MEMORY_LOSS,HW_TEST_FAILURE at the same time.
for three phase inverter monitoring using float values:
RS485 send:01 03 9C BC 00 02 2B BF
Will recv:01 03 04 41 58 7A E1 8C F4
Amps = IEEE754(0x41587AE1) = 13.53,units A
SunSpec Modbus 10
Immediate Inverter Controls :
Turn on inverter:
RS485 send:01 10 9C FC 00 01 02 00 01 2F A5
Will recv:01 10 9C FC 00 01 EF A9
Shut down inverter:
RS485 send:01 10 9C FC 00 01 02 00 00 EE 65
Will recv:01 10 9C FC 00 01 EF A9
SunSpec Modbus 11
DC Data(float):
RS485 send:01 03 9D 36 00 02 0B A9
Will recv:01 03 04 42 F6 CC CD 9A EC
DC Watt(DCW1)= IEEE754(0x42F6CCCD) = 123.4,units W
DC Watt(DCW1) = IEEE754(0x42F6CCCD) = 123.4,units W
SunSpec Modbus 12