neoom
Gewerbespeicher › Betrieb & Funktionen

Modbus Spezifikation für externe EMS

Aktualisiert am 10.11.2026

Inhaltsübersicht

Metadata

Property

Value

Summary

The Modbus TCP Interface for the BLOKK variants BLOKK (NN), BLOKK (NN) Light and BLOKK NEA, as well as TERRA

Version

V3.0

Byte-Order

BigEndian

Word-Order

LittleEndian

Register type

Holding Register

Hinweis zur logischen Einordnung: die gesamte BLOKK/TERRA-Schnittstelle ist als "Holding Register" deklariert (Funktionscode 03 lesen, 06/16 schreiben). Es existieren keine "Input-Register". Innerhalb der Holding Register unterscheidet die Spezifikation aber Gruppen mit reinem Lesezugriff = deklariert als "read only" (was logisch einem Input Register entspricht) und Gruppen mit Lese-/Schreibzugriff (= "read / write" = echtes Holding Register Verhalten). Ob "read / write" oder "read only" findest du in den Überschriften!

Enums

Enum TypeName

Key

Value

Description

BLOKK_State

UNKNOWN

0

BLOKK_State

SLEEP

1

BLOKK is in deep sleep state / start is possible

BLOKK_State

SETUP

2

BLOKK is starting up and checking components

BLOKK_State

EMERGENCY_STOP

3

BLOKK is in error state / Emergency stop is active

BLOKK_State

ERROR

4

BLOKK is in error state / see registers AlarmIDActive01..AlarmIDActive20

BLOKK_State

STOPPED

5

BLOKK is stopped / no error active / start is possible

BLOKK_State

ONGRID_SETUP

10

BLOKK is starting ongrid operation

BLOKK_State

ONGRID_RUN

11

BLOKK is operating in ongrid mode

BLOKK_State

ONGRID_TEARDOWN

12

BLOKK is stopping ongrid operation

BLOKK_State

OFFGRID_SETUP

20

BLOKK is starting offgrid operation

BLOKK_State

OFFGRID_RUN

21

BLOKK is operating in offgrid mode

BLOKK_State

OFFGRID_TEARDOWN

22

BLOKK is stopping offgrid operation

ExternalControl_OperationMode

Standard

0

BLOKK operates autonomously in it's normal mode with a static configuration and mode selection based on it's SoC

ExternalControl_OperationMode

InverterSetpoint

2

given active power setpoint on ExternalControl.SetpointPrimaryPowerActive is directly distributed to the inverters / grid power control is inactive.

ExternalControl_OperationMode

GridSetpoint

3

given active power setpoint on ExternalControl.SetpointPrimaryPowerActive is used as the setpoint for grid power control.

ExternalControl_OperationMode

GridSetpointReplaceConsumptionOptimization

4

given active power setpoint on ExternalControl.SetpointPrimaryPowerActive is used as the setpoint for grid power control in the SoC-region of consumption optimization. Peak shaving limits are active and it's SoC region is maintained to have enough energy for peak shaving.

ExternalControl_OperationMode

InverterSetpointReplaceConsumptionOptimization

5

given active power setpoint on ExternalControl.SetpointPrimaryPowerActive is distributed to the inverters, if peak shaving limits can be adhered. Otherwise the grid power control kicks in to keep power within peak-shaving limits. The peak-shaving SoC region is maintained to have enough energy for peak shaving.

ExternalControl_OperationMode

StandBy

99

BLOKK is in Standby mode, power switch is closed but no power active

ExternalControl_OperationMode

Maintenance

100

BLOKK is in maintenance mode, manual power set point on BLOKK active

ExternalControl_OperationModeReactive

InverterConfig

0

The BLOKK does not control the reactive power. Either the inverter has configured options Q(U), constant cos(phi) or similar on the device configuration itself, or the reactive power is from the inverter is zero.

ExternalControl_OperationModeReactive

ExternalControlInverterSetpoint

1

The BLOKK sets the reactive power setpoint (ExternalControl.SetpointPowerReactive) directly on to the inverters, by distributing it across all inverters. If the setpoint can't be achived the reactive power is staurated. This option is may not be supported with all inverters, if the inverter is not configured to support this mode.

BLOKK_PowerDistributionMode

Support

0

EMS acts as Support, inverter power set point is received from Main EMS

BLOKK_PowerDistributionMode

Main

1

EMS acts as Main, operation mode/control/power distribution to Supports is enabled

Bitfields

Bitfield TypeName

Byte Size

BitNum

FieldName

BLOKK_MainSupportStatus

4

0

AtLeastOneBlokkOnGrid

BLOKK_MainSupportStatus

4

1

AtLeastOneBlokkOnGridAndControllable

BLOKK_MainSupportStatus

4

2

AtLeastOneBlokkRunningInRequestedMode

BLOKK_MainSupportStatus

4

3

WarningActive

BLOKK_MainSupportStatus

4

4

ErrorActive

Groups

Group Name

Description

Start Address

BLOKK

Settings and data for whole BLOKK or TERRA

36000

MainSupport

Interface for a Main/Support BLOKK or TERRA combination

36500

ExternalControl

Control interface for a external EMS

36800

Group - BLOKK

Group Data

Description

Start Address

Settings and data for whole BLOKK Config data only relevant for ExternalControl_OperationMode = 0 / 4 / 5

36000

Group Command (read / write)

Name

Datatype

RegisterAddress

Unit & Scaling

Default Config

Description

AlarmAcknowledge

BOOL

36280

0

1=acknowledge all alarms, resetting register to 0 after receiving command

Group Config (read / write)

Name

Datatype

RegisterAddress

Unit & Scaling

Default Config

Description

MinInfeedPriorizationSoC

UINT16

36310

%*100.0

minimal SoC level, where infeed is prioritized over PV/self-consumption. below this level PV/self-consumption is active

FeedInPriorizationChargeOver

UINT32

36311

W

infeed priorization: grid power setpoint to charge the battery above this level. always >= 0

MinPVSOC

UINT16

36320

%*100.0

minimal SoC level, where PV/self-consumption is active. below this level the capacity is used for peak shaving and as blackout reserve.

MinPeakSOC

UINT16

36330

%*100.0

minimal SoC level, where peak shaving is active. below this level the capacity is blackout reserve.

PeakShavingDischargeOver

UINT32

36331

W

peak shaving grid power setpoint to discharge the battery above this level. always >= 0

MinBlackoutSOC

UINT16

36335

%*100.0

minimal SoC level for blackout reserve. always >= 0

Group Outputs (read only, logisch = Input-Register, tatsächlich = Holding-Register)

Name

Datatype

RegisterAddress

Unit & Scaling

Description

InterfaceVersionMajor

UINT16

36000

major version of the modbus interface

InterfaceVersionMinor

UINT16

36001

minor version of the modbus interface

HardwareVersionMajor

UINT16

36003

major version of the BLOKK hardware

HardwareVersionMinor

UINT16

36004

minor version of the BLOKK hardware

SoftareVersionMajor

UINT16

36006

major version of the BLOKK PLC software

SoftwareVersionMinor

UINT16

36007

minor version of the BLOKK PLC software

SoftwareVersionPatch

UINT16

36008

patch version of the BLOKK PLC software

SerialNumber

STRING(19)

36010

serial number of the BLOKK

Lifecounter

UINT16

36030

Life signal from PLC, is increased every 1sec

State

enum/BLOKK_State

36031

current BLOKK state

OffgridCapability

BOOL

36032

BLOKK is offgrid capable

OffgridModeActive

BOOL

36033

offgrid mode active and running

WarningActive

BOOL

36034

At least one warning is active. Register State shows if BLOKK is running

ActivePowerDistributionMode

enum/BLOKK_PowerDistributionMode

36040

actual power distribution mode of BLOKK (Main/Support)

PowerDistributionModeMainActiveSince

UINT32

36041

s

elapsed time since power distribution mode Main was activated on this BLOKK

ActiveInverterCount

UINT16

36075

number of active/running inverters in this BLOKK

ActivePowerSum

INT32

36080

W

sum of BLOKK active power. Discharge > 0 / charge < 0

ReactivePowerSum

INT32

36082

VAr

sum of BLOKK reactive power. over-excited = voltage-rising = reactive power generation > 0 / under-excited = voltage-lowering = reactive power consumption < 0

ApparentPowerSum

INT32

36084

VA

sum of BLOKK apparent power, always >= 0

DCPowerSum

INT32

36086

W

sum of BLOKK DC power. Discharge < 0 / charge > 0

SoH

UINT16

36100

%*100

minimal state of health of the entire BLOKK

MaxSOC

UINT16

36110

%

maximal SoC of the battery's DoD range

MinSOC

UINT16

36111

%

minimal SoC of the battery's DoD range

GrossSoC

UINT16

36112

%*100.0

gross state of charge of the entire BLOKK (PylonTech 8 .. 98%)

NetSoC

UINT16

36113

%*100.0

net state of charge of the entire BLOKK (0 .. 100%)

AvailableGrossSoC

UINT16

36114

%*100.0

gross state of charge, only available batteries/inverters (PylonTech 8 .. 98%)

AvailableNetSoC

UINT16

36115

%*100.0

net state of charge, only available batteries/inverters (0 .. 100%)

InstalledNominalCapacity

UINT32

36130

Wh

sum of the nominal capacity of all batteries installed.

AvailableNominalCapacity

UINT32

36132

Wh

sum of the nominal capacity of all batteries installed and available.

AvailableEnergyCharge

UINT32

36134

Wh

available energy for charging.

AvailableEnergyDischarge

UINT32

36136

Wh

available energy for discharging / in case of BLOKK Light NEA -> remaining energy to blackout reserve

InstalledActivePower

UINT32

36150

W

sum of the nominal power of all inverters installed.

AvailableNominalActivePower

UINT32

36152

W

sum of the nominal power of all inverters installed and available.

AvailableActivePowerCharge

INT32

36154

W

available active power for charging / usually >= 0, if < 0 => forced discharging.

AvailableActivePowerDischarge

INT32

36156

W

available active power for discharging / in case of BLOKK Light NEA -> in SoC region of blackout reserve = 0 / usually >= 0, if < 0 => forced charging.

UsedSetpointActivePower

INT32

36170

W

sum of all active power setpoints of the inverters. Discharge > 0 / charge < 0

UsedSetpointReactivePower

INT32

36172

VAr

sum of all reactive power setpoints of the inverters, if reactive power setpoint is used. over-excited = voltage-rising = reactive power generation > 0 / under-excited = voltage-lowering = reactive power consumption < 0

TemperatureMainCabinet

INT16

36220

°C*10.0

temperature Main cabinet

HumidityMainCabinet

INT16

36221

%*10.0

relative humidity Main cabinet

LoadShed_DO1_SheddingActive

BOOL

36240

load shed DO 1 is set (TRUE), such that a load can be shed (dropped). If FALSE, load is enabled/active.

LoadShed_DO2_SheddingActive

BOOL

36241

load shed DO 2 is set (TRUE), such that a load can be shed (dropped). If FALSE, load is enabled/active.

LoadShed_DO3_SheddingActive

BOOL

36242

load shed DO 3 is set (TRUE), such that a load can be shed (dropped). If FALSE, load is enabled/active.

LoadShed_DO4_SheddingActive

BOOL

36243

load shed DO 4 is set (TRUE), such that a load can be shed (dropped). If FALSE, load is enabled/active.

RippleControl_DI1

BOOL

36250

ripple control digital input 1 is set, (standard setting: 100% level).

RippleControl_DI2

BOOL

36251

ripple control digital input 2 is set, (standard setting: 60% level).

RippleControl_DI3

BOOL

36252

ripple control digital input 3 is set, (standard setting: 30% level).

RippleControl_DI4

BOOL

36253

ripple control digital input 4 is set, (standard setting: 0% level).

AlarmIDActive01

UINT16

36260

alarm ID of list entry 1 in alarm list, list order: severity then trigger time.

AlarmIDActive02

UINT16

36261

alarm ID of list entry 2 in alarm list, list order: severity then trigger time.

AlarmIDActive03

UINT16

36262

alarm ID of list entry 3 in alarm list, list order: severity then trigger time.

AlarmIDActive04

UINT16

36263

alarm ID of list entry 4 in alarm list, list order: severity then trigger time.

AlarmIDActive05

UINT16

36264

alarm ID of list entry 5 in alarm list, list order: severity then trigger time.

AlarmIDActive06

UINT16

36265

alarm ID of list entry 6 in alarm list, list order: severity then trigger time.

AlarmIDActive07

UINT16

36266

alarm ID of list entry 7 in alarm list, list order: severity then trigger time.

AlarmIDActive08

UINT16

36267

alarm ID of list entry 8 in alarm list, list order: severity then trigger time.

AlarmIDActive09

UINT16

36268

alarm ID of list entry 9 in alarm list, list order: severity then trigger time.

AlarmIDActive10

UINT16

36269

alarm ID of list entry 10 in alarm list, list order: severity then trigger time.

AlarmIDActive11

UINT16

36270

alarm ID of list entry 11 in alarm list, list order: severity then trigger time.

AlarmIDActive12

UINT16

36271

alarm ID of list entry 12 in alarm list, list order: severity then trigger time.

AlarmIDActive13

UINT16

36272

alarm ID of list entry 13 in alarm list, list order: severity then trigger time.

AlarmIDActive14

UINT16

36273

alarm ID of list entry 14 in alarm list, list order: severity then trigger time.

AlarmIDActive15

UINT16

36274

alarm ID of list entry 15 in alarm list, list order: severity then trigger time.

AlarmIDActive16

UINT16

36275

alarm ID of list entry 16 in alarm list, list order: severity then trigger time.

AlarmIDActive17

UINT16

36276

alarm ID of list entry 17 in alarm list, list order: severity then trigger time.

AlarmIDActive18

UINT16

36277

alarm ID of list entry 18 in alarm list, list order: severity then trigger time.

AlarmIDActive19

UINT16

36278

alarm ID of list entry 19 in alarm list, list order: severity then trigger time.

AlarmIDActive20

UINT16

36279

alarm ID of list entry 20 in alarm list, list order: severity then trigger time.

Group - MainSupport

Group Data

Description

Start Address

Interface for a Main/Support BLOKK combination For use only with multiple BLOKKs in one system Only valid on Main BLOKK

36500

Group Config (read / write)

Name

Datatype

RegisterAddress

Unit & Scaling

Default Config

Description

MainSupport_PowerDistributionMode

enum/BLOKK_PowerDistributionMode

36500

BLOKK_PowerDistributionMode.Main

BLOKK EMS power distribution mode for Main/Support BLOKK combination, for standalone BLOKK use BLOKK_PowerDistributionMode.Main

Group Outputs (read only, logisch = Input-Register, tatsächlich = Holding-Register)

Name

Datatype

RegisterAddress

Unit & Scaling

Description

Main_NumberOfSupportsOnline

UINT16

36520

Main - Number of online/reachable Support BLOKKs in Main/Support BLOKK combination / for standalone BLOKK =1

Main_NumberOfSupportsRunning

UINT16

36521

Main - Number of active/on-grid running Support BLOKKs in Main/Support BLOKK combination / for standalone BLOKK =1

Main_SystemStatus

bitfield/BLOKK_MainSupportStatus

36522

Status bits of Main/Support combination, also valid for standalone BLOKK

Main_SumActivePower

INT32

36530

W

AC active power sum of BLOKK combination or standalone BLOKK, Discharge > 0 / charge < 0

Main_SumReactivePower

INT32

36532

VAr

AC reactive power sum of BLOKK combination or standalone BLOKK, over-excited = voltage-rising = reactive power generation > 0 / under-excited = voltage-lowering = reactive power consumption < 0

Main_SumPowerDC

INT32

36534

W

DC power sum of BLOKK combination or standalone BLOKK, Discharge < 0 / charge > 0

Main_SumAvailableActivePowerDischarge

INT32

36536

W

available DC power sum of BLOKK combination or standalone BLOKK for discharging / usually >= 0, if < 0 => forced charging.

Main_SumAvailableActivePowerCharge

INT32

36538

W

available DC power sum of BLOKK combination or standalone BLOKK for charging / usually >= 0, if < 0 => forced discharging.

Main_UsedSetpointActivePower

INT32

36540

W

sum of all active power setpoints of the inverters. Discharge > 0 / charge < 0

Main_UsedSetpointReactivePower

INT32

36542

VAr

sum of all reactive power setpoints of the inverters, if reactive power setpoint is used. over-excited = voltage-rising = reactive power generation > 0 / under-excited = voltage-lowering = reactive power consumption < 0

Main_SumGrossSoC

UINT16

36550

%*100.0

gross state of charge of BLOKK combination or standalone BLOKK (PylonTech 8 .. 98%)

Main_SumNetSoC

UINT16

36551

%*100.0

net state of charge of the BLOKK combination or standalone BLOKK (0 .. 100%)

Main_MaxAvailableGrossSoC

UINT16

36552

%*100.0

max. possible gross state of charge (with currently available batteries/inverters) of the BLOKK combination or standalone BLOKK (PylonTech 8 .. 98%)

Main_MaxAvailableNetSoC

UINT16

36553

%*100.0

max. possible net state of charge (with currently available batteries/inverters) of the BLOKK combination or standalone BLOKK (0 .. 100%)

Main_AvailableEnergyCharge

UINT32

36560

Wh

available energy sum of BLOKK combination or standalone BLOKK for charging.

Main_AvailableEnergyDischarge

UINT32

36562

Wh

available energy sum of BLOKK combination or standalone BLOKK for discharging.

Group - ExternalControl

Group Data

Description

Start Address

Control interface for a external EMS

36800

Group Inputs (read / write)

Name

Datatype

RegisterAddress

Unit & Scaling

Description

Lifecounter

UINT16

36800

lifecounter from external control / must be increased every 1s

TimeoutConnectionLost

UINT16

36801

s

timeout for detection of connection loss if no lifecounter value change / max. 12h (=43200s) BLOKK stops operation if timeout detected

Priority

UINT16

36802

priority of the EMS to control the BLOKK / set to 0 for standalone operation / set to 1 for following external control set point

OperationMode

enum/ExternalControl_OperationMode

36810

selection for the EMS control operation mode for active power / set to 2 for direct power set point without grid connection point control

SetpointPrimaryPowerActive

INT32

36820

W

primary active power set point => set point power for selected operation mode. Discharge or grid infeed > 0 / charge or grid consumption < 0

LimitPowerActiveDischarge

UINT32

36830

W

discharge active power limit for BESS / if no limitation is active, write installed sum inverter power

LimitPowerActiveCharge

UINT32

36832

W

charge active power limit for BESS / if no limitation is active, write installed sum inverter power

LimitGridPowerActiveInfeed

INT32

36834

W

usually >= 0 / LimitGridPowerActiveInfeed >= -LimitGridPowerActiveConsumption / grid active power infeed limit / if no limitation is active, use rated power of grid connection point

LimitGridPowerActiveConsumption

INT32

36836

W

usually >= 0 / LimitGridPowerActiveConsumption >= -LimitGridPowerActiveInfeed / grid active power consumption limit / if no limitation is active, use rated power of grid connection point

OperationModeReactive

enum/ExternalControl_OperationModeReactive

36850

For future use cases selection for the EMS control operation mode for reactive power / default is InverterConfig without possibility to give a reactive power set point !!! reactive power set point is not working without setting the corresponding operation mode at inverter configuration !!!

SetpointPowerReactive

INT32

36852

Var

For future use cases over-excited = voltage-rising = reactive power generation > 0 / under-excited = voltage-lowering = reactive power consumption < 0

Group Outputs (read only, logisch = Input-Register, tatsächlich = Holding-Register)

Name

Datatype

RegisterAddress

Unit & Scaling

Description

ExternalControlActive

BOOL

36870

signal external control that BLOKK follows it's set points.

CurrentOperationMode

enum/ExternalControl_OperationMode

36871

feedback of the EMS control operation mode for active power

CurrentOperationModeReactive

enum/ExternalControl_OperationModeReactive

36872

feedback of the EMS control operation mode for reactive power

RealizedPrimaryPowerActiveSetPoint

INT32

36873

W

portion of total active power, that is realized because of the external control primary power setpoint. Discharge > 0 / charge < 0

Mehr zu Stromspeicher