Solar · SunSpec · Modbus · KNX · Register Map · 10 min read

SunSpec Modbus Register Map: AC Power, Battery SOC and Energy Across Solar Brands

SunSpec defines a standard Modbus register layout for solar inverters, allowing a single KNX Modbus gateway configuration to work across multiple brands. Understanding which registers hold AC power, battery state of charge, and energy totals — and knowing the brand-specific port and unit ID differences — is the foundation of any solar KNX integration.

SunSpec Alliance and the standard register map

The SunSpec Alliance is a consortium of solar industry manufacturers that defines standard Modbus register maps. Any inverter labelled SunSpec-compliant uses the same register addresses for core measurements, regardless of brand. This standardisation dramatically simplifies KNX Modbus gateway configuration when integrating multiple inverter brands on the same site.

The SunSpec Base Model begins at Modbus holding register 40001 (using 1-based Modbus addressing) or register address 40000 (0-based). This block contains the manufacturer name, model string, and firmware version as ASCII text — useful for verifying the correct device is connected during commissioning.

SunSpec Model 103 — three-phase inverter key registers

All registers: Holding Registers (FC3), 1-based addressing

40001-40002: SunSpec ID (0x5375 0x6e53 = "SunS") — verify connectivity
40003:       Base model length
40004-40021: Manufacturer name (ASCII, 32 chars)
40022-40037: Model string (ASCII, 32 chars)

SunSpec Model 103 (Three-Phase Inverter):
40083:  AC Power (int16, W) — current output power
40085:  AC Power Scale Factor (int16, typically -1 or -2)
        Apply: actual_W = reg40083 * 10^(reg40085)

40089:  AC Frequency (uint16, Hz, scale factor at 40090)
        Typical value: 5000 = 50.00 Hz with SF -2

40093-40094: AC Energy (uint32, Wh) — lifetime production
40095:  AC Energy Scale Factor (int16)

40101:  DC Voltage (uint16, V, scale factor at 40102)
        Typical: 3500 with SF -1 = 350.0V

40107:  Operating state (uint16):
        1=Off, 2=Sleeping, 3=Starting, 4=Running, 5=Throttled
        6=ShuttingDown, 7=Fault, 8=Standby

Brand-specific port and unit ID reference

While SunSpec standardises register addresses, the Modbus TCP port and unit ID vary by brand. Using the wrong port or unit ID is the most common cause of failed KNX gateway commissioning. The table below covers the most common brands installed across Germany, the Netherlands, and Benelux.

Brand / ModelTCP PortUnit IDNotes
SolarEdge HD-Wave15021Enable in SE app: Communication → Modbus TCP
KOSTAL PLENTICORE150271Modbus TCP enabled by default
Fronius GEN24 Plus5021Enable: Settings → Modbus → TCP
GoodWe ES / ET502247Default unit ID 247 — some FW versions use 1
SMA Sunny Boy Storage5023Enable via SMA Sunny Portal → Modbus
Sungrow SH series5021Enable in iSolarCloud app or local web UI
Huawei SUN200066070Requires Smart Dongle — NOT port 502
Enphase IQ8 gateway80 (HTTP/JSON)N/AEnphase uses Envoy HTTP API, not Modbus

Huawei SUN2000 critical note: the Huawei SUN2000 uses port 6607 (not the standard 502) and unit ID 0 (not 1). This is the single most common configuration error when integrating Huawei inverters with KNX gateways. Always verify with Modbus Poll before configuring the gateway.

SunSpec Model 802 — battery storage registers

SunSpec Model 802 defines standard registers for battery storage systems. Not all inverter brands implement Model 802 — check the inverter manual or SunSpec model scan (starting at register 40001) to confirm whether the battery model is present. If not, use the proprietary brand registers documented below.

SunSpec Model 802 — battery storage key registers

SunSpec Model 802 (Battery Storage):
40255: Battery SOC (uint16, %) — state of charge 0-100
40258-40259: Battery Power (int32, W)
  Positive = charging, Negative = discharging
40261: Battery Voltage (uint16, 0.01V)
40263: Battery Current (int16, 0.01A)
40265: Battery Temperature (int16, 0.1°C)
40267: Battery State (uint16):
  1=Disconnected, 2=Initialising, 3=Connected
  4=Standby, 5=SOC Protection, 6=Fault, 7=Charging
  8=Discharging

Proprietary battery registers (where Model 802 absent):
  SolarEdge: reg 0xE140 (battery level %), 0xE18D (battery power W)
  Fronius GEN24: reg 40352 (today generation float32 Wh)
                 reg 40358 (grid power float32 W)
  KOSTAL PLENTICORE: register 154 (battery SOC, uint16, 1%)

Configure 2-register reads for int32 values:
  In KNX gateway: set data type to 32-bit signed integer
  High word first (big-endian) for all SunSpec int32 registers

KNX Modbus gateway configuration

Weinzierl 5010 and MDT SCN-MIG.01 are the most commonly used KNX Modbus TCP gateways in European KNX projects. Both support multiple Modbus devices and flexible DPT mapping. Configure each inverter as a separate Modbus device with its brand-specific IP address, port, and unit ID.

Weinzierl 5010 configuration for SolarEdge inverter

Weinzierl KNX Modbus Gateway 5010 — ETS5/6 plug-in config:

Device 1 — SolarEdge HD-Wave:
  IP: 192.168.1.50
  Port: 1502
  Unit ID: 1
  Protocol: Modbus TCP

Poll task 1 — AC Power:
  Register: 40082 (0-based = 40083 - 1)
  Type: int16, signed
  Scale: read register 40084 (SF), apply: value * 10^SF
  KNX GA: 6/0/1
  DPT: 9.001 (2-byte float, kW — divide by 1000 in gateway)
  Poll interval: 10 seconds

Poll task 2 — Battery SOC:
  Register: 0xE140 (SolarEdge proprietary, 0-based)
  Type: uint16
  KNX GA: 6/0/3
  DPT: 5.001 (1-byte %, 0-100)
  Poll interval: 60 seconds

Poll task 3 — AC Energy lifetime:
  Registers: 40092-40093 (2 registers, uint32)
  Type: 32-bit unsigned integer, big-endian
  KNX GA: 6/0/4
  DPT: 13.013 (4-byte signed, Wh)
  Poll interval: 300 seconds

Scale factors — the most common integration error

SunSpec defines scale factor registers that must be applied to raw register values. The scale factor is a signed integer representing a power of 10 multiplier. Failing to apply the scale factor causes 10x or 100x errors in power and energy values — a commissioned system will appear to work but report incorrect data.

Scale factor application — AC power example

Register 40083 raw value: 3500 (int16)
Register 40085 SF value: -1 (int16)

Actual AC power = 3500 * 10^(-1) = 350.0 W

Without SF: gateway would report 3500W (10x error)
With SF correctly applied: 350W (correct)

Weinzierl 5010 auto-SF option:
  Enable "Read Scale Factor register" in poll task config
  Gateway reads SF register automatically, applies to value
  Outputs scaled float to KNX DPT 9.001

MDT SCN-MIG.01:
  Manually enter the SF value as a fixed divisor
  If SF is always -1 for your inverter: enter divisor 10
  Not suitable if SF value changes dynamically

Best practice: verify SF value with Modbus Poll tool first
  Read register 40085 — confirm it returns -1 or -2
  Only then configure gateway with that fixed SF
  Most residential inverters have fixed SF values

Commissioning verification with Modbus Poll

Before configuring the KNX gateway, verify the inverter Modbus TCP connection and register values using Modbus Poll (free Windows software). This step catches connection, port, unit ID, and register address errors before they propagate into the KNX gateway configuration.

Modbus Poll commissioning verification steps

1. Open Modbus Poll → Connection → Connect
   Mode: Modbus TCP/IP
   IP: <inverter IP or Smart Dongle IP>
   Port: <brand-specific port from table above>
   Slave ID: <brand-specific unit ID>

2. Setup → Read/Write Definition:
   Function: 03 (Read Holding Registers)
   Start address: 40000 (0-based = reg 40001)
   Quantity: 130 (reads registers 40001-40130)
   Click OK

3. Verify register 40001-40002 contains SunSpec ID:
   Should read: 21843 and 28243 (0x5375 and 0x6E53)
   Confirms SunSpec-compliant device at this address

4. Find register 40083 — AC Power raw value
   Compare with inverter display ± 5W
   Read register 40085 for scale factor

5. Apply scale factor: raw * 10^SF = actual watts
   Verify result matches inverter LCD or app display

6. Only configure KNX gateway after confirming:
   - Correct IP, port, unit ID connects successfully
   - AC power register matches inverter display
   - Battery SOC register (40255 or brand-specific) is correct

uint32 register read tip

For 32-bit registers (AC Energy, Battery Power), read 2 consecutive holding registers. Modbus Poll displays them separately — combine: (reg_n * 65536) + reg_n+1 for big-endian uint32. Most KNX gateways handle this automatically when configured as 32-bit type.

Enabling Modbus on inverters

Most inverters ship with Modbus TCP disabled for security. Enable via the manufacturer app or local web interface before attempting connection. SolarEdge requires the installer login in the SE installer app. Fronius GEN24 enables Modbus in the local web UI under Settings.

Need a solar panel with KNX Modbus integration built to spec?

We design and build low-voltage panels with SunSpec-verified Modbus TCP gateways, KNX DPT mapping for AC power and battery SOC, and full commissioning documentation delivered tested to your site.

Request a quote →
Loading...
Back to top