Skip to main content

Fronius Symo / Primo GEN24 Plus

Status: Vendor Confirmed · Register points: 216 · Transports: Modbus TCP, Modbus RTU

A curated ModDef profile for the Fronius Symo / Primo GEN24 Plus. Import it as fronius.gen24 or load the .moddef.yaml directly.

Connect to one over Web Serial and watch its values live in the device dashboard.

Usage​

Load the profile, bind a transport, and read a point by name. The runtime applies the offset, scaling, byte order, and sentinels from the definition.

doc, _ := moddef.Load("fronius-gen24.moddef.yaml")
dev, _ := client.New(doc, "fronius-gen24", transport) // your modbus.Transport
v, _ := dev.ReadPoint(ctx, "ac_current_total")
fmt.Println(v)

Commands​

Multi-step register procedures (spec §11.7) this profile defines — write params, arm a trigger, poll for completion, then read the result. Run one with your language's command executor (RunCommand, runCommand, run_command, or md_cmd_begin/md_cmd_tick in C/C++).

set_power_limit — Start Active Power Limiting​

Limit the inverter's active output power to a percentage of nominal and start the mode, following the numbered procedure in the operating instructions: write WMaxLimPct, optionally set the timing registers, then write 1 to WMaxLim_Ena. Re-running this command while the mode is already active is how you change the limit; the document says a new value only takes effect once WMaxLim_Ena is set to 1 again. limit_pct_raw is the raw register value, so apply WMaxLimPct_SF yourself (e.g. 3000 for 30 % at SF -2). Set win_tms and rvrt_tms to 0 for a change that applies immediately and stays until you stop it. The document marks them optional (step 2 of its procedure) but a command's steps are linear, so both are required here; 0 is the documented default.

Params

FieldTypeRequired
limit_pct_rawUINT32yes
win_tmsUINT32yes
rvrt_tmsUINT32yes

Results

FieldType
appliedDECIMAL
enabledUINT32

stop_power_limit — Stop Active Power Limiting​

End active power limiting by writing 0 to WMaxLim_Ena. The inverter falls back to the next priority, e.g. dynamic power reduction.

Results

FieldType
enabledUINT32

set_power_factor — Start Constant Power Factor​

Hold a constant output power factor and start the mode: write OutPFSet, optionally set the timing registers, then write 1 to OutPFSet_Ena. power_factor_raw is the raw register value, so apply OutPFSet_SF yourself. Set win_tms and rvrt_tms to 0 for a change that applies immediately and stays until you stop it. The document marks them optional (step 2 of its procedure) but a command's steps are linear, so both are required here; 0 is the documented default.

Params

FieldTypeRequired
power_factor_rawUINT32yes
win_tmsUINT32yes
rvrt_tmsUINT32yes

Results

FieldType
appliedDECIMAL
enabledUINT32

stop_power_factor — Stop Constant Power Factor​

End constant power factor mode by writing 0 to OutPFSet_Ena.

Results

FieldType
enabledUINT32

set_reactive_power_limit — Start Constant Reactive Power​

Hold a constant reactive power as a percentage and start the mode: write VArMaxPct, optionally set the timing registers, then write 1 to VArPct_Ena. var_pct_raw is the raw register value, so apply VArPct_SF yourself. Reactive power output is bounded by the inverter's maximum apparent power and its operating reactive-power limit, so the active power may be curtailed to make room. Set win_tms and rvrt_tms to 0 for a change that applies immediately and stays until you stop it. The document marks them optional (step 2 of its procedure) but a command's steps are linear, so both are required here; 0 is the documented default.

Params

FieldTypeRequired
var_pct_rawUINT32yes
win_tmsUINT32yes
rvrt_tmsUINT32yes

Results

FieldType
appliedDECIMAL
enabledUINT32

stop_reactive_power_limit — Stop Constant Reactive Power​

End constant reactive power mode by writing 0 to VArPct_Ena.

Results

FieldType
enabledUINT32

connect — Connect (Resume Feed-In)​

Bring the inverter out of standby into feeding operation. Sets the connect timing registers, then writes 1 to Conn. Set win_tms and rvrt_tms to 0 for a change that applies immediately and stays until you stop it. The document marks them optional (step 2 of its procedure) but a command's steps are linear, so both are required here; 0 is the documented default.

Params

FieldTypeRequired
win_tmsUINT32yes
rvrt_tmsUINT32yes

Results

FieldType
connectedUINT32

disconnect — Disconnect (Standby)​

Put the inverter into standby so it stops feeding in. Sets the connect timing registers, then writes 0 to Conn. Set rvrt_tms to a non-zero number of seconds if you want the inverter to resume feeding in on its own; 0 means it stays in standby until you connect it again. Set win_tms and rvrt_tms to 0 for a change that applies immediately and stays until you stop it. The document marks them optional (step 2 of its procedure) but a command's steps are linear, so both are required here; 0 is the documented default.

Params

FieldTypeRequired
win_tmsUINT32yes
rvrt_tmsUINT32yes

Results

FieldType
connectedUINT32

Measurands​

The 22 semantic quantities this device reports, each linked to the measurand catalog. Query a device by measurand instead of a raw point when you want portable code.

Base quantityNameUnitDescription
currentCurrentARMS current; qualify with phase_ref / direction
voltageVoltageVRMS voltage; qualify with phase_ref (L1_N, L1_L2, ...)
active_powerActive PowerWInstantaneous real power
apparent_powerApparent PowerVAInstantaneous apparent power
reactive_powerReactive PowervarInstantaneous reactive power
power_factorPower Factor1 (ratio)Ratio of real to apparent power (dimensionless)
frequencyFrequencyHzGrid frequency
energy_activeActive EnergyWhCumulative active energy register
energy_apparentApparent EnergyVAhCumulative apparent energy register
energy_reactiveReactive EnergyvarhCumulative reactive energy register
pv_currentPV CurrentAPV array / string current
pv_voltagePV VoltageVPV array / string voltage
pv_powerPV PowerWPV array / string power
battery_voltageBattery VoltageVBattery terminal voltage
state_of_chargeState of Charge%Battery charge level
charge_limitCharge LimitWMaximum allowed charge power
discharge_limitDischarge LimitWMaximum allowed discharge power
inverter_temperatureInverter TemperaturedegCInverter internal temperature
temperatureTemperaturedegCTemperature; qualify with location (INTERNAL, EXTERNAL, ...)
inverter_statusInverter StatusundefinedInverter operating state (enum)
device_statusDevice StatusundefinedOverall device operating status (enum)
alarm_statusAlarm StatusundefinedAlarm state (enum or flag set)

Source​