OPC data transfer via BatchRead every 30 seconds
In this data transfer test, we connected 640,000 OPC data points in an OPC Router instance and transferred them to MQTT and InfluxDB every 30 seconds. The average data transfer rate was 21,209 data points per second.
Systems
OS: Windows Server 2019 Standard 1809
RAM: 16GB
Processor: 64bit 2,6GHz (4 Kerne)
OPC Router: 5.3.5007.156
OS: Windows Server 2019 Standard 1809
RAM: 12GB
Processor: 64bit 2.6GHz (4 Cores)
KEPServerEx: V6.16.203.0
OS: Windows 10 Pro N 22H2
RAM: 12GB
Processor: 64bit 2.6GHz (4 Cores)
KEPServerEx: V6.16.203.0
Projects
Two KEPServerEx projects
- with one channel each (simulator)
- with one device each (16-bit device)
- with 20 tag groups each
- with 100 sub-tag groups each
- with 200 tags each
OPC Router projects
For the two test cases, two projects were created with the same structure but different numbers of connections and therefore data points. Description of the simple project:
- Four OPC UA client connections (each with 2 plug-ins per KEPServerEx)
- Each plug-in is used in 400 template instances for each “Batch Read” transfer object
- Each “Batch Read” transfer object polls 200 tags every 30 seconds and writes them to MQTT and Influx-DB
To summarise: In the first test case, 320,000 tags were read every 30 seconds and passed to MQTT and Influx.
Test case 2: Instead of 400 template instances per plugin, there are 800 template instances. This means that 640,000 tags are queried every 30 seconds.
.png)
Structure of the template instances (connections)
OPC UA client connection
Deviations from the default:
- Quickstart – Timeout (ms): 240000
- Security – Validate server application uri: true
- Subscription – Register OPC tags on startup: true
- Advanced – Timeout (ms): 240000
- Advanced – Enable maximum item count per request: true
- Advanced – Maximum item count per request: 2500
- Advanced – Max Items per Subscription Softlimit: 1500
- Advanced – OPC read mode: Asynchronous
Evaluation
Test case 1
320,000 data points were read and written to MQTT and InfluxDB every 30 seconds across four plug-ins. After running for 30 minutes, a check was made to see how much data had been written to InfluxDB.
.png)
At 640,000 data records/minute, 100% of the data was transferred in our test
Test case 2
640,000 data points were read and written to MQTT and InfluxDB every 30 seconds across four plug-ins. After running for 30 minutes, a check was made to see how much data had been written to InfluxDB.
.png)
At 1,280,000 data records/minute, more than 99% of the data was transferred in our test
Project files
Download Benchmark_BatchRead_1600.rpe
Download Benchmark_BatchRead_3200.rpe