- Home
- Modbus register maps
- Fronius
- Primo GEN24 / Symo GEN24 (Plus) SunSpec int+SF
Solar inverter · Modbus register map
Fronius Primo GEN24 / Symo GEN24 (Plus) SunSpec int+SF Modbus register map
Updated 16 October 2026
GEN24 hybrid inverters host Modbus TCP and RTU themselves and present a SunSpec map: common block, inverter model 101/103, nameplate, settings, status, immediate controls, multiple-MPPT (PV inputs 1-2 plus battery charge/discharge as inputs 3-4) and basic storage control. This map covers the 16-bit measurements, ratings, battery state of charge and every control register, each scaled through its SunSpec scale factor.
This page lists 162 Modbus registers for the Fronius Primo GEN24 / Symo GEN24 (Plus) SunSpec int+SF — 24 writable — with the table, 0-based wire address, data type, word order, scale, units and access of each, re-typed from Fronius’s own free documentation (linked below) and checked against it.
- Manufacturer
- Fronius
- Model
- Primo GEN24 / Symo GEN24 (Plus) SunSpec int+SF
- Equipment type
- Solar inverter
- Registers
- 162 (24 writable)
- Transport
- Modbus TCP, Modbus RTU
- Default unit ID
- 1
- Documented addressing
- 1-based (subtract 1 for the wire address)
- Firmware
- Register map archive 1.2.7-2 (bundled with GEN24 firmware 1.36.x); manual 42,0410,2649 rev. 034-28092026.
- Also known as
- Primo GEN24 Plus, Symo GEN24 Plus, Primo GEN24, Symo GEN24, Symo GEN24 10.0 Plus, Primo GEN24 6.0 Plus
Integration notes: Fronius Primo GEN24 / Symo GEN24 (Plus) SunSpec int+SF
In the inverter web UI (Communication > Modbus) enable the TCP server, select int+SF and tick Allow Control if you need writes; then poll unit ID 1. Read registers 40070-40109 (wire addresses 40069-40108) for live data, register 40352 (address 40351) for battery SoC, and use models 123/124 for power limits and battery windows.
Minimum registers to map
Addresses are 0-based wire addresses. Enough to monitor and run the unit; map more as the job needs.
| Register | Name | Type | Why | Access |
|---|---|---|---|---|
| HR 40069 | Inverter ID | UINT16 | Inverter model ID (101/103) - confirms int+SF layout | Read |
| HR 40083 | W | INT16 | AC power | Read |
| HR 40084 | W_SF | INT16 | AC power scale factor (auto-scaled) | Read |
| HR 40107 | St | UINT16 | Operating state | Read |
| HR 40351 | ChaState | UINT16 | Battery state of charge | Read |
| HR 40365 | ChaState_SF | INT16 | SoC scale factor | Read |
| HR 40232 | WMaxLimPct | UINT16 | Active power limit % | Read/write |
| HR 40236 | WMaxLim_Ena | UINT16 | Enable/disable the power limit | Read/write |
| HR 40250 | WMaxLimPct_SF | INT16 | Power limit scale factor | Read |
Enable Modbus control & writes
Inverter web interface > Communication > Modbus: choose TCP Server and/or RTU Server, set SunSpec Model Type (int+SF for this map), and activate 'Allow Control' for on/off, power reduction, power factor, reactive power and battery commands. 'Restrict Control' limits control to fixed IP addresses. Writes to models 123/124 raise an exception when control is not allowed.
Communication loss & watchdog
Model 123 controls have *_RvrtTms fallback timers (0-28800 s) that restart with every Modbus message; on expiry the control ends and the next-priority mode takes over. 0 (default) keeps the setting until disabled. Model 124 has InOutWRte_RvrtTms (0-28800 s) for the battery window.
Byte order & addressing
- Off-by-one: SunSpec registers are numbered from 40001; request number minus one (40001 -> 40000).
- Switching float/int+SF changes the address of every model after the inverter model.
- Battery power appears as MPPT inputs 3 (charge) and 4 (discharge); only one is non-zero at a time.
- Storage window sign convention: negative power = charging, positive = discharging; OutWRte/InWRte may be negative to force charging or discharging.
- Writes to read-only or unsupported registers are silently ignored; out-of-range values return exception 3.
Network setup
- TCP: inverter unit ID is always 1 (identify devices by IP address); port 502 or 1502 selectable in the web UI.
- RTU: set Inverter address (1-247, factory 1), interface M0 or M1, baud and parity in the web UI; each inverter on the bus needs a unique address.
- RTU wiring: 120-ohm termination enabled at both line ends, shielded twisted pair, single-point grounding, strict daisy chain.
- Smart Meter unit ID is set via 'Meter address offset' (factory 200).
Watch out for
- Query sequentially (at most 2 requests in parallel) with a response timeout of at least 1 s; read blocks rather than single registers.
- Grid charging via ChaGriSet only works if 'battery charging from DNO grid' is also enabled in the system settings (the two are AND-linked).
- Changing InWRte/OutWRte/StorCtl_Mod shows up in Solar.web as Forced Recharge or Energy saving mode.
- After changing a value of an active mode (e.g. a new WMaxLimPct), re-write the matching _Ena register with 1.
Fronius Primo GEN24 / Symo GEN24 (Plus) SunSpec int+SF Modbus registers
Address = 0-based wire address (the documented number is shown under it when it differs) · Order: ABCD = high word first, CDAB = low word first · Scale: engineering value = raw × scale.
| Table | Address | Name | Description | Type | Order | Scale | Units | Access | Values / bits |
|---|---|---|---|---|---|---|---|---|---|
| HR | 40002doc 40003 | Common ID | Model ID of this block. | UINT16 | Read | ||||
| HR | 40003doc 40004 | Common L | Length of this block in registers. | UINT16 | Registers | Read | |||
| HR | 40004doc 40005 | Mn | Manufacturer name, reads Fronius. | STRING[32] | Read | ||||
| HR | 40020doc 40021 | Md | Inverter model name. | STRING[32] | Read | ||||
| HR | 40044doc 40045 | Vr | Inverter software version. | STRING[16] | Read | ||||
| HR | 40052doc 40053 | SN | Serial number (may fall back to a controller ID). | STRING[32] | Read | ||||
| HR | 40068doc 40069 | DA | Modbus device address (unit ID). | UINT16 | Read | ||||
| HR | 40069doc 40070 | Inverter ID | Model ID of this block. | UINT16 | Read | 101 = Single phase; 103 = Three phase | |||
| HR | 40070doc 40071 | Inverter L | Length of this block in registers. | UINT16 | Registers | Read | |||
| HR | 40071doc 40072 | A | Total AC current. | UINT16 | × 10^SF (HR 40075) | A | Read | ||
| HR | 40072doc 40073 | AphA | Phase A AC current. | UINT16 | × 10^SF (HR 40075) | A | Read | ||
| HR | 40073doc 40074 | AphB | Phase B AC current. | UINT16 | × 10^SF (HR 40075) | A | Read | ||
| HR | 40074doc 40075 | AphC | Phase C AC current. | UINT16 | × 10^SF (HR 40075) | A | Read | ||
| HR | 40075doc 40076 | A_SF | Scale factor (power of ten) for A. | INT16 | Read | ||||
| HR | 40076doc 40077 | PPVphAB | Line voltage A-B. | UINT16 | × 10^SF (HR 40082) | V | Read | ||
| HR | 40077doc 40078 | PPVphBC | Line voltage B-C. | UINT16 | × 10^SF (HR 40082) | V | Read | ||
| HR | 40078doc 40079 | PPVphCA | Line voltage C-A. | UINT16 | × 10^SF (HR 40082) | V | Read | ||
| HR | 40079doc 40080 | PhVphA | Phase A to neutral voltage. | UINT16 | × 10^SF (HR 40082) | V | Read | ||
| HR | 40080doc 40081 | PhVphB | Phase B to neutral voltage. | UINT16 | × 10^SF (HR 40082) | V | Read | ||
| HR | 40081doc 40082 | PhVphC | Phase C to neutral voltage. | UINT16 | × 10^SF (HR 40082) | V | Read | ||
| HR | 40082doc 40083 | V_SF | Scale factor (power of ten) for V. | INT16 | Read | ||||
| HR | 40083doc 40084 | W | AC active power. | INT16 | × 10^SF (HR 40084) | W | Read | ||
| HR | 40084doc 40085 | W_SF | Scale factor (power of ten) for W. | INT16 | Read | ||||
| HR | 40085doc 40086 | Hz | Grid frequency. | UINT16 | × 10^SF (HR 40086) | Hz | Read | ||
| HR | 40086doc 40087 | Hz_SF | Scale factor (power of ten) for Hz. | INT16 | Read | ||||
| HR | 40087doc 40088 | VA | AC apparent power. | INT16 | × 10^SF (HR 40088) | VA | Read | ||
| HR | 40088doc 40089 | VA_SF | Scale factor (power of ten) for VA. | INT16 | Read | ||||
| HR | 40089doc 40090 | VAr | AC reactive power. | INT16 | × 10^SF (HR 40090) | var | Read | ||
| HR | 40090doc 40091 | VAr_SF | Scale factor (power of ten) for VAr. | INT16 | Read | ||||
| HR | 40091doc 40092 | PF | Power factor. | INT16 | × 10^SF (HR 40092) | Pct | Read | ||
| HR | 40092doc 40093 | PF_SF | Scale factor (power of ten) for PF. | INT16 | Read | ||||
| HR | 40095doc 40096 | WH_SF | Scale factor (power of ten) for WH. | INT16 | Read | ||||
| HR | 40100doc 40101 | DCW | Total DC input power. | INT16 | × 10^SF (HR 40101) | W | Read | ||
| HR | 40101doc 40102 | DCW_SF | Scale factor (power of ten) for DCW. | INT16 | Read | ||||
| HR | 40102doc 40103 | TmpCab | Cabinet temperature. | INT16 | × 10^SF (HR 40106) | C | Read | ||
| HR | 40106doc 40107 | Tmp_SF | Scale factor (power of ten) for Tmp. | INT16 | Read | ||||
| HR | 40107doc 40108 | St | SunSpec operating state. | UINT16 | Read | 1 = Off; 2 = Sleeping (auto shutdown); 3 = Starting; 4 = Producing normally (MPPT); 5 = Throttled (power reduction); 6 = Shutting down; 7 = Fault; 8 = Standby | |||
| HR | 40108doc 40109 | StVnd | Vendor operating state; the map says it mirrors St. | UINT16 | Read | 1 = Off; 2 = Sleeping (auto shutdown); 3 = Starting; 4 = Producing normally (MPPT); 5 = Throttled (power reduction); 6 = Shutting down; 7 = Fault; 8 = Standby | |||
| HR | 40121doc 40122 | Nameplate ID | Model ID of this block. | UINT16 | Read | ||||
| HR | 40122doc 40123 | Nameplate L | Length of this block in registers. | UINT16 | Registers | Read | |||
| HR | 40123doc 40124 | DERTyp | Device type; this storage map lists 82 (PV with storage). | UINT16 | Read | ||||
| HR | 40124doc 40125 | WRtg | Rated continuous active power. | UINT16 | × 10^SF (HR 40125) | W | Read | ||
| HR | 40125doc 40126 | WRtg_SF | Scale factor (power of ten) for WRtg. | INT16 | Read | ||||
| HR | 40126doc 40127 | VARtg | Rated apparent power. | UINT16 | × 10^SF (HR 40127) | VA | Read | ||
| HR | 40127doc 40128 | VARtg_SF | Scale factor (power of ten) for VARtg. | INT16 | Read | ||||
| HR | 40128doc 40129 | VArRtgQ1 | Rated reactive power, quadrant 1. | INT16 | × 10^SF (HR 40132) | var | Read | ||
| HR | 40129doc 40130 | VArRtgQ2 | Rated reactive power, quadrant 2. | INT16 | × 10^SF (HR 40132) | var | Read | ||
| HR | 40130doc 40131 | VArRtgQ3 | Rated reactive power, quadrant 3. | INT16 | × 10^SF (HR 40132) | var | Read | ||
| HR | 40131doc 40132 | VArRtgQ4 | Rated reactive power, quadrant 4. | INT16 | × 10^SF (HR 40132) | var | Read | ||
| HR | 40132doc 40133 | VArRtg_SF | Scale factor (power of ten) for VArRtg. | INT16 | Read | ||||
| HR | 40133doc 40134 | ARtg | Rated AC current. | UINT16 | × 10^SF (HR 40134) | A | Read | ||
| HR | 40134doc 40135 | ARtg_SF | Scale factor (power of ten) for ARtg. | INT16 | Read | ||||
| HR | 40135doc 40136 | PFRtgQ1 | Minimum power factor capability, quadrant 1. | INT16 | × 10^SF (HR 40139) | cos() | Read | ||
| HR | 40136doc 40137 | PFRtgQ2 | Minimum power factor capability, quadrant 2. | INT16 | × 10^SF (HR 40139) | cos() | Read | ||
| HR | 40137doc 40138 | PFRtgQ3 | Minimum power factor capability, quadrant 3. | INT16 | × 10^SF (HR 40139) | cos() | Read | ||
| HR | 40138doc 40139 | PFRtgQ4 | Minimum power factor capability, quadrant 4. | INT16 | × 10^SF (HR 40139) | cos() | Read | ||
| HR | 40139doc 40140 | PFRtg_SF | Scale factor (power of ten) for PFRtg. | INT16 | Read | ||||
| HR | 40140doc 40141 | WHRtg | Rated storage energy. | UINT16 | × 10^SF (HR 40141) | Wh | Read | ||
| HR | 40141doc 40142 | WHRtg_SF | Scale factor (power of ten) for WHRtg. | INT16 | Read | ||||
| HR | 40144doc 40145 | MaxChaRte | Maximum battery charge power. | UINT16 | × 10^SF (HR 40145) | W | Read | ||
| HR | 40145doc 40146 | MaxChaRte_SF | Scale factor (power of ten) for MaxChaRte. | INT16 | Read | ||||
| HR | 40146doc 40147 | MaxDisChaRte | Maximum battery discharge power. | UINT16 | × 10^SF (HR 40147) | W | Read | ||
| HR | 40147doc 40148 | MaxDisChaRte_SF | Scale factor (power of ten) for MaxDisChaRte. | INT16 | Read | ||||
| HR | 40149doc 40150 | Settings ID | Model ID of this block. | UINT16 | Read | ||||
| HR | 40150doc 40151 | Settings L | Length of this block in registers. | UINT16 | Registers | Read | |||
| HR | 40151doc 40152 | WMax | Maximum active power setting. | UINT16 | × 10^SF (HR 40171) | W | Read | ||
| HR | 40152doc 40153 | VRef | Reference voltage at the grid connection point. | UINT16 | × 10^SF (HR 40172) | V | Read | ||
| HR | 40153doc 40154 | VRefOfs | Voltage offset between grid connection point and inverter. | INT16 | × 10^SF (HR 40173) | V | Read | ||
| HR | 40156doc 40157 | VAMax | Maximum apparent power setting. | UINT16 | × 10^SF (HR 40175) | VA | Read | ||
| HR | 40157doc 40158 | VArMaxQ1 | Reactive power limit, quadrant 1. | INT16 | × 10^SF (HR 40176) | var | Read | ||
| HR | 40158doc 40159 | VArMaxQ2 | Reactive power limit, quadrant 2. | INT16 | × 10^SF (HR 40176) | var | Read | ||
| HR | 40159doc 40160 | VArMaxQ3 | Reactive power limit, quadrant 3. | INT16 | × 10^SF (HR 40176) | var | Read | ||
| HR | 40160doc 40161 | VArMaxQ4 | Reactive power limit, quadrant 4. | INT16 | × 10^SF (HR 40176) | var | Read | ||
| HR | 40162doc 40163 | PFMinQ1 | Minimum power factor setting, quadrant 1. | INT16 | × 10^SF (HR 40178) | cos() | Read | ||
| HR | 40163doc 40164 | PFMinQ2 | Minimum power factor setting, quadrant 2. | INT16 | × 10^SF (HR 40178) | cos() | Read | ||
| HR | 40164doc 40165 | PFMinQ3 | Minimum power factor setting, quadrant 3. | INT16 | × 10^SF (HR 40178) | cos() | Read | ||
| HR | 40165doc 40166 | PFMinQ4 | Minimum power factor setting, quadrant 4. | INT16 | × 10^SF (HR 40178) | cos() | Read | ||
| HR | 40171doc 40172 | WMax_SF | Scale factor (power of ten) for WMax. | INT16 | Read | ||||
| HR | 40172doc 40173 | VRef_SF | Scale factor (power of ten) for VRef. | INT16 | Read | ||||
| HR | 40173doc 40174 | VRefOfs_SF | Scale factor (power of ten) for VRefOfs. | INT16 | Read | ||||
| HR | 40175doc 40176 | VAMax_SF | Scale factor (power of ten) for VAMax. | INT16 | Read | ||||
| HR | 40176doc 40177 | VArMax_SF | Scale factor (power of ten) for VArMax. | INT16 | Read | ||||
| HR | 40178doc 40179 | PFMin_SF | Scale factor (power of ten) for PFMin. | INT16 | Read | ||||
| HR | 40181doc 40182 | Status ID | Model ID of this block. | UINT16 | Read | ||||
| HR | 40182doc 40183 | Status L | Length of this block in registers. | UINT16 | Registers | Read | |||
| HR | 40183doc 40184 | PVConn | PV inverter connection status bits. | BITMAP16 | Read | bit 0 = Connected; bit 1 = Available; bit 2 = Operating | |||
| HR | 40184doc 40185 | StorConn | Storage connection status bits. | BITMAP16 | Read | bit 0 = Connected; bit 1 = Available; bit 2 = Operating | |||
| HR | 40185doc 40186 | ECPConn | Grid feed-in status. | BITMAP16 | Read | bit 0 = Connected to grid (feeding) | |||
| HR | 40218doc 40219 | TmSrc | STRING[8] | Read | |||||
| HR | 40225doc 40226 | Ris | Insulation resistance. | UINT16 | × 10^SF (HR 40226) | ohms | Read | ||
| HR | 40226doc 40227 | Ris_SF | Scale factor (power of ten) for Ris. | INT16 | Read | ||||
| HR | 40227doc 40228 | Controls ID | Model ID of this block. | UINT16 | Read | ||||
| HR | 40228doc 40229 | Controls L | Length of this block in registers. | UINT16 | Registers | Read | |||
| HR | 40229doc 40230 | Conn_WinTms | Random start window for connect/disconnect commands. | UINT16 | Secs | Read/write | |||
| HR | 40230doc 40231 | Conn_RvrtTms | Fallback timer for the connect/disconnect command; 0 = no fallback. | UINT16 | Secs | Read/write | |||
| HR | 40231doc 40232 | Conn | Write 0 for standby (no feed-in), 1 to resume feed-in. | UINT16 | Read/write | 0 = Disconnected (standby); 1 = Connected (feeding grid) | |||
| HR | 40232doc 40233 | WMaxLimPct | Active power limit as percent of WMax. | UINT16 | × 10^SF (HR 40250) | % WMax | Read/write | ||
| HR | 40233doc 40234 | WMaxLimPct_WinTms | Random start window for the power limit. | UINT16 | Secs | Read/write | |||
| HR | 40234doc 40235 | WMaxLimPct_RvrtTms | Fallback timer for the power limit; restarts on every Modbus message, 0 = none. | UINT16 | Secs | Read/write | |||
| HR | 40235doc 40236 | WMaxLimPct_RmpTms | Ramp time to the new power limit. | UINT16 | Secs | Read/write | |||
| HR | 40236doc 40237 | WMaxLim_Ena | Starts (1) or ends (0) the power limit. | UINT16 | Read/write | 0 = Disabled; 1 = Enabled | |||
| HR | 40237doc 40238 | OutPFSet | Fixed power factor setpoint (signed, see sign convention). | INT16 | × 10^SF (HR 40251) | cos() | Read/write | ||
| HR | 40238doc 40239 | OutPFSet_WinTms | Random start window for the power factor setpoint. | UINT16 | Secs | Read/write | |||
| HR | 40239doc 40240 | OutPFSet_RvrtTms | Fallback timer for the power factor setpoint; 0 = none. | UINT16 | Secs | Read/write | |||
| HR | 40240doc 40241 | OutPFSet_RmpTms | Ramp time to the new power factor. | UINT16 | Secs | Read/write | |||
| HR | 40241doc 40242 | OutPFSet_Ena | Starts (1) or ends (0) the fixed power factor mode. | UINT16 | Read/write | 0 = Disabled; 1 = Enabled | |||
| HR | 40243doc 40244 | VArMaxPct | Fixed reactive power as percent of VArMax. | INT16 | × 10^SF (HR 40252) | % VArMax | Read/write | ||
| HR | 40245doc 40246 | VArPct_WinTms | Random start window for the reactive power setpoint. | UINT16 | Secs | Read/write | |||
| HR | 40246doc 40247 | VArPct_RvrtTms | Fallback timer for the reactive power setpoint; 0 = none. | UINT16 | Secs | Read/write | |||
| HR | 40247doc 40248 | VArPct_RmpTms | Ramp time to the new reactive power value. | UINT16 | Secs | Read/write | |||
| HR | 40248doc 40249 | VArPct_Mod | Reactive power limit mode (read-only). | UINT16 | Read | 2 = VAr limit as % of VArMax | |||
| HR | 40249doc 40250 | VArPct_Ena | Starts (1) or ends (0) the fixed reactive power mode. | UINT16 | Read/write | 0 = Disabled; 1 = Enabled | |||
| HR | 40250doc 40251 | WMaxLimPct_SF | Scale factor (power of ten) for WMaxLimPct. | INT16 | Read | ||||
| HR | 40251doc 40252 | OutPFSet_SF | Scale factor (power of ten) for OutPFSet. | INT16 | Read | ||||
| HR | 40252doc 40253 | VArPct_SF | Scale factor (power of ten) for VArPct. | INT16 | Read | ||||
| HR | 40253doc 40254 | MPPT ID | Model ID of this block. | UINT16 | Read | ||||
| HR | 40254doc 40255 | MPPT L | Length of this block in registers. | UINT16 | Registers | Read | |||
| HR | 40255doc 40256 | MPPT DCA_SF | Scale factor (power of ten) for DCA. | INT16 | Read | ||||
| HR | 40256doc 40257 | MPPT DCV_SF | Scale factor (power of ten) for DCV. | INT16 | Read | ||||
| HR | 40257doc 40258 | MPPT DCW_SF | Scale factor (power of ten) for DCW. | INT16 | Read | ||||
| HR | 40258doc 40259 | MPPT DCWH_SF | Scale factor (power of ten) for DCWH. | INT16 | Read | ||||
| HR | 40261doc 40262 | N | Number of DC inputs reported in this model. | UINT16 | Read | ||||
| HR | 40263doc 40264 | module/1/ID | Input number 1. | UINT16 | Read | ||||
| HR | 40264doc 40265 | module/1/IDStr | Label of DC input 1. | STRING[16] | Read | ||||
| HR | 40272doc 40273 | module/1/DCA | DC current of input 1. | UINT16 | × 10^SF (HR 40255) | A | Read | ||
| HR | 40273doc 40274 | module/1/DCV | DC voltage of input 1. | UINT16 | × 10^SF (HR 40256) | V | Read | ||
| HR | 40274doc 40275 | module/1/DCW | DC power of input 1. | UINT16 | × 10^SF (HR 40257) | W | Read | ||
| HR | 40283doc 40284 | module/2/ID | Input number 2. | UINT16 | Read | ||||
| HR | 40284doc 40285 | module/2/IDStr | Label of DC input 2. | STRING[16] | Read | ||||
| HR | 40292doc 40293 | module/2/DCA | DC current of input 2. | UINT16 | × 10^SF (HR 40255) | A | Read | ||
| HR | 40293doc 40294 | module/2/DCV | DC voltage of input 2. | UINT16 | × 10^SF (HR 40256) | V | Read | ||
| HR | 40294doc 40295 | module/2/DCW | DC power of input 2. | UINT16 | × 10^SF (HR 40257) | W | Read | ||
| HR | 40303doc 40304 | module/3/ID | Input number 3. | UINT16 | Read | ||||
| HR | 40304doc 40305 | module/3/IDStr | Label of input 3, reads StCha 3 (battery charge path). | STRING[16] | Read | ||||
| HR | 40312doc 40313 | module/3/DCA | Battery charge current; 0 while discharging. | UINT16 | × 10^SF (HR 40255) | A | Read | ||
| HR | 40313doc 40314 | module/3/DCV | Battery port voltage (since fw 1.31; earlier 0 while discharging). | UINT16 | × 10^SF (HR 40256) | V | Read | ||
| HR | 40314doc 40315 | module/3/DCW | Battery charge power; 0 while discharging. | UINT16 | × 10^SF (HR 40257) | W | Read | ||
| HR | 40323doc 40324 | module/4/ID | Input number 4. | UINT16 | Read | ||||
| HR | 40324doc 40325 | module/4/IDStr | Label of input 4, reads StDisCha 4 (battery discharge path). | STRING[16] | Read | ||||
| HR | 40332doc 40333 | module/4/DCA | Battery discharge current; 0 while charging. | UINT16 | × 10^SF (HR 40255) | A | Read | ||
| HR | 40333doc 40334 | module/4/DCV | Battery port voltage (since fw 1.31; earlier 0 while charging). | UINT16 | × 10^SF (HR 40256) | V | Read | ||
| HR | 40334doc 40335 | module/4/DCW | Battery discharge power; 0 while charging. | UINT16 | × 10^SF (HR 40257) | W | Read | ||
| HR | 40343doc 40344 | Storage ID | Model ID of this block. | UINT16 | Read | ||||
| HR | 40344doc 40345 | Storage L | Length of this block in registers. | UINT16 | Registers | Read | |||
| HR | 40345doc 40346 | WChaMax | Reference power for InWRte/OutWRte: max of charge and discharge rating; 0 without battery. | UINT16 | × 10^SF (HR 40361) | W | Read | ||
| HR | 40346doc 40347 | WChaGra | Maximum charge ramp. | UINT16 | × 10^SF (HR 40362) | % WChaMax/sec | Read | ||
| HR | 40347doc 40348 | WDisChaGra | Maximum discharge ramp. | UINT16 | × 10^SF (HR 40362) | % WChaMax/sec | Read | ||
| HR | 40348doc 40349 | StorCtl_Mod | Activates the charge and/or discharge limit window. | BITMAP16 | Read/write | bit 0 = Charge limit (InWRte) active; bit 1 = Discharge limit (OutWRte) active | |||
| HR | 40350doc 40351 | MinRsvPct | Minimum battery reserve, percent of capacity. | UINT16 | × 10^SF (HR 40364) | % WChaMax | Read/write | ||
| HR | 40351doc 40352 | ChaState | Battery state of charge. | UINT16 | × 10^SF (HR 40365) | % AhrRtg | Read | ||
| HR | 40354doc 40355 | ChaSt | Battery operating status. | UINT16 | Read | 1 = Off; 2 = Empty; 3 = Discharging; 4 = Charging; 5 = Full; 6 = Holding; 7 = Testing | |||
| HR | 40355doc 40356 | OutWRte | Discharge limit, percent of WChaMax; negative forces charging. | INT16 | × 10^SF (HR 40368) | % WChaMax | Read/write | ||
| HR | 40356doc 40357 | InWRte | Charge limit, percent of WChaMax; negative forces discharging. | INT16 | × 10^SF (HR 40368) | % WChaMax | Read/write | ||
| HR | 40358doc 40359 | InOutWRte_RvrtTms | Fallback timer for the charge/discharge window (0-28800 s). | UINT16 | Secs | Read/write | |||
| HR | 40360doc 40361 | ChaGriSet | Allows or blocks battery charging from the grid. | UINT16 | Read/write | 0 = PV only (grid charging disabled); 1 = Grid charging enabled | |||
| HR | 40361doc 40362 | WChaMax_SF | Scale factor (power of ten) for WChaMax. | INT16 | Read | ||||
| HR | 40362doc 40363 | WChaDisChaGra_SF | Scale factor (power of ten) for WChaDisChaGra. | INT16 | Read | ||||
| HR | 40364doc 40365 | MinRsvPct_SF | Scale factor (power of ten) for MinRsvPct. | INT16 | Read | ||||
| HR | 40365doc 40366 | ChaState_SF | Scale factor (power of ten) for ChaState. | INT16 | Read | ||||
| HR | 40368doc 40369 | InOutWRte_SF | Scale factor (power of ten) for InOutWRte. | INT16 | Read | ||||
| HR | 40369doc 40370 | End ID | End-of-map marker, reads 0xFFFF. | UINT16 | Read | ||||
| HR | 40370doc 40371 | End L | End block length, reads 0. | UINT16 | Read |
Notes on this map
- Register table from Fronius' official GEN24 XLSX (gen24-modbus-api-external-docs.zip, linked from the Fronius Modbus TCP open-interfaces page); behaviour and settings from the PDF.
- Addresses assume SunSpec Model Type = int+SF and a battery configured. With float the inverter model is 111/113 and later models move by +10. Without a battery the MPPT model has only inputs 1-2 and the end block follows at 40304. Fronius advises walking the model chain from 40001 rather than hard-coding addresses.
- Word order: neither the PDF nor the XLSX states the order of 32/64-bit values, so they are left out: SID 40001-40002, WH 40094-40095, Evt1/Evt2/EvtVnd1-2 40110-40117, ActWh 40187-40190, StActCtl 40217-40218, Tms 40223-40224, and DCWH/Tms of every MPPT input. The SID is documented as 0x53756E53 'SunS', which suggests high word first, but this is not stated.
- DCA/DCV in the inverter model are left out: GEN24 has several DC inputs, their scale factors are marked not supported, and per-input values are in model 160.
- Registers marked 'not supported' in the XLSX are left out (Opt, other temperatures, VMax/VMin, ramp settings, model 160 Tmp/DCSt/DCEvt, StorAval, InBatV and similar). VAChaMax (40350) is listed as writable but its scale factor VAChaMax_SF is marked not supported, so it is left out too.
- Many scale factors are 'auto-scaled' (A, W, VA, VAr, WH, DCW, Ris, model 160): they change at runtime, so read a value and its SF in the same request.
- Unsupported values read as: int16 0x8000, uint16/enum16/bitfield16 0xFFFF, sunssf 0x8000. Phase B/C and line-line points depend on the grid connection.
- Settings model 121 registers are all read-only in the GEN24 map (the Datamanager map marks some writable).
- StVnd is documented as identical to St; the PDF lists SunSpec states 1-8.
- The Smart Meter is published at its own unit ID (default 200, then 201-204) with a separate common block and meter model starting at 40001; not part of this map.
Check it against the live device. A register map tells you what the controller can expose; the unit in front of you may differ by firmware or options. Read a few registers and compare them with the unit’s own display; for a 32-bit value the float and byte-order decoder shows all four word orders at once, so a wrong word order or scale is obvious. New to this? Read what a register map is and why addresses are off by one.
Questions about the Fronius Primo GEN24 / Symo GEN24 (Plus) SunSpec int+SF
What Modbus registers does the Fronius Primo GEN24 / Symo GEN24 (Plus) SunSpec int+SF have?
This map lists 162 registers: 162 holding registers. 24 of them can be written. Registers vary with firmware, options and configuration, so confirm against the device.
Are the Fronius Primo GEN24 / Symo GEN24 (Plus) SunSpec int+SF Modbus addresses 0-based or 1-based?
The manufacturer's document numbers registers 1-based (subtract 1 for the wire address). Every address on this page is the 0-based wire address you put in the request; the documented number is shown under it where it differs. Fronius numbers SunSpec registers from 40001 and says to send the register number minus one: register 40001 is read at address 40000 (0x9C40). The manual's RTU example reads register 40005 (Mn) with address bytes 9C 44 (40004).
What are the minimum Modbus registers to integrate the Fronius Primo GEN24 / Symo GEN24 (Plus) SunSpec int+SF?
Start with HR 40069 Inverter ID (Inverter model ID (101/103) - confirms int+SF layout); HR 40083 W (AC power); HR 40084 W_SF (AC power scale factor (auto-scaled)); HR 40107 St (Operating state); HR 40351 ChaState (Battery state of charge); HR 40365 ChaState_SF (SoC scale factor); HR 40232 WMaxLimPct (Active power limit %); HR 40236 WMaxLim_Ena (Enable/disable the power limit); HR 40250 WMaxLimPct_SF (Power limit scale factor).
How do I enable Modbus control of the Fronius Primo GEN24 / Symo GEN24 (Plus) SunSpec int+SF?
Inverter web interface > Communication > Modbus: choose TCP Server and/or RTU Server, set SunSpec Model Type (int+SF for this map), and activate 'Allow Control' for on/off, power reduction, power factor, reactive power and battery commands. 'Restrict Control' limits control to fixed IP addresses. Writes to models 123/124 raise an exception when control is not allowed.
What happens when the Fronius Primo GEN24 / Symo GEN24 (Plus) SunSpec int+SF loses Modbus communication?
Model 123 controls have *_RvrtTms fallback timers (0-28800 s) that restart with every Modbus message; on expiry the control ends and the next-priority mode takes over. 0 (default) keeps the setting until disabled. Model 124 has InOutWRte_RvrtTms (0-28800 s) for the battery window.
Where is the official Fronius Primo GEN24 / Symo GEN24 (Plus) SunSpec int+SF Modbus documentation?
The source is Fronius GEN24 Modbus TCP & RTU (operating instructions) + Gen24_Primo_Symo_Inverter_Register_Map_Int&SF_storage_ROW.xlsx (42,0410,2649 (034-28092026)), revision 2026-09, published free by Fronius at https://www.fronius.com/en/~/downloads/Solar%20Energy/Operating%20Instructions/42,0410,2649.pdf.
More Fronius Modbus register maps
Source: Fronius GEN24 Modbus TCP & RTU (operating instructions) + Gen24_Primo_Symo_Inverter_Register_Map_Int&SF_storage_ROW.xlsx · 42,0410,2649 (034-28092026) · rev. 2026-09. Register numbers, types, scaling and units are reproduced as published; descriptions are our own.