Sungrow Inverter Modbus Register Map

How to read a Sungrow SG string inverter or SH hybrid over Modbus TCP or RS485. Sungrow's protocol has three habits that trip up almost everyone the first time: the documented address is one more than the one you request, measurements are input registers (FC04) while the same numbers under FC03 mean something else, and 32-bit values come low word first. This page covers all three, then the registers you need for monitoring. SMA, Fronius or SolarEdge instead? They use SunSpec.

ModbusManager Pro dashboard for a Sungrow SG10RT inverter: active power gauge 8.55 kW, work state Run, today's, total and monthly yield, power factor, MPPT1 and MPPT2 voltage and current, temperature, frequency and a DC versus AC power trend
The free workspace below, reading a simulated SG10RT with the register map on this page — FC04, address minus one, low word first.

Connection Settings

PathProtocol / portUnit IDNotes
Built-in Ethernet (commercial CX / HX models)Modbus TCP, 5021 (in practice)Default IP 192.168.1.100, subnet 255.255.0.0 per Sungrow's protocol document.
WiNet-S / WiNet-S2 dongle (residential RS / RT, SH hybrids)Modbus TCP, 5021 (in practice)Modbus TCP has to be opened on the dongle first (below). Not through iHomeManager.
RS485 terminalsModbus RTU, 9600 baud, 8N11–247 (SH default 1)Two-wire RS485. Wait for each reply (up to about a second on SH) before the next request.
Opening Modbus TCP on a WiNet-S: in the WiNet-S web page or the iSolarCloud app, under the communication module's settings, set the Modbus TCP (port 502) option to open, and either turn the IP whitelist off or add your PC's address. Update the dongle firmware if the option is missing. Sungrow's own WiNet-S manual does not describe this; the steps come from installers and integrators, so the menu wording may differ on your firmware.

The Three Rules

1. Request the documented address minus one

Sungrow's tables list addresses such as 5000, and the document itself says to subtract 1: register 5000 goes on the wire as 4999 (0x1387). Its worked example reads 01 04 13 87 00 02 to get documented registers 5000–5001. The addresses are plain numbers, not 3xxxx/4xxxx notation. If your tool adds the offset itself (1-based addressing), enter the document's number unchanged.

2. Measurements are input registers (FC04)

Sungrow uses both register types, and they reuse the same numbers. The running data — power, voltages, yield, state — is in the input registers, read with FC04 ("3x" in the document). The holding registers (FC03 to read, FC06/FC16 to write) are settings. At documented 5000–5005 the holding registers hold the system clock, so an FC03 read of "5000" returns the current year, not the device type.

3. 32-bit values are low word first

For U32/S32 values Sungrow sends the low word at the lower address (bytes within each word stay big-endian). Sungrow's own example: the two registers 0x2BF6, 0x000B combine to 0x000B2BF6 = 732 150. Read as high-word-first, the totals are wildly wrong.

Not on this model: a register a model does not have reads 0xFFFF (U16), 0x7FFF (S16), 0xFFFFFFFF or 0x7FFFFFFF (32-bit) — for example MPPT3 on a two-MPPT inverter. Treat those as "not available", not as data.

SG String Inverter Registers

Input registers, read with FC04. Doc is the address in Sungrow's table; wire is what you request.

DocWireParameterTypeScaleUnit
49904989Serial number (10 registers)UTF-8——
50004999Device type codeU16code—
50015000Nominal active powerU160.1kW
50025001Output type (0 two-phase, 1 3P4L, 2 3P3L)U16enum—
50035002Daily yieldU160.1kWh
50045003Total yieldU321kWh
50065005Total running timeU321h
50085007Internal temperatureS160.1°C
5011 / 50125010 / 5011MPPT1 voltage / currentU160.1V / A
5013 / 50145012 / 5013MPPT2 voltage / currentU160.1V / A
5015 / 50165014 / 5015MPPT3 voltage / currentU160.1V / A
50175016Total DC powerU321W
5019 / 20 / 215018 / 19 / 20Phase A / B / C voltage (line voltage on 3P3L)U160.1V
5022 / 23 / 245021 / 22 / 23Phase A / B / C currentU160.1A
50315030Total active powerU321W
50335032Total reactive powerS321var
50355034Power factor (>0 leading, <0 lagging)S160.001—
50365035Grid frequencyU160.1Hz
50385037Work state (table below)U16code—
50455044Fault / alarm code (valid in Fault or Alarm state)U16code—
50715070Array insulation resistanceU161kΩ
51135112Daily running timeU161min
51285127Monthly yieldU320.1kWh
51445143Total yield, higher resolution (newer models)U320.1kWh
51485147Grid frequency, higher resolution (newer models)U160.01Hz

5025–5030, 5037 and 5050–5070 are reserved. Read the defined ranges and split a request at a reserved gap if your inverter refuses it. A few common device type codes: SG10RT 0x2433, SG5.0RS 0x2606, SG50CX 0x2C02, SG110CX 0x2C06, SG250HX 0x2C0C.

Work State Values (doc 5038)

ValueDecimalMeaning
0x00000Run
0x800032768Stop
0x13004864Key stop
0x15005376Emergency stop
0x14005120Standby
0x12004608Initial standby
0x16005632Starting
0x910037120Alarm run
0x810033024Derating run
0x820033280Dispatch run
0x550021760Fault
0x25009472Communication fault

SH Hybrid Inverters

The SH series has its own protocol document, and it is not a superset of the SG map. On SH, 5022–5030 is reserved (no phase currents or active power there), and documented 5004 is total output energy in 0.1 kWh, including battery discharge. Registers 5000–5003, 5008, 5011–5021 and 5033–5036 mean the same as on SG. The hybrid data sits at 13000 and up:

DocWireParameterTypeScaleUnit
1300012999Running stateU16code—
1300113000Power flow (bit 0 PV, 1 charging, 2 discharging, 3 load, 4 feed-in, 5 import)U16bits—
1300213001Daily PV generationU160.1kWh
1300313002Total PV generationU320.1kWh
1300813007Load powerS321W
1301013009Export powerS321W
1302013019Battery voltageU160.1V
1302313022Battery SOCU160.1%
1302413023Battery SOHU160.1%
1302513024Battery temperatureS160.1°C
52145213Battery power (Sungrow recommends this over 13022)S321W
1303413033Total active powerS321W
56015600Meter active power (>0 buying from grid, <0 selling)S321W
13036 / 1303713035 / 13036Import energy today / totalU16 / U320.1kWh
13045 / 1304613044 / 13045Export energy today / totalU16 / U320.1kWh

Grid, load and export values are only valid when a smart meter is wired directly to the inverter. Only the meter register 5601 has a documented sign; check the sign of export and battery power against a known charge or export before relying on it.

Writable Registers

Holding registers: read with FC03, write with FC06 or FC16, again documented address minus one.

DocModelParameterValues
5006SGStart / stop0xCF start, 0xCE stop
5007SGPower limitation switch0xAA enable, 0x55 disable
5008SGPower limitation setting (needs 5007 enabled)0.1 %
13000SHStart / stop0xCF boot, 0xCE shutdown
13050SHEMS mode0 self-consumption, 2 compulsory, 3 external EMS
13087 / 13074SHFeed-in limitation enable / value0xAA/0x55 / W
Write with care. Feed-in limits can be a condition of the grid connection; agree changes with the installer and read every setpoint back. Sungrow notes that through WiNet-S/S2 or Logger1000 the read-write registers do not support frequent periodic reading and setting — poll the input registers, and write a setpoint only when it changes.

Common Mistakes

Step-by-Step: Reading a Sungrow Inverter with ModbusManager

1 Connect — Modbus TCP to the inverter's or WiNet-S's IP address, port 502, slave ID 1; or Modbus RTU at 9600 8N1.

2 Poll input registers — a window with function code 04, start 4999 (documented 5000), quantity 50; a second at 5112 for the daily running time and monthly yield.

3 Make scaled tags (Pro) — register tags on the input registers at the wire address, data type U16/U32/S16, word order little for the 32-bit values, and Scale as in the table: 0.1 for daily yield and voltages, 0.001 on 5031 to get kW. The values then read in engineering units in the dashboard, trends, alarms and historian.

4 Build the overview — or start from the workspace below.

Download a Ready-Made Workspace

For SG string inverters. On an SH hybrid the 5022–5032 tags read reserved registers — add tags from the SH table instead. Tags and dashboard are ModbusManager Pro features; Standard opens the poll windows only.

Sungrow_SG.json

Sungrow SG string inverter workspace. Open via Workspace › Open in ModbusManager Pro.

Download Workspace

Try it with ModbusManager Pro

Scaled tags, dashboard and historian for your inverter. Free 14-day trial. No credit card. Windows 10/11.

Download Pro Trial

Frequently Asked Questions

Why are all my Sungrow values off by one register?

Sungrow's documents list addresses one higher than the protocol address. Subtract 1 from every documented address: documented 5031 (total active power) is requested as 5030. A tool with 1-based addressing does this for you.

Should I use FC03 or FC04 for a Sungrow inverter?

FC04 (read input registers) for all running data. FC03 reads the holding registers, which are settings and reuse the same numbers — at 5000–5005 they are the system clock.

What is the Modbus TCP port and unit ID?

Port 502, on inverters with a built-in Ethernet port and through a WiNet-S/S2 dongle once Modbus TCP is opened on it. Unit ID 1 is what works in practice; Sungrow's documents state the RS485 address (default 1 on SH) but not a separate TCP unit ID.

Why does the total yield read a huge or tiny number?

Sungrow sends 32-bit values low word first. Combine the second register as the high word: value = second × 65536 + first.

Does the SG register map work for SH hybrids?

Partly. The PV, temperature and voltage registers match, but 5022–5030 is reserved on SH and the hybrid values (battery, load, export, meter) are in the 13000 block and around 5214 and 5601.

Sources

Sungrow, Communication Protocol of PV Grid-Connected String Inverters, V1.1.53 (change log to 2023-01-13), and Communication Protocol of Residential Hybrid Inverter, V1.1.11 (2025-11-17). Both are Sungrow documents; the copies used were obtained from a Sungrow distributor and an integrator forum, because Sungrow's download centre was not reachable. Sungrow asks that the documents not be redistributed — request the current issue for your model from Sungrow support or your distributor. The maximum number of registers per request is not stated in either document.

// beyond one inverter

The inverter plus everything else on site

A WiNet-S is best polled by one program. ModbusManager Pro can be that program — reading the inverter, the meter and any other RS-485 device on site — and republish the values as one Modbus map for the building management system, the EMS or a PLC.

Modbus gateway software →