ArchiveLogFile verschiebt "File Doppelt"

VooDooDog

Level-2
Beiträge
18
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Benutzes Equipment:
- TIA V17 update3
- im Feld ein TP1500 Comfort zum testen am Rechner simuliert.

Moin Moin zusammen.

Ich möchte am Tageswechsel per SPS Variable gerne meine Archive verschieben.
Dies geschieht indem ich Anhand eines Vergleichs den Tageswechsel erkenne und dann eine Variable für 200ms(verschiedenste Werte von 20ms bis 1500ms getestet) auf true setze.
  • Diese Variable habe ich in dem HMI angelegt und mit dem Ereignis "SchliesseAlleArchive" verknüpft.
  • Die Systemmeldung 80019 (Alle Archive erfolgreich geschlossen) triggert mein VBS Script wo dann
    Code:
    ArchiveLogFile hmiDataLog, "Gewicht_Tag_Archiv", archive_dir, hmiMove
    aufgerufen wird
Soweit so gut. Leider wird das Script anscheinend doppelt aufgerufen und die neu erstellte csv Datei direkt wieder verschoben.
Screenshot 2024-07-03 174224.png

Wenn ich das ganze über eine interne HMI Variable triggere funktioniert dies allerdings ohne Probleme.
Ich habe auch schon verschiedene Zykluszeiten der Variablen ausprobiert, das vbs Script eine interne HMI Variable überprüfen lassen
-> Wenn Bit nicht gesetzt führe ArchiveLogFile aus
-> Setze Bit für 3 sekunden auf true.

Das hat alles nicht zum Erfolg geführt. Ich habe auch nichts im Netz gefunden.. Ich kann kaum glauben, dass den Fehler noch niemand außer mir hatte 😅

Ich habe das bisher auch nur simuliert und nicht am Gerät getestet. Vielleicht liegt da das Problem? Aber mit der internen Variable getriggert klappt es ja auch..
Vielleicht habt ihr ja eine Ahnung.

Danke und einen schönen Abend euch.

Nachtrag:
HMI Komplett übersetzen habe ich schon mehrfach gemacht.
 
Zuletzt bearbeitet:
Ich sehe gerade, dass ich in dem falschen unterforum gelandet bin..
Kann ein Moderator den Thread bitte in Siemens HMI verschieben?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Nabend.

Ich nehme an, dass du die Systemfunktion "SchliesseAlleArchive" an das Variablen-Ereignis "Wertänderung" projektiert hast, richtig?
Dann ist die doppelte Ausführung zwangsläufig, da ja auch die fallende Flanke eine Wertänderung darstellt.

In der Simulation und mit interner Variable könnte dies zufällig funktionieren, da Siemens dann diverse (m.M.n. manchmal undurchsichtige) Mechanismen aktiviert, um z.B. Deadlocks etc. zu verhindern.

Ich behandle Archive wenn möglich immer komplett in einem Skript. Dort verwende ich dann Wartezeiten statt Ereignisse, um die Bearbeitungsschrittreihenfolge zu gewährleisten. Das ist zwar nicht sehr elegant und auch nicht performance-optimal, aber es funktioniert tadellos, lässt sich sauber simulieren und gibt mir die Möglichkeit, nach meinen Wünschen mit den auftretenden Prozedursituationen umzugehen.


Gruß, Fred


BTW: Verwendest du einen Skript-Debugger (z.B. Visual Studio o.ä.)? Dann könntest du den "Doppeltrigger" recht leicht aufspüren.
 
Ich nehme an, dass du die Systemfunktion "SchliesseAlleArchive" an das Variablen-Ereignis "Wertänderung" projektiert hast, richtig?
Dann ist die doppelte Ausführung zwangsläufig, da ja auch die fallende Flanke eine Wertänderung darstellt.
Mit der Vermutung liegst du richtig. Ich hatte das auch schon im Verdacht, aber gedanklich verworfen, da es ja mit einer interner variable funktioniert.
So benutzt es ja auch siemens in ihren Beispiel projekt.

Fällt mir spontan auch nur las Lösung ein, die sps variable hin und her zu schalten oder eben das Script alles machen lassen.

Wie lauten da denn die Befehle?

CloseAllLogs
Warte x sekunden
ArchiveLogFile hmiDataLog, "Gewicht_Tag_Archiv", archive_dir, hmiMove
Warte x sekunden
OpenAllLogs

So in der Art?

Danke schon einmal für den Hinweis. Das wird es denke ich mal sein.
 
Zurück
Oben