Zum Hauptinhalt springen

OPC-Datentransfer via Transferobjekt

Systeme

Host

Betriebssystem: Windows 11
RAM: 32 GB
Prozessor: Intel i7-8700

Virtuelle Maschinen

OPC Router

Betriebssystem: Windows Server 2022
RAM: Dynamisch, bis zu 16GB
Virtuelle Prozessoren: 8
OPC Router: 5.3.5008.157 (inraySDK-Version: 3.32.6002.24)

Testserver

Betriebssystem: Windows Server 2025
RAM: 8 GB
Virtuelle Prozessoren: 6
OPC Server: IoT Edge OPC UA PLC in Docker

Testaufbau

In den Flows wurde mit einem Batch Read Transferobjekt oder einem Data Access Transferobjekt je 10 Datenpunkte gelesen. Die Daten werden an MQTT gesendet und zusätzlich in eine Influx Datenbank geschrieben.

Es wurde mit Datachange Triggern, Time Triggern und Cron Triggern getrennt getestet. Die Performance wurde ermittelt, indem die erwartete Anzahl der Ausführungen mit der tatsächlichen Anzahl der Ausführungen verglichen wurde.

OPC-UA Client Plug-in Einstellungen

Für den Test wurden im Plug-in einige Einstellungen angepasst.

EinstellungWert
OPC Tags beim Start registrierenAktiv
OPC Read ModeAsynchron
hinweis

In diesem Test haben wir den OPC Router und den verwendeten OPC-Server bewusst an und über ihre Leistungsgrenzen geführt. Dabei wurden Datenraten von mehr als 19.500 Tags pro Sekunde erreicht.

Die Spalte Ø Ausführungen / Min zählt die Ausführungen je Flow; die Spalte Datenpunkte (ges) nennt dagegen die Summe über alle Flows (je Flow 10 Datenpunkte). Die übertragene Datenrate ergibt sich daraus als Datenpunkte (ges) × Ausführungen / Min ÷ 60.

Ergebnisse bei Verwendung des Cron Triggers

Mit dem Batch Read TO

FlowsDatenpunkte (ges)Trigger IntervallØ Ausführungen / MinErwartet
1000100001 Sekunde6060

Mit dem OPC Data Access TO

FlowsDatenpunkte (ges)Trigger IntervallØ Ausführungen / MinErwartet
1000100001 Sekunde6060

Ergebnisse bei Verwendung des Datachange Triggers

hinweis

Bei einer Datenänderungsrate von 250 ms wurde die Sample Rate im Plug-in auf 250 ms herabgesetzt.

Mit Batch Read Transferobjekt

FlowsDatenpunkte (ges)DatenänderungenØ Ausführungen / MinErwartet
100010000500 ms118,9120
5005000500 ms120120
5005000250 ms192,2240
2502500250 ms198240
1001000250 ms199,4240

Mit OPC Data Access Transferobjekt

FlowsDatenpunkte (ges)DatenänderungenØ Ausführungen / MinErwartet
100010000500 ms118,1120
5005000500 ms120120

Ergebnisse bei Verwendung des Time Triggers

hinweis

Bitte beachten Sie, dass der Time-Trigger Zyklus die Zeit ist, die zwischen den Ausführungen gewartet wird.

Mit dem Batch Read Transferobjekt

FlowsDatenpunkte (ges)ZyklusAusführungen / Min
100010000500 ms114
5005000500 ms114
5005000250 ms215

Mit dem OPC Data Access Transferobjekt

FlowsDatenpunkte (ges)ZyklusAusführungen / Min
100010000500 ms114
5005000500 ms114
5005000250 ms214
2502500250 ms214

Fazit

Die Kopfzahl. Die höchste gemessene Datenrate erreichen die Datachange-Läufe mit 1000 Flows: 10.000 Datenpunkte bei 118,9 Ausführungen je Minute sind rund 19.800 Tags pro Sekunde – die eingangs genannte Datenrate von mehr als 19.500 Tags pro Sekunde. Der Cron-Trigger mit 1 Sekunde Intervall liegt bei 10.000 Tags pro Sekunde und wird dabei vollständig bedient (60 von 60 Ausführungen).

Die Grenze liegt nicht in der Datenmenge. Bei einer Änderungsrate von 500 ms werden die erwarteten 120 Ausführungen je Minute erreicht (118,9 bzw. 120). Bei 250 ms bleibt es dagegen bei rund 200 statt 240 Ausführungen – und zwar unabhängig davon, ob 500, 250 oder 100 Flows laufen (192,2 / 198 / 199,4). Da die Datenmenge dabei um den Faktor 5 sinkt, der Rückstand aber bleibt, begrenzt nicht der Durchsatz, sondern der 250-ms-Änderungstakt selbst.

Beim Time-Trigger ist die Lücke rechnerisch erklärt. Der Zyklus ist die Wartezeit zwischen den Ausführungen, die Ausführungsdauer kommt hinzu: Aus 114 Ausführungen je Minute bei 500 ms Zyklus folgt eine Rundenlänge von rund 526 ms, aus 214 bei 250 ms eine von rund 280 ms – in beiden Fällen also rund 30 ms Ausführungszeit je Runde.

Batch Read oder OPC Data Access. Wo beide Transferobjekte gemessen wurden, liegen sie gleichauf (118,9 zu 118,1 und 120 zu 120 beim Datachange-Trigger, 114 zu 114 und 215 zu 214 beim Time-Trigger). Für die Wahl zwischen ihnen geben diese Messungen nichts her.

hinweis

Für das OPC Data Access Transferobjekt fehlen die Messpunkte mit 250 ms Änderungsrate; der Vergleich der beiden Transferobjekte beim Datachange-Trigger endet deshalb bei 500 ms.

Projektdateien

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 Datei für den OPC Server