Skip to main content
Version: 5.6

OPC data transfer via transfer object

Systems

Host

Operating system: Windows 11
RAM: 32 GB
Processor: Intel i7-8700

Virtual machines

OPC Router

Operating system: Windows Server 2022
RAM: Dynamic, up to 16GB
Virtual processors: 8
OPC Router: 5.3.5008.157 (inraySDK version: 3.32.6002.24)

Test server

Operating system: Windows Server 2025
RAM: 8 GB
Virtual processors: 6
OPC server: IoT Edge OPC UA PLC in Docker

Test setup

Ten data points were read in each connection using a batch read transfer object or a data access transfer object. The data is sent to MQTT and also written to an Influx database.

Separate tests were performed with data change triggers, time triggers, and cron triggers. Performance was determined by comparing the expected number of executions with the actual number of executions.

OPC-UA client plug-in settings

Some settings in the plug-in were adjusted for the test.

SettingValue
Register OPC tags at startupActive
OPC Read ModeAsynchronous
note

In this test, we deliberately pushed the OPC Router and the OPC server used to and beyond their performance limits. Data rates of more than 19,500 tags per second were achieved.

Results when using the Cron trigger

With the Batch Read TO

ConnectionsData points (total)Trigger intervalØ Executions / minExpected
1010001 second6060

With OPC Data Access TO

ConnectionsData points (total)Trigger intervalØ Executions / minExpected
1010001 second6060

Results when using the Datachange trigger

note

With a data change rate of 250 ms, the sample rate in the plug-in was reduced to 250 ms.

With Batch Read Transfer object

ConnectionsData points (total)Data changesØ Executions / minExpected
101000500 ms118.9120
5005000500 ms120120
5005000250 ms192.2240
2502500250 ms198240
1001000250 ms199.4240

With OPC Data Access Transfer object

ConnectionsData points (total)Data changesØ Executions / minExpected
101000500 ms118.1120
5005000500 ms120120

Results when using the time trigger

note

Please note that the time trigger cycle is the time that is waited between executions.

With the batch read transfer object

ConnectionsData points (total)CycleExecutions/min
1001000500 ms114
5005000500 ms114
5005000250 ms215

With the OPC Data Access Transfer Object

ConnectionsData points (total)CycleExecutions/min
101000500 ms114
5005000500 ms114
5005000250 ms214
2502500250 ms214

Project files

Download Benchmark_CronTrigger_BatchRead_1000.rpe

Download Benchmark_CronTrigger_DataAccess_1000.rpe

Download Benchmark_DatachangeTrigger_BatchRead_1000.rpe

Download Benchmark_DatachangeTrigger_DataAccess_1000.rpe

Download Benchmark_TimeTrigger_BatchRead_1000.rpe

Download Benchmark_TimeTrigger_DataAccess_1000.rpe

Compose file for the OPC server