SunSpec Modbus for SMA, Fronius and SolarEdge

SMA, Fronius and SolarEdge inverters all speak SunSpec: one register layout, published by the SunSpec Alliance, in which every value travels with a scale factor and the data is organised in numbered models you find by walking a chain. Learn SunSpec once and you can read all three — provided you get each brand's own switch, unit ID and port right. This page covers the standard, the inverter model every one of them implements, and the brand-specific settings. Deye, Sunsynk or Growatt hybrid? See the hybrid inverter register map.

ModbusManager Pro dashboard for a SunSpec three-phase inverter: AC power gauge, operating state MPPT, lifetime energy, power factor, the raw DC voltage register 7450 and its scale factor -1 giving 745.0 V, phase voltage, AC current, DC voltage and power, cabinet temperature, frequency and a DC versus AC power trend
The free workspace below, reading a simulated SunSpec inverter in SolarEdge's layout. The two middle cards show the raw DC voltage register (7450) and its scale factor (−1): 745.0 V on the card beside them. Every value on the page is raw × 10SF.

How a SunSpec Device Is Laid Out

Scale Factors

A SunSpec value is an integer with a scale factor (type sunssf, a signed 16-bit power of ten) beside it:

value = raw × 10SF      // raw 2071, SF -2  →  20.71

Read the value and its scale factor in the same request, and read the scale factor every time. Fronius states that its scale factors are not static: they can change with a firmware update and at runtime (auto-scaling). A program that caches the scale factor will one day be off by a factor of ten.

Type"Not implemented" value
int16, sunssf0x8000
uint16, enum16, bitfield160xFFFF
int320x80000000
uint32, enum32, bitfield320xFFFFFFFF
acc16 / acc32 / acc640
float32NaN (0x7FC00000)

A point a device does not implement reads one of these — on a single-phase device, for example, phase B and C. Treat them as "no data", not as a reading.

The Inverter Model (103, Three-Phase, Integer + SF)

Models 101, 102 and 103 are the single-, split- and three-phase inverter models with integer values and scale factors; all three have length 50 and the same point layout. Offsets count from the model's ID register. The absolute column is SolarEdge's layout, confirmed in SolarEdge's technical note, with the model ID at 40069.

OffsetPointTypeUnitsSolarEdge address
0 / 1Model ID (101/102/103) / length (50)uint16—40069 / 40070
2A — total AC currentuint16A40071
3 / 4 / 5AphA / AphB / AphCuint16A40072–40074
6A_SFsunssf—40075
7 / 8 / 9PPVphAB / BC / CA — line voltagesuint16V40076–40078
10 / 11 / 12PhVphA / B / C — phase voltagesuint16V40079–40081
13V_SFsunssf—40082
14W — AC powerint16W40083
15W_SFsunssf—40084
16 / 17Hz / Hz_SFuint16 / sunssfHz40085 / 40086
18 / 19VA / VA_SFint16 / sunssfVA40087 / 40088
20 / 21VAr / VAr_SFint16 / sunssfvar40089 / 40090
22 / 23PF / PF_SFint16 / sunssf%40091 / 40092
24–25WH — lifetime energyacc32Wh40093–40094
26WH_SFsunssf—40095
27 / 28DCA / DCA_SFuint16 / sunssfA40096 / 40097
29 / 30DCV / DCV_SFuint16 / sunssfV40098 / 40099
31 / 32DCW / DCW_SFint16 / sunssfW40100 / 40101
33 / 34 / 35 / 36TmpCab / TmpSnk / TmpTrns / TmpOtint16°C40102–40105
37Tmp_SFsunssf—40106
38St — operating stateenum16—40107
39StVnd — vendor stateenum16—40108
40–41Evt1 — event flagsbitfield32—40109–40110
The same offsets, other addresses: on Fronius in int+SF mode the inverter model also usually starts at 40069, because its common model is 65 registers long — but Fronius warns that addresses are not constant. On SMA, extra models (11 and 12) come first, and with SMA's dynamic profile the start differs between devices. Find the model by walking the chain and add the offsets above.

Operating state (St)

ValueStateValueState
1OFF5THROTTLED
2SLEEPING (night)6SHUTTING_DOWN
3STARTING7FAULT
4MPPT (producing)8STANDBY

Evt1 sets one bit per event: bit 0 ground fault, 1 DC over-voltage, 2 AC disconnect, 3 DC disconnect, 4 grid disconnect, 5 cabinet open, 6 manual shutdown, 7 over-temperature, 8 over-frequency, 9 under-frequency, 10 AC over-voltage, 11 AC under-voltage, 12 blown string fuse, 13 under-temperature, 14 memory loss, 15 hardware test failure.

Float models (111–113)

Models 111, 112 and 113 carry the same quantities as float32 values with no scale factors (length 60). Fronius lets you choose between "float" and "int + SF"; switching it changes which model is present and shifts every model after it. In model 113, W is at offset 22 and WH at offset 32.

Brand Settings

SMA (Sunny Boy, Sunny Tripower, Sunny Highpower)

Fronius (Symo GEN24, Primo GEN24, Datamanager)

SolarEdge

Power Limiting (Model 123)

Model 123 (immediate controls) carries WMaxLimPct (offset 5, a percentage of rated power), WMaxLim_Ena (offset 9) and OutPFSet (offset 10), with WMaxLimPct_SF at offset 23. Each brand gates writes differently (SMA without a Grid Guard code in the current profiles, Fronius only with "inverter control via Modbus" enabled).

Controls change how the plant runs. Export and power limits can be a condition of the grid connection. Agree changes with the installer, write only when a setpoint changes, and read it back.

Common Mistakes

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

1 Connect — Modbus TCP with the brand's port and unit ID above.

2 Find the inverter model — an FC03 window at 40000 shows the "SunS" marker and model 1's length; the inverter model starts at 40002 + 2 + L.

3 Poll the model in one request — e.g. 40069, quantity 52, so every value arrives together with its scale factor.

4 Apply the scale factors (Pro) — tag the raw value and its SF, and let a Structured Text line compute the result every cycle: AC_Power := W_raw * Math.pow(10, W_SF) / 1000;. Because the SF is read each time, the value stays right when the inverter changes it. A fixed Scale on a register tag is fine for devices with constant gains, but not for SunSpec.

Download a Ready-Made Workspace

Set for SolarEdge's layout (unit 1, model 103 at 40069). For SMA, change the unit ID to 126 and move the model window to where the chain puts model 103 on your inverter; for Fronius, set the model type to int + SF and check the start address. Tags, script and dashboard are ModbusManager Pro features.

SunSpec_Inverter.json

SunSpec three-phase inverter workspace with scale factors applied by script. Open via Workspace › Open in ModbusManager Pro.

Download Workspace

Try it with ModbusManager Pro

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

Download Pro Trial

Frequently Asked Questions

Is the SunSpec base address 40000 or 40001?

Both describe the same register: 40001 is the 1-based register number, 40000 the protocol address you put in the request. SMA, Fronius and SolarEdge all say to request 40000.

Why are my SunSpec values off by a factor of 10 or 100?

The scale factor was not applied, or was read once and cached. Every value is raw × 10SF, and the scale factor can change — read it in the same request as the value, every time.

Which unit ID does an SMA inverter use for SunSpec?

126 by default: SMA's own profile is on unit ID 3 and SunSpec on that ID plus 123.

Which port does SolarEdge use for Modbus TCP?

1502 by default on SetApp inverters, 502 on older inverters with an LCD menu. Modbus TCP is off until enabled, and only one connection is accepted at a time.

Where is the inverter model if the addresses differ from this table?

Walk the chain: read the ID and length at 40002, jump 2 + length, and repeat until you reach ID 101, 102, 103 (integer) or 111–113 (float). The offsets inside the model are the same on every brand.

Sources

SunSpec Alliance model definitions (models 1, 101–103, 111–113, 123, 201–203), github.com/sunspec/models; SMA, SunSpec Modbus technical information (SunSpecModbus-TI-en-11) and SMA and SunSpec Modbus Interface (SMA-Modbus-general-TI-en-10); Fronius, Fronius GEN24 Modbus TCP & RTU (42,0410,2649) and Fronius Datamanager Modbus TCP & RTU (42,0410,2049); SolarEdge, Technical Note – SunSpec Logging, versions 3.2 (June 2025) and 3.3 (October 2026). Model positions vary by brand, firmware and settings; the offsets within a model do not.

// beyond one inverter

The inverters plus everything else on site

SolarEdge accepts one Modbus client and SMA and Fronius ask you to poll gently. ModbusManager Pro can be that one client — reading the inverters, the meters 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 →