wiekon - 2024-11-29

Hallo zusammen,
ich hoffe, ihr könnt mir helfen. Eigentlich möchte ich etwas ganz einfaches erreichen:

CODESYS Runtime auf Raspberry Pi (OPC UA Client über Datasources Manager) <--> Cognex Designer (OPC UA Server) auf Windows PC

Es will einfach nicht klappen. Wenn ich die Datenquelle hinzufüge, Adresse opc.tcp://192.168.150.10:4840 kommt immer BadRequestTimeout. Es ist keine Security und keine Authentication auf dem Server eingerichtet.

Auf dem gleichen Raspberry klappt es aber wunderbar mit dem Tool opcua-client! Das heißt für micht, es ist kein Raspberry oder Firewall Thema.

Was auch geht: Diese CODESYS Runtime auf dem Raspberry ist OPC UA Server (einfach über die Symbolkonfiguration) und eine andere CODESYS Runtime (ControlWin auf meinem Rechner) ist Client und verbindet sich über den DatasourceManager. Allerdings: Die Daten kommen im Client nur im 1s Takt an, obwohl die Aktualisierungsrate auf 10 ms eingstellt ist und sowohl Server, als auch die DatasourcesTask im Client auf 10 ms laufen. Ich kann einstellen, was ich will, es bleibt bei exakt 1 Sekunde Aktualisierungszeit im Client. Warum ist das so? Wenn ich auf dem gleichen Windows PC, auf dem die ControlWin läuft den UaExpert verwende und mich zum Raspberry verbinde, kriege ich die Daten im 10 ms Raster! Am Server liegts also nicht!

Zurück zu meiner eigentlichen Aufgabe: Ich konnte mir vorübergehend so behelfen, dass ich auf dem gleichen Raspberry einen IO-Broker laufen lasse, der zwei Instanzen des OPC UA Clients hat. Er verbindet sich mit dem OPC UA Server des Raspberry und des Cognex Designers (also die zweite Instanz auf dem Raspberry, die es schafft, sich mit dem zu verbinden, nur Codesys schafft es nicht). Der IO Broker ist also das Bindeglied zwischen beiden OPC UA Servern. Über Javascript kopiere ich bei Wertänderung die Daten vom einen Server auf den anderen. Das ganze Funktioniert tadellos, nur die Performance ist nicht so toll, wobei ich mir nach der Erfahrung mit den zwei Codesys Instanzen nicht sicher bin, ob es nicht an Codesys liegt und der IO Broker nichts dafür kann.

Ich komme mit dem Thema einfach nicht weiter. Könnt ihr mir Tipps geben? Am liebsten wäre mir natürlich der direkte Weg:
Cognex Designer als Server --> Codesys als Client
Aber zur Not wäre auch der IO Broker ein gangbarer Weg, allerdings muss die Performance stimmen.

Gibt es noch weitere Wege?

Ich danke euch für eure kreativen Ideen und Lösungsvorschläge!