Hallo mdh,
Ich verstehe unter Zyklus das jeweilige Hochzählen von MD30.
... mal ganz von vorne! Wenn du die Steuerung (in diesem Fall die E4 ) auf "RUN" schaltest passiert in groben Zügen folgendes:
- Startroutine:
Initialisieren der Merkerbereiche, in deinem Fall wird hier auch MW30 auf 0 gesetzt ...
- Programmdurchlauf = Zyklus:
Eingangsabbild lesen, dein Programm von Anfang bis Ende abarbeiten, Ausgangsabbild schreiben!
Dieser eine Programmdurchlauf, auch Zyklus genannt, dauert ein paar Millisekunden und wird bis zum Stoppen der E4 immer und immer wieder durchlaufen. Zwischen Ende des einen Zyklus und beginn des nächsten Zyklus bleiben die Merker- und Ausgangszustände unverändert erhalten!
Wenn du eine Programmzeile wie z.B.
MW30 := MW30 + 1;
ausführst dann wird in MW30 die Anzahl der durchlaufenen Zyklen sichtbar.
Was mir aber nicht klar ist, ist die Frage, was in so einer FOR-Schleife eigenlich alles passiert:
MW30 := 0;
FOR MD30 := 11 TO 20 BY +1 DO
MW30 := MW[MD30] + MW30; END_FOR;
Die FOR-Schleife (und die indexierten Merkerworte) bewirken folgendes:
MW30 := MW30 + MW11;
MW30 := MW30 + MW12;
.
.
MW30 := MW30 + MW20;
... und das jeden Zyklus und wie vorher geschrieben bleibt ja der Wert von MW30 zwischen den Zyklen erhalten.
... Ich möchte dir nicht zu nahe treten aber dein Verständnisproblem hat nichts mit "ST" zu tun sondern liegt IMHO im generellen Verständnis der Programmierlogik und die ist in KOP,FUP,AWL,ST, Basic, Pascal, etc. überall gleich. Es unterscheidet sich lediglich die Syntax, also würde ich da mal mit Lektüre anfangen.
Gruß