1. Situation
A renewable energy plant needs to provide the direct marketer with the minimum, maximum and average values of the feed power. The renewable energy plant issues a Modbus value containing it’s feed power. The direct marketer requests a Modbus protocol value containing the feed power values. The feed power values need to be computed and provided to the direct marketer via Modbus. Data transmission and computation takes place using an INSYS Smart Device (industrial router) located in the renewable energy plant using a secure VPN connection.
2. Solution
The icom Data Suite running on the INSYS Smart Device (industrial router) will act as a computer of the Modbus value and provide the minimum, maximum and average of the value.
The icom Data Suite acts as a Modbus Master and reads the feed power from a Modbus register of the control of the renewable energy plant that acts as a Modbus slave.
The icom Data Suite will then compute the minimum, maximum and average of the value.
The icom Data Suite will act as a Modbus slave and provide the values to the direct marketer that acts as a Modbus master in a Modbus register.
Please note that the values are computed from the feed power captured over time, i.e. all values acquired in the period will be used for determining the result.
The period starts with the start of the acquisition and could be reset by an action if desired.
It is prerequisite that you have access to the web interface of the icom Data Suite.
It is also prerequisite that the INSYS Smart Device (industrial router) is properly configured to establish the VPN connection to the direct marketer as well as the Modbus connection to the control of the renewable energy plant.
2.1. Configuring the Modbus Connection to the renewable energy plant
-
In the Data points → Modbus menu, add a new device () and edit it ():
-
Description: Modbus connection to renewable energy plant
-
Type: select the connection type TCP (TCP/IP) or RTU (serial) depending on the Modbus connection
-
Enter address and port for TCP or the serial parameters for RTU [1]
-
Polling interval: 5
-
Slave address: enter the Modbus slave address of the control of the renewable energy plant
-
Byte order: select as requested by the protocol
-
-
Click on Save settings.
-
In the Data points → Modbus menu in the Data points section, add a new data point () and edit it (): [2]
-
Click on Save settings.
2.2. Configuring the Value Computation
-
In the ALU → Functions menu, add a new function () and edit it (): [6]
-
Description: Feed power minimum
-
Type: Minimum
-
Capture value over time:
-
Input data points: Check the data point for feed power added above
-
-
Click on Save settings.
-
In the ALU → Functions menu, add a new function () and edit it (): [7]
-
Description: Feed power maximum
-
Type: Maximum
-
Capture value over time:
-
Input data points: Check the data point for feed power added above
-
-
Click on Save settings.
-
In the ALU → Functions menu, add a new function () and edit it (): [8]
-
Description: Feed power average
-
Type: Moving average
-
Capture value over time:
-
Input data points: Check the data point for feed power added above
-
-
Click on Save settings.
2.3. Configuring the Modbus Connection to the Direct Marketer
-
In the Gateway → Modbus menu, add a new device () and edit it ():
-
Description: Modbus gateway to direct marketer
-
Type: TCP
-
Port: 502
-
Slave address: Enter the slave address of the direct marketer [9]
-
Byte order: select as requested by the protocol
-
-
Click on Save settings.
-
In the Gateway → Modbus menu in the Mappings section, add a new mapping () and edit it (): [10]
-
Data point: function1 - Feed power minimum
-
Type: Holding register
-
Register: Enter a register address for the feed power minimum value
-
Format: Unsigned integer 16
-
-
Click on Save settings.
-
In the Gateway → Modbus menu in the Mappings section, add a new mapping () and edit it (): [11]
-
Data point: function2 - Feed power maximum
-
Type: Holding register
-
Register: Enter a register address for the feed power maximum value
-
Format: Unsigned integer 16
-
-
Click on Save settings.
-
In the Gateway → Modbus menu in the Mappings section, add a new mapping () and edit it (): [12]
-
Data point: function3 - Feed power average
-
Type: Holding register
-
Register: Enter a register address for the feed power average value
-
Format: Unsigned integer 16
-
-
Click on Save settings.
-
Activate the profile ().
3. Troubleshooting
-
View the Status → Current values page to check whether the flags receive the feed power request values. If the values are missing/incorrect there, check the configuration of the gateways in the icom Data Suite. If the correct values are displayed there, check the Modbus slave connection in the icom Data Suite.
-
View the appropriate logs in the Status → Log view page (also of the router) to locate possible problems.
4. Resources
The following ASCII configuration can be taken over using copy & paste. It must be observed that the individual parameters need to be adapted to the own application. Correct numbering must be observed for numbered parameters. Moreover, it must be observed that no existing parameters with the same number will be overwritten. A proper functionality can only be ensured if the opened profile has been created from default settings before.
datapoints.modbus.device.add datapoints.modbus.device[1].active=1 datapoints.modbus.device[1].description=Modbus connection to renewable energy plant datapoints.modbus.device[1].type=tcp datapoints.modbus.device[1].ip_address=192.168.101.13 datapoints.modbus.device[1].tcp_port=502 datapoints.modbus.device[1].serial_port=--- datapoints.modbus.device[1].serial_speed=115200 datapoints.modbus.device[1].serial_databits=8 datapoints.modbus.device[1].serial_parity=par_none datapoints.modbus.device[1].serial_stopbits=1 datapoints.modbus.device[1].polling_interval=5 datapoints.modbus.device[1].slave_address=1 datapoints.modbus.device[1].endianess=big_abcd datapoints.modbus.device[1].response_timeout=500 datapoints.modbus.device[1].byte_timeout=500 datapoints.modbus.device[1].read_delay=0 datapoints.modbus.device[1].datapoint.add datapoints.modbus.device[1].datapoint[1].datapoint_active=1 datapoints.modbus.device[1].datapoint[1].datapoint_description=Feed power datapoints.modbus.device[1].datapoint[1].datapoint_type=holding_register datapoints.modbus.device[1].datapoint[1].datapoint_register=1 datapoints.modbus.device[1].datapoint[1].datapoint_bit= datapoints.modbus.device[1].datapoint[1].datapoint_format=uint16 alu.functions.function.add alu.functions.function[1].active=1 alu.functions.function[1].description=Feed power minimum alu.functions.function[1].type=min alu.functions.function[1].datapoint=mdbDp1 alu.functions.function[1].time_based=1 alu.functions.function.add alu.functions.function[2].active=1 alu.functions.function[2].description=Feed power maximum alu.functions.function[2].type=max alu.functions.function[2].datapoint=mdbDp1 alu.functions.function[2].time_based=1 alu.functions.function.add alu.functions.function[3].active=1 alu.functions.function[3].description=Feed power average alu.functions.function[3].type=moving_average alu.functions.function[3].datapoint=mdbDp1 alu.functions.function[3].time_based=1 gateway.modbus.gateway.add gateway.modbus.gateway[1].active=1 gateway.modbus.gateway[1].description=Modbus gateway to direct marketer gateway.modbus.gateway[1].type=tcp gateway.modbus.gateway[1].tcp_port=502 gateway.modbus.gateway[1].serial_port=--- gateway.modbus.gateway[1].serial_speed=115200 gateway.modbus.gateway[1].serial_databits=8 gateway.modbus.gateway[1].serial_parity=par_none gateway.modbus.gateway[1].serial_stopbits=1 gateway.modbus.gateway[1].slave_address=2 gateway.modbus.gateway[1].endianess=big_abcd gateway.modbus.gateway[1].mapping.add gateway.modbus.gateway[1].mapping[1].map_active=1 gateway.modbus.gateway[1].mapping[1].map_datapoint=function1 gateway.modbus.gateway[1].mapping[1].map_type=holding_register gateway.modbus.gateway[1].mapping[1].map_register=1 gateway.modbus.gateway[1].mapping[1].map_bit= gateway.modbus.gateway[1].mapping[1].map_format=uint16 gateway.modbus.gateway[1].mapping.add gateway.modbus.gateway[1].mapping[2].map_active=1 gateway.modbus.gateway[1].mapping[2].map_datapoint=function2 gateway.modbus.gateway[1].mapping[2].map_type=holding_register gateway.modbus.gateway[1].mapping[2].map_register=2 gateway.modbus.gateway[1].mapping[2].map_bit= gateway.modbus.gateway[1].mapping[2].map_format=uint16 gateway.modbus.gateway[1].mapping.add gateway.modbus.gateway[1].mapping[3].map_active=1 gateway.modbus.gateway[1].mapping[3].map_datapoint=function3 gateway.modbus.gateway[1].mapping[3].map_type=holding_register gateway.modbus.gateway[1].mapping[3].map_register=3 gateway.modbus.gateway[1].mapping[3].map_bit= gateway.modbus.gateway[1].mapping[3].map_format=uint16
Back to the Configuration Guides for the icom Data Suite
Back to overview