Skip to main content

Sigenergy SigenStor / Sigen Hybrid (hybrid ESS)

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

A curated ModDef profile for the Sigenergy SigenStor / Sigen Hybrid (hybrid ESS). Import it as sigenergy.sigenstor 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("sigenergy-sigenstor.moddef.yaml")
dev, _ := client.New(doc, "sigenergy-sigenstor", transport) // your modbus.Transport
v, _ := dev.ReadPoint(ctx, "grid_active_power")
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++).

enable_remote_ems — Enable Remote EMS Control

Hand plant control over to the Modbus master. Writes 1 to Remote EMS enable (40029) and then waits for the plant's EMS work mode (30003) to report 7, Remote EMS mode, which is how the document says the switch is confirmed. Nothing else in this profile's plant_control block does anything until this succeeds.

Results

FieldType
ems_work_modeUINT32

disable_remote_ems — Disable Remote EMS Control

Give plant control back to the built-in EMS by writing 0 to Remote EMS enable (40029). The plant returns to whichever work mode it was configured for locally, so the resulting EMS work mode is read back rather than polled for a fixed value.

Results

FieldType
ems_work_modeUINT32

set_pcs_power_target — Set PCS Active and Reactive Power Target

Take remote control and hold an absolute active and reactive power target at the plant. Enables remote EMS, selects control mode 0 (PCS remote control), then writes both targets. Mode 0 is required: the document notes that the power control registers not called out individually take effect only when the remote EMS control mode is 0. Command params carry no transform, so the limit is the raw register value in units of 1/1000 kW (the document's gain), not kW.

Params

FieldTypeRequired
active_power_rawINT32yes
reactive_power_rawINT32yes

Results

FieldType
active_power_targetDECIMAL
reactive_power_targetDECIMAL

command_charge — Command Charging

Take remote control and charge the battery at up to a given power. Enables remote EMS, writes the control mode, then writes the ESS max charging limit (40032), which the document says takes effect only in modes 3 and 4. Pass mode 3 to consume grid power first or 4 to consume PV power first. Command params carry no transform, so the limit is the raw register value in units of 1/1000 kW (the document's gain), not kW.

Params

FieldTypeRequired
modeUINT32yes
charge_limit_rawUINT32yes

Results

FieldType
control_modeUINT32
charge_limitDECIMAL

command_discharge — Command Discharging

Take remote control and discharge at up to a given power. Enables remote EMS, writes the control mode, then writes the ESS max discharging limit (40034), which the document says takes effect only in modes 5 and 6. Pass mode 5 to output from PV first or 6 to output from the battery first. Command params carry no transform, so the limit is the raw register value in units of 1/1000 kW (the document's gain), not kW.

Params

FieldTypeRequired
modeUINT32yes
discharge_limit_rawUINT32yes

Results

FieldType
control_modeUINT32
discharge_limitDECIMAL

set_remote_ems_mode — Set Remote EMS Control Mode

Enable remote EMS and put the plant into one of the modes from the document's appendix 6 without touching any power limit. Useful for the modes that need no setpoint: 1 is standby and 2 is maximum self-consumption. The charge and discharge modes 3 to 6 are better driven through command_charge and command_discharge, which also write the limit those modes read.

Params

FieldTypeRequired
modeUINT32yes

Results

FieldType
control_modeUINT32
ems_work_modeUINT32

Measurands

The 20 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
active_powerActive PowerWInstantaneous real power
reactive_powerReactive PowervarInstantaneous reactive power
pv_powerPV PowerWPV array / string power
pv_voltagePV VoltageVPV array / string voltage
pv_currentPV CurrentAPV array / string current
battery_powerBattery PowerWBattery power (sign per direction)
battery_voltageBattery VoltageVBattery terminal voltage
voltageVoltageVRMS voltage; qualify with phase_ref (L1_N, L1_L2, ...)
currentCurrentARMS current; qualify with phase_ref / direction
frequencyFrequencyHzGrid frequency
state_of_chargeState of Charge%Battery charge level
state_of_healthState of Health%Battery health
charge_limitCharge LimitWMaximum allowed charge power
discharge_limitDischarge LimitWMaximum allowed discharge power
energy_activeActive EnergyWhCumulative active energy register
power_factorPower Factor1 (ratio)Ratio of real to apparent power (dimensionless)
temperatureTemperaturedegCTemperature; qualify with location (INTERNAL, EXTERNAL, ...)
inverter_temperatureInverter TemperaturedegCInverter internal temperature
device_statusDevice StatusundefinedOverall device operating status (enum)
alarm_statusAlarm StatusundefinedAlarm state (enum or flag set)

Source