Quantcast
Channel: SPS-Forum - Automatisierung und Elektrotechnik
Viewing all articles
Browse latest Browse all 49363

Step 7 SCL - Timerproblem innerhalb einer While-Schleife

$
0
0
Hallo,

ich habe ein Problem mit einem Timer innerhalb einer While-Schleife.

Der Code-Teil ist folgender:

...
Schleife1 := 0;
...
...
WHILE Schleife1 <20 DO
Schleife1:= Schleife1 + 1;

... //= Code innerhalb der Schleife, der funktioniert

// Die Schleife wird 20x durchlaufen. Dabei werden aus einem DB verschiedene Datensaetze (Bloecke) ausgelesen und in einen anderen DB geschrieben
// Der Schleifenzaehler laesst die Datensatzadressen entsprechend mehrerer Formeln hochzaehlen. Das funktioniert alles.
// Am Ende eines jeden Auslesens und Schreibens soll in der Visualisierung ein Bit (DB500.DBX4.5) fuer 1 Sekunde gesetzt und danach wieder zurueckgesetzt werden.
// Dieses Bit MUSS bei jedem Zyklusdurchlauf fuer eine Sekunde an und danach wieder aus sein.
// Dann beginnt die Schleife wieder, die naechsten Datensaetze einzulesen und in den anderen DB zu schreiben.
// Und wieder soll am Ende dieses Lesens und Schreibens dieses Bit fuer 1 Sekunde gesetzt und danach wieder zurueckgesetzt werden.
// Nach 20 Durchlaeufen wird die While-Schleife verlassen.

// Ich hatte mir gedacht, dieses zeitverzoegerte Setzen und Ruecksetzen des Bits mit einem Timer zu realisieren und habe innerhalb der While Schleife1 (siehe oben)
// Einen Timer wie folgt gesetzt:


DB500.DBX4.5:= true;
CurrTime_2:= S_PEXT (T_NO:=10, S:=DB500.DBX4.5, TV:=T#1s, BI:=BinVal_2, Q:=ActFlag_2);

M18.2:= ActFlag_2;

IF NOT M18.2 THEN
DB500.DBX4.5:= false;
END_IF;

...
...
END_WHILE;

...
...
// Der Timer macht nicht das, was ich gerne haette, er zaehlt nur einmal, in der Zeit ist natuerlich meine Schleife schon laengst 20x durchgelaufen. Es sollte jedoch so sein, dass
// die Schleife auf den Timer wartet und erst nach 1 Sekunde an der pausierten Stelle fortsetzt.
// Da ich SCL-Neuling bin, kenne ich keine Methode, die Schleife auf diese Art pausieren zu lassen. Koennt Ihr mir da Hinweise geben?

Vielen Dank vorweg!
Ralf

Viewing all articles
Browse latest Browse all 49363


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>