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

Zuviel Werbung?
-> Hier kostenlos registrieren
Der letzte Beitrag ist zwar schon etwas her, aber ich quäle mich gerade leider mit dem gleichen Problem herum, ohne auf die Lösung zu kommen. Ich habe ein MTP1000 Unified Comfort Panel und möchte auf einen USB-Stick der in X61 eingesteckt ist Archivvariablen in einer csv-Datei ablegen. Das Archiv auf das ich mich beziehe heißt TempArchiv, die Archivvariable selbst heißt T1_Archiv und die Prozessvariable in der PLC heißt T1_Anzeige. Die Variable soll jede Minute in der Datei ergänzt werden mit neuem timestamp, um den Prozess nachvollziehen zu können. Dafür habe ich unter dem Aufgabenplaner eine Aufgabe in JS hinzugefügt und das Snippet, das in der vorherigen Diskussion hier auch verwendet wurde, eingefügt. So sieht meins aus:

export async function Task_Archiv2CSV_Update() {
// 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
let fileName = "/media/simatic/X61/Verlauf.csv";

let start = new Date("2026-01-21T00:00:00Z");
let end = new Date("2026-01-21T23:00:00Z");

let delimiter = ";";
let csvData = "Name" + delimiter + "Timestamp" + delimiter + "Value" + delimiter + "Quality\n";
let tag1 = HMIRuntime.TagLogging.LoggedTags("TempArchiv:T1_Archiv");
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);
});

}

Leider wird die csv-Datei mir nur manchmal erzeugt, und wenn ich sie habe, dann heißt es, dass sie beschädigt ist. Kann mir jemand weiterhelfen, bei dem es evtl. in der Zwischenzeit funktioniert hat? Ich arbeite mit TIA V20.
 
Zuletzt bearbeitet:
Kurz zur info. Mein Problem konnte gelöst werden, dank meines Mitarbeiters.

export function Button_1_OnUp(item, x, y, modifiers, trigger) {
try {
HMIRuntime.Device.SysFct.StartProgram("/bin/cp", "/home/industrial/TESTFILE.csv /media/simatic/X62/", 0, false, undefined);
}

jetzt geht es. Ich verstehe nicht ganz, wieso die Offizielle siemens Lösung nicht funktioniert hatte...Also wenn ihr das Gleiche habt und v20.0.0.4 installiert habt, versucht mal das!

Grüsse
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi KuchenKrümel, danke für deine Antwort. wie genau soll ich das einbauen? Ich hatte mit JS bis zu diesem Projekt noch garnichts zu tun und kenne die ganzen Befehle/ Strukturen noch nicht so wirklich. Ich habe ja meinen fileName definiert, fällt der dann komplett weg? Und falls ja, wie sieht dann meine Zeile mit ' HMIRuntime.FileSystem.WriteFile(fileName, csvData, "utf8").then( ' aus?
Danke schonmal im Vorraus :)
 
Zurück
Oben