Symphon-E App Modbus/TCP Schreibzugriff
1. Introduction
Dear customer,
Thank you for choosing the "Symphon-E App Modbus/TCP Schreibzugriff". You are welcome to send us your suggestions so that we can further improve the quality of our products.
2. Installing the app
When you ordered the "Symphon-E App Modbus/TCP Schreibzugriff", you received a 16-digit license key. You can use this license key to redeem the app independently in the EMS App Center.
Eine Anleitung zur Vorgehensweise finden Sie hier.
3. Modbus/TCP - Write access
These instructions describe write access to a Heckert Solar electrical energy storage system using the Modbus/TCP API. The basics of the protocol are described first. The functionality of the interface is then explained.
|
3.1. Prerequisites
The device accessing the electrical energy storage system (e. g. notebook/PC) must have direct access to the IP address of the EMS - i. e. be connected to the same physical network, for example.
3.2. Basics Modbus/TCP
The Modbus protocol is a communication protocol based on a client/server architecture. It was created in 1979 by Gould-Modicon for communication with its programmable logic controllers. Modbus has become a de facto standard in the industry as it is an open protocol. The Modbus TCP version has been part of the IEC 61158 standard since 2007.
Modbus can be used to connect a client (e. g. a PC/EMS) and several servers (e. g. measurement and control systems, battery storage, PV system, EV charging station). There are two versions: One for the serial interface (EIA-232 and EIA-485) and one for Ethernet. This manual describes the version for Ethernet. TCP/IP packets are used to transmit the data.
Read and write access is possible to the following object types:
Object type |
Access |
Size |
Function code |
Single input/output "Coil" |
read & write |
1-bit |
01 / 05 / 15 |
Single input "Discrete Input" |
read only |
1-bit |
02 |
(Analog) inputs "Input Register" |
read only |
16-bits |
04 |
(Analog) inputs/outputs "Holding Register" |
read & write |
16-bits |
03 / 06 / 16 |
The Modbus interface is configured as follows:
Device address |
IP address of the EMS (e. g. 192.168.0.20) |
Port |
*502 |
Unit ID |
*1 |
Function codes |
03 (Read Holding Registers) |
04 (Read Input Registers) |
|
06 (Write Single Holding Register) |
|
16 (Write Multiple Holding Registers) |
The interface enables access to the channels of the _sum and ess0 components by default.
3.3. Modbus table
Via the Online Monitoring you can conveniently download the individual Modbus table for your system as an Excel file as follows:
In the [fig3:modbus_detail view] you can start the download via the "DOWNLOAD PROTOCOL" button.
You can also find the most important data points here in the quick overview:
Address (address) |
Name |
Type |
Value/Description |
Unit |
Access |
200 |
Component-ID |
string16 |
_sum |
RO |
|
222 |
State |
enum16 |
0:Ok, 1:Info, 2:Warning, 3:Fault |
RO |
|
302 |
EssSoc |
uint16 |
State of charge |
Percent [%] |
RO |
303 |
EssActivePower |
float32 |
AC-side active power of the electrical energy storage including excess DC generation with hybrid inverter |
Watt [W] |
RO |
309 |
EssReactivePower |
float32 |
AC-side reactive power of the electrical energy storage |
Volt Ampere Reactive [var] |
RO |
315 |
GridActivePower |
float32 |
Active power at grid connection point |
Watt [W] |
RO |
317 |
GridMinActivePower |
float32 |
Minimum active power measured per grid connection point |
Watt [W] |
RO |
319 |
GridMaxActivePower |
float32 |
Maximum active power per measured active power at the grid connection point |
Watt [W] |
RO |
327 |
ProductionActivePower |
float32 |
Active power of the PV yield and, if applicable, yield from external inverters |
Watt [W] |
RO |
329 |
ProductionMaxActivePower |
float32 |
Maximum measured active power of the PV system |
Watt [W] |
RO |
331 |
ProductionAcActivePower |
float32 |
Active power of the external AC inverters |
Watt [W] |
RO |
339 |
ProductionDcActualPower |
float32 |
Power of the DC generation of the hybrid inverter |
Watt [W] |
RO |
343 |
ConsumptionActivePower |
float32 |
Active power of the electrical consumption |
Watt [W] |
RO |
345 |
ConsumptionMaxActivePower |
float32 |
Maximum active power of electrical consumption ever measured |
Watt [W] |
RO |
351 |
EssActiveChargeEnergy |
float64 |
Cumulative electrical energy of the AC-side battery charging incl. excess PV generation at the hybrid inverter |
Watt hours [Wh] |
RO |
355 |
EssActiveDischargeEnergy |
float64 |
Cumulative electrical energy from electrical energy storage to consumption via AC output of the inverter incl. PV generation |
Watt hours [Wh] |
RO |
359 |
GridBuyActiveEnergy |
float64 |
Cumulative electrical energy from grid consumption |
Watt hours [Wh] |
RO |
363 |
GridSellActiveEnergy |
float64 |
Cumulative electrical energy of the grid feed-in |
Watt hours [Wh] |
RO |
367 |
ProductionActiveEnergy |
float64 |
Cumulative electrical energy of PV generation + external inverter generation |
Watt hours [Wh] |
RO |
371 |
ProductionAcActiveEnergy |
float64 |
Cumulative electrical energy of the external inverters |
Watt hours [Wh] |
RO |
375 |
ProductionDcActiveEnergy |
float64 |
Cumulative electrical energy of the PV generation of the inverter |
Watt hours [Wh] |
RO |
379 |
ConsumptionActiveEnergy |
float64 |
Cumulative electrical consumption |
Watt hours [Wh] |
RO |
383 |
EssDcChargeEnergy |
float64 |
Cumulative DC electrical energy of battery charging |
Watt hours [Wh] |
RO |
387 |
EssDcDischargeEnergy |
float64 |
Cumulative DC electrical energy of storage discharge |
Watt hours [Wh] |
RO |
415 |
EssDischargePower |
float32 |
Actual AC-side active power of the electrical energy storage |
Watt [W] |
RO |
417 |
GridMode |
enum16 |
1:On-Grid, 2:Off-Grid |
RO |
Address (address) |
Name |
Type |
Value/Description |
Unit |
Access |
500 |
Component-ID |
string16 |
ess0 |
RO |
|
522 |
State |
enum16 |
0:Ok, 1:Info, 2:Warning, 3:Fault |
RO |
|
602 |
SoC |
uint16 |
State of Charge |
Percent [%] |
RO |
603 |
GridMode |
enum16 |
1:On-Grid, 2:Off-Grid |
RO |
|
604 |
ActivePower |
float32 |
Charge or discharge power (negative values correspond to battery charging - positive values to battery discharging) |
Watt [W] |
RO |
608 |
MinCellVoltage |
float32 |
Minimum cell voltage |
Millivolt [mV] |
RO |
610 |
MaxCellVoltage |
float32 |
Maximum cell voltage |
millivolt [mV] |
RO |
612 |
MinCellTemperature |
float32 |
Maximum cell temperature |
Degrees Celsius [C] |
RO |
614 |
MaxCellTemperature |
float32 |
Maximum cell temperature |
Degrees Celsius [C] |
RO |
702 |
Minimum Power Set-Point |
float32 |
Minimum power setpoint |
Watt [W] |
RO |
704 |
Maximum Power Set-Point |
float32 |
Maximum power setpoint |
Watt [W] |
RO |
706 |
SetActivePowerEquals |
float32 |
Default charging or discharging power |
Watt [W] |
WO |
708 |
SetReactivePowerEquals |
float32 |
Default reactive power |
Volt Ampere Reactive [var] |
WO |
710 |
SetActivePowerLessOrEquals |
float32 |
Set maximum discharge power |
Watt [W] |
WO |
712 |
SetReactivePowerLessOrEquals |
float32 |
Set maximum reactive power |
Volt Ampere Reactive [var] |
WO |
714 |
SetActivePowerGreaterOrEquals |
float32 |
Set maximum charging power |
Watt [W] |
WO |
716 |
SetReactivePowerGreaterOrEquals |
float32 |
Set minimum reactive power |
Volt Ampere Reactive [var] |
WO |
The registers for reactive power specifications cannot currently be used for home systems. |
3.4. Visualization and configuration
After installing the "Symphon-E App Modbus/TCP Schreibzugriff", you will see the following widget in your live monitoring:

The flat widget shows the current status of the external write specifications. As soon as a register is overwritten, the status changes from "No external specification available" to "External specification is taken into account".
Click on the widget to open the detailed view:

In the detailed view, you will find an overview of the respective registers. This overview contains your set default value for the active power default register (SetActivePowerEquals/706) as well as the actual value that can be technically implemented. Only the default value is displayed for all other registers. As soon as other registers are overwritten, the detailed view is automatically updated.
3.5. Example 1: Write access to EssActivePower with QModMaster
In the following, the write access for setting the EssActivePower using the free tool QModMaster is shown as an example. This allows the function of the Controller Fix Active Power Symmetric to be simulated.
The value is stored as follows (see above):
Address |
Name |
Type |
Value/Description |
Unit |
Access |
706 |
ess0/SetActivePowerEquals |
float32 |
Watt [W] |
WO |
|

As this is a float32, two 16-bit words, i. e. two registers, must be written. In this example, the electrical energy storage is to be unloaded with 4000 (4E+03) watts. The value can be entered directly as a decimal number in the register, whereby the data format Float must be selected. After setting the value, click on the "Read/Write" menu item to perform the write operation.

The comparison with Online Monitoring confirms the correctness of the written value:


|
Other write operations are carried out in the same way.
3.6. Watchdog
The "Symphon-E App Modbus/TCP Schreibzugriff" has an integrated "watchdog" functionality. This ensures that a loading or unloading specification is terminated if the connection is lost (e. g. failure of the higher-level controller or the network). In the standard configuration, this "API timeout" is set to 60 seconds. A write specification is therefore implemented for 60 seconds. In order to implement continuous control, we recommend a new specification after half of the configured time, i. e. in this case after 30 seconds. If no new write specification is made within 60 seconds, loading or unloading is terminated.
The "API timeout" can be changed via the app configuration in the App Center. A value of "0 seconds" deactivates the watchdog function.

