TIA Meldearchiv auf Server verschieben funktioniert nicht mehr zuverlässig

anilo14

Level-1
Beiträge
38
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich habe einen Aufgabenplaner erstellt, in der ich jeden Tag um 12:05 Uhr das aktuelle Meldearchiv auf dem Server verschieben möchte. Dabei habe ich die Hinweise von Siemens beachtet.

Ablauf am Bediengeraet

  • Alle geoeffneten Archive werden geschlossen.
  • Das angegebene Archiv wird auf den Server verschoben.
  • Alle geschlossenen Archive werden wieder geoeffnet.


Mein Problem bei dem Ganze ist, dass ich das Verschieben des Archivs anfangs um 14:30 hatte. Zu dieser Uhrzeit hat das Verschieben, 3 Wochen lang, ohne Probleme funktioniert.
Seitdem ich die Ausfuehrung auf 12:05 gestellt habe, funktioniert das Verschieben nicht mehr zuverlaessig.

Folgende Systemmeldung wird auf der HMI angezeigt:

80050: Das Archiv '\Storage Card SD\Meldearchiv0.csv', welches exportiert werden soll, ist nicht geschlossen


So wie es aussieht, wird der Befehl "SchliesseAlleArchive" nicht mehr ausgefuehrt oder verstehe ich die Meldung falsch? Ist es nicht merkwuerdig, dass es um 14:30 Uhr ohne Probleme funktioniert hat und um 12:05 Uhr nicht mehr?


Vielen Dank im Voraus und viele Gruesse

anilo14
 

Anhänge

  • AblaufArchivVerschieben.jpg
    AblaufArchivVerschieben.jpg
    82,8 KB · Aufrufe: 32
Das sieht eher so aus, als daß die Befehle in der Funktionsliste nicht warten, daß der vorherige Befehl abgeschlossen ist. Das Schließen der Archive dauert etwas ... Da hast Du schon vorher großes Glück gehabt daß es funktioniert hat.

Was für ein Panel hast Du? Kann das Skripte? Dann schreibe die Befehle besser in ein Skript mit einer Wartepause zwischen das Schließen der Archive und das Verschieben.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wartepausen in VBS Skript

Beispiele für Wartepausen in VBS Skript
Code:
[COLOR="#0000FF"]Sub[/COLOR] Wait_in_Skript()
[COLOR="#008000"]'Beispiele für Warteschleife in VBS Skript[/COLOR]
[COLOR="#008000"]'verschiedene Schleifen, verschiedene Ausdrücke für die Wartezeit[/COLOR]
[COLOR="#0000FF"]Dim[/COLOR] EndTime

ShowSystemAlarm "WaitSkript gestartet" [COLOR="#008000"]'nur zur Information, für Meldeanzeige[/COLOR]
SmartTags("WaitSkript_aktiv") = 1      [COLOR="#008000"]'nur zur Information, z.B. Animation[/COLOR]

[COLOR="#008000"]'Variante (A)[/COLOR]
EndTime = Now + #00:00:03# [COLOR="#008000"]'Wartezeit 3s[/COLOR]
[COLOR="#0000FF"]While[/COLOR] Now < EndTime
[COLOR="#0000FF"]Wend[/COLOR]

[COLOR="#008000"]'Variante (B)[/COLOR]
EndTime = Now + TimeSerial(0,0,3) [COLOR="#008000"]'Wartezeit 3s[/COLOR]
[COLOR="#0000FF"]Do[/COLOR]
[COLOR="#0000FF"]Loop While[/COLOR] Now < EndTime

[COLOR="#008000"]'Variante (C) mit Sekundenbruchteilen (wird eventuell von VBS gerundet?)[/COLOR]
EndTime = Now + 350 / 24 / 360000 [COLOR="#008000"]'Wartezeit 350 entspricht 3,5s[/COLOR]
[COLOR="#0000FF"]Do[/COLOR]
[COLOR="#0000FF"]Loop Until[/COLOR] Now >= EndTime

[COLOR="#008000"]'Variante (D) ruft Skript/Sub Wait(byVal Seconds) auf[/COLOR]
Wait(3) [COLOR="#008000"]'Warte 3s[/COLOR]

SmartTags("WaitSkript_aktiv") = 0
ShowSystemAlarm "WaitSkript beendet"

[COLOR="#0000FF"]End Sub[/COLOR]
Code:
[COLOR="#0000FF"]Sub[/COLOR] Wait(ByVal Seconds)
[COLOR="#008000"]'Das Skript wartet die angegebene Zeit in Sekunden.[/COLOR]
[COLOR="#008000"]'(möglicherweise wird bei der Addition gerundet, [/COLOR]
[COLOR="#008000"]' so daß die Wartezeit bis zu knapp 1s kürzer ausfällt?)[/COLOR]
[COLOR="#0000FF"]Dim[/COLOR] EndTime

EndTime = Now + TimeSerial(0, 0, Seconds)
[COLOR="#0000FF"]While[/COLOR] Now < EndTime
[COLOR="#0000FF"]Wend[/COLOR]

[COLOR="#0000FF"]End Sub[/COLOR]
 
Hier nochmal die Skripte ohne COLOR-Tags:

Wartepausen in VBS Skript

Beispiele für Wartepausen in VBS Skript
Code:
Sub Wait_in_Skript()
'Beispiele für Warteschleife in VBS Skript
'verschiedene Schleifen, verschiedene Ausdrücke für die Wartezeit
Dim EndTime

ShowSystemAlarm "WaitSkript gestartet" 'nur zur Information, für Meldeanzeige
SmartTags("WaitSkript_aktiv") = 1      'nur zur Information, z.B. Animation

'Variante (A)
EndTime = Now + #00:00:03# 'Wartezeit 3s
While Now < EndTime
Wend

'Variante (B)
EndTime = Now + TimeSerial(0,0,3) 'Wartezeit 3s
Do
Loop While Now < EndTime

'Variante (C) mit Sekundenbruchteilen (wird eventuell von VBS gerundet?)
EndTime = Now + 350 / 24 / 360000 'Wartezeit 350 entspricht 3,5s
Do
Loop Until Now >= EndTime

'Variante (D) ruft Skript/Sub Wait(byVal Seconds) auf
Wait(3) 'Warte 3s

SmartTags("WaitSkript_aktiv") = 0
ShowSystemAlarm "WaitSkript beendet"

End Sub
Code:
Sub Wait(ByVal Seconds)
'Das Skript wartet die angegebene Zeit in Sekunden.
'(möglicherweise wird bei der Addition gerundet,
' so daß die Wartezeit bis zu knapp 1s kürzer ausfällt?)
Dim EndTime

EndTime = Now + TimeSerial(0, 0, Seconds)
While Now < EndTime
Wend

End Sub
 
Zurück
Oben