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