Zum Hauptinhalt springen

OPC-Datentransfer via BatchRead alle 30 Sekunden

info

In diesem Datentransfertest haben wir in einer OPC Router-Instanz 640.000 OPC Datenpunkte angebunden und alle 30 Sekunden an MQTT und InfluxDB übertragen. Die durchschnittliche Datenübertragungsrate lag dabei bei 21.209 Datenpunkten pro Sekunde.

Systeme

OS: Windows Server 2019 Standard 1809
RAM: 16GB
Prozessor: 64bit 2,6GHz (4 Kerne)
OPC Router: 5.3.5007.156

OS: Windows Server 2019 Standard 1809
RAM: 12GB
Prozessor: 64bit 2,6GHz (4 Kerne)
KEPServerEx: V6.16.203.0

OS: Windows 10 Pro N 22H2
RAM: 12GB
Prozessor: 64bit 2,6GHz (4 Kerne)
KEPServerEx: V6.16.203.0

Projekte

Zwei KEPServerEx-Projekte

  • mit jeweils einem Kanal (Simulator)
  • mit jeweils einem Gerät (16 Bit Device)
  • mit jeweils 20 Tag-Gruppen
  • mit jeweils 100 Unter-Tag-Gruppen
  • mit jeweils 200 Tags

OPC Router-Projekte

Für die beiden Testfälle wurden zwei Projekte mit gleichem Aufbau, aber unterschiedlicher Flow- und somit Datenpunktanzahl erstellt. Beschreibung des einfachen Projektes:

  • Vier OPC-UA-Client-Anbindungen (Jeweils 2 Plug-ins je KEPServerEx)
  • Jedes Plug-in wird in jeweils 400 Template-Instanzen für jeweils ein „Batch Read”-Transferobjekt verwendet
  • Jedes „Batch Read”-Transferobjekt fragt alle 30 Sekunden 200 Tags ab und schreibt diese nach MQTT und Influx-DB

Zusammengefasst: Im Testfall 1 wurden alle 30 Sekunden 320.000 Tags gelesen und an MQTT sowie Influx übergeben.

Testfall 2: Hierin werden statt 400 Template-Instanzen pro Plugin 800 Template-Instanzen betrieben. Hierdurch sollen alle 30 s 640.000 Tags abgefragt werden.

Aufbau der Template-Instanzen (Flows)

OPC-UA-Client-Anbindung

Abweichungen vom Default:

  • Quickstart – Timeout (ms): 240000
  • Sicherheit – Server Application Uri validieren: true
  • Subscription – OPC-Tags beim Start registrieren: true
  • Erweitert – Timeout (ms): 240000
  • Erweitert – Maximale Datenpunktanzahl je Abfrage aktivieren: true
  • Erweitert – Maximale Datenpunktanzahl je Abfrage: 2500
  • Erweitert – Max Items per Subscription Softlimit: 1500
  • Erweitert – OPC-Lesemodus: Asynchron

Auswertung

Testfall 1

Es wurden auf vier Plug-ins verteilt alle 30s 320.000 Datenpunkte gelesen und nach MQTT und InfluxDB geschrieben. Nach 30 min Laufzeit wurde geprüft, wie viele Daten in die InfluxDB geschrieben worden sind.

Bei 640.000 Datensätzen/Minute wurden in unserem Test 100% der Daten übertragen

Testfall 2

Es wurden auf vier Plug-ins verteilt alle 30s 640.000 Datenpunkte gelesen und nach MQTT und InfluxDB geschrieben. Nach 30min Laufzeit wird geprüft, wie viele Daten in die InfluxDB geschrieben worden sind.

Bei 1.280.000 Datensätzen/Minute wurden in unserem Test mehr als 99% der Daten übertragen

Fazit

Die beiden Testfälle unterscheiden sich nur in der Datenmenge, und genau zwischen ihnen liegt die Grenze dieses Aufbaus:

  • Testfall 1 – 320.000 Datenpunkte je 30 Sekunden, also rund 10.700 Datenpunkte pro Sekunde: vollständig übertragen.
  • Testfall 2 – 640.000 Datenpunkte je 30 Sekunden, nominell rund 21.300 Datenpunkte pro Sekunde: mehr als 99 % übertragen. Der kleine Verlust ergibt die eingangs genannten 21.209 tatsächlich übertragenen Datenpunkte pro Sekunde.

Bei doppelter Last kommt also nicht mehr jeder Wert an. Wenn Vollständigkeit gefordert ist, planen Sie eine einzelne Instanz auf dieser Hardware unterhalb der 640.000 Datenpunkte je 30 Sekunden, oder verteilen Sie die Anbindungen auf mehrere Instanzen (Horizontale Skalierung).

Projektdateien

Testfall 1

Testfall 2

KEPServer Ex – Benchmark Batch Read Server 1 (ZIP, 9 MB)

KEPServer Ex – Benchmark Batch Read Server 2 (ZIP, 9 MB)

Entpacken vor dem Import

Die KEPServer-Projektdateien liegen als ZIP-Archiv vor. Entpacken Sie das Archiv, bevor Sie die enthaltene .opf-Datei in KEPServer Ex importieren.