WinCC WINCC Runtime Professional Archiv Verbindung

steffen21m

Level-1
Beiträge
71
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo liebes Forum,
ich habe einen Server mit drei Subnetzen, an dem 34 Stück S7-1200 hängen. Der Server soll Messwerte der Stationen in einer Datenbank speichern.
Dazu habe ich WINCC Runtime Advanced verwendet. Ab einer gewissen Anzahl Steuerungen wurden keine Daten mehr übertragen. WINCC ist auf 15 HMI Verbindungen und 8 Verbindungen gleichzeitig limitiert. Der Siemens Support empfahl mir den Umstieg auf WINCC Runtime Professional, das 120 Verbindungen unterstützt.
Die Datenablage hatte ich bei WINCC Advanced mit einem Messwertarchiv realisiert. Dafür gibt es genug Anleitungen. Bei den Archiveinstellungen kann man einfach Datenbank wählen und den Namen der ODBC Schnittstelle angeben. Alles easy. Bei WINCC Runtime Professional kann man nur "Datenbank" anwählen und keine ODBC Einstellungen oder ähnliches vornehmen. Einen SR später erfuhr ich, dass Professional seine "eigene Datenbank" anlegt. Ich müsste nun eine ODBC Verbindung zu dieser Datenbank herstellen. Der Service empfahl mir als Doku WINCC V7.5 Connectivity Pack zu verwenden. Leider finde ich kaum passende Lösungsansätze.
Kann mir vielleicht jemand weiter helfen ?

Vielen Dank für Eure Unterstützung

Steffen
 
Wäre es eine Möglichkeit, direkt von der SPS aus die Datenbankverbindung aufzubauen ? Für Microsoft TDS-SQL gibt es dazu von Siemens die Bausteine hier. Das ist vermutlich kostengünstiger als der WinCC Umstieg.

Viele Grüße,
Robert
 
Zuviel Werbung?
-> Hier kostenlos registrieren
WinCC Professional und V7 bringen zum Archivieren von Variablenwerten und Meldungen immer einen Microsoft SQL Server als Datenbank mit. Das ist immer so und kann nicht geändert werden. Sobald du bei einer Variable die Archivierung aktivierst, wird sie automatisch in der lokalen Projektdatenbank gespeichert.
Diese Datenbank hat aber auch Schnittstellen nach außen wie ODBC und OLE-DB. Der Zugriff auf die Datenbank über diese Schnittstellen von extern und direkt aus WinCC raus (per VB-Skript) ist bspw. sehr ausführlich in der Connectivity Pack Doku von WinCC V7 beschrieben (Die WinCC Professional Runtime ist nur eine "abgespeckte" WinCC V7 Runtime, von daher sind die Schnittstellen dort auch identisch vorhanden)
Hier ein Beispiel-Skript für das Lesen von Daten aus dem Variablenarchiv mit VB.

Neben der Doku gibt es auch dieses Anwendungsbeispiel.
Dort wird bspw. beschrieben, wie mit externen Tools wie MS Excel (eine Beispiel-Mappe ist dort verfügbar) oder dem Microsoft SQL Server Management Studio (SSMS, ein externes Hilfstool von Microsoft zur Verwaltung von SQL-Datenbanken) Daten aus der Datenbank gezogen werden können.
Die VB-Skripte in der Excel-Mappe können auch extern verwendet werden oder direkt aus dem WinCC VB-Skripting. Wenn man sich die Skripte in der Excel-Mappe anschaut und mit denen aus der WinCC Doku vergleicht, dann sieht man, dass derselbe Mechanismus verwendet wird und die Skripte analog funktionieren.
 
@LucasMucas Zu deiner Antwort hätte ich eine Frage. Der Zugriff auf Archivvariablen via Skript ist schon interessant.
Gibt es einfache Möglichkeiten einer statistischen Auswertung auf diesem oder ähnlichem Wege? Also z.B. der Wert eines Energy-Meters das in einer Archivvariable gespeichert wird und dann einfach abrufen "Wie viel Energie habe ich im Februar verbraucht?" oder "Wie viel Wasserdurchfluss in Litern hatte ich an dem Durchflusssensor letzten Dienstag / letzte Woche?" etc.
 
Du greifst auf die Daten der WinCC Archive zu, nicht mehr.

Es lassen sich über Verdichtungsarchive im WinCC ein paar Statistikfunktionen nachbilden, wenn du beispielsweise Mengenzähler hast. Dann kannst du über Verdichtungsarchive Differenzen zwischen zwei Werten aus dem Prozesswertarchiv generieren lassen. Die Möglichkeiten sind aber ziemlich eingeschränkt, andere Funktionen wie Integral bilden gibt es nicht, oder müsste man sich mit Aufwand händisch nachbilden.

Ich habe noch ein Python-Projekt in der Entwicklung, welches den Zugriff auf die WinCC C-Api über Python erlaubt und etwas abstrahiert. Darüber lässt sich auch auf die WinCC Archive zugreifen, meiner Meinung nach wesentlich einfacher als über OLE-DB. Ich weiß nicht ob sich das lohnt Open-Source zu machen, ich vermute unter den WinCC Anwendern gibt es nicht viele die was mit Python machen wollen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@LucasMucas Zu deiner Antwort hätte ich eine Frage. Der Zugriff auf Archivvariablen via Skript ist schon interessant.
Gibt es einfache Möglichkeiten einer statistischen Auswertung auf diesem oder ähnlichem Wege? Also z.B. der Wert eines Energy-Meters das in einer Archivvariable gespeichert wird und dann einfach abrufen "Wie viel Energie habe ich im Februar verbraucht?" oder "Wie viel Wasserdurchfluss in Litern hatte ich an dem Durchflusssensor letzten Dienstag / letzte Woche?" etc.
Entweder mit einem Verdichtungsarchiv, wie von @Thomas_v2.1 vorgeschlagen oder mit dem Statistikbereich des Kurven bzw. Tabellen-Controls.
In beiden Fällen sind die Möglichkeiten relativ eingeschränkt und nicht sonderlich mächtiger als Min/Max oder Hochzählen, wie schon erwähnt.

Das hier gibt's zur Auswahl im Verdichtungsarchiv:

Und das hier ist der Statistikbereich beim Kurven-Control:

Klar, per Skript kann man das natürlich auch alles händisch berechnen und noch viel mehr. Die Variablenwerte sind ja alle in der Datenbank vorhanden und lassen sich entsprechend abfragen. z.B. alle Zählerstände in einem bestimmten Zeitraum.
 
Zuletzt bearbeitet:
Vielen Dank für eure Antworten lieber @Thomas_v2.1 und @LucasMucas . Das einzige was in die Richtung geht was ich suche ist das von @LucasMucas erwähnte Kurven-Control in Verbindung mit der Tabelle. Wirklich schade, dass es da nicht noch viel mehr Möglichkeiten gibt. Auf dieses Anwendungsbeispiel möchte ich noch hinweisen, funktioniert aber nur mit Hilfe der SPS:
https://support.industry.siemens.co...n-messwerten-in-simatic-s7-cpu?dti=0&lc=de-DE

Könntet ihr noch ein einfaches Beispiel geben, wie man per VBS auf die Archivvariable "Archiv_Variable" auf den gespeicherten Wert vom 07.02.2023 um 15:16 Uhr und 4 Sekunden zugreifen würde?

Vielen Dank!
 
Über VBS gibt es vermutlich nur den Weg über OLEDB. Über C-Skript könntest du die Runtime-Api von WinCC ansprechen welche über die Dokumentation von WinCC Professional mittlerweile auch öffentlich dokumentiert ist. Aber dazu brauchst du etwas mehr als Anfängerkenntnisse in C, weil da ordentlich herumgepointert werden muss.

Und deine Abfrage wird auch niemals so einfach sein. Du weiß doch noch gar nicht, ob genau zu dieser Sekunde ein Wert im Archiv vorliegt, oder keiner oder zwei oder drei.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Vielen Dank für die vielen Antworten.
Sorry dass ich mich so lange nicht mehr gemeldet habe. Ich hatte bei Siemens einen SR offen, um alle Möglichkeiten abzuchecken.
Hier das Ergebnis:
Bei WINCC Runtime Professional kann man im Vergleich zu WINCC Runtime Advanced keine Änderungen in den Datenbankeinstellungen vornehmen. Siemens hat seine "eigene Datenbank", die auf hohe Datenmengen ausgelegt ist. Der einzige Zugriff auf das Variablenarchiv ist mit WINCC IndustrialDataBrigde möglich. Habe alles seit letzter Woche in Betrieb und es läuft wirklich gut. Die WINCC Industrial Data Bridge bietet Anbindung von Datenbanken, Microsoft Produkten, CSV und TXT Dateien.

Siemens IDB

Ich wünsche Euch noch ein schönes Wochenende

Gruß Steffen
 
Zurück
Oben