export async function Schaltfläche_1_OnDown(item, x, y, modifiers, trigger) {
// Bestimme den Filepfad. Bei Speicherung auf externen USB checke welcher Port verwendet wird
let fileName = "/media/simatic/X61/Day01_.csv";
// Endzeit: aktueller Zeitpunkt
let end = new Date();
// Startzeit: 24 Stunden in die Vergangenheit adaptiv
let start = new Date(end.getTime() - 1000 * 60 * 60 * 24);
// Trennzeichen für die CSV-Datei
let delimiter = ";";
// CSV-Header mit 10 Spalten
let csvData =
"SinglePartID" + delimiter +
"ProductID" + delimiter +
"ProductType" + delimiter +
"Result" + delimiter +
"PathNV" + delimiter +
"PathAV" + delimiter +
"ForceNV" + delimiter +
"ForceAV" + delimiter +
"Errorcode" + delimiter +
"Errormessages\n";
// Tags definieren (alle 10 Tags)
let tag1 = HMIRuntime.TagLogging.LoggedTags("receiveValue_SinglePartID:SinglePartID");
let tag2 = HMIRuntime.TagLogging.LoggedTags("receiveValue_ProductID:ProductID");
let tag3 = HMIRuntime.TagLogging.LoggedTags("receiveValue_ProductType:ProductType");
let tag4 = HMIRuntime.TagLogging.LoggedTags("receiveValue_Result:Result");
let tag5 = HMIRuntime.TagLogging.LoggedTags("receiveValue_PathNV:PathNV");
let tag6 = HMIRuntime.TagLogging.LoggedTags("receiveValue_PathAV:PathAV");
let tag7 = HMIRuntime.TagLogging.LoggedTags("receiveValue_ForceNV:ForceNV");
let tag8 = HMIRuntime.TagLogging.LoggedTags("receiveValue_ForceAV:ForceAV");
let tag9 = HMIRuntime.TagLogging.LoggedTags("receiveValue_ErrorcodesScrap:Errorcode");
let tag10 = HMIRuntime.TagLogging.LoggedTags("receiveValue_Errormessages:Errormessage");
try {
// Alle Tag-Lesevorgänge gleichzeitig starten
let [
result1, result2, result3, result4, result5,
result6, result7, result8, result9, result10
] = await Promise.all([
tag1.Read(start, end, 0),
tag2.Read(start, end, 0),
tag3.Read(start, end, 0),
tag4.Read(start, end, 0),
tag5.Read(start, end, 0),
tag6.Read(start, end, 0),
tag7.Read(start, end, 0),
tag8.Read(start, end, 0),
tag9.Read(start, end, 0),
tag10.Read(start, end, 0)
]);
// Ergebnisse der einzelnen Tag-Lesevorgänge extrahieren
let tagArray1 = result1.Values;
let tagArray2 = result2.Values;
let tagArray3 = result3.Values;
let tagArray4 = result4.Values;
let tagArray5 = result5.Values;
let tagArray6 = result6.Values;
let tagArray7 = result7.Values;
let tagArray8 = result8.Values;
let tagArray9 = result9.Values;
let tagArray10 = result10.Values;
// Statusmeldung (Debug) – Alle Tags wurden gelesen
HMIRuntime.Tags.SysFct.SetTagValue("handlingerrorstring", "Alle Tags gelesen");
// Bestimme die Länge des kürzesten Arrays, um Indexfehler zu vermeiden
let loopLength = Math.min(
tagArray1.length,
tagArray2.length,
tagArray3.length,
tagArray4.length,
tagArray5.length,
tagArray6.length,
tagArray7.length,
tagArray8.length,
tagArray9.length,
tagArray10.length
);
HMIRuntime.Tags.SysFct.SetTagValue("handlingerrorstring", "Looplength ok: " + loopLength);
// Zeilenweise zusammenführen der Tag-Werte in die CSV-Zeichenkette
for (let i = 0; i < loopLength; i++) {
let value1 = tagArray1[i].Value;
let value2 = tagArray2[i].Value;
let value3 = tagArray3[i].Value;
let value4 = tagArray4[i].Value;
let value5 = tagArray5[i].Value;
let value6 = tagArray6[i].Value;
let value7 = tagArray7[i].Value;
let value8 = tagArray8[i].Value;
let value9 = tagArray9[i].Value;
let value10 = tagArray10[i].Value;
csvData += value1 + delimiter +
value2 + delimiter +
value3 + delimiter +
value4 + delimiter +
value5 + delimiter +
value6 + delimiter +
value7 + delimiter +
value8 + delimiter +
value9 + delimiter +
value10 + "\n";
}
HMIRuntime.Tags.SysFct.SetTagValue("handlingerrorstring", "For-Schleife durch");
// CSV-Datei schreiben
await HMIRuntime.FileSystem.WriteFile(fileName, csvData, "utf8");
// Erfolgsmeldungen ausgeben
HMIRuntime.Trace("Write file finished successfully");
HMIRuntime.Tags.SysFct.SetTagValue("handlingerrorstring", "CSV created");
} catch (err) {
// Fehlerbehandlung: Fehler loggen und Status setzen
HMIRuntime.Trace("Fehler: " + err);
HMIRuntime.Tags.SysFct.SetTagValue("handlingerrorstring", "CSV not created");
}
}