# Pause in einem WinccFlexible Script realisieren



## Bensen83 (25 April 2012)

Hallo, ich würde gerne bi einem Buttonklick ein script in der Visualisierung aufrufen, welches mir eine Pause Realisiert.

Dies habe ich im Moment auch schon hier vorliegen, allerdings wird in diesem script die aktuelle sekunde abgespeichert und dann verglichen ob diese um x sekunden erhöt wurde.
Im Bereich knapp vor der 60 kann man natürlich nicht mehr einfach + x sekunden rechnen, sondern muss von 0 ausgehen. (Dadurch habe ich nicht immer eine konstante Wartezeit) :-(


Hat jemand eine gute Idee zur Realisierung des Problems?


----------



## Larry Laffer (25 April 2012)

Hallo,
eine WAIT-Funktion in Flex zu integrieren ist nicht unbedingt zu empfehlen, da du dir dadurch die Ausführung von anderen Funktionen ggf. sperrst.
Ganz grundsätzlich würde ich es aber so machen, dass ich mir am Scriptanfang den TIMER (ist eine VB-Script-Variable/Funktion) in eine Variable einlese und meine gewünschte Verzögerung da drauf addiere und dann mittels (z.B.) WHILE abfrage, ob TIMER > wie gespeicherter Wert ist und dann WHILE dann erst verlassen.

Gruß
Larry


----------



## Hotsch (25 April 2012)

```
Aktuelle_Zeit_Plus_1_Minute = DateAdd("n", +1, Now)
```


----------



## rostiger Nagel (25 April 2012)

Das kennst du schon ?

http://support.automation.siemens.com/WW/view/de/26120987


----------



## JesperMP (25 April 2012)

Ich stimme LL 100% zu.

Es wird auch in FAQ gewarrnt:


> Beachten Sie das eine Schleife in einem Skript die Ausführung anderer Skripte blockiert


 !!!

Warum muss die Verzögerung in ein Skript realisiert werden ?
Wozu dient es alles ?


----------



## Bensen83 (25 April 2012)

*Kenne ich*

Ich habe es ja genau so gemacht.
will eine variable setzen. diese schließt ein programm auf dem rechner.
Das mache ich bevor ich die runtime schliße. hatte dann die wartefunktion drin, damit die runtime erst später geschlossen wird. da sonst schon der opc weg ist und das ander programm sich nicht schließt.

Wenn ich aber die sekunden auslese und + 2 addiere und dann mit ner while schleife abfrage ob die 2 sekunden rum sind, bekomme ich wenn die aktuelle sekunde >= 58 ist ein prioblem.
und im moment ist es so gelöst, bei auslesen wird geschaut ist die systemsekunde >= 58 dann schreibe 0 rein. Dies führt aber dazu, dass ich genau bei sekunde 58 eben 4 sekunden warte und sonst 2.   DAS WOLLTE ICH VERMEIDEN !!!


----------



## Hotsch (25 April 2012)

Ohne das ist das Skript jetzt überprüft oder getestet habe, aber vielleicht funktioniert es so:

```
dim Stoptime

Stoptime = DateAdd("n", +1, Now)

do
  ...
loop until now >= Stoptime
```


----------



## Larry Laffer (25 April 2012)

... das Problem würdest du sowohl mit meinem Vorschlag, wie auch mit dem von Hotsch nicht haben - im Grunde ist der von Hotsch so noch sauberer, da der gleich mit dem Datumswert arbeitet. Meiner arbeitet mit der Uhrzeit, ist dafür dann aber auch feiner zu dosieren - aber darauf käme es dir ja gar nicht so an ...

Gruß
Larry


----------



## Bensen83 (26 April 2012)

*Danke*

Funktioniert super


----------

