WinCC Unified HMI MTP 1000 Unified Archive Dateien als csv-Datei auf USB

erd

Level-2
Beiträge
25
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,
im Rahmen einer Technikerarbeit möchten wir unsere archivierten Daten aus den Sensoren auf USB Stick speichern. An der Stelle kommen wir leider mit Snippets Vorlagen bei TIA Portal leider nicht voran. Kann jemand uns an der Stelle unterstützen? Für jedes Feedback wären wir sehr dankbar.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,
du kannst doch direkt Variablenarchive auf den USB-Stick erstellen? Oder willst du dass z.B. nur auf Knopfdruck bestimmte Werte auf den Stick kopiert werden?

Beispiel zum Kopieren:
Hallo Lukas,

vielen Dank für Dank für dein Kommentar.
Laut Hilfe von Siemens Unified habe ich zuerst eine Archive erstellt und anschließend die dazugehörigen . Siehe Screenshot Bild 1 unten. Und bei der Runtime Einstellungen die Speicherorte sind auch definiert. Siehe Screenshot Bild 2 unten. Laut Siemens Support muss alles über Script realisieren. Also Globales Modul erstellen und danach die Vorlage Snippets / HMI Runtime / Taglogging / Export Tag log as CSV. Wenn ich diese Vorlage aufrufe, kommt folgende Vorlage. Siehe Screenshot unten. Bild 3. Da komme ich einfahc nicht mehr weiter, was ich da programmieren soll.


Zur Bedienung : Sobald der Bediener die Anlage startet, steckt sein USB-Stick und über eine Taste startet die Speicherung die aktuellen Variablen und die Meldungen auf die USB als CSV Datei Nach bestimmter Zeit kommt er wieder auf die Anlage und stoppt die Archivierung auf USB Stick.

Wir wären sehr dankbar, wenn du uns an der Stelle unterstützen kannst.

Gruß

erdi
 

Anhänge

  • Archive mit Logging_Bild_1.png
    Archive mit Logging_Bild_1.png
    164 KB · Aufrufe: 110
  • Runtime Einstellungen_Bild 2.png
    Runtime Einstellungen_Bild 2.png
    140,7 KB · Aufrufe: 127
  • Vorlage Snippets_Bild 3.png
    Vorlage Snippets_Bild 3.png
    219,1 KB · Aufrufe: 131
  • Rückmeldung_Support Siemens.png
    Rückmeldung_Support Siemens.png
    29,9 KB · Aufrufe: 116
Es gibt hier ein paar Dinge und Möglichkeiten, die zusammenspielen und vielleicht ein bisschen durcheinander gekommen sind.

In Bild1 hast du das Variablenarchiv auf dem Panel konfiguriert. Sprich, wenn sich die Variablen unten ändern, werden sie in einer SQlite-DB automatisch im Hintergrund auf den USB-Stick mitgeloggt. Der USB-Stick muss am Panel auf X62 angesteckt werden, das ist der Pfad, den du eingestellt hast. Hinweis am Rande: Die Einstellung in Bild 1 überschreibt die Einstellung in Bild 2.
Bild 2 ist die allgemeine Einstellung für das Panel, man kann ja mehrere Archive erstellen. Bild 1 ist die konkrete Einstellung für dieses Archiv. Dort hast du den Ordner /Variablen bzw. /Meldungen nicht angegeben.

Das heißt im Umkehrschluss: Wenn am Panel kein Stick gesteckt ist, dann archiviert das Panel auch nix. Erst wenn der Stick gesteckt wird. Alle Werte und Meldungen davor sind nicht gespeichert worden.

In Bild ist das Snippet "Export tag log as CSV". Das erlaubt dir die Daten aus einem BESTEHENDEN Archiv (das es bei dir nicht gibt, wenn kein Stick gesteckt ist) als CSV zu exportieren, weil die SQlite-DB des normalen Archivs nicht direkt lesbar ist.
Dort kann man sich dann auswählen, welche Variablen aus welchem Variablenarchiv in welchem Zeitraum exportiert werden sollen. Außerdem kann eingestellt werden, wie die Datei heißt und wo sie abgelegt werden soll.

Hier gibt es auch ein paar Videos, wo das ganze mal gezeigt wird
Um diese Inhalte anzuzeigen, benötigen wir die Zustimmung zum Setzen von Drittanbieter-Cookies.
Für weitere Informationen siehe die Seite Verwendung von Cookies.
Um diese Inhalte anzuzeigen, benötigen wir die Zustimmung zum Setzen von Drittanbieter-Cookies.
Für weitere Informationen siehe die Seite Verwendung von Cookies.
Ich schreib es dir hier mal dazu:

Javascript:
// Please note, the format of a file path is device and operating system specific.
// You need to adapt the given path to your environment.
// Example for a Unified Comfort  device (Linux OS): /home/user1/data.dat
// Example for a Unified PC-based device (MS Windows OS): C:\Users\Public\data.dat


//Pfad, wo die CSV-Datei abgelegt werden soll. In deinem Fall also der Pfad auf den Stick am Panel. Den Pfad siehst du in dem Filebrowser auf dem Panel
//In deinem Fall bspw: /media/simatic/X62/Archivexport.csv
let fileName = "C:\\Users\\Public\\TagLogFile.txt";

//In welchem Zeitraum sollen die Variablenwerte in die CSV geschrieben werden
let start = new Date("2016-11-23T00:00:00Z");
let end = new Date("2016-11-23T23:00:00Z");

let delimiter = ",";
let csvData = "Name" + delimiter + "Timestamp" + delimiter + "Value" + delimiter + "Quality\n";

//Hier wird festgelegt welche Variablen in die CSV geschrieben werden sollen
//Die Namensgebung ist ("VARIABLENNAME:ARCHIVVARIABLENNAME")
//In der Vorlage heißt das Archiv
let tag1 = HMIRuntime.TagLogging.LoggedTags("Tag1:LoggingTag1");

HMIRuntime.Trace("Tag Name : " + tag1.Name);
let tagValue = tag1.Read(start, end, 0);
tagValue.then((loggedTagResult) => {
  let error = loggedTagResult.Error;
  let tagArray = loggedTagResult.Values;

  for (let loggedTag of tagArray){
     csvData += tag1.Name + delimiter + loggedTag.TimeStamp + delimiter + loggedTag.Value + delimiter + loggedTag.Quality + "\n";
  }

  HMIRuntime.FileSystem.WriteFile(fileName, csvData, "utf8").then(
  function() {
    HMIRuntime.Trace("Write file finished successfully");
  }).catch(function(errCode) {
    HMIRuntime.Trace("Write failed, Error: " + errCode);
  });
 
}).catch ((errCode)=> {
  HMIRuntime.Trace("Read failed, Error: " + errCode);
});

Ansonsten haben das Trend und Alarmcontrol auch einen Export-Button, der eine CSV-Datei der gerade angezeigten Variablenwerte/Meldungen ausspuckt. In der Simulation/Webclient wird es einfach zum Download angeboten, auf dem Panel landet der Export im Downloads-Ordner des Users auf dem Panel. Also unter /home/industrial/download.
Beispiel hier:
Um diese Inhalte anzuzeigen, benötigen wir die Zustimmung zum Setzen von Drittanbieter-Cookies.
Für weitere Informationen siehe die Seite Verwendung von Cookies.
Im Tutorial Center gibt es auch ein Video dazu:
 
Hallo Lukas,

Danke für diene Rückmeldung mit vielen Tipps. Wir , ich und mein Kollege, versuchen wir heute Abend deine Tipps umzusetzen. Ich schreibe wegen den Ergebnissen.
Gruß
Erdi
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Lukas,

anbei die ersten Ergebnisse. Wir haben unseren Skript nach deiner Java Vorlage erstellt. Siebe Screenshot unten. Den Skript aktivieren wir mit einer Schaltfläche. Im zweiten Screenshot siehst du die ersten Excel-Tabelle Ergebnisse. Leider haben wir keine Spalte für Datum und Uhrzeit. Kannst du unseren Java Skript kurz kontrollieren?
Danke und Gruß
erdi
 

Anhänge

  • Csv Datei.png
    Csv Datei.png
    37,2 KB · Aufrufe: 70
  • Button_CSV_Datei.png
    Button_CSV_Datei.png
    179,8 KB · Aufrufe: 77
Hallo Lukas,

anbei die ersten Ergebnisse. Wir haben unseren Skript nach deiner Java Vorlage erstellt. Siebe Screenshot unten. Den Skript aktivieren wir mit einer Schaltfläche. Im zweiten Screenshot siehst du die ersten Excel-Tabelle Ergebnisse. Leider haben wir keine Spalte für Datum und Uhrzeit. Kannst du unseren Java Skript kurz kontrollieren?
Danke und Gruß
erdi
Du musst bei dir in Zeile 6 und 7 schon angeben für welchen Zeitraum du die Werte exportiert haben willst.
Ansonsten hast du in der zweiten Spalte (Timestamp) den Zeitstempel. Mach die CSV mal mit einem Texteditor auf oder lass dir von Excel die CSV sauber parsen, dass jede CSV-Spalte in eine Excel-Spalte angezeigt wird.
Excel frägt einen ja beim Öffnen einer CSV-Datei nach dem Trennzeichen. Wähl das richtige aus und es wird auch richtig angezeigt.
 
Hallo Lukas,
Danke für deine Rückmeldung. Es hat funktioniert.
Eine Frage hätte ich noch. Die Speicherung die Daten auf USB kann der Bediener mit Zeitagaben machen? Beispiel: Der Bediener möchte die Datenarchivierung auf USB von 15.06.2024, 14:00 Uhr bis 17.06.24, 14:00 Uhr (Eingabefeld auf dem HMI) speichern lassen. Kann man den Script für eine bestimmte Zeit (Was der Bediener auf dem HMI eingibt) laufen lassen?

Danke und Gruß

erdi
 

Anhänge

  • Screenshot 2024-06-03 003346.png
    Screenshot 2024-06-03 003346.png
    36,6 KB · Aufrufe: 45
Zuviel Werbung?
-> Hier kostenlos registrieren
Klar.
Den Zeitpunkt, den du jetzt fix ins Skript reinschreibst, kannst du dem Skript auch als Parameter übergeben.
Zwei HMI-Variablen vom Typ DateTime für Start- und Endzeitpunkt erstellen und dem Skript als Parameter übergeben.
Wenn die E/A-Felder für die Variablen richtig konfiguriert sind, dann bekommt der Bediener auch einen Auswahldialog angezeigt und muss nicht Datum und Uhrzeit manuell eintragen.

Und Skripte kann man auch zu bestimmten Zeitpunkten mit dem Aufgabenplaner antriggern
 
Würde mich gerne an hier anhängen, denn ich komme mit dem Export eines Archives nicht weiter.
TIA V19 UPd2 / MTP1900 Image V19.0.0.1
Irgendwie schaffe ich es nicht, das Snippets nicht richtig anzupassen. Ich versuche es gerade mal mit einer Variablen.
Das Archiv habe ich angelegt und wenn ich mir im Trend Control den Wert und den Zeitraum den ich auslesen möchte anzeigen lasse, sehe ich auch eine Kurve mit plausiblen Werten.
Die *.csv Datei wird auch geschrieben, allerdings steht da nur eine Zeile drin + SpaltenÜberschrift.
Der Timestamp gibt eine negative Zeit aus und unter Value wir "null" angezeigt, in Quality steht auch 0 (Was wird in dieser Spalte überhaupt angezeigt?)
1718718264063.png
Von euch jemand eine Idee was ich da eventuell falsch mache?
1718718371294.png
1718718510960.png
 
Würde mich gerne an hier anhängen, denn ich komme mit dem Export eines Archives nicht weiter.
TIA V19 UPd2 / MTP1900 Image V19.0.0.1
Irgendwie schaffe ich es nicht, das Snippets nicht richtig anzupassen. Ich versuche es gerade mal mit einer Variablen.
Das Archiv habe ich angelegt und wenn ich mir im Trend Control den Wert und den Zeitraum den ich auslesen möchte anzeigen lasse, sehe ich auch eine Kurve mit plausiblen Werten.
Die *.csv Datei wird auch geschrieben, allerdings steht da nur eine Zeile drin + SpaltenÜberschrift.
Der Timestamp gibt eine negative Zeit aus und unter Value wir "null" angezeigt, in Quality steht auch 0 (Was wird in dieser Spalte überhaupt angezeigt?)
Anhang anzeigen 79053
Von euch jemand eine Idee was ich da eventuell falsch mache?
Anhang anzeigen 79054
Anhang anzeigen 79055
Hmmm...schaut auf den ersten Blick ganz gut aus.
Wenn du mal versuchst den Zeitraum ein bisschen größer zu machen? Wenn ich es richtig im Kopf habe, dann will die Runtime den Zeitraum als UTC-Zeit. Vielleicht verschiebt sich dann mit Sommerzeit und Zeitzone deine eingegebene Zeit außerhalb des Bereichs, wo die Runtime Werte archiviert hat?
 
Der Zeitraum den ich auslesen möchte spielt keine Rolle. Habe es jetzt auch mit 10h probiert, macht im Ergebnis keinen Unterschied
 
Hallo,
erstmal Vielen Dank an euch beide für diesen Beitrag.

Ich muss in Rahmen eines Projektes viele Variablen in Form einer Tabelle als csv Datei ausgeben. Nun habe ich das Problem, dass ich nur eine Variable ausgeben kann. Weiß evtl. jemand wie ich diesen oben genannten Quellcode um mehrere Variablen erweitern kann. Im Handbuch von Siemens steht auch nur drin, dass ich diese um weitere Variablen erweitern muss, leider nur nicht wie es geht.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du must die Zeile 14 im Snippets anpassen
Javascript:
let TagArray = HMIRuntime.TagLogging.CreateLoggedTagSet(["statTimeStamp:statZeitSpanne","Date_Time_PLC_Local:ZeitStempel","inteReportArchivStart:ArvStart","inteReportArchivEnde:ArvEnd","inteMitarbeiter:User","inteNotizen:Notizen","MTP1900_ActValueArchiv_ThermoCouple_HandMessung1:TE_HandMessung_1","MTP1900_ActValueArchiv_ThermoCouple_MessLanze:TE_Messlanze"]);
HMIRuntime.TagLogging.CreateLoggedTagSet wird zum Auslesen mehrerer Variablen benötigt.
Die *.csv Datei sieht dann allerdings nicht sehr komfortabel aus. Bin allerdings auch noch damit beschäftigt die Funktion richtig umzusetzen.
 
Hallo, Guten Tag,
Ich habe eine Reihe von Parametern, die alle in Skripts geschrieben sind. Derzeit habe ich mehrmals versucht, Parameterwerte in Form einer CSV-Datei an das Unified Pannel der SD-Karte zu senden, aber leider ist es mir nicht gelungen, eine Datei an die SD-Karte zu senden.Ich habe die oben genannten Schritte ausgeführt, aber leider hat es nicht funktioniert.
können Sie mir helfen?

Vielen Dank
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Bin da jetzt auch nicht so bewandert in Unified, mit diesen spärlichen Informationen wird dir sicherlich kaum jemand helfen können.
Welche TIA-Version?
Welches Panel?
Welche SD-Card?
Wie werden deine Werte erfasst?
Wie sieht dein Skript zum schreiben der Datei aus und was funktioniert nicht?
Hallo, danke fur ihre Ruckmeldung
TIA V.19
Pannel MTP700 Unified Pannel
sd karte in Pannel : TS16GSDHC10 SDHC-Speicherkarte 16GB
Im Skript sind Parameter geschrieben, die ich bei der Adressierung nur Problem im Panel speichern kann.
 
Zurück
Oben