Endlosschleife oder Änderung des Zyklus in WinCC flex

CrazyCat

Level-1
Beiträge
683
Reaktionspunkte
9
Zuviel Werbung?
-> Hier kostenlos registrieren
Kann man den Zyklus im Aufgabenplaner ändern?

Wenn ein Skript bestenfalls jede Minute ausgeführt wird ist das zu lang.

Das Skript sollte mindestens jede Sekunde ausgeführt werden oder ständig im Hintergrund laufen.


Derzeit verwende ich ein Skript mit einer Endlosschleife. Das Problem ist das das Panel beim Aufruf der Endlosschleife stehenbleibt und nicht mehr reagiert. Kann man evtl. so eine Schleife in den Hintergrund "verbannen"?
 
Habe es im Prinzip wie den OB1 im S7 - Manager aufgebaut.

Also ein Skript das eine do while Schleife beinhaltet und die anderen Skripte aufruft.

Das Skript wird zeitgesteuert ausgelöst.

Das Skript jede Minute ausgeführt und über die Schleife aktiv gehalten.
Bei Sekunde 59 wird das Skript wieder beendet und über den Aufgabenplaner neu gestartet.

Die Variable sek wird von der Steuerung übergeben und beinhaltet die akutelle Sekunde.
Die Sekunde kann von der S7 im OB ausgelesen werden, dort wird diese in die Variable sek gespeichert.

Die Uhrzeiten werden über Bereichszeiger abgeglichen.

D.h. im Aufgabenplaner das Skript mit dem Zyklus 1 Minute festlegen.

Das Skript sieht dann so aus:

do while sek < 59

<Anweisungen>

loop



Das Skript bricht bei 59 Sekunden ab, um nicht mehrmals gestartet zu werden, sonst habe ich nach 10 Minuten das gleiche Skript 10x laufen.

Soll das Skript nicht ständig, sondern in einem festen Intervall (z.B. alle 5 Sekunden) ausgeführt werden, kann man den Zeitpunkt der letzten Ausführung zwischenspeichern, die Differenz berechnen und bei der übereinstimmenden Differenz (z.B. Differenz > 5) die Aufgabe erneut starten.

Das wäre dann eine if - Bedingung innerhalb der Schleife.

Auf die Überläufe ist allerdings zu achten (letzte Ausführung 56, neuer Start bei 61 -> Zustand wird nie erreicht!). Bei Werten über 60 sind 60 abzuziehen, um die richtige Zeit zu erhalten.

Alles klar, oder habe ich es zu verwirrend erklärt?
 
Ich verstehe nicht ganz wie du es anstellst das die Performance nicht in denn Keller geht. Meines Wissens besitzt Flexible kein Global Skripting also kann man während ein Skript läuft auch nichts anderes machen Oder?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Alle Skripte die mit dem Aufgabenplaner gestartet werden laufen mehr oder weniger im Hinergrund, man kann also das Panel normal bedienen.

Allerdings ist das Panel nicht echtzeitfähig, d. h. das z.B. beim Laden und Speichern von Rezepten die Schleife verzögert ausgeführt wird.


Wenn man über ein Ereignis (z.B. Bild aufgebaut) ein Skript mit einer Endlosschleife startet wird das Bild niemals aufgebaut.

Zyklische Skripte also unbedingt nur über den Aufgabenplaner starten.

Zuviele Skripte sollen nicht in der Schleife sein, ansosnten kann es zu Delays von bis zu mehreren Sekunden kommen.
 
Was für ein Gerät verwendest du?
Und was genau ist das für ein Skript doch bestimmt nichts aufwendigeres ich hab ja schon teilweise mit normalen Probleme!?
 
Ich verwende ein MP370 12" Key. Die genaue Softwareversion des Panels weiß ich leider nicht.

Es sind keine sehr aufwendigen Skripte.

Vorwiegend sind es einfache Berechnungen.


Es eignet sich nur für kleine, einfache Skripte alle anderen führen zu teilweise heftigen Verzögerungen.
 
Endlsoschleife oder Anderung des Zyklus in WinCC flex

Endlos Schleifen sind zwar ein Weg, besser ist es jedoch die zyklischen Skripte über PowerTags bei "Wertänderung zu triggern" damit sind dann
Aufrufzyklen ab 100 ms möglich. Die Powertags müssen dazu kontinuierlich
mit z.B 100 ms erfasst werden.
 
Zurück
Oben