TIA Siemens CPU OPC Server - Performance Probleme // Best Practice

Knally

Level-2
Beiträge
9
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich hatte bereits mehrmals mit dem "integrierten" OPC UA Server von Siemens CPU`s zu tun. Einmal in Form einer Kommunikation zwischen einer C#/.NET basierten Anwendung welche als OPC Client mit der CP(1512er) kommuniziert hat. Dabei ging es um das Auslesen von diversen Daten, die zum Glück nicht zeitkritisch waren.
Ein weiteres Mal musste ich diverse 1517er als OPC Server implementieren die mit einer LabVIEW Software über das zugehörige OPC UA Toolkite (Client) kommunizierten und "relevante" Prozessparameter im stetigen Austausch waren.
In beiden Fällen habe ich die Nodes "subscribed" und habe diese über "Value Change Events" von Server Seite empfangen.

Zu meiner Enttäuschung gab es in beiden Konstellationen ominöse Performance-Probleme.
Das sah dann in etwa so aus: Die Schnittstelle läuft über kurz- bis mittelfristige Zeiträume relativ stabil. Aber es kommen sporadisch Fälle vor wo das Schreiben einer Node auf einmal 10s und mehr dauerte. Was eine unrealistische Anpassung der Connection Timeout Zeit erforderte. Das war vor allem bei 300+"registrierten" Nodes der Fall. In einem solchen Fall war auch immer eine Meldung im Puffer der CPU zu sehen, welche von "unbekannten Nodes" oder Ähnlichem sprach. Nur dass es keine unbekannten Nodes waren, sondern die CPU einfach mit der Suche nach dieser überfordert war in diesem Moment.

Ich muss jedoch eingestehen, dass ich für die OPC Schnittstelle im TIA Portal immer das Häkchen bei "Simatic Server-Standardschnittstelle" gesetzt hatte und keine explizite OPC Schnittstelle definiert habe. Das definieren einer OPC Client Schnittstelle ist doch sowieso irreführend, da dabei benannte Variablen/Nodes eine Laufnummerierung (z.B. "i=000038") bekommen. Das kann man doch niemandem erzählen...

Nun habe ich ein Projekt welches nochmal deutlich mehr Nodes für die OPC Komm beinhaltet (900+). Die Planung hatte sich wohl darauf verlassen, dass die OPC Funktionalität von SIEMENS als sehr zuverlässig gilt.

Mein derzeitiger Lösungsansatz ist wohl einen "softwarebasierter" OPC Servers (von ACCON/KEPWARE/ProSys) auf einem zusätzlichen Leitrechner zu installieren und die SPS nur noch als Client mit dem OPC Server kommunizieren zu lassen....

Hat jemand Erfahrung mit einer solchen Konstellation ? Kann man damit Stabilität und Performanz verbessern im Vergleich zur oben beschriebenen Konstellation ?
Gibt es jemanden der ähnliche Erfahrungen mit dem integrierten OPC Server gemacht hat, der vielleicht beantworten kann, ob das "definieren" einer OPC Client Schnittstelle (mit der holprigen Laufnummerierung) hier schon mehr Stabilität bringen kann ?

Interessant ist, das Siemens selber hier angibt, dass die CPU`s mit neueren Artikelnummern etwas schneller geworden sind hinsichtlich OPC Komm.

Innovierte CPU Komm.

Hat jemand hiermit positive Erfahrungen gemacht ?

Grüße und Danke!
 
Zuletzt bearbeitet:
Zu meiner Enttäuschung gab es in beiden Konstellationen ominöse Performance-Probleme.
Weißt du noch wie die Konstelation genau aussah?
Genaue TIA-Version? MLFB der CPUs und deren genaue Firmware?

Ich hab bisher einmal ein größeres Projekt mit OPC-UA und der SPS als Sever umgesetzt.
(1-2k tatsächlich registrierte Nodes).
CPU 1513F (6ES7 513-1FL02-0AB0) mit V2.9 und TIA V18 Update 5.
Mir wären diesbezüglich bisher keine Probleme zu Ohren gekommen.
Standard Siemens-Schnittstelle war aktiv.

Interessant ist, das Siemens selber hier angibt, dass die CPU`s mit neueren Artikelnummern etwas schneller geworden sind hinsichtlich OPC Komm.
Die CPUs sind generell deutlich schneller geworden, teilweise um mehrere Größenordnungen.
Speziell die kleineren CPUs werden jetzt nicht mehr gedrosselt und unterscheiden sich bis zur 1515 (wenn ich es richtig im Kopf habe) nur noch in Sachen Speicherplatz und Schnittstellen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also sofern ich mich erinnere:

Konstellation 1:
CPU1512 F/PN ET200SP, FW-Stand 2019+) mit "Simatic Server Standard Schnittstelle" und OPC UA Small Lizenz - OPC UA Server
Siemens C#.Net OPC UA Stack von der Siemens Seite (Stand 2019+) - gibt wohl eine neuere Version mittlerweile.. - OPC UA Client
Abtastrate 1000ms, TIA V17 (Update 2 etwa) - genaue MLFB weiß ich nicht mehr aber war auch zu dem Zeitpunk "nicht ganz aktuell"
Beim Verbinden baut die VISU als OPC Client Verbindung auf und subscribed etwa 40+ Nodes. Schreibbefehle auf "unsubscribed" Nodes waren aber auch drin. Verbindungsaufbau hat relativ lange gedauert (13s ?)

Konstellation 2:
3x CPU1517 F/PN - FW-Stand 2022+) mit "Simatic Server Standard Schnittstelle" und OPC UA Large Lizenz - OPC UA Server
LabVIEW OPC UA Toolkit (Version schon seit mehreren Jahren die gleiche) - jeweils 1x OPC UA Client zu den drei SPS
Abtastrate 200ms, TIA V18 (Update 2 etwa) - genaue MLFB weiß ich nicht mehr aber war auch zu dem Zeitpunk "nicht ganz aktuell"
Jeder Client hat zwischen 200 bis 300 Nodes subscribed. Variablenänderungen der subcribed Nodes auf SPS Seite kamen als Variable Change Event zum Client. Verbindungsaufbau hat etwas zwischen 20s und 30s gedauert.
Bei "längeren Übertragungszeiten" kam wie gesagt im CPU Buffer die Meldung "Node ID unbekannt" oder etwas Ähnliches. Diese war aber definitiv angelegt. Die Meldung kam auch ganz generell bei jedem Verbindungsaufbau und auch wenn man "von Hand" auf eine tatsächlich unbekannte Node-ID geschrieben hat. Hatte bisher nie eine Antwort auf das Problem erhalten und habe es dann mit dem angepassten Connection Timeout 20s so belassen. Nebenbei hat der "Kommunikations-Last"-Baustein von Siemens auch einen Durchschnittswert von 87% + angezeigt. Obwohl "gar nicht viel los war" auf BUS Seite.

@Botimperator
Welche Client Software hattest du verwendet ?
 
Zuletzt bearbeitet:
Beim Verbinden baut die VISU als OPC Client Verbindung auf und subscribed etwa 40+ Nodes. Schreibbefehle auf "unsubscribed" Nodes waren aber auch drin. Verbindungsaufbau hat relativ lange gedauert (13s ?)

Generell ist der Aufbau einer OPC UA Session mit Verschlüsselung eine teure Sache. Das Berechnen der Schlüssel mit OpenSSL ist sehr Rechenzeit-aufwändig. Verbesserungen gab es in neueren Firmware-Ständen durch Parallelisierung / Verschiebung in einen Hintergrund-Thread, so dass zumindest andere Kommunikation nicht so sehr beeinträchtigt wird. Aber verstecken lässt sich die Rechenzeit natürlich nicht. Stärkere Microcontroller in neueren PLCs helfen natürlich. Und in Zukunft wird sich das durch den Einsatz von ECC (Elliptic Curve Cryptography) weiter verbessern, weil da die Schlüsselberechnung weniger aufwändig ist.

Bei "längeren Übertragungszeiten" kam wie gesagt im CPU Buffer die Meldung "Node ID unbekannt" oder etwas Ähnliches. Diese war aber definitiv angelegt.

Das ist sehr seltsam. Kannst Du diesen Fehler noch nachstellen? Gibt es vielleich noch Screenshots davon, damit man den genauen Fehlertext sieht?

Hatte bisher nie eine Antwort auf das Problem erhalten

Wohin hattest Du das Problem denn adressiert?
 
Das ist sehr seltsam. Kannst Du diesen Fehler noch nachstellen? Gibt es vielleich noch Screenshots davon, damit man den genauen Fehlertext sieht?
Ja ich hatte Screenshots davon gemacht.. Ich werde danach suchen.. Nachstellen können sollte ich das auch problemlos..


Wohin hattest Du das Problem denn adressiert?
-> off. techn. Support.
Naja die Idee war erstmal die OPC Client-Schnittstelle zu "definieren". Wohlgemerkt dann mit einer Umwandlung des symbolischen Variablennamens hin zu einer "Laufnummerierung i=000000x3x". Das wollte ich auf meiner Client Software erstmal vermeiden, weil ich dan ein umfangreiche "Mapping" hätte implementieren müssen. Und ich auch nicht wusste ob das was an der Performanz verbessert.
Stattdessen hatte ich mich mal daran versucht mit Wireshark und Filtereinstellung "opcua" etwas erkennen zu können.
Das gelang mir aber ansichts des laufenden Projekt aber nicht in dem Maße dass ich hätte etwas nachweisen können..
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@Botimperator
Welche Client Software hattest du verwendet ?
Das nannte sich "Ignition".
Der Kunde hat alle Anlagen in seinem Werk darüber angekoppelt & nutzt das zur Steuerung/Planung der Produktion sowie diversen Auswertungend und sonstiger Zahlenschubserei.
 
ich schließe mich dem thema hier mal an.
habe einen kunden mit einer s7-1214/dc/dc/dc. Kunde wollte anfangs ca. 20 Werte über OPC abrufen im 100ms intervall für eine Prozessdauer von ca. 4-5h.
das Logging übernimmt er selbst. Jetzt ist ihm aufgefallen, wer würde gerne nahezu "Realtime" abtasten. Geht mit dem OPC UA natürlich nicht.

Gibts dazu eine einfache Möglichkeit, mit der der Kunde die paar Werte abtastet? Glaube er nutzt für seine Datenbanken dann C#.
 
habe einen kunden mit einer s7-1214/dc/dc/dc. Kunde wollte anfangs ca. 20 Werte über OPC abrufen im 100ms intervall für eine Prozessdauer von ca. 4-5h.
das Logging übernimmt er selbst. Jetzt ist ihm aufgefallen, wer würde gerne nahezu "Realtime" abtasten. Geht mit dem OPC UA natürlich nicht.
Welche Abtastrate stellt er sich unter "Realtime" denn genau vor?
Größere SPSen können UPC-UA mit 10ms (ohne Gewähr, ist jetzt nur ausm Kopf).

Ansonsten Kommunikation per I-Device?
Ich hab das mit einer PC Anwendung als Partner zwar noch nie gemacht, gäbe aber entsprechende SDKs um das umzusetzen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Gibts dazu eine einfache Möglichkeit, mit der der Kunde die paar Werte abtastet? Glaube er nutzt für seine Datenbanken dann C#.
Back to the roots ... Einfach das normale S7-Protokoll benutzen.
Du schreibst deine 20 Werte in einen nicht optimierten DB und der Kunde pollt dann.
Dein Kunde kann dafür einen "externen" OPC-UA-Server (Softing oder ähnliches) benutzen.
Keine Ahnung wie weit man da mit ner aktuellen S7-1200 runterkommt. Bei ner 1500er hatte ich ca. 10ms.
 
Zurück
Oben