TIA Wie stelle ich Prozessdaten extern zur Verfügung?

uweschwarz

Level-2
Beiträge
229
Reaktionspunkte
12
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, ich arbeite mit WinCC Professional und bin etwas überfordert von der Informationsflut bezüglich des Themas. Vielleicht können wir anhand eines kleinen Beispiels das mal Schritt für Schritt durchgehen. Meine Testumgebung ist eine ES mit WinCC Professional Installation. Es ist keine WinCC Runtime vorhanden, die Verbindung zur Steuerung steht und ich habe bereits einige Bilder projektiert und kann diese mittels Simulation anzeigen und auch ein Variablenarchiv ist angelegt. Die Variable ist die Raumtemperatur.
Aufgabe: Wie greife ich von Excel, MathLab, Origin auf die gespeicherten Daten zu?
Soweit ich das verstanden haben, gibt es eine MS SQL Datenbank in der die Daten gespeichert werden. In der Doku finde ich das hier:1739355819672.png
Hier werden 3 Begriffe aufgeführt deren Unterschiede ich noch nicht verstehe.
WinCC RT Datenbank: eine Datenbank, die während die Runtime aktiv ist Prozesswerte speichert?
WinCC-Archivdatenbanken: eine Datenbank, in der die Prozesswerte der in den Variablenarchiven aufgeführten Prozessvariablen gespeichert werden? Also z.B. meine Raumtemperatur?
WinCC-Anwenderarchive: Das Variablenarchiv selbst?

Für Aufklärung wäre ich sehr dankbar.
 
Leider komme ich nicht weiter. Ich habe das hier gefunden:
Dabei verstehe ich diesen Passus nicht:
Erstellen Sie ein Visual Basic Projekt.
Verbinden Sie ein MS Windows Common Controls 6.0 ListView-Control mit dem Namen "ListView1".
Ich finde in meinen WinCC Controls kein solches Control. Wahrscheinlich ist damit ein VBA Steuerelement gemeint. Wenn ich dieser Spur folge, dann lande ich hier:
Wie bekomme ich die Common dialog vs. 6.0 für VBA Macros. Die ist nicht in den Steuerelementen enthalten spätestens an dieser Stelle gebe ich auf, weil mir die Angelegenheit zu komplex wird. Ich finde zwar die Datei für dieses Steuerelement auf meinem Rechner, aber weiß nicht wie ich das in die Formular Toolbox integriere.
Ich habe auch noch diesen Beitrag gefunden: Export von Archivdaten mit Hilfe des SIMATIC WinCC/Connectivity Pack (OLE DB Provider) dort ist eine Excel-Datei dabei die ich auch nicht richtig zum laufen kriege.
Wenn ich Geld bezahlen will, gibt es wohl WinCC/IndustrialDataBridge: Daten aus SIMATIC WinCC oder aus SIMATIC Steuerungen in Office-Dateien schreiben - will ich aber nicht.
Eigentlich kann das doch nicht so schwer sein. Der Verbindungsaufbau zur Datenbank funktioniert doch schon. Dann brauche ich doch eigentlich nur noch die Daten auslesen. Aber wie?
Ich sehe im MS SQL Server Management Studio zwei Datenbanken. In den Scripten werden die Datensätze einem Recordset Object übergeben und irgendwelche Sachen damit gemacht, die ich nicht verstehe bzw. für meinen Anwendungsfall nicht relevant sind.
Ich stelle mir das so vor:
Datenbank Verbindung aufbauen
Werte aus einem Variablenarchiv auslesen???
an Range-Object übergeben
In einer Excel-Mappe ausgeben

Müsste doch funktionieren, oder?

1739375501655.png
1739375456708.png
 
@Oberchefe Ja, soweit war ich auch schon. Genau genommen sogar schon weiter. Ich konnte die Datenbanken sehen und die Tabellen auswählen. Aber wie komme ich an die Daten. In diesem Dialog kann ich ja kein SQL String schreiben. Ich werde es mal mit dem Import Assistenten von Access versuchen.
 
Mit dem Connectivity Pack Anwendungsbeispiel bist du schon mal auf dem richtigen Weg. Dort sind ja verschiedene Wege beschrieben, um von extern auf die Datenbank zuzugreifen. Eigentlich für WinCC V7, aber bei WinCC Prof ist die Runtime identisch, also funktionieren die Wege dort genauso. Der Universal-Excel-Client aus dem Anwendungsbeispiel muss auch bei dir funktionieren. Genauso wie der Zugriff aus dem SQL Server Management Studio, der dort ebenfalls beschrieben ist.

Die Archivdaten liegen bei WinCC Professional (und V7/V8) nicht im Klartext in der Datenbank, sondern komprimiert. Der Zugriff ist von daher nur über spezifische OLE-DB/ODBC-Schnittstellen (den WinCC OLE DB Provider) möglich. Sich einfach eine Tabelle aus der Datenbank zu ziehen bringt nichts aus einem nutzlosen Binärblob.

Beim Zugriff von extern aus Microsoft Produkten oder Skripten wird ADODB verwendet. Das ist ein Skripting-Objekt von Microsoft, das den Zugriff auf Datenbank über OLE DB ermöglicht. Die Skripte in den Beispielen und der Siemens-Hilfe setzen alle darauf auf.
Hier in der Hilfe sind auch Beispiele:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Herzlichen Dank, für deine Antwort. Ich dachte schon es erbarmt sich keiner :)
Ich hab mich gerade nochmal mit dem Kollegen unterhalten, der die Auswertungen in MathLab machen möchte. Seine Anforderungen sind im Prinzip die gleichen, wie in der Excel Liste aus dem Connectivity Beispiel. Er möchte ein oder mehrere Variablen auswählen können, einen Zeitraum angeben und diese Daten importieren. Ursprünglich dachten wir es müsste über einen ganz normalen SQL-String gehen. Jetzt weiß ich schon mal, dass das nicht geht.
Leider funktioniert die Excel Anwendung aus dem Beispiel bei mir nicht. Auch der SQL-Zugriff mit SQL Server Management Studio funktioniert nicht.
Ich werde jetzt erstmal versuchen die Excel Datei zum laufen zu bringen.
 
Das Script in Excel zu bearbeiten ist total nervig, weil mir beim schrittweisen ausführen laufend das Excel abstürzt.

Schließlich habe ich eine Verbindung mit diesem ConnectionString

"Provider=WinCCOLEDBProvider.1;Catalog=CC_HMI_8D8U_25_02_13_11_59_03R;Data Source=Climatosceptix\WinCC"
und diesem SQL Statement erstellt.
CommandText = "TAG:R,'TI0004','2025-02-13 13:52:23.000','2025-02-13 13:55:23.000','TIMESTEP=5,261'"

Dann kommt die Fehlermeldung: 1739456067320.png
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Warum schreibst du die für dich relevanten Daten nicht in eine eigene Datei ? z.B. CSV ?
Na, ja ich möchte ja nicht aus einer Datenbank Daten in eine Excel-Tabelle oder csv-file schreiben, sondern die Daten an MathLab übergeben.
Um den richtigen Connection- und SQL-String zu finden habe ich das hilfsweise hier in eine Exceltabelle geschrieben.

Der Export funktioniert jetzt übrigens. Ich hatte vergessen den Namen des Variablenarchivs anzugeben. der korrekte SQL-String lautet also:

CommandText = "TAG:R,'Prozessdaten\TI0004','2025-02-13 13:52:23.000','2025-02-13 13:55:23.000','TIMESTEP=5,261'"
 
Allerdings interessiert mich immer noch was der Unterschied zwischen:
  1. WinCC RT-Datenbanken (Echtzeitdaten während die Runtime aktiv ist?)
  2. WinCC Archivdatenbanken (Daten aus Variablenarchiven die von mir angelegt wurden?)
  3. WinCC Anwenderarchiven ( ERP Datenbanken wie SAP?)
ist.
 
Allerdings interessiert mich immer noch was der Unterschied zwischen:
  1. WinCC RT-Datenbanken (Echtzeitdaten während die Runtime aktiv ist?)
  2. WinCC Archivdatenbanken (Daten aus Variablenarchiven die von mir angelegt wurden?)
  3. WinCC Anwenderarchiven ( ERP Datenbanken wie SAP?)
ist.

WinCC als System setzt sehr stark auf dem SQL-Server auf. Viele der Konfigurationsdaten, die man im TIA-Portal projektiert, werden im Hintergrund in der Datenbank gespeichert und nicht in irgendwelchen Konfig-Dateien. Das ist schon mal der erste Teil, der gar nicht auf deiner Liste steht.
(-->Konfig-DB)

Während die Runtime läuft, werden auch viele Konfig- und temporäre Daten in der Datenbank ab- und zwischengespeichert, die zum Betrieb der Runtime notwendig sind (-->RT-DB)

Daten, die archiviert werden, landen natürlich auch in der Datenbank. Ist ja der Sinn des ganzen. Archivdatenbanksegmente sieht man im SQL Server Management Studio alleine schon am Name. ALG und TLG (Alarm und Tag Logging). Tag Logging ist zusätzlich unterteilt in Tag Logging Fast und Tag Logging Slow. (-->Archiv-DB)

Was in der TIA-Welt Rezepturen heißt, heißt im WinCC User Archive oder Anwenderarchive. Diese landen auch in der Datenbank (-->Anwenderarchive/User Archive)

In dem Screenshot hier sieht man bspw. ALG und TLG_F und TLG_S sehr schön.
Aus:
1739523462937.png
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Spitze, vielen Dank für die Erklärung. Da hab' ich gleich noch eine Frage :)
Mein MatLab nutzender Kollege versucht auf die Datenbanken zuzugreifen. Im MatLab gibt es offenbar verschiedene Clients mit denen er sich auf anderen Datenbanken anmelden kann. Es gibt auch einen Client für SQL. Der meldet aber leider einen Login Fehler.
Kann man sich auf diese Weise überhaupt an der Datenbank anmelden? Meine Vermutung: Nein.

Zugriff mit Microsoft OLE DB
Mit Microsoft OLE DB können Sie auf WinCC User Archives zugreifen.


Hinweis
Mit Microsoft OLE DB ist nur der Zugriff auf WinCC User Archives getestet und freigegeben, nicht jedoch auf Melde- und Prozesswertarchive.
Verwenden Sie für den Zugriff auf Melde- und Prozesswertarchive den WinCC OLE DB-Provider.
Bedeutet das, dass ich für den Zugriff mit einer externen Anwendung wie z.B. MatLab die Daten entweder erst via Script in ein *.csv o.ä. exportieren und dann ins MatLab importieren muss oder die Industrial Databridge Lizenz kaufe?


 
Zuletzt bearbeitet:
Spitze, vielen Dank für die Erklärung. Da hab' ich gleich noch eine Frage :)
Mein MatLab nutzender Kollege versucht auf die Datenbanken zuzugreifen. Im MatLab gibt es offenbar verschiedene Clients mit denen er sich auf anderen Datenbanken anmelden kann. Es gibt auch einen Client für SQL. Der meldet aber leider einen Login Fehler.
Kann man sich auf diese Weise überhaupt an der Datenbank anmelden? Meine Vermutung: Nein.


Bedeutet das, dass ich für den Zugriff mit einer externen Anwendung wie z.B. MatLab die Daten entweder erst via Script in ein *.csv o.ä. exportieren und dann ins MatLab importieren muss oder die Industrial Databridge Lizenz kaufe?


Keine Ahnung, hab ich noch nie probiert. Aber ich hätte schon gesagt, dass das funktionieren müsste. Das ist ja eigentlich der Sinn von Schnittstellen wie ODBC und OLE-DB.
Eine Alternative gibt es aber auch noch. WinCC hat auch einen OPC UA Server Huckepack dabei, der kann auch OPC UA Historical Access (OPC UA HA). Sprich, man kann auch über OPC UA Archivwerte abfragen. Der Matlab OPC UA Client kann anscheinend auch HA, so deute ich diesen Beitrag mal:

OPC UA hat den Vorteil, dass es ein bisschen bedienerfreundlicher ist als die ganzen DB-Schnittstellen.

Kann man mit dem UAExpert Testclient von Unified Automation auch sehr schön testen.
 
OPC UA hat den Vorteil, dass es ein bisschen bedienerfreundlicher ist als die ganzen DB-Schnittstellen.
Mit dem OPC UA Server auf der Steuerung haben wir schon recht intensive Erfahrungen gemacht und möchten diese Lösung eigentlich nicht nutzen.
Die Denke ist eher so, dass MatLab eine SQL JDBC Schnittstelle hat und damit auf die MS SQL Datenbank zugegriffen werden soll, was im Moment an der Benutzerauthentifizierung scheitert.
Siemens schreibt, dass eine Benutzerkennung nicht notwendig ist, sondern der WinCC Ole DB provide genutzt werden soll. Aber wie binde ich den in MatLab ein?
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Nach Rücksprache mit dem Siemens Support ist dieser Hinweis nicht mehr gültig. Man kann mit der richtigen Authentifizierung auch von extern auf die WinCC Datenbank zugreifen. Wie man sich korrekt bei der Datenbank anmeldet ist irgendwo beschrieben. Diese Unterlagen sendet mir der Siemens Support noch.

Zugriff mit Microsoft OLE DB
Mit Microsoft OLE DB können Sie auf WinCC User Archives zugreifen.
Hinweis
Mit Microsoft OLE DB ist nur der Zugriff auf WinCC User Archives getestet und freigegeben, nicht jedoch auf Melde- und Prozesswertarchive.
Verwenden Sie für den Zugriff auf Melde- und Prozesswertarchive den WinCC OLE DB-Provider.
 
Auf die WinCC-SQL-Datenbank von extern zuzugreifen ist so ne Sache...
Erstens ist der SQL-Server von Microsoft nur speziell zur Anwendung durch WinCC lizensiert...
Zweitens mit jeder neuen (oder alten) WinCC-Version ändert sich u.U. der Aufbau der Tabellen...
 
Zuletzt bearbeitet:
Zurück
Oben