31.05.2017 11:27 | |
Beigetreten: 14.06.2006 Letzter Bes: 29.06.2023 Beiträge: 301 Bewertung: (60) |
Hallo zusammen, Wir benutzen die in C# entwickelte Bibliothek aus dem Anwendungsbeispiel mit der Beitrags-ID 42014088 (https://support.industry.siemens.com/cs/document/42014088/programmierung-eines-opc-ua-net-clients-mit-c-f%C3%BCr-den-simatic-net-opc-ua-server?dti=0&lc=de-WW) Der Simatic Net OPC Server hat folgende Konfiguration: siehe Bild1 Wenn ich die Connect Methode der ClientAPI ausführe und sofort ohne Wartezeit Variablen lese, erhalte ich eine „BadNoCommunication“ Meldung. Lese ich die Variable(n) kuze Zeit später erneut, werden diese korrekt und ohne Fehler gelesen. Ich bekomme ebenfalls eine Fehlermeldung, wenn ich sofort nach dem Connect, Variablen zum Monitoren anmelde. Mit Sleep läuft auch hier alles korrekt. Für die gleiche Applikation setzen wir als Alternative zur UA auch die COM Schnittstelle ein, auf Basis der folgenden Bibliotheken Siehe Bild2 Hier ist das Verhalten unproblematisch, d.h. ein sofortiges Lesen oder Anmelden von Variablen (für einen DataChange Event) wirft keinen Fehler aus. Natürlich ist das Anmeldeszenario für die beiden Schnittstelle komplett unterschiedlich. Ich würde aber dennoch erwarten, dass der Connect über die ClientAPI (UA), der ja im Wesentlichen aus dem Erzeugen einer Sitzung besteht (SessionChannel.Create + Erzeugen einer Session),sich erst dann zurückmeldet, wenn die Verbindung etabliert ist. Bei der COM Schnittstellen scheint dies der Fall zu sein. Als Workaround steht das Abfragen der „StatePath“ Variablen im Raum. Dies würde jedoch aufgrund der Komplexität der Anwendung einen nicht unerheblichen Aufwand bedeuten. Uns ist schon klar, dass der Fehler nur auftaucht, wenn die Check-Boxfür „Sofortige Rückmeldung bei erkannter Verbindungsunterbrechung“aktiviert ist. Und laut Hilfe im Netpro ist der Grund auch klar, eben weil die Verbindung noch nicht aufgebaut sein kann, wenn die Variablen gelesen werden sollen. Nur haben wir auch nach langem Suchen in der Doku nichts gefunden, außer Lesen von Statepath, um die korrekte Verbindung zu ermitteln. Die Eigenschaft Session.Connected hilft jedenfalls nicht weiter. Hat jemand einen schlauen Rat? Gruß DateianhangBilder.zip (44 Downloads) |
26.06.2017 08:41 | |
Beigetreten: 28.04.2015 Letzter Bes: 28.02.2024 Beiträge: 2 Bewertung: (0) |
Hallo Herr Levering, konnten Sie sich schon mit der Frage beschäftigen? Danke! |
26.07.2017 19:33 | |
Beigetreten: 01.10.2013 Letzter Bes: 14.09.2023 Beiträge: 605 Bewertung: (71) |
Vielleicht hilft ja folgendes Beispiel: Es basiert auch auf dem Open Source UA-Stack von GitHub (aktuellste Version). Wurde mit VS2013 erstellt. Seit dem SIMATIC .NET-Server-Beispiel hat sich noch einiges am Stack getan. Eventuell wurd euer Problem auch gelöst. |
Folgen Sie uns auf